相较于均方误差,交叉熵被更常用在分类上
批量归一化
给不同的维度同样的数值范围,制造比较好的误差表面,让训练变得比较容易
其实有很多不同的方法,这些不同的方法往往合统称为特征归一化(feature normalization)
Z值归一化(Z-score normalization),也称为标准化(standardization)
可以制造一个比较好的误差表面,让在做梯度下降时,损失收敛更快,训练更顺利。
考虑深度学习
x˜ 代表归一化的特征,把它丢到深度网络里,去做接下来的计算和训练。x˜1 通过第一层得到 z1,有可能通过激活函数(sigmoid 或 ReLU ) 再得到 a1,接着再通过下一层等等。
对每个 x 都做类似的事情。
一般而言,特征归一化放在激活函数之前之后都可以,在实现上没有太大差别。
测试时的批量归一化
以上说的都是训练的部分,测试有时候又称为推断(inference)。
内部协变量偏移
批量归一化为什么会有帮助呢?
训练集和预测集样本分布不一致的问题——协变量偏移现象
but,批量归一化是一种偶然的发现
批量归一化不是唯一的归一化
- 批量重归一化(batchrenormalization)
- 层归一化(layer normalization)
- 实例归一化(instance normalization)
- 组归一化(group normalization)
- 权重归一化(weight normalization)
- 谱归一化(spectrum normalization)
卷积神经网络
一张图像是一个三维的张量:
- 一维代表图像的宽
- 一维代表图像的高
- 一维代表图像的通道(channel)的数目。
简化 1:感受野
卷积神经网络会设定一个区域,即感受野(receptivefield),每个神经元都只关心自己的感受野里面发生的事情,感受野是由我们自己决定的。
简化 2:共享参数
可以让不同感受野的神经元共享参数,也就是做参数共享(parameter sharing)
所谓参数共享就是两个神经元的权重完全是一样的
所以每个感受野都只有一组参数而已,这些参数称为滤波器(filter)
全连接层(fully-connected layer,)可以自己决定看整张图像还是一个小范围。
加入参数共享以后,某一些神经元无论如何参数都要一模一样的,这又增加了对神经元的限制。
感受野加上参数共享就是卷积层(convolutional layer),用到卷积层的网络就叫卷积神经网络。
共享权重其实就是用滤波器扫过一张图像,这个过程就是卷积。
把滤波器扫过图像就相当于不同的感受野神经元可以共用参数,这组共用的参数就叫做一个滤波器。
卷积神经网络的偏差比较大,但模型偏差大不一定是坏事,此时模型的灵活性较低时,比较不容易过拟合。
观察 3:下采样不影响模式检测
简化 3:汇聚
汇聚没有参数,所以它不是一个层,里面没有权重,没有要学习的东西,汇聚比较像 Sigmoid、ReLU 等激活函数,它就是一个操作符(operator),其行为都是固定好的,不需要根据数据学任何东西。
汇聚版本:
- 最大汇聚(max pooling):最大汇聚在每一组里面选一个代表,选的代表就是最大的一个
- 平均汇聚(mean pooling):取每一组的平均值
做完卷积以后,搭配汇聚把图像变小。
汇聚最主要的作用是减少运算量,通过下采样把图像变小,从而减少运算量。
近年来图像的网络的设计往往也开始把汇聚丢掉,做全卷积的神经网络。
卷积神经网络不能够处理缩放(scaling)跟旋转(rotation)的问题,但 SpecialTransformer Layer 网络架构可以处理这个问题。