文章目录
- 偏置项.
- Batch-Normalize.
- Nomalize Input.
- BN.
- Why it works.
- 测试数据.
- 指数加权平均.
偏置项.
- 神经网络中,进行运算后,通常要对结果加上一个偏置项 ,记输入数据为 ,参数为 ,运算为 ,偏置项为 ,则上述过程表述为:
- 后续经过激活函数 ,通常为 等非线性函数,得到本层输出数据 ,该过程表述如下:
- 关于偏置项
偏置实际上是对神经元激活状态的控制,当偏置存在时, 较小时
做模式识别,本质是要提取某种全局信息,所以提取的过程就是要抛弃局部信息保留整体信息,增加偏置这个参数,就是调整丢弃的局部信息的比例或者能量,没有这个参数,对信息的抛弃率的调整的灵活性就欠缺。
Batch-Normalize.
- 在介绍 之前,需要简单提及归一化输入,即将训练数据 变换为均值为 ,方差为 的数据。具体做法是对训练集分别计算均值向量与方差:
Nomalize Input.
- 关于归一化输入操作所带来的益处, 的阐述是较为清晰直观的。以二维情况为例,易于作图和理解。当输入数据的不同特征取值范围区别较大,如 ,会导致它们对应参数 的取值范围区别较大,从而优化算法在寻找损失函数最小值时,类似于在下图中一个狭长的山谷中搜索:
- 绘制其等高线图如下所示:
在这样一个参数空间内搜索时,优化算法需要使用较小的学习率,否则极易在接近最小值点时越过它。但整个参数搜索过程依旧是振荡的,可以看到在 - 经过归一化操作后,数据不同特征的取值范围大致接近,从而代价函数的参数空间类似与下图中这样各方向大致相同的空间:
观测上图所示的等高线图,无论优化算法起始点如何,相较于狭长等高线,都能够更快、更有效地找到最优值点。高维空间中的情况可以从上述二维平面中类推,代价函数的参数空间倾向于在各个维度上尺度大致相等,更容易运行优化算法。 - 最后需要提醒的一点是,对训练集计算出均值、方差并进行归一化操作后,在测试集上运行算法时,应使用训练集计算出的均值、方差数值,而非在测试集上重新计算。这样确保训练集、测试集经历了相同的归一化过程。
BN.
- 下面的内容关于本篇主题 ,该算法由 和 提出,其操作与归一化输入大体相同,但归一化的对象是神经网络中间层的输出。 使得参数搜索更加容易,并且网络对于超参数的选择更加稳定。
- 在实践中,我们通常对未激活输出 进行 ,假设 是神经网络某一隐层的未激活输出集合, 的具体操作如下:
- 中 是很小的常数,用于避免 时方差无定义,此时 是具有零均值、单位方差的隐层输出数据。但对于下一隐层而言,接收到的输入数据来自于不同的分布会更有意义,因此在上述归一化过程后,我们计算:
- 这里 具有均值 ,方差 ,并且注意 均是模型中的参数,是可以为优化算法所学习的,其遵循的更新规则和一般神经网络中的 完全一致。接下来使用 替代原本的未激活输入,进入激活函数并向前传播。
- 如果加入了 操作,那么 中的偏置项就不发挥作用了,因为无论 取何值,在标准归一化操作时都会被减去,而偏置功能转由参数
- 对于 存在的意义,可以通过下图中 函数值来获得一个直观理解:
如果所有的未激活输出都服从零均值、单位方差,那么意味着激活函数接收到的数据总是聚集在
Why it works.
- 能够加速网络训练,是由于它针对隐层输出进行了类似归一化输入的操作,使得优化算法得到一定程度的提速;另外, 还增强了网络的稳定性,具体地说,网络中深层参数会更加 ,当浅层参数发生变化时,深层参数不会表现出过大的波动。
- 我们考虑网络的第 层,其未激活输出记为 ,参数记为 第 层的未激活输出为 ,它由下式计算得到:如果应用 算法,那么会对 进行处理得到 , 拥有固定的均值 和方差
- 这意味着即使在网络参数更新后,即使影响 值的前层参数 发生变化,导致 的分布发生变化,但经过 后的未激活输出 限制了这种数据分布变化的剧烈程度,因为 必须具有均值 和 方差
- 限制数据分布变化程度的意义在于:如果我们根据数据 学习到了某个映射规则 ,而此时输入数据 的分布发生变化,那么映射规则 则需要重新学习,该问题称为 而
- 一种直观的理解是,
- 另外, 带来的意外之喜是,由于通常和 算法配合使用,因此每轮训练的均值和方差都是只在一个
- 减去均值,除以标准差带来的噪音意味着 和
测试数据.
- 前面提到 中 在训练时是针对每个
- 常见的解决方案是,对训练阶段计算得到的均值、方差进行指数加权平均得到 作为测试阶段使用的
- 指数加权平均 针对一组数据 ,输出一组数据 ,其计算规则如下所示:
- 其中 是权重参数,上述计算规则得出的 近似等于 之前 个数据的均值(包括 ),常用 ,此时均值窗口大小为
指数加权平均.
- 观察 不难发现,指数加权平均实际等价于对过去的数据乘以一个按照指数 衰减的权重后再求平均。 中 可以展开如下:数学上通常以 为临界值, 中所有小于 的权重忽略不记,得到:
- 当 时 与 极为接近,二者极限均为 ,作图如下所示:
- 所以近似认为 表示过去 个数值的指数加权均值,这一点从 中乘积第一项
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(1e-5,1,1e3)
y1 = 1-x
y2 = np.log(1/x)
plt.xlabel('x')
plt.ylabel('y')
plt.plot(x,y1,'ro',label = 'y=1-x')
plt.plot(x,y2,'bo',label = 'y=ln(1/x)')