cnn卷积神经网络
cnn再影像图片方面是非常厉害,运用的非常多的
我们的label是一个one hot的向量,每一个label是一种需要分类的东西
我们的图片是有三个这个r, g, d颜色的图片叠加的,我们输入model的数据就是把每个channel拉直放在一起,每一个维度就是每一个pixel对应颜色的强度
我们输入的这个数据包含了很多dimension,100x100x3维, 假设我们一层有1000个神经元,那么我们就会有3x10e7个weight,有太多的这个参数了,虽然可以让我们的模型更有弹性,能力更强,但也增加了over fitting的风险,如果我们是要考虑影像本身的特性,那么我们是不是真的需要每一neuron对每一个dimension都有一个weight呢
我们可以让某些neuron负责某些pattern
所以我们可以简化,不同的neuron可以有不同大小或者深度的receptive field,可以互相重叠,可以一个receptive field对应多个neuron
一般我们的接受域一般会高度重叠,超出了会padding,一般是0
有时候,不同的守备范围也会出现相同的侦测,如下图的鸟嘴,一个在左上角,一个在右下角,那么我们有必要在每一个receptive field的neuron set中都具备那个探测鸟嘴的neuron吗
答案是不用的,我们可以共享参数,就算是两个neuron的参数一样,因为他们的输入是不一样的,所以输出也是不一样的(图中的neuron是同一个
我们在不同的接受域中的neuron可以有共享一样参数的neuron,比如说下图,kernel就是filter
cnn其实很大限制了模型弹性,有很大的model bias,但是他在特定领域,就是影像上,有很大的用处
每一个filter负责一个pattern,
在卷积神经网络(CNN)中,共享参数(也称为权重共享)主要是指在同一个卷积层内,每个用于检测特定特征的滤波器(或称核,kernel)在输入数据的不同位置(即不同的receptive field,感受野)上使用的权重是相同的。这意味着,无论该滤波器移动到输入数据的哪个位置,它都会使用同一组权重进行计算。
具体来说,在一个典型的卷积层中:
- **共享参数**:对于每一个卷积核而言,其在遍历整个输入数据(例如图像)时,都是用同一组权重来与输入数据的局部区域做卷积操作。这使得网络能够有效地学习输入数据中的平移不变特征,同时减少了模型参数的数量,降低了过拟合的风险。
- **没有共享参数的情况**:通常情况下,在标准的卷积层设计中,所有用于处理输入数据的neuron(准确地说,是每个卷积核对应的操作单元)都遵循这种权重共享的原则。然而,也有一些特殊情况不涉及参数共享,比如全连接层就不具备这种特性,因为每个神经元的输入权重是独立学习的;另外,一些特殊的网络架构或者层类型可能会打破这种模式,例如动态参数网络(Dynamic Parameter Networks),但这些并不常见。
综上所述,在传统的卷积层中,是每一个感受野中的“神经元”操作都共享同一组参数(即卷积核的权重)。而在网络的其他部分,如全连接层,则不存在这样的参数共享机制。
在一个卷积层中可以包含多个滤波器(filters),而不是只有一个。每个滤波器实际上都是在学习输入数据中的不同特征。例如,在处理图像数据时,一个滤波器可能学习识别边缘,另一个可能学习识别角点等。
关于这些滤波器是如何工作的,这里有几个关键点:
- **单独但并行操作**:不同的滤波器是独立地应用到输入数据上的,它们各自以自己的权重集对输入数据进行卷积操作。这意味着每个滤波器都会单独“扫描”整个输入空间(或根据设定的步长移动通过整个输入体积),以生成一个新的输出特征图(feature map)。然而,尽管这些操作概念上是独立的,但在实际实现中它们通常是并行计算的,以便提高效率。
- **产生多张特征图**:由于每个滤波器会产生一张对应的特征图,因此如果一个卷积层中有多个滤波器,那么该层将会输出多张特征图。每张特征图对应于其中一个滤波器检测到的特定类型的特征。
综上所述,当我们在一个卷积层中使用多个滤波器时,每个滤波器会独立地在输入数据上移动,覆盖整个输入空间,并分别生成各自的输出。这些过程通常被设计为并行执行,以充分利用现代硬件(如GPU)的并行计算能力。这样不仅允许网络在同一层内检测多种不同的特征,还能够有效地加速计算过程。
我们filter实际作用中,其实是找出image中值最大的感受野,下图中的左上角和左下角就是要找的pattern
第二个filter也是一样,产生的这个图叫做feature map
第一个卷积层的输出也可以是第二个卷积层的输入,第一个卷积层有多少个filter,它的输出也就有多少个channels,导致第二个卷积层的filter的高度必须是这个channel的数量
我们可能会担心这个filter知识3x3,是不是有可能侦测不到大的pattern,其实是不会的,我们特征图上虽然是3x3,但是在卷积层中是一个5x5,只要layer叠的越深,就可以检测更大的pattern
我们这个感受野中的共享的参数其实就是filter,不同的filter负责不同的特征提取
这些neuron共享参数的过程就是filter扫过图片的过程,也就是convolution
总结
接下来是pooling,也就是池化,二次抽样
max pooling
pooling的作用即使把convolution完后的这个特征图在保持channel不变的情况下,把图片变小,任然保持着重要的特征
一般流程:
alpha go中也有运用cnn
其实cnn也可以用在文字处理和语音上,当然,不是跟图像一样处理
同时cnn也有限制