深度学习:第四章:循环神经网络RNN和LSTM-CSDN博客
神经网络:一个由大量简单处理单元组成的高度复杂的大规模非线性自适应系统
大脑神经元的特点:
1高电位激活:膜电位高出静息电位一定值后,神经元被激活
2不应期:一神经元不能连续被激活。绝对不应期:不管神经元的膜电位多大,都不能被激活;相对不应期,当神经元的膜电位达到一定的阈值后被激活,这一阈值随时间减小,最后恢复到静息电位
3突触特性:分为兴奋性和抑制性
4时空整合性:1的激活是来自不同树突的兴奋、抑制信号的在一段时间内(几ms内)累加
5二元性:神经细胞只有激活(发出兴奋抑制信号)和未激活两种状态
M-P模型: 也被称为处理单元PE 模拟一个神经元
六个基本特征:前四点与神经元一致,为使PE不过于复杂---后两个特点
对于某一个神经元 j,它可能接受同时接受了许多个输入信号,用 Xi 表示。
由于生物神经元具有不同的突触性质和突触强度,所以对神经元的影响不同,我们用权值 wij 来表示,其正负模拟了生物神经元中突出的兴奋和抑制,其大小则代表了突出的不同连接强度。
θj表示为一个阈值,或称为偏置。
由于累加性,我们对全部输入信号进行累加整合,相当于生物神经元中的膜电位,其值就为:
若将阈值看成是神经元j的一个输入x0的权重 w0j,则式子可以简化为
yj表示神经元j的输出,函数ff称为激活函数。 yi也常写成oi
若用 X表示输入向量,用W表示权重向量,即: 则神经元的输出可以表示为向量相乘的形式: 激活函数
激活函数 也称激励函数
1线性函数: f(net)=k*net+c
2非线性斜面函数:
γ为一常数,称为饱和值,是该神经元的最大输出
3阈值函数/阶跃函数:
4 S型函数: 压缩函数/逻辑函数 exp(x)指ex
f(net)=a + b/(1+exp(-d*net)) 它的饱和值为a和a+b
最简单形式为:f(net)= 1/(1+exp(-net)) 函数的饱和值为0和1
S形函数有较好的增益控制
5 概率型函数
网络分层结构
简单单级网
单级横向返馈网
netj是j处理单元的所有单元的所有输入信息 v是反馈信息的权重
NET(t+1)=X(t)W+O(t)V : t+1时刻接受的信息为t+1时刻的上一层输入*权重+该层上一时刻(t时刻)的输出*权重
多级网
层次划分:信号只能从低层流向高层。每层有层号,输入层记为0层,输出层层号最大。其余层称为隐藏层,不向外界接受、发送信号。
第j-1层到第j层的联接矩阵为第j层联接矩阵,一般我们用W(j)表示第j层矩阵 非线性激活函数 F(X)=kX+C F3(F2(F1(XW(1))W(2))W(3))
循环网
如果将输出信号反馈到输入端,就可构成一个多层的循环网络。
输入的原始信号被逐步地“加强”、被“修复”
稳定:反馈信号会引起网络输出的不断变化。我们希望这种变化逐渐减小,最后能消失。当变化最后消失时,网络达到了平衡状态。否则称该网络是不稳定的。
存储与映射
人工神经网络可以学会它可以表达的任何东西---人工神经网络的表达能力限制了它的学习能力。人工网络的学习过程就是对他的训练过程
无监督学习---抽取样本中蕴含的统计特性、从输入流中发现可能存在的规律。根据网络的功能和输入信息调整权值,并以神经元之间的联接权的形式存于网络中
Hebb算法:两个神经元同时处于激发或抑制状态时被加强,否则被减弱
有监督学习---抽取样本中蕴含的统计特性
步骤:
灌输式学习
其权值不是训练得到的,而是人为设计的、不变的。(死记硬背式学习)
权值的修正量等于误差乘以输入(再乘学习率)
第二章’ 深度学习基础
深度学习是机器学习的一个研究方向
主要有三类方法:
基于卷积运算的卷积神经网络
基于多层神经元的自编码神经网络
以多层自编码神经网络方式预训练,结合鉴别信息进一步优化神经网络权值的深度置信神经网络
深度学习面临的挑战:梯度消失,过拟合
梯度消失
神经网络靠近输入端的网络层的系数逐渐不再随着训练而变化,或者变化非常缓慢随着网络层数增加,这个现象越发明显
存在梯度消失的前提:
1. 使用基于梯度的训练方法(例如梯度下降法)
2. 使用的激活函数具有输出值范围远远小于输入值的范围,例如logistic(逻辑斯函数),tanh(双曲正切)
产生原因:
梯度下降法依靠权值系数的微小变化对输出的影响来学习网络的系数的值。如果一个系数的微小变化对网络的输出没有影响或者影响极小,那么就无法知晓如何优化这个系数,或者优化特别慢。造成训练的困难。
使用梯度下降法训练神经网络,如果激活函数具备将输出值的范围相对于输入的值大幅度压缩,那么就会出现梯度消亡。
梯度消失详解:
先总结原因:反向传播过程中对梯度的求解会产生sigmoid导数的连乘(值非常小)
以如图所示神经网络为例,激活函数为sigmoid
第一个反向传播:求损失函数对W5的偏导,即:首先根据链式求导法则写出对W5求偏导的总公式
=E*f’*out
第二个反向传播: 求损失函数对w1的偏导,即: 对w1求导有个地方要注意,w1的影响不仅来自o1还来自o2
=E*f’*f’*w*i
由此可见 对△W影响最大的是f’,因为sigmoid的f’最大为0.25。距离输出层每远一层,就要多成一个f’。层数过多,接近输入层的△W会非常小
sigmoid导数的最大值为0.25,权重w一般初始都在0,1之间,乘积小于1,多层的话就会有多个小于1的值连乘,导致靠近输入层的梯度几乎为0,得不到更新。梯度爆炸是也是同样的原因,只是如果初始权重大于1,或者更大一些,多个大于1的值连乘,将会很大或溢出,导致梯度更新过大,模型无法收敛。
梯度消失解决方案
将激活函数替换为ReLu/leakyReLu/softplus,其f’=1(当输入>1),不会因为激活函数导数连乘导致梯度消失
过拟合的解决办法
DropOut 防止节点相互依赖 L2正则化 L1正则化 MaxNorm
- Drop out
有时过拟合是因为隐藏层的节点之间互相依赖。首先随机(临时)删掉网络中一半的隐藏神经元,输入输出神经元保持不变。然后将修改后的模型正常训练。然后恢复被删掉的神经元(此时被删除的神经元保持原样,而没有被删除的神经元已经有所更新)。重复这个过程。以图为例,每次隐藏6个节点中的随机三个,然后进行一次训练。训练后恢复所有阶段,再随机隐藏三个,重复过程。
- L1正则化
L1正则化具有稀疏性,起到特征选择的作用,从而降低模型复杂度
详述如图,q为模型输出值o
- L2正则化
不论L1还是L2,都是在原有损失函数的基础上增加一个约束条件,从而防止模型过于复杂
- 最大范数约束
对每一个神经元对应的系数向量,设置一个最大第二范数值 c,这个值通常设为3。如果一个一神经元的第二范数值大于 c, 那么就将每个系数值按比例缩小,使得第二范式值等于 C
由于最大范数的约束,可以防止由于训练步长(学习率)较大引发的过拟合