李宏毅2022机器学习HW10解析

这篇具有很好参考价值的文章主要介绍了李宏毅2022机器学习HW10解析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

李宏毅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

     文章来源地址https://www.toymoban.com/news/detail-471887.html

到了这里,关于李宏毅2022机器学习HW10解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 李宏毅机器学习 hw7 boss baseline分享

    使用bert来做问答任务 答案是都是可以在 Document 找到的,输入 Document 和 Query 输出两个数字分别表示答案在Document中的开始和结束位置。 输入格式如下: doc stride ,初始时 Doc stride 等于 max_paragraph_len ,这样会导致在测试时如果答案在边界附近就会被切割到两个不同的 window 中

    2024年02月06日
    浏览(26)
  • 2023李宏毅机器学习HW05样例代码中文注释版

    这里只是 2023 李宏毅机器学习 HW05 样例代码的中文注释版的分享,下面的内容绝大部分是样例代码,补充了小部分函数的功能解释,没有做函数功能上的修改,是 Simple baseline 版本。 notebook 代码下载: [EN] [ZH] 进阶阅读:李宏毅2023机器学习作业HW05解析和代码分享 英译中(繁体

    2024年02月05日
    浏览(67)
  • 李宏毅_机器学习_作业4(详解)_HW4 Classify the speakers

    本次作业需要学习完transformer后完成! 做语者辨识任务,一共有600个语者,给了每一个语者的语音feature进行训练,然后通过test_feature进行语者辨识。(本质上还是分类任务Classification) Simple(0.60824):run sample code and know how to use transformer Medium(0.70375):know how to adjust parameters of tra

    2024年02月01日
    浏览(24)
  • 李宏毅-机器学习hw4-self-attention结构-辨别600个speaker的身份

    一、慢慢分析+学习pytorch中的各个模块的参数含义、使用方法、功能: 1.encoder编码器中的nhead参数: self.encoder_layer = nn.TransformerEncoderLayer( d_model=d_model, dim_feedforward=256, nhead=2) 所以说,这个nhead的意思,就是有window窗口的大小,也就是一个b由几个a得到 2.tensor.permute改变维度的用

    2024年02月09日
    浏览(26)
  • 机器学习和深度学习-- 李宏毅(笔记与个人理解)Day10

    这节课主要介绍机器学习和深度学习任务中常见的问题分类以及相应的解决之道 这张图总体的概述了一个任务中的大小坎坷,不认得英文? 去Google吧~ training Loss 不够的case Loss on Testing data over fitting 为什么over fitting 留到下下周哦~~ 期待 solve CNN卷积神经网络 Bias-Conplexiy Trade

    2024年04月17日
    浏览(29)
  • 【李宏毅】HW12

    在这个HW中,你可以自己实现一些深度强化学习方法: 1、策略梯度Policy Gradient 2、Actor-Critic 这个HW的环境是OpenAI gym的月球着陆器。希望这个月球着陆器落在两个旗子中间。 什么是月球着陆器? “LunarLander-v2”是模拟飞行器在月球表面着陆时的情况。 这项任务是使飞机能够“

    2024年02月10日
    浏览(27)
  • 李宏毅-21-hw3:对11种食物进行分类-CNN

    一、代码慢慢阅读理解+总结内化: 1.关于torch.nn.covd2d()的参数含义、具体用法、功能: (1)参数含义: 注意,里面的“padding”参数:《both》side所以是上下左右《四》边都会加一个padding数量的0列: 证明如下: 运行结果:torch.Size([3, 4, 5, 4] (2)具体用法: 输入:x[ batch_size,

    2024年02月09日
    浏览(27)
  • 机器学习HW15元学习

    任务对象是Omniglot数据集上的few-shot classification任务,内容是利用元学习找到好的初始化参数。 The Omniglot dataset Omniglot数据集-背景集: 30个字母 -评估集: 20个字母 问题设置: 5-way 1-shot classification Training MAML on Omniglot classification task. Training / validation set:30 alphabets multiple charac

    2024年02月16日
    浏览(27)
  • 机器学习李宏毅学习笔记37

    ChatGPT简单原理介绍 Chatgpt以句子为输入,输出这个句子后面接的词汇的概率分布,给每一个可能的符号一个概率,根据这个分布进行sample,每次sample出来的词汇可能都是不一样的,所以答案每次也都不相同。把输出的词汇加在输入给gpt的句子后面,重复上面的过程,直到最后

    2024年02月16日
    浏览(25)
  • 机器学习李宏毅学习笔记33

    神经网络压缩(一) 类神经网络剪枝(pruning) 简化模型,用比较少的参数,但让效能差不多,这就是network compression这件事。有些情况下需要把模型用在resource constrain(资源有限)的情况下,比如说跑在智能手表上、小型无人机上等等。只有比较少的内存和计算能力,这时就

    2024年02月11日
    浏览(74)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包