zoukankan      html  css  js  c++  java
  • note for DL from scratch

    • 对于神经网络的 输出层, 一般而言, 回归问题采用 恒等函数 :a(x)=xa(x)=xa(x)=x, 分类问题采用 softmax 函数 :yk^=eak∑i=1neaihat{y_k}=frac{e^{a_{k}}}{sum_{i=1}^ne^{a_i}}yk^=i=1neaieak
    • softmax 的特征:
    1. softmax 的输出总和为 1
    2. 可以把 softmax 的输出解释为概率
    3. 一般而言, 输出层 的 softmax 函数会被省略 (原因见P68)
    • 神经网络的学习中所用的指标称为 损失函数(loss function) , 一般使用 均方误差(mean squared error :E=1n∑k(yk^−yk)2E=frac1nsum_k(hat{y_k}-y_k)^2E=n1k(yk^yk)2交叉熵误差 (cross entropy error) :E=−∑kyklog⁡yk^E=-sum_ky_klog hat{y_k}E=kyklogyk^
      注意:

      上面两式的 yky_kyk(标签) 为独热编码的形式, 即只有正确标签为 1 ,其他均为 0.y^hat{y}y^ 为模型预测.

      因此, 交叉熵误差 实际上只是计算对应正确解标签的输出的自然对数. 比如, 假设正确解标签的索引是 “2”, 与之对应的神经网络的输出是0.6, 则交叉熵误差是−log(0.6)=0.51-log(0.6)=0.51log(0.6)=0.51; 若 “2” 对应的输出是 0.1, 则交叉熵误差为 −log0.1=2.30-log0.1=2.30log0.1=2.30 (就很大). 也就是说, 交叉熵误差的值是由正确解标签所对应的的输出结果决定的. ( 即模型预测正确标签的概率 ) (P87)

    • 当我们使用 batch gradient descent 进行模型优化时, 实际上是对 所有训练数据的损失函数的和 进行优化.这样计算代价太大. 以交叉熵误差为例, 我们可以通过求 平均损失函数 来解决这个问题:E=−1N∑n∑ktnk logynkE=-frac1Nsum_nsum_kt_{nk} log y_{nk}E=N1nktnk logynk通过这样的平均化, 可以获得和训练数据的数量无关的统一指标. 比如, 即便训练数据有 1000 或 10000 个 , 也可以求得单个数据的平均损失函数.

      有了 平均损失函数, 我们就可以使用 mini-batch 来对模型进行训练了.

    • Momentum 没有学习率衰减, adagradadam 有学习率衰减.

    • Batch Normalization 的思路是调整各层的激活值分布使其拥有适当的广度. 为此, 要向神经网络中插入对数据分布进行正规化的层, 即 Batch Normalization 层.

      Batch Norm, 顾名思义就是以进行学习时的 mini-batch 为单位, 按 mini-batch 进行正规化. 具体而言, 就是进行使数据分布的均值为 0, 方差为 1 的正规化.

      为什么 Batch Norm 这么惹人注目呢?因为 Batch Norm 有以下 优点:

      • 可以使学习快速进行 ( 可以增大学习率 )
      • 不那么依赖初始值 ( 对于初始值不用那么神经质 )
      • 抑制过拟合 ( 降低 Dropout 等的必要性 )
    • 抑制 过拟合 的方法:

      • 权值衰减
      • Dropout
    • 超参数(hyper-parameter) 有哪些:

    1. 各层神经元的数量
    2. batch 大小
    3. 学习率
    4. 权值衰减
    • 超参数的优化:

      有报告显示, 在进行神经网络的超参数的最优化时, 与 网格搜索 等有规律的搜索相比, 随机采样 的搜索方式更好. 这是因为在多个超参数中, 各个超参数对最终的识别精度的影响程度不同.

      在超参数的最优化中, 要注意的是深度学习需要很长时间(比如, 几天或几周). 因此, 在超参数的搜索中, 需要尽早放弃那些不符合逻辑的超参数. 于是, 在超参数的最优化中, 减少学习的 epoch, 缩短一次评估所需的时间是一个不错的办法.

      超参数最优化步骤简单归纳如下:

    1. 设定超参数的范围
    2. 从设定的超参数范围中随机采样
    3. 使用步骤 2 中采样得到的超参数的值进行学习, 通过验证数据评估识别精度(但是要将epoch设置的很小).
    4. 重复步骤 2 和步骤 3 (100次等), 根据它们的识别精度的结果, 缩小超参数的范围.
    • 卷积层全连接层 的比较

      全连接层忽视输入数据的形状, 将全部输入数据作为相同的神经元(同一维度的神经元)处理, 所以无法利用与形状相关的信息.

      而卷积层可以保持形状不变. 当输入数据是图像时, 卷积层会以 3 维数据的形式接受输入数据, 并同样以3 维数据的形式输出至下一层. 因此, 在 CNN 中,可以正确理解图像等具有形状的数据.

    • 卷积层进行的处理就是卷积运算. 卷积运算相当于图像处理中的 “滤波运算”. 因此卷积层也叫 滤波器(filter)

    • 同一卷积层含多个滤波器的优点: 不同滤波器有不同的权重参数, 它们可以对上一层网络提取不同的特征信息

    • 在进行卷积层的处理之前, 有时要向输入数据的周围填入固定的数据(比如 0 等), 这称为 填充 (padding). 幅度为 1 的填充是指用幅度为 1 像素的 0 填充周围.

      使用填充主要是为了调整输出的大小. 比如, 对大小为 (4,4) 的输入数据应用 (3,3) 的滤波器时, 输出大小变为 (2,2) , 如此反复运算最后的输出就会变为 1, 将无法继续卷积运算. 使用填充就可以保持数据大小(scale)不变.

    • 应用滤波器的位置间隔称为 步幅(stride).

      增大步幅后, 输出大小会变小. 而增大填充后, 输出大小会变大.OH=H+2P−FHS−1OW=W+2P−FWS−1egin{aligned} OH&=frac{H+2P-FH}{S}-1 \ OW&=frac{W+2P-FW}{S}-1 end{aligned}OHOW=SH+2PFH1=SW+2PFW1

    • 在 3 维数据的卷积运算中, 输入数据和滤波器的 通道数 要设为相同的值.

      如果要在通道方向上也拥有多个卷积运算的输出, 该怎么做呢? 为此, 就需要用到多个滤波器 (权重).(P211)

    • 批处理

      举例: 将保存 100 个图像数据的 100 个二维数组 (28×28) 展开成 100 个一维数组 (28×28 列). 通过批处理可以实现处理的高效化和学习时对 mini-batch 的对应.

    • 池化层 是可以省略的.池化是缩小高, 长方向上的空间的运算. 一般来说, 池化的窗口大小会和步幅设定成相同的值. 比如, 3×3 的窗口的步幅会设为 3.

      除了 Max池化 外, 还有 Average池化 等. 相对于 Max池化 是从目标区域中取出最大值, Average池化 则是计算目标区域的平均值. 在图像识别领域, 主要使用 Max 池化.

    • 在获取图像的卷积特征后, 通过最大池采样方法对卷积特征进行降维. 我们将卷积特征划分为数个 n×n 的不相交区域, 用这些区域的最大(或平均)特征来表示降维后的卷积特征. 这些降维后的特征更容易进行分类.

    • 池化层的特征

      1. 没有要学习的参数.
        池化层和卷积层不同,没有要学习的参数. 池化只是从目标区域中取最大值 (或者平均值), 所以不存在要学习的参数.
      2. 通道数不发生变化
        经过池化运算, 输入数据和输出数据的通道数不会发生变化.
      3. 对微小的位置变化具有鲁棒性(健壮)
        输入数据发生微小偏差时, 池化仍会返回相同的结果, 池化会吸收输入数据的偏差.
      4. 减小计算复杂度
    • 深度学习喜欢 小而深, 任何一个大卷积层都可以由几个小卷积层叠加来等效, 且后者的复杂度大大低于前者

  • 相关阅读:
    python-进阶-优雅的python写法
    springMVC3学习(十一)--文件上传CommonsMultipartFile
    springMVC3学习(十)--注解式控制器
    CSS3/jQuery自定义弹出窗口
    window.open()详解及浏览器兼容性问题
    空格&nbsp在不同浏览器中显示距离不一致问题解决方法
    jQuery拖动调整表格列宽度-resizableColumns
    jQuery表格排序组件-tablesorter
    springMVC3学习(九)--redirect和forward跳转
    springMVC3学习(八)--全局的异常处理
  • 原文地址:https://www.cnblogs.com/larkiisready/p/11681617.html
Copyright © 2011-2022 走看看