Datawhale X 李宏毅苹果书 AI夏令营: Task3

Batch Normalization

有时一个模型error surface是凸的,但是由于两个参数对存世的斜率相差非常大,在 w 1 w_1 w1 方向上斜率变化小,在 w 2 w_2 w2 方向上斜率变化很大,也不容易训练。
请添加图片描述

产生原因

如果在一个简单的线性模型中, w 1 w_1 w1 直接乘上 x 1 x_1 x1 w 2 w_2 w2 直接乘上 x 2 x_2 x2 。如果 x 1 x_1 x1 很小,那么 w 1 w_1 w1 的变化对 y y y 的影响就会很小,对 e e e 的影响也很小,对 L L L 的影响就很小。相反,如果 x 2 x_2 x2 很大,那么 w 2 w_2 w2 稍微变化,就会对 L L L 造成很大的影响。

前面的优化方法中都可以得到好的结果,本质都是自适应的学习率,但是另一个方向上,也可以把误差表面直接改掉。所以,在这里的目标就是把不同维度的影响统一,使不同方向的变化对 L o s s Loss Loss 造成的变化没那么大影响,制造比较好的error surface,使训练变得更容易,这就是 特征归一化 (feature normalization)
请添加图片描述

Z-score normalization Z值归一化

Z-score normalization,Z值归一化,也成为标准化(standardization)。比较简单,就是把所有训练数据的特征向量 x 1 − x R x^1 - x^R x1xR 中的元素 x i r x_i^r xir 同一个维度的数值取mean m i m_i mi (平均值) 和standard deviation (标准差) σ i \sigma_i σi ,然后归一化:
x ˉ i r ← x i r − m i σ i \bar{x}_{i}^{r} \leftarrow \frac{x_{i}^{r} - m_{i}}{\sigma_{i}} xˉirσixirmi
请添加图片描述

归一化之后,这个维度上平均值就是 0 0 0 ,方差是 1 1 1 ,数值分布就在 0 上下。对每个维度都进行归一化,就可以构造一个比较好的error surface

深度学习方法

请添加图片描述

如图, x ~ \tilde{x} x~ 已经归一化,但是通过 W 1 W_1 W1 之后没有归一化,那么 z z z 的不同维度之间数值分布可能仍然有很大的差异,训练 W 2 W_2 W2 的参数可能会有困难,就需要对 z z z 进行特征归一化。

如何对 z z z 做特征归一化? z z z 可以看成另外一种特征。首先计算 z 1 , z 2 , z 3 z^1, z^2, z^3 z1,z2,z3 的平均值,即:

μ = 1 3 ∑ i = 1 3 z i \mu = \frac{1}{3} \sum_{i=1}^{3} z^i μ=31i=13zi

接下来计算标准差:

σ = 1 3 ∑ i = 1 3 ( z i − μ ) 2 \sigma = \sqrt{\frac{1}{3} \sum_{i=1}^{3} (z^i - \mu)^2} σ=31i=13(ziμ)2

注意,式 (3.33) 中的平方就是指对每一个元素都去做平方,开根号指的是对向量里面的每一个元素开根号。

最后,根据计算出的 μ \mu μ σ \sigma σ 进行归一化:

z ′ i = z i − μ σ z'^i = \frac{z^i - \mu}{\sigma} zi=σziμ

[!note]

除号代表 element-wise

图像输入

做图像分类问题时,需要将代表图像的三维张量输入到网络中,需要先将向量“拉直”。面对不同尺寸的图像,会先将图像调整成相同的尺寸,再输入

Fully connected network

如果一张 100 × 100 100 \times 100 100×100 的三通道 (channel) 图片,把向量作为Fully connected network (全连接网络) 的输入,输入的特征向量的长度就是 100 × 100 × 3 100\times100\times3 100×100×3 ,当第一层有 1000 个神经元时,第一层的 weight (权重) 就需要 100 × 100 × 3 × 1000 = 3 × 1 0 7 100\times100\times3\times1000=3\times10^7 100×100×3×1000=3×107 个 weight ,非常庞大,模型有更好的弹性和更强的能力,但是有 over-fitting 的风险,弹性越大越容易过拟合。所以在做图像识别时,并不一定需要 fully connected (全连接)

