卷积神经网络的基本原理-卷积神经网络原理
卷积神经网络实际上就挺有意思,它和传统的“人脑识别物体”有个挺大的区别。
你想想看,人脑仿佛是一个庞大的网状结构,信息是点状传递的,并且跑得挺慢。但神经元之间的连接是固定的,一旦摆在那儿,一辈子不变。而卷积神经网络里的每一个连接都是乱七八糟的,互相交织着。
这种结构反而比固定的网状结构要了得得多。 神经网络如何学会这事儿呢?靠的就是训练。当你输入一堆图像,给它喂数据,让它输出结局,它对结局不中意,就会启动调整内部的层。
这调整有个益处:你只需求改一层,别的层可能就没啥变化了。
这就好比练琴,你手指头头多练了一次,后面的指法自然就顺了,没必要每次都从头练一遍。 那得注意啥呢?第一,它不是好办的堆叠。每加一层,卷积核的数量就变多了,参数量也暴增了。
这玩意儿忒好办“过拟合”,就像是为了考满分把题库背得死记硬背,结局一换题目就瞎蒙。
故此,得加个正则化项,把那些学坏了的参数给删光。 还有个难题,神经网络在处理图像的时候是个“瞎子”。出于它没见过整个的图,故此第一眼啥都认不出来。它只能从边角料里猜。
这就像一个人没看过全屋子,光盯着床底下或桌子底下看,哪见过床,也看不见桌子。
故此 CNN 得靠局部感受野。它不是先看全局,而是盯着这一小块,先把这小块结构化,变成一个小特征,比如“这里有个门框”,“那里是墙”,“这块是地板”。 实际上,一个卷积核在图像上滑动的时候,它捕捉的是局部的特征。
比如一个 3x3 的卷积核,它盯着 9 个点,通过加权求和,算出一个特征值。
这个值代表它在这 9 个点上找出了啥东西。
要是这个值挺大,说明它找到了一个明确的特征;要是挺小,说明这位置没啥东西。 这就相当于你说的“感受野”。1x1 的卷积核呢,它相当于把这个窗口端到端地滑那会儿,筛选掉绝大局部噪声。
比如它扫过一片草地,只有散落在草地上的几根草叶能触发它,数量极少。而 3x3 的就得多扫两次,面积大一点,但能触发更多。2x2 的则又扫了三遍。
故此,2x2 的卷积核更多是找“显著性”,3x3 找“细节”,4x4 找“更大的模式”,6x6 找“挺复杂的形状”。 人工神经网络之故此复杂,是出于它想模拟人类大脑。但大脑实际上是个“稀疏”的地图。每个神经元要么就是活着的,要么就是死掉的,跟你有啥关系?故此,人工神经网络也是个“稀疏”的结构。它们里的连接大局部是空的,只有少数几个是活的。
这就削减了计算量,也下降了过拟合的风险。 还有一个好理解的概念叫“偏置”。有些层,比如全连接层,每输入一个点都要算一次,得加个偏置项来微调。但卷积层不一样。卷积核滑动的时候,每个位置都算一次,但每个位置都只有一个偏置。
这就意味着,对一个卷积核来说,它只算了一次,参数量就少了。 之前的神经网络,比如 ResNet,它用的是一个“跳跃连接”要么“残差块”。
这玩意儿就是把前面的输出直接抄一份扔在后面。
这就像让你背单词,直接把你刚学会的那个词重复一遍背进去。
这样你就不用死记硬背那个词了,只需求记住词根,后面出现的词就都能推导出来。 这听起来好办,但确实难搞。出于要是前一层没学会,后面就算全对也废。
故此,残差块的意思是:不管前一层啥水平,你就把前一层输入输出抄一份,直接抄到后一层。
这样后一层的输入就是“前一层输出 + 前一层输出”了。
这就相当于后一层的网络只要比前一层略微强一点,就能学到东西。
要是前一层学不好,直接抄,后一层就算再强也没用。
故此,残差块就是一个挺智慧的设计,它弱化了网络在学的时候好办遇到的瓶颈。 再说说“层归一化”。
这玩意儿是个“刹车片”。
你想到长啥样,那只是一瞬间的事。但神经网络得一步步去学,得记挺久。
要是记着忒久,状态就乱了,网络就学歪了。层归一化就是把每一层输出的数据,做一个归一化操作,让每一层输出的数据都在一个相对稳定的范围内波动。
这就像帮大脑加个刹车,保证每一时刻的状态都稳定,不至于出于记得忒久而“记错”。 还有,卷积核本身是个“小引擎”。它是个 1x1、3x3、5x5 就连更大的矩形块。
这玩意儿本质上就是个线性变换,只是换了个位置罢了。它也遵循一下对偶性原则:先把输入变换成特征,再输出结局。
故此,它实际上就是个“小引擎”在“跑”着工作,把数据一步步推那会儿。 最终,这玩意儿有个挺酷的“自下而上”的特性。它底层的卷积核,实际上没啥用,除了计算快一点、节省点内存。真正让它学会的东西,是它上层那些更复杂的块。
比如 3x3 的卷积,它打下的基础可能是 4x4 的卷积。
故此,它不是从上往下学,而是像滚雪球一样,越往上,学的东西越多,学得越复杂。 实际上,不管是 CNN 还是人工神经网络,核心都是“找规律”。找规律这东西,在数学上有个叫“泛化”的概念。就是看到一个例子能推出来,看到两个例子就能推出来,看到一百个例子就能推出来,但没见过一百零一个例子,也能推得出来。
这玩意儿叫“泛化本事”,是衡量一个模型好不好用的标准。 CNN 之故此了得,是出于它忒稀疏了。
要是它忒稠密,一看到新数据就瞎蒙,那就完蛋了。它的稀疏性让它能挺好地适应新场景,不至于把之前的经验用错。
这就是为啥目前 AI 能如此智慧,不只是是模仿,而是能真正理解。 故此,总结一下,CNN 就是靠局部感受野、稀疏的连接、残差块、归一化这些手段,一步步把数据“喂”进脑子,让脑子从“看到局部”变成“理解全局”,最终学会预测。
这过程实际上挺像学习一门新语言的,你得先学会单字,再学会词组,最终再学会整篇文章。
声明:演示网站所有内容,若无特殊说明或标注,均来源于网络转载,仅供学习交流使用,禁止商用。若本站侵犯了你的权益,可联系本站删除。
