forked from shunliz/Machine-Learning
-
Notifications
You must be signed in to change notification settings - Fork 0
/
mian-shi-ti-mu-1.md
37 lines (11 loc) · 2.37 KB
/
mian-shi-ti-mu-1.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
**问题1:**
**阐述批归一化的意义**
这是一个非常好的问题,因为这涵盖了面试者在操作神经网络模型时所需知道的大部分知识。你的回答方式可以不同,但都需要说明以下主要思想:
![](https://mmbiz.qpic.cn/mmbiz_png/vI9nYe94fsFIyfpbd6KHUrNNBQ59hcRW12bLywuLAibUBzoqXDJrAhsuVia0U6S1piar3H6xiabXiakEOLZiah0Qonicg/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1)
_算法 1:_
_批归一化变换,在一个 mini-batch 上应用于激活 x。_
批归一化是一种用于训练神经网络模型的有效方法。这种方法的目标是对特征进行归一化处理(使每层网络的输出都经过激活),得到标准差为 1 的零均值状态。所以其相反的现象是非零均值。这将如何影响模型的训练:
首先,这可以被理解成非零均值是数据不围绕 0 值分布的现象,而是数据的大多数值大于 0 或小于 0。结合高方差问题,数据会变得非常大或非常小。在训练层数很多的神经网络时,这个问题很常见。如果特征不是分布在稳定的区间(从小到大的值)里,那么就会对网络的优化过程产生影响。我们都知道,优化神经网络将需要用到导数计算。
假设一个简单的层计算公式 y = \(Wx + b\),y 在 W 上的导数就是这样:dy=dWx。因此,x 的值会直接影响导数的值(当然,神经网络模型的梯度概念不会如此之简单,但理论上,x 会影响导数)。因此,如果 x 引入了不稳定的变化,则这个导数要么过大,要么就过小,最终导致学习到的模型不稳定。而这也意味着当使用批归一化时,我们可以在训练中使用更高的学习率。
批归一化可帮助我们避免 x 的值在经过非线性激活函数之后陷入饱和的现象。也就是说,批归一化能够确保激活都不会过高或过低。这有助于权重学习——如果不使用这一方案,某些权重可能永远不会学习。这还能帮助我们降低对参数的初始值的依赖。
批归一化也可用作正则化(regularization)的一种形式,有助于实现过拟合的最小化。使用批归一化时,我们无需再使用过多的 dropout;这是很有助益的,因为我们无需担心再执行 dropout 时丢失太多信息。但是,仍然建议组合使用这两种技术。