卷积神经网络的改进方向

话不多说,直接开始。

想要改进卷积神经网络的话,首先得知道卷积神经网络的原理。而卷积神经网络可以看成是对全连接神经网络(MLP)的一种改进。所以归根到底还得看最开始最简单的神经网络是什么样的。

一、全连接神经网络(MLP)

        全连接神经网络也称之为多层感知机,此处借鉴这位大佬的笔记,来丰富这个文章。原文链接深度神经网络(DNN) - 知乎 (zhihu.com)

        一个神经元的示意图和相应的公式如下所示:

        可以看到本质上这是一个线性变换,为了让模型更贴切实际问题,我们需要引入一些非线性的因素,模型采用的是激活函数。激活函数常用的有sigmod,relu等,这些函数的图像大概是这样的(图来自于:ReLU激活函数 - 知乎 (zhihu.com)):

        

        这时候全连接神经网络正向传播过程已经做完了,接下来就是反向传播进行参数更新。这一步的公式如下所示:

        w_{ij}^{(l)} = w_{ij}^{(l)} - \eta \frac{\partial C}{\partial w_{ij}^{(l)}}        

        其中最关键的是这个学习率,学习率的选取也是优化网络的一个方向,这方向做的人也很多。

        接下来就是重复上述的工作,不断的更新参数,从而使这些参数更符合我们的使用。全连接是最简单的神经网络,但是它也有很多缺点,卷积神经网络(CNN)是一个非常出色的模型,在原来全连接的基础上做了改进,接下来我们来看看CNN的整个逻辑。

二、卷积神经网络(CNN)

        卷积神经网络相比全连接神经网络有很多优化的地方,CNN一开始出来的工作是做图像识别的,所以很多特性也和图片有点关系。

        它的优势大概可以这么总结一下(说的不是很全,挑重点说):​​​​​​

  1. 连接方式:全连接神经网络的每个神经元都与前一层的所有神经元连接,而卷积神经网络的神经元仅与局部区域的神经元连接。

  2. 权值共享:在卷积神经网络中,卷积层的权值是共享的,即多个神经元使用相同的权值进行卷积运算。这样可以大大减少参数数量。而在全连接神经网络中,每个连接都有独立的权值。

  3. 参数数量:由于权值共享和稀疏连接的特性,卷积神经网络的参数数量相对较少,可以更有效地处理大规模输入数据。而全连接神经网络的参数数量较多,容易导致模型过拟合。

  4. 空间结构的处理:卷积神经网络通过卷积操作和池化层等操作,可以有效地处理具有空间结构的数据(如图像)。而全连接神经网络无法利用输入数据的空间结构信息。

        我收藏过一个讲CNN非常好的一个网站,和大家分享。CNN Explainer (poloclub.github.io)

        如果你去网上搜卷积的公式,会得到各种五花八门的结果,有时候公式没那么好看,反而有时候看视频听人嘴说更好理解,我就在这里贴一个视频,视频是小视频风格的,几分钟一个,不会很枯燥大家放心。

“卷积”在计算机中是如何进行计算的?_哔哩哔哩_bilibili

2分钟让你清楚卷积神经网络 “卷积 ”过程~_哔哩哔哩_bilibili

        简单来说,卷积的过程还是做了线性变换,也就是说,改进了原有模型的线性变换才得到了现在CNN。那么这一步如果从数学公式的角度来看的话,简化一下大概是这样子的:

\sum f(x,y)\cdot g(m-x,n-y)

        那还能不能再简化一下呢,简化成更通俗易懂的样子,那肯定是可以的。我们可以看到,其实就是两个矩阵对应位置相乘再求和,其中一个是卷积核另外一个是输入的矩阵,卷积核我们称之为参数w,输入我们称之为a,那么上面的这个公式是不是就变成了下面这个:

\sum w\cdot a

        是不是有点那个感觉了,当然,卷积神经网络也是需要偏置的,那么上面这个式子,和我们之前这个图片的东西,就差不多了。

        所以说卷积其实也是在做线性变换,不过这个线性变换做的十分巧妙,能够达到以前没有的效果。以上就是卷积的大概思路。       

        下面就是进行池化,引入非线性因素,让模型效果更好,更贴合实际问题。这点和之前一样。ok,现在做完了非线性变换,下一步的操作是进行池化, 这一步的目的是减少参数。池化有很多池化,有的是取平均值,有的是取最大值,好的那么为什么不取最小值呢。

        这就要谈到整个网络的逻辑了,经过前面的步骤加权求和之后的结果,我们称之为特征图,特征图里面的元素就是对应的输入图上位置的特征值,这个值越大,越代表这个特征是我们想要的特征。所以一般不取最小池化。当然也不是没有,在一些特定情况下也可以用最小池化,感兴趣的话可以去自己搜一下。

        然后就是我们所熟知的反向传播更新参数:

 w_{ij}^{(l)} = w_{ij}^{(l)} - \eta \frac{\partial C}{\partial w_{ij}^{(l)}}        

三、总结

        卷积神经网络的过程大概是这样的:

线性变换(卷积)\rightarrow非线性变换(激活函数)\rightarrow减少参数(池化)\rightarrow更新线性变换中用到的参数(反向传播)

 

        反向传播我看的比较少,以后看了的话再补充。CNN通过模型进行特征提取,提取的方法就是更新参数,通过BP(正向和反向传播)更新参数,如果这个地方重要,那么参数就大点,如果不重要,参数就小点,甚至取0。本质上也算一种特征选择方法,然后将选择出来的特征拿去分类。所以可以看出来神经网络里面,参数是最重要的一个东西。

 

        改进卷积神经网络有这么几个方向:

        1.向前传播相关

        1.1优化权重的选择(怎样找到更好的卷积核,或者如何更快的找到合适的卷积核)

        1.2优化池化层

        这里贴一个帖子深度神经网络中的池化方法:全面调研(1989-2020) - 知乎 (zhihu.com)

        1.3优化激活函数(每种激活函数都有它的优点和缺点)

        1.4尝试找新的线性变换方法(例如Attention就是采用了一种新的线性变换方法)

        2.向后传播相关

        2.1优化学习率的取值

        2.2群智能方法确定参数(本质上都是求最优解)

欢迎大家批评指正。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值