3.7 批量归一化
批量归一化的核心思想在于把误差函数图像的“山铲平”,在某些误差表面上不同参数方向的变化率可能差别很大,此时在损失函数上找到临界点会比较困难
比如对一个简单的线性函数 \(y=\sigma(w_1\times x_1+w_2\times x_2 + b)\) 来说,我们考虑对于参数 \(w_1,w_2\) 来说,如果 \(x_1\) 的可取值非常小,那么参数 \(w_1\) 的变化对 \(y\) 的影响就会非常小,反应在损失函数图像上来说就是参数 \(w_1\) 对于损失函数的梯度变化很慢。因此为了解决这个问题,有一类方法被统称为 特征归一化
一种常见的特征归一化方法是Z值归一化,也称为标准化。记所有训练数据的特征向量 \(x_1,\cdots x_n\),\(x_j^i\) 表示第 \(i\) 个特征向量的第 \(j\) 维的值。 我们处理得到新的特征向量为 \(\bar{x_i}^r\leftarrow \frac{x_i^r-m_i}{\sigma_i}\) 其中 \(m_i,\sigma_i\) 分别表示第 \(i\) 维的平均值和标准差。经过这种处理后每个维度上的平均值都是0,方差都是1
3.7.1 深度学习
对于神经网络而言,即使输入 \(x\) 已经进行归一化处理了,但是通过 \(W\) 之后得到的输出结果 \(z\) 的数值分布差异还是很大,所以对于这些输出 \(z_1\cdots z_n\) 也要进行归一化处理,再通过激活函数得到该层的最终输出结果 \(a\)。一般来说我们特征归一化要放在输出函数之前,不过放在之后也可以
归一化的方式和Z值归一化类似 \(\bar{z}^i\leftarrow \frac{z^i-\mu}{\sigma}\) ,其中 \(\mu,\sigma\) 分别表示平均值和标准差,值得注意的是在训练中我们一般是分批次导入数据,所以计算的平均值和标准差也是某个批次内所有数据的,可以近似为对整个数据集做了特征归一化。
在实际的训练中,除了上面的归一化之外,我们还会另外添加一步。\(\hat{z}^i=\gamma \bar{z}^i+\beta\) ,这样做是因为有的时候某个维度上数据的平均值是0可能会对训练产生一些影响,所以我们会对数据分布做一些小的调整。
3.7.2 测试是的批量归一化
在测试(也叫推断 inference)过程中,数据并不一定是以批量的形式加载的,我们没法直接得到一个Z值归一化形式中的平均值和标准差。
为了解决这个问题,Pytorch中内置了移动平均的方式,如果在训练的时候我们使用了批量归一化的方法,那么Pytorch在训练的时候也会记录一个移动平均值 \(\bar{\mu}\) ,其更新方式为 \(\bar{\mu}\leftarrow p\bar{\mu}+(1-p)\mu_{new}\) 其中 p 是一个可以调节的超参数,其默认值是 0.1。对于标准差的处理方式类似。
3.7.3 内部协变量偏移
内部协变量偏移的概念是在原始的批量归一化论文中作者提出的一个概念。例如在某个神经网络中,经过连续两层得到的输出结果为 \(a,b\),在更新时我们将 \(A,B\) 更新为 \(A^`,B^`\) ,但是我们更新 B 的时候,前一层此时的参数是 A,也就是我们在考虑前一层输出是 \(a\) 的情况下来更新下一层的输出 \(b\) ,可是更新完 \(b\) 之后我们又让 \(a\) 变成了 \(a^`\)。也就是说更新 \(b\) 时的情景条件不成立了。这种情况称为内部协变量偏移
但是作者在实践中发现,更新时不论是对于 \(a\) 还是 \(a^`\) 计算得到的梯度是非常近似的,对于训练的影响很小。
4 卷积神经网络
4.1 观察1:检测模式不需要整张图像
识别的核心是对于图像中某些重要表征的识别
4.2 简化1:感受野
每个神经元直观性自己的 receptive field 内部的图像信息。一般来说特征都会存在于不同的通道中,所以对于感受野而言,一个感受野就只负责一个特定的通道上的一部分。另外感受野不一定要相连,感受野可以设计成任意的形状,不过一般而言相邻区域的信息是有关联的,所以我们习惯于将感受野设置为矩形的形式,大小也是可以自己调节的。
另外我们控制步幅来调整感受野的分布,一般来说我们希望感受野是重叠的,因为某个表征可能出现在两个感受野的边界上,如果不重叠的话,这个表征可能就没法被很好的提取到。自然引出的一个问题就是,移动感受野的时候,可能会超出边界范围,此时我们需要对超出的部分进填充一般来说填充的值都是0,当然也可以填充平均值等其他数据。
4.3 观察2:同样的表征可能会出现在图像的不同区域
同一个表征可能会出现在一个图片的不同位置,如果对于每一个位置都要设置一个神经元来判断相同的特征会显得很冗余
4.4 简化2:共享参数
每个感受野都有一组神经元负责守备和运算,我们希望对于不同的感受野能通过共享参数的方式来简化。具体来说我们对于每个感受野设置一组参数,称为滤波器,不同的感受野可以共享相同的参数。
4.5 总结
全连接层的灵活性最强,弹性最大,可以通过参数设置来决定是要看整张图像,还是某些部分。在引入感受野之后,每一个神经元能控制的范围就变小了,网络的灵活性和弹性自然也下降了。同时参数共享又进一步限制了网络的灵活性。
感受野加上参数共享就是卷积层,而使用卷积层的网络就叫做卷积神经网络。
标签:Task3,bar,平均值,AI,mu,感受,参数,归一化,打卡 From: https://www.cnblogs.com/youth518/p/18395664