• DataWhale八月组队学习-李宏毅深度学习Task06-卷积神经网络


    Network架构设计

    1 卷积神经网络(Convolutional Neural Network)

    1.1 应用:

    • CNN多被用于图像处理领域

    1.2 困难:如何将一张影像当作一个模型的输入

    • 目的是让model得出的y的预测值和测试集中y的值之间的交叉熵越小越好。
    • 对于测试集中的y label而言,其向量的长度决定了特征的数量

    1.3 计算机眼中的图片:

    • 计算机眼中的图片是一个三维tensor

    • 长和宽代表了像素的大小,高代表通道数,也就是图片的组成要素的数量(RGB三元素)

    • 将图片拉直变为一个向量,就可以将其作为Network的输入。

    • 使用全连接网络参数数量太大。虽然参数的增加可以增加模型的弹性,但是存在过拟合的风险。(是否需要这么多参数呢?)

    • 观察

      • 根据一张图片中的关键特征来判断图片中的物种类别(或许根本没有必要将整张图片作为输入)

        • 简化:在CNN中,设定一个区域为Receptive field,每一个神经元只用关心自己的划定的区域即可。(区域可以任意自定义化)

        • 最经典的区域安排方式:考虑全部的channelskernel size(高和宽的整合)常见的是3×3。通常同一个区域会有多个神经元去使用。

        • 各个区域间的关系:区域移动的距离叫做stride,要让区域之间具有高度的重叠。

        • 如果区域移动后超出影像范围之外具有了overlap,需要用0来替代overlap中的值。

        • 最后使得图片中的每一个位置都有神经元在侦测。

      • 同样的关键特征可能出现在不同图片的不同区域:由第一个观察可以知道,图片中的每个位置都有神经元侦测,所以侦测鸟嘴的神经元做的事情是一样的,只是侦测的区域不同。如果不同的区域都需要侦测鸟嘴的神经元也会导致参数过多。

        • 简化:让不同区域的神经元共享参数(所使用的参数相同,输入输出不同)

        • 常见共享设定:每个区域都有自己特定的一组参数叫做Filter

    1.4 三者比较(卷积层的好处)

    • 区域限制加上参数共享就是卷积层(相比于全连接层弹性会变小),使用卷积层的Network叫做CNN(为影像设计而生)

    • CNN具有较大的bias,并不一定是坏事,因为bias小的全连接层可能出现过拟合现象。

    1.5 两个版本的CNN讲述

    1.6 Pooling(池化)

    • 对像素进行二次抽样将不会改变图片的类别

    • 运作方式:每个Filter都会产生一组数字,将数字划分为多个组别,每个组别选取一个代表(Max Pooling选择的是数值最大的数字作为代表)

    • 池化所作的事情就是将图片变小,通常在卷积后进行池化(用于减少运算量)。

    1.7 Flatten(扁平化)

    • 作用:将影像中得到的矩阵的数值拉直形成一个向量,再将得到的向量送入全连接层当中。

    2 自注意力机制

    2.1 背景

    • CNN模型中,输入模型的是一个向量。而某些情况下我们需要输入一组向量,并且每个向量的长度可能会改变,此时CNN无法解决。

    • 例如:如果输入是一个句子,句子中的每个词语的长度都不一样。一个做法是将所有的词汇汇总起来形成一个无比巨大的向量。但这样处理无法识别词语的语义。所以出现了Word Embedding(会给每一个词汇一个向量),进行它得出的向量具备语义,相同类别的词汇会汇集在一起。

    • 三种可能的输出

      • 输入的每一个向量都有对应的输出label。例如:词性分析

      • 所有的输入向量只对应一个输出。例如:情感分析、语音识别

      • 机器自己决定需要输出的数量(seq2seq)。例如:翻译

    2.2 输入和输出一样多的情况(序列标签Sequence Labeling

    • 初始想法:将每一个向量都输入到fully-connected中,可是对于相同的向量无法得到不同的输入,比如:一个句子可能出现相同词汇可是词性不同。如果想要做到,就需要将多个向量组合起来一起加入到network中才可以实现。

    • Self-attention

      • 两者交替使用

      • 运作原理:

        • 输入可能是整个networkinput,也可能是某个隐藏层的output。考虑了所有的输入才得到了最后的输出。

        • 产生b1向量的步骤

          • 根据a1找到句子中跟a1相关的其它向量。

          • 如何决定两向量之间的相关度

          • 最终进行soft-max,也可以其使用其它函数。

          • 根据上述得到的数据去抽取出句子中的重要信息

      • 从矩阵乘法的角度重新梳理运行原理

      • 需要去学习的参数只有Wq、Wk、Wv

  • 相关阅读:
    JAVA企业级开发-BOM&DOM(03)
    JAVA企业级开发-JavaScript(02)
    JAVA基础--IO输入输出(File使用)17
    day03-CSS(1)
    day02-HTML(2)
    day01-HTML(1)
    apache2.4 只允许合法域名访问网站 禁止使用ip、非法域名访问
    电子书格式转换
    推荐几本学习MySQL的好书
    Linux上vi(vim)编辑器使用教程
  • 原文地址:https://www.cnblogs.com/MurasameLory-chenyulong/p/15186790.html
Copyright © 2020-2023  润新知