深度卷积网络:第二课

本文详细介绍了深度卷积网络的基本概念,包括数据切分、训练过程、学习种类、训练问题及解决方案。讨论了有监督、无监督和半监督学习,并深入探讨了神经网络的正则化方法,如L1/L2正则化、Dropout、多任务学习等。此外,还涉及了训练参数的调整,如学习速率、批大小等,并以MNIST问题为例,解释了SoftMax层在分类问题中的应用和交叉熵损失函数的重要性。
摘要由CSDN通过智能技术生成

本文是对《深度卷积网络 原理与实践》的整理

基本概念

对数据集合的切分

  • 对数据集不同的切分:
集合名称 训练集 验证集 测试集
功能 找到参数 找到超参数 评估性能
比例 80%(90%) 10% (5%) 10%(5%)

但是在实际运用中,我们的模型在测试集上效果可能还是不理想,可能也会把测试集作为训练集。因此,一些研究中已不再使用验证集。此时有点类似交叉验证(cross-validation)
不过,由于深度网络的训练往往较慢,所以交叉验证应用的比较少。

一个训练的过程:

以1000个数据,批大小为10。

  1. 读入1000个数据
  2. 将数据划分为训练集(900)和测试集(100),固定下来。
  3. 开始第一个epoch。将训练集的900个数全部打乱,但保持数据和真实标签的一一对应。
  4. 开始第一个batch,即打乱后的前10个数据送入网络
  5. 正向传播。将结果与期望值比较计算损失 L O S S LOSS LOSS
  6. 反向传播。更新网络参数 w i j w_{ij} wij
  7. 回到第4步,将第2个batch送入训练。重复直到所有900个训练数据全部跑了一遍
  8. 将测试集送入网络,正向传播。将结果与期望值比较,计算损失。
  9. 根据模型最后在训练集上的表现,做一些调整,如调整学习率停止训练停止训练并修改超参数
  10. 开始第二个epoch,将训练集的900个数据再次打乱。重复步骤3

学习的种类

有监督学习:回归、分类、标签、排序、Seq2Seq

  • 回归:从输入X给出一个数字Y。
    • 例子:从人物照片预测人的年龄。从股票走势预测明天的涨跌幅。
    • 一般Y是连续的。
  • 分类:从输入X给出它属于哪一个类别,例如:
    • 例子:人脸识别,手写数字识别,听歌识曲、AlphaGo的策略网络
    • 一般Y是离散的。因而损失函数一般为交叉熵损失(cross-entropy)
    • 一般给出的是属于不同类别的概率,不同类别相加的概率和为1。因而会用到后文提到的SoftMax层
    • 与回归的区别:不同于回归的一点是,如果两个模型一个预测一个35岁的人的年龄为18岁,另一个预测的为37岁,我们可以根据差值判断两个模型的优劣。然而,如果两个模型在预测手写字母A的时候,一个给出了B,一个给出了C,则无法判断两个模型的优劣。(有些时候这种判断依据值得商榷。)
  • 标签(tagging)
    • 它与分类的区别在于一个物体可以有多个不同的标签。因而每一个类别概率和可以大于1。
  • 排序(Ranking)
    • 它与回归的区别在于,它先回归到分数,然后按照分数的顺序给出排序结果。排序不关注具体的分数,只关注最终的排序结果。
  • 序列变换(Seq2Seq): 将一段序列转化为另一段序列。
    • 例子:翻译、语音识别、聊天机器人。
    • 一般使用RNN(循环神经网络),如其中的LSTM(长短期记忆模型)

无监督学习:聚类、降维、生成模型、GAN、自编码、推荐

  • 聚类(clustering):将数据集的样本自动划分为几簇(cluster),每簇内的样本有类似之处。
  • 降维(dimensionality reduction):将数据投射到地位空间,如自然语言处理中的word2Vec方法。
  • 生成模型(generative model):
    • 自编码(auto-encoding)
    • 生成对抗网络(GAN):只需输入大量无标签的图像,模型就能自动生成类似的图像。
  • 推荐(recommendation):目前常见的实现方法:
    • 协同过滤:如果计算出用户A和用户B的风格相似,则向用户A推荐用户B喜欢的东西
    • 关联规则:如果计算出购买了X的用户往往会购买Y,那么可向购买了X的用户推荐Y

半监督学习

先人工标记少量标签,然后从少量标签训练网络。再人工筛选和修改其中的标签,重复这个过程。因为机器的准确率会逐步提升,所以需要人工修改标签的数据就会变少。

训练中的问题:

欠拟合(under-fitting)

  • 出现原因:
    1. 网络容量不足,可以增加网络的广度和深度;
    2. 网络有可能陷入了局部的极值或者网络的拟合速度不够。这可以通过 调整学习率选取合适的初始化方法选取和是的网络架构等方法解决。
    3. 数据本身噪声过大
    4. 非凸问题,模型容易陷入局部极小值。但是因为我们都是小批量更新数据,而每个数据里都会引入一定的噪声,所以网络并不容易陷入局部极值点。实际问题中比较常见的问题是鞍点(解决方法见梯度下降)。

过拟合(over-fitting)

  • 出现原因:数据中包含噪声点
  • 解决办法:
    1. 在网络中引入正则化(详见神经网络的正则化) 如L1,L2正则化Dropout正则化集合多任务学习参数共享标签平滑(Label Smoothing)噪声标签(Noise Label)
    2. 检查数据是否覆盖了全部的类别,例如训练数据里苹果都是红色的,容易导致最后的模型无法识别绿色的苹果。
    3. 数据增强
在训练数据上的性能 在新数据上的性能
最佳情况:泛化能力高
过拟合
欠拟合

一个比较自然的问题:有没有可能在训练数据上性能不好,反而在新数据上的性能变好了?
有可能!如果在训练的时候采用了数据增强、Dropout、PReLU等方法。但在正常情况下不太容易发生。
过拟合

梯度下降的分类:

具体的动图演示:动图演示

  • momentum
  • Adagrad
  • Adam

神经网络的正则化

L1,L2正则化

因为过拟合产生的一个原因在于神经元数量可能过多,因此需要减少神经元之间的连接。一个做法就是用正则化,通过将权重 w = 0 w=0 w=0来达到减少连接。

  • L2正则化: L O S S L 2 = L O S S + λ ∑ w w 2 LOSS_{L2}=LOSS+\lambda \sum_{w} w^2 LOSSL2=LOSS+λww2
    • 此时损失函数为 L O S S L 2 = L O S S + λ ∑ w w 2 LOSS_{L2}=LOSS+\lambda \sum_{w} w^2 LOSSL2=LOSS+λww2,加上后面这项的目的是让网络试图两所有权重w都靠近0。
    • λ \lambda λ越大,越希望w为0。因为如果 λ = 0 \lambda=0 λ=0,则跟之前的损失函数一致,即没有受到任何的正则化惩罚。一般来说 λ = 0.0001 \lambda=0.0001 λ=0.0001
    • 此时权重更新公式为: w i n e w = w i − ∂ L O S S ∂ w i − η ⋅ ( 2 λ w i ) = w i ⋅ ( 1 − 2 η λ ) − η ⋅ ∂ L O S S ∂ w i w_i^{new}=w_i- \frac{\partial LOSS}{\partial w_i}-\eta \cdot (2\lambda w_{i})=w_i \cdot (1- 2 \eta \lambda) - \eta \cdot \frac{\partial LOSS}{\partial w_i} winew=wiwiLOSSη(2λwi)=w
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值