读论文系列:Intriguing properties of neural networks

读论文系列:Intriguing properties of neural networks

资料

  1. 论文原文
    • dblp:https://dblp.uni-trier.de/rec/journals/corr/SzegedyZSBEGF13.html
    • arxiv:https://arxiv.org/abs/1312.6199
  2. 大佬笔记,写的比较详细,中文翻译得当:https://zhuanlan.zhihu.com/p/217683614
  3. 社区中对论文中扰动部分的 pytorch 版复现:https://github.com/Harry24k/IPNN-pytorch
  4. 外国人网课讲论文:https://www.bilibili.com/video/BV1Ev411E7ZG/?p=14
  5. 小姐姐给自己讲论文:https://www.bilibili.com/video/BV1ZT4y1r7Rv

论文笔记

主要内容

  1. 网络的空间信息包含着语义信息
  2. 扰动可以导致错误分类

实验内容

  1. MNIST数据集,FC 网络
  2. ImageNet数据集,AlexNet 网络
  3. 数据来自 Youtube 的数据集,QuocNet网络,详见论文(arXiv:1112.6209, 2011)

语义信息部分的实验

本文主要以 MNIST 实验为案例(请配合 https://github.com/Harry24k/IPNN-pytorch)

  1. 网络结构:其实就是全连接+ReLU、全连接+ReLU、全连接。选取第二个ReLU 输出的是隐节点的特征图。本实验为了证明在网络为到达终点时就已经可以表示一定的信息。
    class FC(nn.Module):
    def __init__(self):
        super(FC, self).__init__()
            
        self.layer_1 = nn.Sequential(
            nn.Linear(28*28, 100),
            nn.ReLU()
        )
        
        self.layer_2 = nn.Sequential(
            nn.Linear(100, 100),
            nn.ReLU()
        )
        
        self.layer_3 = nn.Sequential(
            nn.Linear(100, 10)
        )
        
    def forward(self, x):
        x = x.view(-1, 28*28)
        
        out_1 = self.layer_1(x)
        out_2 = self.layer_2(out_1)
        out_3 = self.layer_3(out_2)
    
        return out_3, out_2, out_1
       ```
    
  2. 自然基向量
    model.eval()
    
    for i in range(5) :
        
        unit_vector = torch.eye(100)[i,:]
        
        for images, labels in test_loader:
    
            _, phi_x, _ = model(images.to(device))
            values = torch.mv(phi_x.cpu(), unit_vector)
            
        top_idx = np.argsort(values.data.numpy())[-8:] # 选最大值
        top_img = images[top_idx]
            
        imshow(torchvision.utils.make_grid(top_img, normalize=True), "Direction to :" + str(i+1) + "th vector")
    
    Direction to 1th vector Direction to 2th vectorDirection to 3th vectorDirection to 4th vectorDirection to 5th vector
  3. 随机基向量
    model.eval()
    
    for i in range(5) :
        
        random_vector = torch.rand(100)
    
        for images, labels in test_loader:
    
            _, phi_x, _ = model(images.to(device))
            values = torch.mv(phi_x.cpu(), random_vector)
            
        top_idx = np.argsort(values.data.numpy())[-8:]
        top_img = images[top_idx]
            
        imshow(torchvision.utils.make_grid(top_img, normalize=True), "Direction to :" + str(i+1) + "th vector")
    
    Direction to 1th vector Direction to 2th vector Direction to 3th vector Direction to 4th vectorDirection to 5th vector
  4. 解释:
    1. 把向量空间想象成一个线性空间,这个 ReLU 输出的空间可以投影到很多基向量上边。其中,自然基向量和随机基向量是两种不同类型的基向量。
    2. 自然基向量通常指的是在标准坐标系中,与坐标轴对齐的一组基向量。例如,在三维空间中,自然基向量通常表示为:
      • e 1 = ( 1 , 0 , 0 ) \mathbf{e}_1 = (1, 0, 0) e1=(1,0,0)
      • e 2 = ( 0 , 1 , 0 ) \mathbf{e}_2 = (0, 1, 0) e2=(0,1,0)
      • e 3 = ( 0 , 0 , 1 ) \mathbf{e}_3 = (0, 0, 1) e3=(0,0,1)
    3. 随机基向量则不是固定的,它们是通过某种随机过程生成的向量。在数学和计算机科学中,随机基向量通常用于构建随机矩阵或者作为随机算法的一部分。随机基向量不必是正交的,也不必有单位长度,它们仅仅需要满足线性无关的条件,即没有任何一个向量可以被其他向量线性表示。生成随机基向量的一个简单方法是,从一个随机矩阵中提取一组线性无关的列(或行)。
    4. 在本案例中,unit_vector = torch.eye(100)[i,:]是生成了一个单位阵,单位阵的第 i i i 列代表了第 i i i 个自然基向量。第二个特征图大小是 100x100,一共有 100 个维度。
    5. 然后,torch.mv(phi_x.cpu(), unit_vector)是矩阵乘法,进行了将ReLU 输出的特征矩阵投影到基向量上的过程。
    6. 接着,top_idx = np.argsort(values.data.numpy())[-8:]的意思是,按照大小排序,选 8 个最大的值,方便画图。
    7. 🤔这一步没太懂,top_img = images[top_idx],最大的 8 个值,为什么就变成了图片的索引。
    8. 总的来说,每一个维度输出的图片,看起来有一定的相似性,说明了隐节点机会已经有了一定的信息。

扰动导致错误分类实验

  1. 论文中,通过微小的扰动,叠加在要分类的图片上,再输入网络就可以导致网络发生严重的错误。这种扰动的设计通过优化完成,在保证网络发生错误的前提下,尽量减少扰动的幅度。
    论文在 MINIST 上的实验结果

  2. 论文中使用L-BFGS优化方法,L-BFGS介绍:https://blog.csdn.net/xian0710830114/article/details/128419401,本处就略过了

  3. https://github.com/Harry24k/IPNN-pytorch,使用了剃度下降替代L-BFGS,效果如下(7识别成了 0)
    在这里插入图片描述

  • 18
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值