Attacks
ModelVerification.APGD
— MethodAPGD(model, loss, x, y; ϵ = 10, step_size = 0.1, iters = 100, clamp_range = (0, 1))
Auto Projected Gradient Descent (APGD) (https://arxiv.org/pdf/2003.01690.pdf)
Arguments:
model
: The model to base teh attack upon.loss
: the loss function to use, assuming that it includes the prediction function i.e. loss(x, y) = crossentropy(m(x), y)x
: The input to be perturbed.step_size
: The ϵ value in the FGSM step.rho
: PGD success rate threshold to reduce the step size.a
: momentum.iters
: The maximum number of iterations to run the algorithm for.
ModelVerification.FGSM
— MethodFGSM(model, loss, x, y; ϵ = 0.1, clamp_range = (0, 1))
Fast Gradient Sign Method (FGSM) is a method of creating adversarial examples by pushing the input in the direction of the gradient and bounded by the ε parameter.
This method was proposed by Goodfellow et al. 2014 (https://arxiv.org/abs/1412.6572)
Arguments:
model
: The model to base the attack upon.loss
: The loss function to use. This assumes that the loss function includes the predict function, i.e. loss(x, y) = crossentropy(model(x), y).x
: The input to be perturbed by the FGSM algorithm.ϵ
: The amount of perturbation to apply.
ModelVerification.PGD
— MethodPGD(model, loss, x, y; ϵ = 10, step_size = 0.1, iters = 100, clamp_range = (0, 1))
Projected Gradient Descent (PGD) is an itrative variant of FGSM with a random point. For every step the FGSM algorithm moves the input in the direction of the gradient bounded in the l∞ norm. (https://arxiv.org/pdf/1706.06083.pdf)
Arguments:
model
: The model to base teh attack upon.loss
: the loss function to use, assuming that it includes the prediction function i.e. loss(x, y) = crossentropy(m(x), y)x
: The input to be perturbed.step_size
: The ϵ value in the FGSM step.iters
: The maximum number of iterations to run the algorithm for.
ModelVerification.attack
— Methodattack(model, input, output; restart=100)
ModelVerification.attack
— Methodattack(problem; restart=100)
ModelVerification.project
— Methodproject(x, dir::AbstractVector, set::Hyperrectangle)
ModelVerification.project
— Methodproject(x, dir::AbstractVector, set::LazySet)
ModelVerification.project
— Methodproject(p, rect::Hyperrectangle)
ModelVerification.project
— Methodproject(p, polytope::LazySet)