fairlib Cheat Sheet

Basic operation

python fairlib --exp_id EXP_NAME

Name

Default value

Description

project_dir

dev

protect step root: dev | hypertune | final

exp_id

test

experiment id

base_seed

1

base random seed

dataset

Moji

dataset: Moji | Bios_gender | Bios_economy | Bios_both

data_dir

None

dataset root, load from the default dir if set to None

results_dir

./results/

results directory

model_dir

models

directory storing trained models

num_workers

0

number of data loader workers

The corresponding results such options and output logs will be saved in results_dir/project_dir/dataset/exp_id, while the model checkpoints and related predictions will be save in results_dir/project_dir/dataset/exp_id/model_dir.

  • Train a vanilla model without debiasing

    • Train a mode over Moji with DeepMoji representations.

          python fairlib --dataset Moji --emb_size 2304 --num_classes 2 --num_groups 2 --data_dir Path_to_data
      
    • Train a model over Bios with fixed BERT-base representations.

          python fairlib --dataset Bios_gender --emb_size 768 --num_classes 28 --num_groups 2 --data_dir Path_to_data
      
          python fairlib --dataset Bios_economy --emb_size 768 --num_classes 28 --num_groups 2 --data_dir Path_to_data
      
          python fairlib --dataset Bios_both --emb_size 768 --num_classes 28 --num_groups 4 --data_dir Path_to_data
      
    • Train a model over Bios with trainable BERT-base representations.

          python fairlib --dataset Bios_gender --emb_size 768 --num_classes 28 --encoder_architecture BERT --batch_size 16
      
          python fairlib --dataset Bios_economy --emb_size 768 --num_classes 28 --encoder_architecture BERT --batch_size 16
      
          python fairlib --dataset Bios_both --emb_size 768 --num_classes 28 --encoder_architecture BERT --batch_size 16
      

Name

Default value

Description

emb_size

2304

input embedding dimension

num_classes

2

number of target classes

num_groups

2

number of protected groups

batch_size

1024

input batch size for training

epochs

100

number of total epochs to train

lr

0.003

learning rate used to actually learn stuff

epochs_since_improvement

5

terminate training for early stopping

device_id

0

device id, -1 is cpu

Train a model with adversarial debiasing

python fairlib --adv_debiasing

Name

Default value

Description

adv_update_frequency

Batch

Epoch | Batch

adv_level

last_hidden

input | last_hidden | output

adv_lambda

1

strength of adversarial regularization

Ensemble adversarial training

python fairlib --adv_debiasing --adv_num_subDiscriminator 3

Name

Default value

Description

adv_num_subDiscriminator

1

number of sub-discriminators.

Diverse adversarial training

python fairlib --adv_debiasing --adv_num_subDiscriminator 3 --adv_diverse_lambda 100

Name

Default value

Description

adv_num_subDiscriminator

1

number of subdiscriminators.

adv_diverse_lambda

0

strength of difference loss to encourage diverse representations for ensemble adv.

Towards conditional independence through adversarial training

python fairlib --adv_debiasing --adv_gated

Name

Default value

Description

adv_gated

False

gated discriminator for augmented inputs given target labels

adv_gated_mapping

One-hot

mapping function from numerical labels to vectors.

INLP

python fairlib --INLP

Name

Default value

Description

INLP_discriminator_reweighting

None

if train the linear discriminator with reweighting

INLP_by_class

False

estimate the nullspace by_class

INLP_n

300

the maximum number of null-space projection iteration

INLP_min_acc

0.0

ignore the iteration if the acc is lower than the threshold

Fair Contrastive Learning

python fairlib --FCL

Name

Default value

Description

fcl_lambda_y

0.1

strength of the supervised contrastive loss

fcl_lambda_g

0.1

strength of the fair supervised contrastive loss

fcl_temperature_y

0.01

temperature for the fcl wrt main task learning

fcl_temperature_g

0.01

temperature for the fcl wrt protected attribute unlearning

fcl_base_temperature_y

0.01

base temperature for the fcl wrt main task learning

fcl_base_temperature_g

0.01

base temperature for the fcl wrt protected attribute unlearning

Train a model with balanced training

python fairlib --BT Reweighting --BTObj joint

Name

Default value

Description

BT

False

Reweighting | Resampling | Downsampling

BTObj

None

joint | y | g | stratified_y | stratified_g | EO

full_label

True

require full protected label

Train a model with Dynamic balanced training

python fairlib --DyBT FairBatch --DyBTObj stratified_y 

Name

Default value

Description

DyBT

False

FairBatch | GroupDifference | Others

DyBTObj

None

joint | y | g | stratified_y | stratified_g | EO

DyBTalpha

0.1

a positive number for dynamic adjustment.

For Connecting Loss Difference with Equal Opportunity for Fair Models, the Diff and Mean are:

# L_diff as described in Section 3.2
python fairlib --DyBT GroupDifference --DyBTObj EO

# L_mean as described in Section 3.3 
python fairlib --DyBT GroupDifference --DyBTObj joint

Train a model to incorporate demographic factors

python fairlib --BT --BTObj joint --gated

Name

Default value

Description

gated

False

gated model for augmented inputs given demographic labels

gated_mapping

One-hot

mapping function from numerical labels to vectors.

Additional options

Logging

Name

Default value

Description

base_seed

1

base random seed

log_interval

50

how many batches to wait before logging training status

checkpoint_interval

1

checkpoint interval (epoch)

no_log

False

if set, will not log into file

log_level

INFO

logging level, e.g., DEBUG, INFO, WARNING, ERROR, CRITICAL

Model architecture

Name

Default value

Description

hidden_size

300

number of hidden units of each hidden layer for the main task classifier

n_hidden

2

number of hidden layers

dropout

0

dropout probability

emb_size

2304

input embedding dimension, i.e., dimension of sentence vectors

num_classes

2

number of target classes

activation_function

Tanh

nonlinear activation function for the main task model

batch_norm

False

apply 1d batch norm to the model

Discriminator architecture

Name

Default value

Description

adv_hidden_size

300

number of hidden units of each hidden layer for the main task classifier

adv_n_hidden

2

number of hidden layers

adv_dropout

0

dropout probability

adv_activation_function

ReLu

nonlinear activation function for the main task model

adv_batch_norm

False

apply 1d batch norm to the model

Reproducibility

python fairlib --conf_file PATH_TO_EXP/opt.yaml

Manipulate Label Distribution

Generalized Balanced Training (GBT)

python fairlib --GBT --BGTObj joint

Name

Default value

Description

GBT

False

whether or not manipulate loaded data distribution

GBTObj

None

joint | y | g | y_cond_g | g_cond_y

GBT_N

None

size of the manipulated dataset

GBT_alpha

1

interpolation for generalized BT

Note that GBT could either be used as a balanced training debiasing method or a pre-process step for manipulating label distributions in the dataset.

For example, we could use GBT as data manipulation and test BT as:

python fairlib --GBT --BGTObj joint --BT Downsampling --BTObj joint