linf norm attack
Hi and thanks for open source. I am very interested in your paper. I have a question. If I want to make PPBA perform linf norm attack, how do I need to modify the code?
Thanks for your interest. Please kindly refer to https://github.com/theFool32/PPBA/blob/9db2e7db3c86944d155a23e8b1494e530ca6c42c/gcv.py#L88 which is an example of performing the linf norm attack with 16. You should also remove the code for l2 norm like https://github.com/theFool32/PPBA/blob/9db2e7db3c86944d155a23e8b1494e530ca6c42c/main.py#L121
Thanks a lot for your answer. The l2 norm in your code is used directly on uz. Can the linf norm be used directly on uz as well?
For example, when the linf norm is 16:
uz=uz.clamp(-16 / 255, 16 / 255)
Actually, no.
Multiplying with the projection matrix does not change the l2 norm of uz. So it is the same to restrict on uz or the final noise.
But it is different for linf norm
$$|\delta|_2 = |A^Tz|_2 = tr((A^T z)^TA^T z) = tr(z^TAA^T z) = tr(z^Tz) = |z|_2 $$
I see.Thank you very much for your answer.