请添加图片描述

Receptive filed 感受野

Observation: Need to see the whole Image?

识别某物只需要识别出一些特定的 pattern,比如识别一只鸟只需要看到鸟嘴、眼睛、鸟爪

Simplification (Implementation)

卷积神经网络设定一个区域,即 Receptive field,每个神经元只关心此 field 中的事情。只需要把这个 3 × 3 × 3 = 27 3\times3\times3=27 3×3×3=27 维的向量作为神经元输入,就只需要 27 个 weight,再加上 bias,把输出结果再送给下一层神经元。
请添加图片描述

  • 一般在做图像识别时都会看全部的通道,所以不会考虑深度,高和宽合起来就叫做 kernel size (核大小) ,一般设为 3 × 3 3\times3 3×3

  • receptive field 会移动,每次移动一个步幅 (stride) ,这是一个超参数,需要人为调整,因为希望感受野之间重叠,所以一般为 1 或 2

  • 感受野移动会超出图像范围,这时需要填充 (padding) 一般是零填充 (zero padding),超出范围全部补 0 ,当然也有其他方式

parameter sharing

Observation: The same patterns appears in different regions

同样的模式可能出现在图像的不同区域,但是他一定落在某一个感受野中,因为感受野覆盖整张图片

Simplification (Implementataion)

如图4.14所示,颜色相同,权重完全是一样的,比如上面神经元的第1个权重是 w 1 w_1 w1,下面神经元的第1个权重也是 w 1 w_1 w1,它们是同一个权重,用同一种颜色黄色来表示。上面神经元跟下面神经元守备的感受野是不一样的,但是它们的参数是相同的。虽然两个神经元的参数是一样的,但它们的输出不会永远还是一样的,因为它们的输入是不一样的,它们照顾的范围是不一样的。上面神经元的输入是 x 1 , x 2 , … x_1, x_2, \ldots x1,x2,,下面神经元的输入是 x 1 ′ , x 2 ′ , … x'_1, x'_2, \ldots x1,x2,。上面神经元的输出为
σ ( w 1 x 1 + w 2 x 2 + … + 1 ) \sigma(w_1 x_1 + w_2 x_2 + \ldots + 1) σ(w1x1+w2x2++1)

下面神经元的输出为

σ ( w 1 x 1 ′ + w 2 x 2 ′ + … + 1 ) \sigma(w_1 x'_1 + w_2 x'_2 + \ldots + 1) σ(w1x1+w2x2++1)

因为输入不一样的关系,所以就算是两个神经元共用参数,它们的输出也不会是一样的。所以这是一种简化,让一些神经元可以共享参数,共享的方式完全可以自己决定。接下来介绍图像识别方面,常用的共享方法是如何设定的。
请添加图片描述

如图4.15所示,每个感受野都有一组神经元在负责守备,比如64个神经元,它们彼此之间可以共享参数。图4.16中使用一样的颜色代表这两个神经元共享一样的参数,所以每个感受野都只有一组参数,就是上面感受野的第1个神经元会跟下面感受野的第1个神经元共用参数,上面感受野的第2个神经元跟下面感受野的第2个神经元共用参数……所以每个感受野都只有一组参数而已,这些参数称为滤波器(filter)。这是第2个简化的方法。

请添加图片描述

max pooling (最大池化)

一般架构是卷积加池化,但是池化是可有可无的。

一般架构就是卷积加汇聚,汇聚是可有可无的,很多人可能会选择不用汇聚。如图4.30所示,如果做完几次卷积和汇聚以后,把汇聚的输出做扁平化(flatten),再把这个向量丢进全连接层里面,最终还要过这个softmax来得到图像识别的结果。这就是一个经典的图像识别的网络,里面有卷积、汇聚和扁平化,最后再通过几个全连接层或softmax来得到图像识别的结果。

扁平化就是把图像里面本来排成矩阵样子的东西“拉直”,即把所有的数值“拉直”变成一个向量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值