【神经网络】全连接神经网络理论
文章目录三、全连接神经网络(多层感知器)3.1 网络结构设计:3.2 损失函数:1、SOFTMAX(把分数变成概率)2、交叉熵损失3.3 优化算法:1、计算图与反向传播:2、再谈损失函数(梯度消失问题):3、解决梯度消失问题:动量法与自适应梯度解决方法1:动量法(累加让震荡方向互相抵消)解决方法2:自适应梯度AdaGrad 与改进的RMSProp(使用不同方向步长)解决方法:ADAM(把动量法与自
三、全连接神经网络(多层感知器)
全连接神经网络级联多个变换来实现输入到输出的映射。
注:max()在这称为激活函数,非线性操作不可以去掉。若缺少激活函数,退化为线性分类器。
线性分类器中的W 可看作模板,模板个数由类别个数决定;
全连接神经网络中W1 也可看作模板,但模板个数人为指定,不用一定等于类别数,W2 融合这多个模板的匹配结果来实现最终类别打分,W2模板个数等于类别数。
N 层全连接神经网络:除输入层之外其他层的数量为N 的网络或称为N-1 隐层神经网络。
3.1 网络结构设计:
1、用不用隐层,用几个隐层(深度设计)
2、每隐层设置多少个神经元合适(宽度设计)
3.2 损失函数:
1、SOFTMAX(把分数变成概率)
举例说明:
2、交叉熵损失
对比交叉熵损失和多类支持向量机损失:
举实际计算例子对比:
3.3 优化算法:
1、计算图与反向传播:
示例:
总结:
2、再谈损失函数(梯度消失问题):
梯度消失是神经网络训练中非常致命的一个问题,本质是由于链式法则的乘法特性导致的。(例如sigmoid)。与sigmoid(X)类似,tanh(x)局部梯度特性不利于网络梯度流的反向传递。
梯度爆炸:也是由于链式法则的乘法特性导致的(导致步长太长)。解决方法:把沿梯度方向前进的步长限制在某个值内就可以避免“飞”出了,称为梯度裁剪。
3、解决梯度消失问题:动量法与自适应梯度
梯度下降存在的问题:(仅增加总步长不能加快算法收敛速度)
解决方法1:动量法(累加让震荡方向互相抵消)
解决方法2:自适应梯度AdaGrad 与改进的RMSProp(使用不同方向步长)
原理:使用不同方向的步长(学习率)
AdaGrad 自适应算法存在的问题:r 一直在累加,r 最终成为一个非常大的值,失去对学习率的调节作用。
对进行AdaGrad 自适应算法改进:RMSProp 方法
解决方法:ADAM(把动量法与自适应梯度合一块)
3.4 训练过程
1、权值初始化(希望通过调整权值让输出有和输入相同的分布)
解决方法:随机权值初始化(还是不行)
实验结论:初始化时让权值不相等,并不能保证网络能够正常的被训练。
有效的初始化方法:使网络各层的激活值和局部梯度的方差在传播过程中尽量保持一致;以保持网络中正向和反向数据流动。
解决方法:Xavier初始化(使用双曲正切激活函数或者sigmoid)
Xavier初始化 结论意思就是:当把高斯分布均值设为0,方差设为1/N时,去采样权值时,能保证输出与输入的变量有相同的分布。
Xavier初始化 出现的问题:
解决方法:HE初始化(MSRA)(使用ReLU激活函数)
小结:
2、批归一化(BN操作)(每一层进行批归一化)
单张样本测试时,均值和方差怎么设置?
答:来自于训练中。累加训练时每个批次的均值和方差,最后进行平均,用平均后的结果作为预测时的均值和方差。
3、欠拟合、过拟合与Dropout
过拟合:指学习过程选择的模型所包含的参数过多,以至于出现模型对已知数据预测得很好,对未知数据预测很差的现象。
欠拟合:一般是因为模型太简单
解决过拟合的方法:
最优方案:获取更多的数据
次优方案:调节模型允许存储的信息量或者对模型允许存储的信息加以约束,这种方法也称为正则化。
1、调节模型大小。2、约束模型权重,即权重正则化(常用的有L1、L2正则化)3、随机失活(Dropout)
随机失活(Dropout)(让隐层神经元以一定概率不被激活)
改进Dropout:
4、模型正则与超参数调优
例如学习率的设置:
举实例说明:
更多推荐
所有评论(0)