/SEBR

Robust Bayesian Neural Networks by Spectral Expectation Bound Regularization

Primary LanguagePythonMIT LicenseMIT

SEBR

This is the official repository for paper Robust Bayesian Neural Networks by Spectral Expectation Bound Regularization, accepted by CVPR 2021 as a poster paper.

Core Algorithm

The algorithm for the calculation of SEBR loss is:

def expectation_spectral_norm_upper_bound_calculation(W_mu, W_p=None, SIMU_TIMES=10, ITERATION_TIMES=10):
    u = torch.rand(W_mu.shape[0]).cuda()
    v = torch.rand(W_mu.shape[1]).cuda()
    for _ in range(ITERATION_TIMES):
        v = torch.nn.functional.normalize(torch.mv(W_mu.t(), u), dim=0, eps=1e-12)
        u = torch.nn.functional.normalize(torch.mv(W_mu, v), dim=0, eps=1e-12)
    sigma = torch.dot(u, torch.mv(W_mu, v))
    if W_p is None:
        return sigma

    std_w = 1e-6 + F.softplus(W_p, beta=1, threshold=20)

    res = torch.max(torch.norm(std_w, dim=1)) + torch.max(torch.norm(std_w, dim=0))

    tmp = 0
    for _ in range(SIMU_TIMES):
        eps_W = W_mu.data.new(W_mu.size()).normal_()
        tmp += torch.max(1 * eps_W * std_w)
    tmp /= SIMU_TIMES
    return res + tmp + sigma

Run

For experiments on (Fashion-)MNIST datasets:

cd mnist
python3 SEBR_training.py
python3 SEBR_evaluating.py

For experiments on CIFAR datasets:

cd cifar
bash train_vi_SEBR.sh
bash acc_under_attack.sh

Acknowledgement

The Bayesian neural networks frameworks are based on JavierAntoran/Bayesian-Neural-Networks and xuanqing94/BayesianDefense.

Cite

@InProceedings{Zhang_2021_CVPR,
    author    = {Zhang, Jiaru and Hua, Yang and Xue, Zhengui and Song, Tao and Zheng, Chengyu and Ma, Ruhui and Guan, Haibing},
    title     = {Robust Bayesian Neural Networks by Spectral Expectation Bound Regularization},
    booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
    month     = {June},
    year      = {2021},
    pages     = {3815-3824}
}