4. 卷积神经网络

发布时间 2023-10-19 23:53:26作者: 乐池

1. 机器学习中两个主要问题

1.1 回归

1.2 分类

分类是可交换的,可以将狗称为第一类,猫是第二类,也可以反过来。
卷积是可交换的

上式是分类的损失函数,\(y\)是0或1,\(\hat {y} \epsilon [0 , 1]\)

2. 数学过程

上图就是卷积的运算

后证明:若\(u(x) = (f * g)(x)\),即\(u\)\(f\)\(g\)的卷积,则\(u\)的傅里叶变换\(=f\)\(g\)的傅里叶变换相乘,即\(\hat u(\xi) = \hat f(\xi) \hat g(\xi)\)

3. 完整过程

3.1 卷积

3.1.1 zero pedding

对原始的图片进行补0,以满足更大的神经元/内核/kernel
例如下图,可在虚线框内补入0进行运算

  • same padding:当我们将5x5x1图像扩大为6x6x1图像,然后在其上应用3x3x1内核时,我们发现卷积矩阵的维数为5x5x1。因此得名
  • valid padding:如果我们执行相同的操作将5x5x1图像扩大为6x6x1图像并应用3x3x1内核,而不使用padding,我们将得到一个矩阵,其维度为内核(3x3x1)本身

3.1.2 步幅stride

有时重叠太大可能会有冗余性,有时会希望跳过核中的一些位置来降低计算的开销(相应的代价是提取特征没有先前那么好了),可以对每个移动方向定义不同的步幅,\(S(i,j)\)中就分别代表横坐标、纵坐标分别的步幅
下图上面一行的步幅是1,下面一行的步幅是2

3.1.3 多通道

多个内核,此时图中的运算参数有3*3*3+1bias=28个

3.2 池化pooling

池化函数使用某一位置的相邻输出的总体总计特征来代替网络在该位置的输出。

3.3 softmax

  • 将负数转为正数
  • 将所有数的总和设为1

4. 简单代码及计算参数

参数总数:
第一个320是$32*3*3+32$

第二个18496是28*28的数据经过第一次卷积后是32个26*26,经过第一次2*2的池化后是32个13*13,第二次卷积的参数就是\(64*(3*3*32+1)=18496\),且变为64个11*11的数据,在经过池化丢弃数据,是64个5*5,展平后是1600个神经元,再接一个400的神经元,参数数目是\(1600*400+400 = 640400\) , 400*10,全连接是4000,再有10个偏置项,所以是4010