李宏毅机器学习笔记:CNN和Self-Attention

前言

本文主要记录关于李宏毅机器学习2021中HW3和HW4的卷积神经网络和自注意力机制网络部分的笔记,主要介绍了CNN在图像领域的作用及如何处理图像数据,Self-Attention在NLP(自然语言处理)领域的作用和处理词之间的关系。

一、CNN卷积神经网络

  • CNN处理图像的大致步骤

前面介绍的FCN全连接神经网络是通过把一维的向量不断通过中间的隐藏层的multi和bias最后输出指定列数的vector,而图像这个多维向量是经过一个卷积神经网络最后再经过flatten展开成一维再通过FCN输出对应类别数的一个vector,而中间的CNN处理部分由Kernel——pooling——activation组成,当然CNN的提出是为了解决FCN解决不了多维向量大数据量输入的问题,FCN同样也可以解决图像但是前提是把这个多维的图像数据flatten展开后再输入,可想而知其数据量之大,如下图可表示为CNN大致的处理过程
在这里插入图片描述
如下图展现了使用FCN进行图像处理的数据量大的问题
在这里插入图片描述

  • CNN的特别表现之处

Observation 1:第一个特别表现之处在于其处理数据的局部性,可以明显和FCN作比较,FCN对于输入的数据是把每个数据之间都进行了关联型处理,这样做的结果不仅数据量大计算量大而且冗余量大,因此CNN中使用filter这样一个卷积核实现局部相关性,不需要隐藏层中每一个神经节点都去负责全部的部分,只需要负责其中一小块部分就可以了,最后的时候,每个神经节点负责的部分再综合考虑起来就可以做到效益最大化,如图所示:
在这里插入图片描述

Observation 2:第二个特别表现的地方在于它的位置无关性,比如检测鸟嘴,但是鸟嘴在图片中的位置并不是统一的,这时候不需要去训练多个CNN网络去检测这个位置的鸟嘴还是那个位置的鸟嘴,CNN中只要鸟嘴存在图片中,不论哪个位置,可能当前神经元检测不出来,但是另外一个神经元就可以马上检测出来,这也和CNN的权值共享有关,虽然位置不同但是内容一样表示的含义一样,经过相同的权值就得到类似的结果检测出鸟嘴。
在这里插入图片描述

Observation 3:第三个特别表现的地方就是它特有的pooling池化,池化的主要目的就是减少数据量,多次的池化将要处理的数据不断减小,当然是把次要的特征砍掉,只保留主要重要的特征,池化有很多种,最大池化,平均池化等等,其实池化也是卷积的一种特殊操作而已。
在这里插入图片描述

  • CNN卷积神经网络整体的流程

通过上述说到的几个CNN相比较FCN特别处理之处就可以整理出CNN卷积神经网络处理图像数据的流程图了,如图所示图像经过多次的卷积池化卷积池化再Flatten展开成一维向量最后经过FCN输出类别。
在这里插入图片描述

  • CNN和FCN的比较

CNN和FCN相比较起来,简化了许多流程,CNN也可以看成FCN的简单化,FCN看作是CNN的复杂化,CNN相比较于FCN引入了很多新的方法:卷积核,池化,权值共享,步长等等,CNN可以调整较多的超参数来获得更好的结果,比如调整卷积核大小,卷积核步长等等,CNN不再需要看整个image而仅仅需要看卷积核覆盖住那个区域的image,并且CNN更好地诠释了如何将图像特征一层一层的提取出来,当然这里就要说到feature map即特征图,特征图就是隐藏层中输出或提取出来的抽象图像。
在这里插入图片描述

  • CNN在围棋领域的作用

可能看到围棋没办法让人联想到图像,但是AlphaGo将围棋整个19x19棋面作为image,而channel使用48,主要是围棋面上每个点可能可以走的路数各种可能性作为channel,因此ALphaGO总的来说输入19x19x48的一个围棋数据,然后将要接下去要走的棋子作为分类目标,哪个分类目标可能性大就走哪一步,但值得一提的是在AlphaGo中没有使用到Pooling操作,更多是在做padding,其实可想而知,在围棋这个场景下需要更精细的目标因此不适合将数据量缩小。
在这里插入图片描述

二、Self-Attention自注意力机制

  • 语音或词向量表示

语音和词语不同于图像等数据有直接的数字意义,通常也需要将语音转换成向量表达,最经典的就是one-hot编码,这样的编码方式固然简单但是会产生大量数据,因此又有了词嵌入式,相比于独热编码,一个词表示一个向量,词嵌入通过分类等形式将词向量表示的维度降低。
在这里插入图片描述

  • 自注意力机制基本结构

每个词代表一个向量那么对应的输出的label可以有多种,比如一个词对应一个label,一堆词组成一起对应一个label等等,那么这些词之间是互相关联的如果仅仅用FCN完全做不到进行词之间的互关,比如一个词可能有多个意思,但是在FCN中相同词相同向量必定是相同输出,但是在真实情况下并不是我们所希望的这样,因此需要引入词相关的概念,即在输入向量进入网络处理的时候需要参考上下文context
在这里插入图片描述

  • 自注意力机制具体计算

自注意力机制的具体计算形式主要是通过q,k,v三个参数,来生成attention score,生成的score是经过和其他的词向量进行关联相乘相加,值得注意的是自注意力机制的输入是一整个句子,而不是单个词向量输入,即自注意力机制处理的时候可以很好地把上下文进行关联。
在这里插入图片描述
对于不同的场景可能还会遇到一个词向量拥有多个head即一个词向量拥有多个参数
在这里插入图片描述

  • 自注意力机制机制和卷积神经网络比较

自注意力机制和CNN相比较其实两者很相似,自注意力机制不一定要用在语音领域也可以用在图像领域,其经过特殊的调参发挥的作用和CNN是一模一样的,简单来说,CNN是简化的self-attention,对于一幅图像而言,CNN只需要局部关联处理就行,而自注意力机制需要全部输入然后互关。
在这里插入图片描述
在这里插入图片描述

  • 自注意力机制和RNN的比较

自注意力机制和循环神经网络共同的特点都是主要用于NLP自然语言处理,并且他们对于词上下文都进行了处理,主要不同之处在于RNN对于词输入仅局限于前文,对于后文照顾较少,而自注意力机制直接将上下文都关联照顾到,而且自注意力机制的处理是并行处理,词向量同时进入同时输出,因此整体来说自注意力机制更具有优势。
在这里插入图片描述

  • 3
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
李宏毅的2020机器学习笔记中,有一个关于注意力机制(Attention)的部分。这部分内容主要介绍了生成模型(Generation)、注意力(Attention)、生成的技巧(Tips for Generation)以及指针网络(Pointer Network)。在生成模型中,主要讲述了如何生成一个有结构的对象。接下来介绍了注意力机制,包括一些有趣的技术,比如图片生成句子等。在生成的技巧部分,提到了一些新的技术以及可能遇到的问题和偏差,并给出了相应的解决方案。最后,稍微提到了强化学习。其中还提到了在输出"machine"这个单词时,只需要关注"机器"这个部分,而不必考虑输入中的"学习"这个部分。这样可以得到更好的结果。另外,还提到了关于产生"ei"的方法,其中有研究应用了连续动态模型自注意力(Self-attention)来学习位置编码的方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [2020李宏毅机器学习笔记-Condition Generation by RNN&Attention](https://blog.csdn.net/zn961018/article/details/117593813)[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^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [李宏毅机器学习学习笔记Self-attention](https://blog.csdn.net/weixin_44455827/article/details/128094176)[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^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值