李宏毅2022机器学习HW10解析

准备工作

作业十是黑箱攻击(Blackbox Attack),完成作业需要助教代码和数据集,运行代码过程中保持联网可以自动下载数据集,已经有数据集的情况可关闭助教代码中的下载数据部分。关注本公众号,可获得代码和数据集(文末有方法)。

提交地址

JudgeBoi:https://ml.ee.ntu.edu.tw/hw10/,非课程选修学生无法提交,有想讨论沟通的同学可进QQ群:156013866。以下为作业解析,详细代码见文末。

Simple  Baseline(acc <= 0.70)

方法:FGSM方法。FGSM只对图片进行一次攻击,对应助教代码中fgsm函数,无需修改。代理模型(proxy models)是resnet110_cifar10,在被攻击图片中的精度benign_acc=0.95, benign_loss=0.22678。在攻击中,使用gen_adv_examples函数调用fgsm函数,精度降低:fgsm_acc=0.59, fgsm_loss=2.49272。

Medium Baseline (acc <= 0.50)

方法:I-FGSM方法 + Ensembel Attack。ifgsm方法相比与fgsm相比,使用了多次的fgsm循环攻击,对应代码中的ifgsm函数,无需修改。另外使用了Ensemble attack,该方法使用多个代理模型攻击,这里我们需要改动ensembelNet这个类中的forward函数,在攻击前测试的精度benign_acc=095, benign_loss=0.15440。在攻击中,使用gen_adv_examples函数调用emsebel_model和ifgsm,精度降低明显:ensemble_ifgsm_acc = 0.00, emsemble_ifgsm_loss=13.41106

    def forward(self, x):        emsemble_logits = None        for i, m in enumerate(self.models):            emsemble_logits = m(x) if i == 0 else emsemble_logits + m(x)        return emsemble_logits/len(self.models)

Strong Baseline (acc <= 0.30)

方法:MIFGSM + Ensemble Attack(pick right models)。mifgsm相比于ifgsm,加入了momentum,避免攻击陷入local maxima(这个与optimizer里面momentum的原理类似),这里我们修改mifgsm函数。在medium baseline中,我们随机挑选了一些代理模型,这样很盲目,根据文章Query-Free Adversarial Transfer via Undertrained Surrogates(https://arxiv.org/abs/2007.00806)描述,可以选择一些训练不充分的模型,训练不充分的意思包括两方面:一是模型的训练epoch少,二是模型在验证集(val set)未达到最小loss。我们依据论文中的一个例子,使用https://github.com/kuangliu/pytorch-cifar中的训练方法,选择resnet18模型,训练30个epoch(正常训练到达最好结果大约需要200个epoch),将其加入ensmbleNet中。攻击后的精度和loss:ensemble_mifgsm_acc = 0.00, emsemble_mifgsm_loss = 12.25672。可以尝试更多的undertrain model来加强攻击。​​​​​​​

        # TODO: Momentum calculation        grad = x_adv.grad.detach()        grad = decay * momentum + grad/(grad.abs().sum() + 1e-8)        momentum = grad        x_adv = x_adv + alpha * grad.sign()

Boss Baseline (acc <= 0.15)

方法:DIM-MIFGSM + Ensemble Attack(pick right models)。相对于strong baseline,我们将mifgsm替换为dim-mifgsm,后者在前者的基础上,对被攻击图片加入了transform来避免overfitting。该技巧来自于文章Improving Transferability of Adversarial Examples with Input Diversity(https://arxiv.org/pdf/1803.06978.pdf),文章中的transform是先随机的resize图片,然后随机padding图片到原size,我们在mifgsm函数的基础上写dim_mifgsm函数,后者添加的部分代码如下。在攻击中,使用gen_adv_examples函数调用emsebel_model和dim_mifgsm,攻击后的精度和loss:ensemble_dmi_mifgsm_acc = 0.00, emsemble_dim_mifgsm_loss = 13.71190。​​​​​​​

    if torch.rand(1).item() >= p:        #resize img to rnd X rnd        rnd = torch.randint(29, 33, (1,)).item()        x_adv = transforms.Resize((rnd, rnd))(x_adv)        #padding img to 32 X 32 with 0        left = torch.randint(0, 32 - rnd + 1, (1,)).item()        top = torch.randint(0, 32 - rnd + 1, (1,)).item()        right = 32 - rnd - left        bottom = 32 - rnd - top        x_adv = transforms.Pad([left, top, right, bottom])(x_adv)​​​​​​​

作业十答案获得方式:

  1. 关注微信公众号 “机器学习手艺人” 

  2. 后台回复关键词:202210

     

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
李宏2023机器学习作业12是使用强化学习完成Lunar Lander任务,训练飞行器在月球上着陆。作业基于OpenAI的gym框架,但只能在Linux系统上使用。作业过程需要助教提供的代码,可以通过关注公众号获取代码。\[1\] 此外,还有一些与ML2023Spring - HW01相关的信息,包括课程主页、课程视频、Kaggle链接、示例代码等。你可以在做作业之前观看相关视频,了解数据特征等内容。\[2\] 在作业中,还对代码进行了一些修改,以便于后续的调参。具体修改的部分是在My_Model类中,通过修改超参数'config'中的模型结构,注意维度的变化。\[3\] 希望以上信息对你有所帮助。如果还有其他问题,请随时提问。 #### 引用[.reference_title] - *1* [李宏2022机器学习HW12解析](https://blog.csdn.net/weixin_42369818/article/details/126119360)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [李宏2023机器学习作业 HW01 解析和代码分享](https://blog.csdn.net/weixin_42426841/article/details/129520007)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值