神经网络
前向传播
步骤:
1、初始化权重和偏置量
包含所有层的权重
2、线性计算神经元的值
3、计算神经元的激活函数输出
4、对所有神经元重复1-3过程
反向传播
步骤:
1、计算输出层的总误差(前向传播)
每个输出层神经元分别计算差评分后求和
损失函数可以是MSE
2、对倒数第一层的某个权重求偏导
中间有多层复合函数,使用链式求导
求出偏导值
3、使用梯度下降更新该权重
梯度下降公式w=w-a*w' 更新该权重,a为速率
4、重复1-3步骤更新所有权重
5、重复第1步,计算总误差。直到迭代次数或者误差达到某个阈值停止
反向传播的是误差,把误差逐步分解给前面神经元,目的是更新权重参数。换句话说只要想更新某个权重则需要先知道权重相连的隐藏层误差。
通过损失函数得到损失值后,要进行权值的更新以降低误差值。
把前向传播函数和与真实值组成的损失函数看成待优化的目标函数,朝参数梯度下降的方向更新权值就可以优化减小该目标函数值。
过程:
1、对损失函数和倒数第一层的某个权值求偏导
2、求出偏导使用梯度下降公式w=w-a*w' 更新该权重,a为速率。
3、重复1,2更新所有权值。求隐藏层误差的时候要使用到与之相连的(右侧的)权重矩阵的转置。
4、用更新后的所有权值前向传播,并计算误差值,然后重复整个过程直到误差稳定或在允许范围内。
梯度不稳定
前面层上的梯度是来自后面层上梯度的乘积。
(这点也是梯度不稳定的根本原因)
当存在过多的层时,就会出现梯度不稳定场景。
梯度不稳定包含梯度消失和梯度爆炸。
实际中梯度消失相比梯度爆炸更容易出现。
过程:
w值和激活函数的导数值相乘得到一个结果,经过多个层后这些结果进行连成,
得到一个最终结果,如果最终结果大于1可能会出现梯度爆炸,小于1可能会出现梯度消失。
(此处需要确认什么情况下户出现,是不是很频繁?)
可能的原因:
隐藏层的层数过多,会导致梯度消失或者梯度爆炸。
现象:
权重值更新时,前面隐藏层的权重值更新速度比后面隐藏层权重值更新慢了很多。
解决:
使用合适的激活函数:
ReLU、Leaky-ReLU、P-ReLU、R-ReLU、Maxout
Batch Normalization:
todo
LSTM的结构设计也可以改善RNN梯度消失:
todo
梯度消失
定义:
在神经网络中,当前面隐藏层的学习速率低于后面隐藏层的学习速率。
即随着隐藏层数目的增加,分类准确率反而下降了
产生原因:
采用了不合适的激活函数
激活函数角度:
sigmoid函数的导数最大值是1/4,层数越多,连乘结果会越来越小。
梯度爆炸
定义:
如果在连续乘法中出现一个非常大的值,最后计算出的梯度就会很大。
就相当于出现一个大的悬崖,会获得一个很大的梯度值。
如果以这个梯度值进行更新,那么这次迭代的步长就很大,可能会一下子飞出了合理的区域。
产生原因:
权重的初始化值过大。
激活函数
饱和性
定义:
自变量趋近于正负无穷的时候函数值趋近于0。
单边趋近于0,单边饱和。
不满足饱和函数的定义,称为非饱和函数。
饱和函数的缺点:
会带来梯度消失
sigmoid
优点:
可以引入非线性;
容易求导;
可以将实数压缩至(0,1):
数据幅度稳定
缺点:
1、梯度消失
误差反向传播算法的基础是导数的链式法则,也就是多个导数的乘积,sigmoid的导数大多都趋近于饱和(自变量无穷大,导数趋近于0),相乘会越来越小,随着神经网络层数的加深,梯度后向传播到浅层网络时,基本无法引起参数的扰动,也就是没有将loss的信息传递到浅层网络。
2、收敛较慢
不是0均值(即zero-centered),受输入影响(持续为正),可能会超某一方更新,造成方向捆绑。zigzag现象?。
3、涉及到指数计算
tanh
是sigmoid的变形。
优点:
相比sigmoid解决了0均值问题,收敛速度提升。
缺点:
依然有梯度消失和指数运算问题。
ReLU
特点是:全区间不可导,分成两段局部可导。
优点:
1)不饱和;
不会造成梯度消失
2)计算效率高;
没有指数计算
3)收敛速度快。
适合用于后向传播。
ReLU在反向传导时,能够将梯度信息“完完全全”地传递到浅层网络
缺点:
1、输出不是zero-centered
zigzag学习曲折现象?
2、Dead ReLU Problem(神经元坏死现象)
3、数据的幅度会随着模型层数的增加不断扩张。
ReLU不会对数据做幅度压缩,最终影响模型的表现
神经元坏死过程:
->神经元之后梯度为0->神经元坏死->不再对任何数据响应
BN
batch normalization:通过减少协变量漂移来加速神经网络训练。
论文地址:Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
独立同分布:
多个随机变量服从同一分布,并且互相独立。
内部协变量漂移:
(internal covariate shift)
训练过程中参数变化引起后面每一层输入数据分布改变的现象。
注意原始数据输入X有一个整体分布(每个特征X_i的输入有自己的分布,整体也有一个分布)不可以改变,整体分布可以用协变量之间的关系来表示。
训练收敛慢的原因:
整体分布逐渐往非线性激活函数的两端靠近,这导致了反向传播时浅层神经网络的梯度消失,导致了参数更新缓慢。
BN的过程:
通过“规范化”,将每个隐层输入的分布强行拉回到均值为0方差为1的标准正态分布上去,这使得输入值落回到非线性激活函数”敏感“区域。
在数据输入隐层前进行规范化。
“规范化”步骤,求均值,求方差,缩放平移。
归一化的坏处以及解决:
归一化会破坏数据的分布,使网络的表达能力下降。
缩放平移,引入参数𝛾,𝛽,对输出的分布又进行了“恢复”,𝛾,𝛽通过训练得到。
每个BN实例移动的参数都不同,目的是找到一个线性和非线性的平衡点,既得到非线性较强表达能力的好处,又避免太靠近非线性的饱和区域使得收敛速度变慢。
输入层
我们看到的神经网络图仅仅是方程模型的图形化表示,所有数据都使用了该模型图进行计算。
假设X表示样本,训练样本有n个特征,m个样本。
输入层神经元个数与特征个数n相等,跟样本个数无关。
输入层权重W的shape与输入层和下一个输出层神经元个数有关:
W其中一个维度是输入样本的特征维度n,另一个维度是下一个输出层神经元的个数。
W*X表示对某个输入的样本作用权重:
所有样本数据X是共享权重W。
样本X有n个特征,每个特征有自己的权重
模型
卷积神经网络 — CNN
CNN 最擅长的就是图片的处理。它受到人类视觉神经系统的启发。
CNN 有2大特点:
- 能够有效的将大数据量的图片降维成小数据量
- 能够有效的保留图片特征,符合图片处理的原则
在 CNN 解决的两个问题
- 图像需要处理的数据量太大,导致成本很高,效率很低
- 图像在数字化的过程中很难保留原有的特征,导致图像处理的准确率不高
CNN如何解决数据量大的问题?
降维
CNN 由3个部分构成:
1、卷积层
提取图像中的局部特征
2、池化层
大幅降低参数量级(降维),防止过拟合
3、全连接层
类似传统神经网络的部分,用来输出想要的结果。
卷积核:
卷积核像过滤器,来过滤图像的各个小区域
具体应用中,往往有多个卷积核。
每个卷积核代表了一种图像模式(底层纹理),如果某个图像块与此卷积核卷积出的值大,则认为此图像块十分接近于此卷积核。
卷积核输出卷积特征(Convolved Feature)。
池化层:
池化层简单说就是下采样,他可以大大降低数据的维度。
池化层的输入是卷积特征(Convolved Feature),输出是Pool Feature。
采样密度可以通过采样窗口来控制。
多层结构:
CNN 并非只是上面提到的3层结构。
举例,LeNet-5:卷积层 – 池化层- 卷积层 – 池化层 – 卷积层 – 全连接层
人类的视觉原理
视觉系统的信息处理中,可视皮层是分级的
1、原始信号摄入(瞳孔摄入像素 ,pixels)
2、初步处理(大脑皮层某些细胞发现边缘和方向,Edge Detectors)
3、抽象(大脑判定,眼前的物体的形状,是圆形的,Primitive Shape Detectors)
4、进一步抽象(大脑进一步判定该物体是只气球,Higer Level Visual Abstractions)
循环神经网络 — RNN
为什么需要 RNN ?
典型的机器学习深度学习逻辑逻辑都是一个输入对应一个输出,比如卷积神经网络 – CNN 和普通的算法大部分都是输入和输出的一一对应。
序列数据:
一串相互依赖的数据流。
例如:1. 文章里的文字内容2. 语音里的音频内容3. 股票市场中的价格走势
RNN 的基本原理:
每次都会将前一次的输出结果,带到下一次的隐藏层中,一起训练。
RNN 存在的短期记忆问题:
短期的记忆影响较大,但是长期的记忆影响就很小。
RNN 的优化算法:
LSTM只保留重要的信息,而不是死板的越晚的输入影响越大,越早的输入影响越小。
从 LSTM 到 GRU:
Gated Recurrent Unit – GRU 是 LSTM 的一个变体。
他保留了 LSTM 划重点,遗忘不重要信息的特点,在long-term 传播的时候也不会被丢失。
在 LSTM 的模型上做了一些简化和调整,在训练数据集比较大的情况下可以节省很多时间。
生成对抗网络 — GANs
生成对抗网络(GAN)由2个重要的部分构成:
- 生成器(Generator):通过机器生成数据(大部分情况下是图像),目的是“骗过”判别器
- 判别器(Discriminator):判断这张图像是真实的还是机器生成的,目的是找出生成器做的“假数据”
过程:
第一阶段:固定「判别器D」,训练「生成器G」
判别器识别率小于50%时候,判别器已经降服不了生成器了。
第二阶段:固定「生成器G」,训练「判别器D」
到「生成器G」已经无法骗过「判别器D」的时候,「判别器D」越来越强大。
循环阶段一和阶段二
深度强化学习 — RL
不需要数据,仅仅需要不停的常识来代替已有的数据。
游戏为例,如果在游戏中采取某种策略可以取得较高的得分,那么就进一步
「强化」这种策略,以期继续取得较好的结果。
参考
什么是梯度爆炸?怎么解决?
产生消失的梯度问题的原因
出现梯度消失与梯度爆炸的原因以及解决方案
饱和及非饱和激活函数的特点
神经网络-全连接层(3)
神经网络结构设计指导原则
人工神经网络
神经网络的前向传播和反向传播公式详细推导
卷积神经网络 – CNN
循环神经网络 – Recurrent Neural Network | RNN
反向传播例子
神经网络中的梯度消失
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。