6. 深度学习实践:深度前馈网络
前馈神经网络:为了实现统计泛化而设计出的函数近似机。它偶尔从大脑中提取灵感,但并不是大脑功能的模型。
1. 为什么线性模型(单层感知机)不能解决异或(XOR)问题?
左图中,
解决办法:学习一个不同的特征空间,使得在这个空间上线性模型能够表示这个解。右图中,由神经网络提取的特征表示的新空间(
2. 一个简单的前馈神经网络
网络包含两个函数:
基于梯度的优化算法可以找到一些参数,使得误差非常小。梯度下降法还可以找到XOR问题的一些等价解,其收敛点取决于参数初始值。
3. 神经网络的学习
线性模型和神经网络的最大区别:NN的非线性导致大多数代价函数变得非凸。
NN的训练通常用迭代的、基于梯度的优化,仅仅使得代价函数达到一个非常小的值。凸优化问题我们总是很喜欢,任何一种初始参数出发都会收敛,都会到碗底来。然而,非凸损失函数的随机梯度下降没有收敛性保证,对参数初始值很敏感。FNN将所有权重值初始化为小随机数很重要,偏置初始化为0或小的正值。
从ML角度看,训练神经网络和训练其他模型并没有太大区别。
3.1 代价函数
使用最大似然学习条件分布:大多数现代的NN使用最大似然来训练。这意味着代价函数就是负对数似然,它与训练数据和模型分布间的交叉熵等价。其表示为:
学习条件统计量:仅仅想学习给定x时y的某个条件统计量。变分法,一是最小化均方误差代价函数,二是平均绝对误差代价函数。不再赘述。参见P155。
3.2 输出单元
讨论针对:输出层。假设FNN提供了一组定义为
- 用于高斯输出分布的线性单元
-
用于伯努利输出分布的
sigmoid 单元 用于多项伯努利输出分布的
softmax 单元
4. 隐藏单元
隐藏单元的设计:活跃研究,尚无许多明确的指导性理论。
隐藏单元可能并不是在所有输入点上都可微的。例如ReLU在原点不可微。实践中梯度下降对ML模型仍然表现良好,部分原因是NN训练算法通常不会达到局部最小值,仅显著减小它的值。所以代价函数的最小值,对于那些梯度未定义的点来说仍是可以接受的。
大部分隐藏单元:接受输入向量
4.1 整流线性单元及其扩展
ReLU:
缺陷:ReLU不能通过基于梯度的方法,学习那些使它们**为0的样本。(**量
当
- 绝对值整流:
αi=−1 ,g(x)=|z| - 渗漏(leaky)整流线性单元:
αi=0.01 类似小值 - 参数化整流线性单元:
αi 作为学习的参数
进一步扩展:maxout单元
maxout单元将
该法可学习对输入
每个maxout单元由
ReLU及其扩展基于一个原则:如果其行为更接近线性,则模型更容易优化。这样理解:线性模型优化有闭式解,非线性有的不可微,求导法就挂掉了。使用线性行为更容易优化的这个原则,适用于除深度线性网络以外的不少情景。
4.2 sigmoid与双曲正切函数
logistic sigmoid:
双曲正切:
sigmoid单元在大部分定义域内都饱和。不鼓励使用。双曲正切表现得更好一些。在
类似于训练一个线性模型
而我们喜欢线性模型。
sigmoid函数除了FNN外使用常见。RNN等由于某些原因不能使用分段线性**函数。
4.3 其他
还有许多隐藏单元,但并不常用。只有被明确能够提供显著改进才会被发布。如果与已有的表现大致相当,则不会引起兴趣。