最小批量梯度下降
训练神经网络
内容总述
- 准备
- 我们在刚开始要如何建立起神经网络
- 要选择什么样的激活函数
- 怎么做数据预处理
- 权重初始化、正则化和梯度检查
- 动态训练
- 如何监督这个学习过程
- 如何选择参数的特定更新规则
- 怎样做超参数优化从而获取最佳超参数
- 模型评估和模型集成
激活函数
-
Sigmoid函数
问题:(1) 饱和神经元使得梯度消失
(2) Sigmoid是一个非零中心的函数
当神经元输入始终为正或始终为负时,W将会始终朝着一个方向更新
(3) 指数函数的计算代价比较高 -
tanh函数
- ReLU函数(Rectified Linear Unit)
ReLU = max(0,x)
优点:(1) 解决了函数在输入大于零的区间的饱和性的问题
(2) 计算量不大,收敛速度比上述两个函数都快,大概快6倍
(3) 有更精确的估计
Alexnet 就利用了这个函数
问题:(1) 不以零为中心
(2) 负半轴的部分仍存在饱和的现象
这种现象也被我们称为dead ReLU
有时在初始化时稍正向的初始化ReLU,以增加概率,但实际应用不多,多数时候知识将偏置项初始化为0 -
Leaky ReLU函数
f(x) = max(0.01*x,x)
-
Exponential Linear Units ( ELU )
-
最大输出神经元
实际当中
用ReLU时要注意学习率的设置
可以尝试使用Leaky ReLU / Maxout / ELU
尝试使用tanh但是不要抱有太大的期望
不要使用sigmoid
数据预处理??
一般来说我们总是希望预处理数据
初始数据 -> 零均值化数据 -> 归一化数据 ( 通过标准差 )
还有一些更加复杂的数据预处理的操作,比如PCA 、白化
在图像处理领域中,我们做零均值化而不做归一化,并且一般也不会进行更加复杂的操作