目录
当输入特征的每一个维度的值,范围差距很大时,可能产生像这样的误差表面,不同方向的斜率非常不同。
a 或 z 其实也是一种特征,也应该要对这些特征做归一化。特征归一化,要放在激活函数之前,之后都是可以的,在实现上,没有太大的差别。
卷积神经网络(Convolutional neural Network, CNN)
对于机器,图像可以描述为三维张量(张量可以想成维度大于 2 的矩阵)。
一张图像是一个三维的张量,其中一维代表图像的宽,另外一维代表图像的高,还有一维代表图像的通道(channel)的数目。
向量里面每一维里面存的数值是某一个像素在某一个通道下的颜色强度。
且第 1 层有 1000 个神经元时???为什么是1000?
每个神经元都只关心自己的感受野里面发生的事情,感受野是由我们自己决定的。
感受野彼此之间也可以是重叠的,比如绿色的神经元的感受野跟蓝色的、黄 色的神经元都有一些重叠的空间。
一般同一个感受野会有一组神经元去守备这个范围,比如 64 个或者是 128 个神经元去守 备一个感受野的范围。 ???
步幅(stride):移动的量,是一个超参数, 需要人为调整。因为希望感受野跟感受野之间是有重叠的,所以步幅往往不会设太大,一般设 为 1 或 2。
参数共享(parameter sharing):两个神经元的权重完全是一样的
编辑因为输入不一样的关系,所以就算是两个神经元共用参数,它们的输出也不会是一样的。
全连接网络(fully-connected layer)是弹性最大的,全连接网络可以决定它看整张图像还是只看一个范围,如果它只想看一个范围,可以 把很多权重设成 0。
感受野 + 参数共享 = 卷积层 (convolutional layer),用到卷积层的网络就叫卷积神经网络。卷积神经网络的偏差比较大。
如果有 64 个滤波器,就可以得到 64 组的数字。这组数字称为特征映射(feature map)。
假设卷积层里面有 64 个滤波器,产生的特 征映射就有 64 组数字。本来一张图像有 3 个通道,通过一个卷积变成一张新的有 64 个通道图像。
共享权重其实就是用滤波器扫过一张图像,这个过程就是卷积。 把滤波器扫过图像就相当于不同的感受野神经元可以共用参数,这组共用的参数就叫做一个滤波器。
汇聚被用到了图像识别中, 汇聚没有参数,所以它不是一个层,它里面没有权重,它没有要学习的东西,汇聚比较像 Sigmoid、ReLU 等激活函数。
CNN的应用:下围棋。这个问题可以用一个全连接网络来解决, 但用卷积神经网络的效果更好。
选修作业运行结果:
批量归一化(Batch Normalization,BN)
-
当输入特征的每一个维度的值,范围差距很大时,可能产生像这样的误差表面,不同方向的斜率非常不同。
-
如果我们可以给不同的维度,同样的数值范围的话,那我们可能就可以制造比较好的误差表面,让训练变得比较容易一点其实有很多不同的方法,这些不同的方法往往就合起来统称为特征归一化(feature normalization)。
-
归一化以后,这个维度上面的数值就会平均是 0,其方差是 1,所以这一排数值的分布就都会在 0 上下;对每一个维度都做一样的归一化,所有特征不同维度的数值都在 0 上下,可能就可以制造一个比较好的误差表面。它可以让在做梯度下降的时候,损失收敛更快一点,训练更顺利一点。
-
a 或 z 其实也是一种特征,也应该要对这些特征做归一化。特征归一化,要放在激活函数之前,之后都是可以的,在实现上,没有太大的差别。
- 实际实现的时候,只对一个批量里面的数据做归一化,所以称为批量归一 化。一定要有一个够大的批量,才算得出 µ,σ。所以批量归一化适用于批量大小比较大的时候,批量大小如果比较大,也许这个批量大小里面的数据就足以表示整个数据集的分布。这个时候就不需要对整个数据集做特征归一化,而改成只在一个批量上做特征归一化作为近似。
卷积神经网络(Convolutional neural Network, CNN)
-
对于机器,图像可以描述为三维张量(张量可以想成维度大于 2 的矩阵)。
-
一张图像是一个三维的张量,其中一维代表图像的宽,另外一维代表图像的高,还有一维代表图像的通道(channel)的数目。
-
向量里面每一维里面存的数值是某一个像素在某一个通道下的颜色强度。
-
且第 1 层有 1000 个神经元时???为什么是1000?
-
观察 1:检测模式不需要整张图像
检测模式不需要整张图像
感受野(receptive field)
每个神经元都只关心自己的感受野里面发生的事情,感受野是由我们自己决定的。
感受野彼此之间也可以是重叠的,比如绿色的神经元的感受野跟蓝色的、黄 色的神经元都有一些重叠的空间。
感受野的范围不一定要相连。
一般在做图像识别的时候,会看全部的通道
kernel size: 高 x 宽,一般3x3
一般同一个感受野会有一组神经元去守备这个范围,比如 64 个或者是 128 个神经元去守 备一个感受野的范围。 ???
步幅(stride):移动的量,是一个超参数, 需要人为调整。因为希望感受野跟感受野之间是有重叠的,所以步幅往往不会设太大,一般设 为 1 或 2。
填充(padding):超出范围需要做。
观察二:同样的模式可能会出现在图像的不同区域
参数共享(parameter sharing):两个神经元的权重完全是一样的
因为输入不一样的关系,所以就算是两个神经元共用参数,它们的输出也不会是一样的。
参数称为滤波器(filter)
全连接网络(fully-connected layer)是弹性最大的,全连接网络可以决定它看整张图像还是只看一个范围,如果它只想看一个范围,可以 把很多权重设成 0。
感受野只能看一个小范围,网络的弹性变小。
参数共享又进一步限制了网络的弹性。
感受野 + 参数共享 = 卷积层 (convolutional layer),用到卷积层的网络就叫卷积神经网络。卷积神经网络的偏差比较大。
如果有 64 个滤波器,就可以得到 64 组的数字。这组数字称为特征映射(feature map)。
假设卷积层里面有 64 个滤波器,产生的特 征映射就有 64 组数字。本来一张图像有 3 个通道,通过一个卷积变成一张新的有 64 个通道图像。
可以检测到大的模式的原因
共享权重其实就是用滤波器扫过一张图像,这个过程就是卷积。 把滤波器扫过图像就相当于不同的感受野神经元可以共用参数,这组共用的参数就叫做一个滤波器。
简化 3:汇聚
汇聚被用到了图像识别中, 汇聚没有参数,所以它不是一个层,它里面没有权重,它没有要学习的东西,汇聚比较像 Sigmoid、ReLU 等激活函数。
subsampling: 把大的图片变成小图片。
做汇聚的时,每个滤波器都产生一组数字,把这些数字分组,可以 2 × 2 个 一组,3 × 3、4 × 4 也可以,这个是我们自己决定的,下图是 2 × 2 个一组。最大汇聚(max pooling)在每一组里面选一个代表, 选的代表就是最大的一个。
平均汇聚(mean pooling):取每一组的平均值。
一般在实践上,往往就是卷积跟汇聚交替使用,可能做几次卷积,做一次汇聚。比如两次卷积,一次汇聚。不过汇聚对于模型的性能 (performance)可能会带来一点伤害。 近年来图像的网络的设计往往也开始把汇聚丢掉,它会做这种全卷 积的神经网络,整个网络里面都是卷积,完全都不用汇聚。汇聚最主要的作用是减少运算量, 通过下采样把图像变小,从而减少运算量。
CNN的应用:下围棋。这个问题可以用一个全连接网络来解决, 但用卷积神经网络的效果更好。
一个棋盘可以看作是一个分辨率为 19×19 的图像。
在 AlphaGo 的原始论文里面,每个棋盘的位置,即每个棋盘上的像素是用 48 个通 道来描述,即棋盘上的每个位置都用 48 个数字来描述那个位置发生的事情
围棋和景像共同点:
卷积神经网络不能处理图像放大缩小或者是旋转的问题
假设给卷积神经网络看的 狗的图像大小都相同,它可以识别这是一只狗。当把这个图像放大的时候,它可能就不能识 别这张图像是一只狗。