Andrew Ng 的深度学习课程要点和概念说明(第 1 周和第 2 周)

最近在学习吴恩达老师的深度学习课程。学习这些课程让我对博士论文中遇到的各种深度学习概念有了更深入的了解。本博客希望将吴老师课程中的主要概念整体记录下来。 ,并添加一些我自己研究中的知识,以供在以后的工作中回顾和回顾。

神经网络和深度学习

  • 线性拟合,参数w%2C%20b,结果zw维度对应输入向量x的维度
  • 逻辑回归和Sigmoid函数,结果a
  • 了解线性组合函数和非线性激活函数的组合g%28z%29组成神经元
    z%3Dwx%20%2B%20b%20%5C%5C%20a%3Dg%28z%29
  • 损失函数:loss%20%3D%20-%28yloga%20%2B%20%281-y%29log%281-a%29%29
  • 梯度下降:基于dw%2C%20db更新w%2C%20b,参数:学习率%5Calpha
  • 链式法则、计算图、反向传播
    如何计算dz,da,dw,db
  • 结构化数据和非结构化数据,人类和机器如何以不同方式处理这两种类型的数据
  • 矢量化和广播(从一个向量到一组向量)
  • 在深度神经网络中,神经网络的第l层有n%5E%7B%5Bl%5D%7D个神经元,计算每层参数的维数:
    W%3A%20%28n%5E%7B%5Bl%5D%7D%2C%20n%5E%7B%5Bl-1%5D%7D%29, b%3A%20%28n%5E%7B%5Bl%5D%7D%2C%201%29
    可以理解为前一层神经元输出,正好是下一层的输入向量,对于下一层每个神经元,w维度与前一层神经元数量相同。
  • 每层结果的维度:Z%2C%20A%3A%20%28n%5E%7B%5Bl%5D%7D%2C%20m%29
    每列代表一个数据实例
  • 不同的激活函数:sigmoidtanhrelurelu_%7Bleaky%7D
    如果使用线性激活函数,多层神经网络等价于一层神经网络
  • 随机初始化:如果全部初始化为0,那么每层中每个神经元都是对称的,它们对应的参数在梯度下降计算中也是相同的。
  • 为什么需要深度?减少神经元数量,每一层逐渐抽象特征
  • 参数和超参数。参数可以学习,超参数需要手动设置。

优化深度神经网络

  • 训练集、验证集、测试集
  • 偏差与方差。偏差大是指Training Error 与 Bayes Error相差大,方差大是指Test Error与Training Error相差大。偏差和方差的比较是相对的。偏差大表示训练不充分或者网络结构太简单,方差大表示存在过拟合问题
  • 解决大偏差:使用更复杂的网络结构,更多的神经元,更多的层,训练时间更长
  • 解决方差大:增加训练数据、正则化、Early Stopping
  • 正则化:L2、L1、Dropout
    为什么正则化可以解决方差大的问题:避免过度加权一个特征,避免学习异常值的特征,使网络更简单。
  • Dropout应用时:训练时对每一层采用一定的概率随机dropout神经元,测试和应用时不dropout神经元
  • Normalization Input: 将原始数据减去均值%5Cmu,再除以方差%5Csigma%5E%7B2%7D
    %5Cmu%20%3D%20%5Cfrac%7B1%7D%7Bm%7D%5CSigma%20x%20%5C%5C%20x%3A%3Dx-%5Cmu%20%5C%5C%20%5Csigma%5E%7B2%7D%20%3D%20%5Cfrac%7B1%7D%7Bm%7D%5CSigma%20x%5E2%20%5C%5C%20x%3A%3D%20x%20/%20%5Csigma%20%5E%202

好处:能够选择更大的学习率,如果权重之间差距过大,那么学习率只能选择较小的值,否则无法保证cost函数经过一轮之后是下降的

  • 梯度消失和梯度爆炸:W取值大于1或者小于1,在深度过高时,其计算的值要么趋于无穷大,要么趋于0.
  • 选择合适的W初始值。前一层神经元越多(即下一层输入数据的特征越多,每个神经元权重分量越多),为了确保下一层神经元计算的Z值不要太大,选择w越小。
    [文章](https://blog.csdn.net/red_stone1/article/details/78208851])有讲解
  • 梯度检查:可以使用导数的定义来查看梯度计算是否正确
  • batch梯度下降:在整个训练集上进行训练,每次进行一次梯度下降
  • mini-batch 梯度下降:将训练集进行划分成若干等份,每份子集进行一次梯度下降。
    适用于训练集太大的情况。
  • Epoch:在训练集上完整地训练一次被称为一次epoch
  • SGD:每次针对一个测试实例进行梯度下降
  • 不同训练场景下,cost函数变化:Batch 平稳下降,mini-batch震荡下降
  • 如何减少震荡下降的幅度?在梯度下降的基础上,引入了一种新的优化算法
  • 动量梯度下降算法:基于指数加权平均,使W、b变化尽可能平滑
  • RMSprop:也是使W,b并尽可能平滑,每次梯度下降时d_w要除以%5Csqrt%7BS_%7Bw%7D%7D
    S_%7Bw%7D%20%3D%20%5Cbeta%20S_%7Bdw%7D%20%2B%20%281-%5Cbeta%29d_w%5E2
  • Adam优化算法:动量梯度下降与RMSprop结合
  • 学习率递减:随着epoch增加,%5Calpha逐渐减小
  • 局部最小值问题和鞍点
  • 随机化选择超参数进行Tuning:尝试更多的超参数组合,避免网格化超参数tuning
    不同种类超参数的重要性不同,对于每个超参数都要尽量尝试更多的取值,并在tuning过程中逐步缩小范围
  • linear scalevslog scale进行超参数取值
  • Batch Normalization:在神经网络每一层,对Z进行标准化处理后,通过两个可以训练的参数%5Cgamma%5Cbeta来自由设置Z的方差和均值。
    好处:Z的方差和均值可以控制,那么每一层神经元参数相对独立的,那么前面一层神经元参数变化太大不会影响到后面的神经元参数。因此能够加速神经网络训练。Batch Normalization还有轻微正则化效果。
  • 对单个测试实例使用batch normalization:基于指数加权平均估计测试实例的%5Cmu%5Csigma
  • 多分类问题:softmax分类器,假设是三分类问题,z%5E1,z%5E2,z%5E3分别代表三个神经元的线性组合函数结果,并基于以下公式计算对应分类的概率
    %5Chat%7By%5E1%7D%20%3D%20%5Cfrac%7Be%5E%7Bz%5E%7B1%7D%7D%7D%7Be%5E%7Bz%5E%7B1%7D%7D%20%2B%20e%5E%7Bz%5E%7B2%7D%7D%20%2B%20e%5E%7Bz%5E%7B3%7D%7D%7D
  • 多分类问题的loss函数:
    loss%20%3D%20-%5Cfrac%7B1%7D%7Bm%7D%5CSigma%20y_ilog%5Chat%7By_i%7D
  • 深度学习框架

版权声明:本文为博主YuanruiZJU原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/u011364612/article/details/123160895

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2022年2月28日 下午4:04
下一篇 2022年2月28日 下午5:55

相关推荐