第七章-训练神经网络
目录
标准化(standardization/z-score方法)
Overfit a small sample(在小数据集上尝试过拟合)
Find learning_rate that maskes loss go down(找到能尽快使损失函数下降的学习率)
Coarse grid,train for~1-5 epochs
大致介绍
训练神经网络的过程大致为下山找最快的路

使用Mini-batch SGD,把数据分批次
放入网络,每次喂入数据会更新一次权重,整个训练过程是”螺旋向上“的,最后会找到最优点,避免了一次喂入的不震荡,也避免了一次喂入一个数据的激烈震荡,保证训练路径在适当震荡范围内

训练网络基础设施
数据、算力、算法、框架

网络配置
1、不经常变动的配置
激活函数、权重初始、正则化、梯度校验等
2、训练过程需要实时更新的配置
验证集误差、是否过拟合、参数更新、不同优化器
3、模型评估与集成
模型效果、测试时间

Part 1

激活函数
函数作用

函数类型

Sigmoid

问题1
饱和性梯度消失

问题二
输出都为正数,不是关于0对称的-->所有函数对权重求偏导同号(同步增大减少)
会出现zig zag path 来回震荡,不能一步到位

问题三
指数运算消耗大量计算资源
tanh(x)(双曲正切)
输出有正有负,关于0对称,避免zig-zag问题
仍然存在梯度消失

ReLU函数(Rectified Linear Unit)
不会饱和,大于零的部分是一个线性函数,计算量少,收敛速度是sigmoid的6倍

问题一
输出值不是关于0对称
问题二
x小于0时,梯度为0
原因:
1、初始化不良
2、学习率太大

初始化时添加一个偏置项,避免落入dead Relu(权重都为0)

Leaky ReLU(泄露的ReLU)
解决非0对称,线性速度快

ELU(Exponential Linear Units)
近似0对称

Maxout "Neuron"
结合了ReLU和Leaky ReLU,线性函数、不会出现饱和性梯度消失,不会出现多数梯度变0的情况

总结
1、使用ReLU要注意学习率不要选太大
2、尝试使用Leaky ReLU/Maxout/ELU
3、可以尝试使用tanh,但是效果可能不太好
4、不要轻易使用sigmoid

数据预处理
标准化(standardization/z-score方法)

PCA(主成分分析)
白化过程
将PCA白化旋转映射回原方向就是ZCA白化

标准化作用
标准化处理之后,损失函数对权重的微小变化不那么敏感,更容易优化

经典网络的数据处理方式
AlexNet中使用减去“平均图像”
VGGNet使用每个通道分别减去各通道的均值
ResNetzhong 使用每个通道分别减去各个通道的均值,除以各通道标准差
PCA或者白化在数据处理中并不是很常用

权重初始化
几个问题
1、所有权重全部初始化为用一个常数,会有什么问题?(不能同时是一个常数)
同一层的所有神经元前向推断和反向传播完全相同,相当于每一个隐藏层都只有一个神经元起作用
2、逻辑回归(LR)中可以将全总初始化为同一个常数的,因为逻辑回归没有隐含层,可以直接接受不同的x,打破对称性
多层神经网络不能将全总初始化为同一个数,否则无法打破“对称性”(symmetry)

正态分布初始化权重

效果
幅值为0.01,越往后的隐藏层,标准差就越接近0,输出越接近1

问题:
&

最低0.47元/天 解锁文章
494

被折叠的 条评论
为什么被折叠?



