2019-06-23
都是必知概念。
- 前向传播算法,用于计算模型最终的输出结果;反向传播算法,用于减小模型输出结果与实际结果之前的误差,通过调整参数权重来优化模型。故,神经网络就是通过前向传播与反向传播算法的循环迭代,来训练模型,进而进行预测或者分类。
- 而梯度下降与反向传播之间是有关系的。梯度下降是沿着代价小的方向走的,所以用到的是代价函数的导数。每个参数都要向代价小的方向迈进一步,迈多少,由反向传播的公式算得。(暂时理解是这样,没仔细看反向传播的那些公式)
- 训练过程中,可能出现过拟合的现象。针对这个问题,出现了正则化这个方法。通过在代价函数上增加一个正则项,来对参数进行约束,起到打压某些不必要的参数的作用,从而解决过拟合问题。
- 虽然名字看起来像一个系列的,但是批标准化跟正则化可是没啥关系的。批标准化解决的是每层的输出的分布问题,将分布标准化。这样本质上解决的是有的地方没怎么有梯度,导致梯度下降很慢的问题。
Gradient Descent 梯度下降
梯度下降简单例子看了单变量函数的梯度下降例子,感受一下。其实就是根据上一次的位置,一直地形,来决定下一步走多少,才可能更好地逼近山底。如果学习率α太小,步子小,就走得很慢;如果学习率太大,步子大到会跨过最低点,就会震荡。
- 有三种变种:
这篇详细、全面、易读:批量梯度下降(BGD)、随机梯度下降(SGD)以及小批量梯度下降(MBGD)的理解
1、批梯度下降 (Batch Gradient Descent, BGD)
每次对所有样本算代价,作为目标函数。对目标函数求偏导,再用反向传播去更新前面每层的参数。
2、随机梯度下降 (Stochastic Gradient Descent, SGD)
每次对随机一个样本算代价。
3、小批量梯度下降 (Mini-Batch Gradient Descent, MBGD) (一般都用这个)
每次对小批量样本算代价。
Forward Propagation 前向传播
-
前向传播就是从这一层的输出,到下一层的输出的过程
like this 前向传播
Back Propagation 反向传播
参考:同上
-
对DNN的损失函数用梯度下降法进行迭代优化求极小值的过程即为我们的反向传播算法
批梯度下降为例的反向传播
就是说,前向传播直到输出,与真实标签会有差值,把这个差值反向传播回每一层, 对每一层的参数进行修改,从而得到训练。重复前向与反向的过程。
Normalization 正则化
这篇非常好,很详细:机器学习之正则化(Regularization)
直接写理解:
- 不用正则化的话,普通的损失函数存在什么问题?
如果你用的模型很复杂,有很多个参数;但是实际的模型并不那么复杂,或者数据量并没有大到需要用这么多参数。那么会出现过拟合。 - 为什么这样会出现过拟合?
比如用高阶函数去拟合二阶函数,训练到最后会全都拟合到数据点上去了,高阶都用来迁就那些偏离二阶函数的数据了。 - 正则化的作用?
防止过拟合。 - 怎么防止过拟合?
让模型简单点啊,是二阶函数就别用高阶去拟合啊。 - 你怎么知道就是二阶,或者说你怎么知道留哪些参数?
用正则项去约束参数的大小,如果一个参数很小,也就跟没这个参数差不多了。 - 损失函数如何理解?
上面损失函数的第一项,是用于训练拟合程度,越小越好;第二项是用来约束参数的大小,越小越好。但是如上面所说,参数会促进拟合程度,但是参数大了第二项就大了,所以两项之间就得在训练的过程中打一架找个平衡点。λ就是人为给个权重用来平衡这两个之间的力量,使其力量均衡才能打得起来,免得开始打一方就死了。
Batch Normalization
这篇很详细的样子,但是能力还不及,看不太懂:【深度学习】深入理解Batch Normalization批标准化
这篇逻辑清晰一些:【深度学习】批归一化(Batch Normalization)
- 在训练过程中,随着每次正向反向传播,每层的参数会有所改变,随之每层的输出也有所改变。BN解决的是除了输入之外,其他层的数据分布漂移问题,即Internal Covariate Shift。
- 这样本质上解决的是困在梯度小的区域时,梯度下降很慢的问题。 理解BN
网友评论