1、深度学习介绍
1.1、深度学习的三个步骤:
- 定义函数集合:
f1f2...
- 使用神经网络模型
- 确定函数目标
- 准备训练数据,在监督学习中,每一份训练数据包括输入值和目标值两部分
- 代价(Loss)定义为输出与目标之间的差距,一个好的函数应尽可能地缩小其所有训练数据的总代价 L
- 一个函数由参数(parameter)或者权重(weight)完全定义,因此学习的目标是从函数集合中选择使总代价最小的最优函数,即选择使总代价最小的参数
θ∗
- 选择最佳函数
- 神经网络参数 θ={w1,w2,...,b1,b2}
- 如何选择
θ∗
:梯度下降法
- 将 w 赋予初始值(随机选取、RBM预训练法)
- 计算
∂L/∂w (总代价 L 对各个参数w 的偏导数),使用 w−η∂L/∂w 更新 w 值,其中η 称为学习率 - 重复第二步直到满足某一条件(收敛或循环一定次数)
- 如何计算 ∂L/∂w :BP算法
- 困难:有局部最小值的存在,因此不能保证全局最小值
1.2、何为深度
- 参数越多,性能越佳
- 普遍性定理:只要有足够多的隐藏神经单元,任何连续函数都能使用一个包含隐藏层的神经网络完全实现。
- 同样数量的隐藏神经单元,层数越多,性能越佳
- 模块化
- 构建下一层分类器时使用上一层作为模块,如第一隐藏层为基本元素,第二隐藏层以基本元素为单位构造更复杂的元素,以此类推
- 模块化就是自动学习数据
2、训练深度神经网络的技巧
2.1、欠拟合(underfitting):训练结果欠佳
- 选择合适的代价函数
- 均方误差(mean square error) ∑10i=1(yi−yiˆ)2
- 交叉熵(cross entropy) −∑10i=1yiˆlnyi
- 随机梯度下降(mini-batch)
- 一次更新一部分参数
- 选择合适的激励函数
- 存在梯度消失的问题
- ReLU激励函数
- a=0 if z<0;a=z if z>0
- ReLU激励函数的变种
- a=αz if z<0;a=z if z>0
- Maxout
- 可学习激励函数
- ReLU是Maxout的特例
- 动态选择学习率
- 学习率过大:无法收敛;学习率过小:收敛速度慢
- Adagrad算法:
w←w−ηw∂L/∂w
ηw=η∑ti=0(gi)2√;(gi 是第i次更新时的 ∂L/∂w ,保证学习率随更新次数的增多而逐渐变小) - 其他算法:RMSprop(Adagrad升级版), Adadelta, “No more pesky learning rates”, AdaSecant, Adam(RMSprop+momentum), Nadam
- 加入参数变化的动量(momentum)
- 模型存在参数在平台期更新缓慢,更新停止在鞍点或局部最低点等问题。
- 参考物理学的小球从高处向低处滚动的模型,重力势能转换为动能。
- 偏导数的负值再加上动量共同决定更新方向。
2.2、过拟合(overfitting):测试结果欠佳
- 提前终止更新参数
- 随着训练次数的增多,训练数据集上的总代价会逐渐减少,测试数据集或验证数据集上的总代价会呈现先减少后增加的趋势。
- 权值衰减
- 属于正规化(regularization)的一种
- w←(1−ηλm)w−η∂L/∂w ,其中 λ 为正规化参数, ηλm 约为0.01或更小的值
- Dropout
- 每一次更新或训练参数时,每一个神经元都有p%几率失效(Dropout),成为一个新的神经网络
- 训练得到的参数需要乘以(1-p)%才能用于测试
3、神经网络的种类
卷积神经网络(Convolutional Neural Network, CNN)
递归神经网络(Recurrent Neural Network, RNN)
4、趋势
- 监督学习
- 加深网络
- 注意力模型
- 加强学习
- 非监督学习