inFairness.auditor.sensei_auditor module#
- class inFairness.auditor.sensei_auditor.SenSeIAuditor(distance_x, distance_y, num_steps, lr, max_noise=0.1, min_noise=-0.1)[source]#
Bases:
Auditor
SenSeI Auditor implements the functionality to generate worst-case examples by solving the following optimization equation:
\[x_{t_b}' \gets arg\max_{x' \in X}\{d_{Y}(h_{\theta_t}(X_{t_b}),h_{\theta_t}(x')) - \lambda_t d_{X}(X_{t_b},x')\}\]Proposed in SenSeI: Sensitive Set Invariance for Enforcing Individual Fairness
- Parameters:
distance_x (inFairness.distances.Distance) – Distance metric in the input space
distance_y (inFairness.distances.Distance) – Distance metric in the output space
num_steps (int) – Number of update steps should the auditor perform to find worst-case examples
lr (float) – Learning rate
- audit(network, X_audit, Y_audit, loss_fn, audit_threshold=None, lambda_param=None, confidence=0.95, optimizer=None)[source]#
Audit a model for individual fairness
- Parameters:
network (torch.nn.Module) – PyTorch network model
X_audit (torch.Tensor) – Auditing data samples. Shape: (B, *)
Y_audit (torch.Tensor) – Auditing data samples. Shape: (B)
loss_fn (torch.nn.Module) – Loss function
audit_threshold (float, optional) – Auditing threshold to consider a model individually fair or not If audit_threshold is specified, the audit procedure determines if the model is individually fair or not. If audit_threshold is not specified, the audit procedure simply returns the mean and lower bound of loss ratio, leaving the determination of models’ fairness to the user. Default=None
lambda_param (float) – Lambda weighting parameter as defined in the equation above
confidence (float, optional) – Confidence value. Default = 0.95
optimizer (torch.optim.Optimizer, optional) – PyTorch Optimizer object. Default: torch.optim.SGD
- Returns:
audit_response – Audit response containing test statistics
- Return type:
- generate_worst_case_examples(network, x, lambda_param, optimizer=None)[source]#
Generate worst case example given the input data sample batch x
- Parameters:
network (torch.nn.Module) – PyTorch network model
x (torch.Tensor) – Batch of input datapoints
lambda_param (float) – Lambda weighting parameter as defined in the equation above
optimizer (torch.optim.Optimizer, optional) – PyTorch Optimizer object. Default: torch.optim.Adam
- Returns:
X_worst – Worst case examples for the provided input datapoints
- Return type: