卷积神经网络这东西,本质上就是个在图像世界里疯狂找规律的大笨蛋。别总想着用“起初、其次”这种假正经的开场白,你搞数学模型的脑子,逻辑压根儿不是按部就班走出来的,它更像是一场混乱又有序的舞蹈。 模型一上来干啥,就是把一张照片切成小块,也就是卷积核。
你想想,一张照片里有一个眼,你就把相机镜头怼上去怼个焦点,用个 3x3 的格子去拍。
要是格子中心有个黑点,周围亮,那这玩意儿就是个眼球;要是周围黑点,中间亮,那这就是个瞳孔。
反正就是如此粗暴地拟合,哪位让你把照片切成小块,它就尽量往嘴里塞东西。输入层拿一张 224x224 的图,经过 10 层卷积层,每层都做个卷积,最终堆叠成 101 层,结局出来个 5x5 的图。
这过程中,输入层就是个喂饭的,卷积层是夹菜的,池化层是当刀的,全连接层是最终把菜炒熟端上桌的。 算偏了,得靠反向传播。
这点模型一搞明白,瞬间就明白了。
如何算的?就在图上打标记:梯度是干嘛的,是为了告诉这层该往左推还是往右推。输入是喂进来的,输出是拍出来的。输出层不输出啥,它就是个接收信号的接口,那点输出全靠卷积层传那会儿。卷积层不传啥,它就是个传输信使,那信使就靠梯度来传。梯度是啥,就是误差的传递。你把损失函数的梯度往回推,损失函数就知道“哦,我的输出错了,得如此做”,这就像你扣了一个扣子,帽子歪了,你往回推,就要往左边推那个扣子。 梯度下降算法咋用的,不废话。梯度是啥,就是误差的斜率。你往右推是正向,往左推是负向。
反正就是往误差的反方向走。
那如何走?就一步一步,让你这个误差越来越小。
那如何保证误差越来越小,得靠学习率。学习率就是个速度,忒快了会撞墙,忒慢了进步慢,这就像跑步,忒快了摔跟头,忒慢了没意思。
这就叫调参,调啥参啊,调学习率。
一般大家喜爱用动量,就像你跑得慢,撞头了,你得加个惯性,持续往前冲,不然一停就停。 卷积核算偏了,得算卷积运算。你画个图,先是你搞个卷积核,比如 3x3,然后给它喂一张图。
比如你喂个 224x224 的图,卷积核是 3x3 的,那卷积操作就是 3 维卷积。你拿个 3x3 的卷积核,在 224 的图里挨着挨着往里塞。224 是行数,224 是列数,3x3 是核大小。你那个 3x3 的核,在 224 的图里移动。行你往右移,列往下行。
每次移动,你拿这个核去跟图上的像素点算个积。
比如核里是 1, 2, 3, 4, 5, 6,图里对应位置是 2, 2, 3, 2, 1, 2,那算积就是 21 + 22 + 33 ... 最终加起来输出一个数。
这就叫卷积,卷积就是加权求和。 卷积操作挺好办,但效果不咋地,得用池化层。池化层是个干嘛的?它是个过滤器,它把图往下压一压。
比如 224 的图,你拿个 2x2 的池化核,往下压。224 除以 2 是 112。你拿个 2x2 的核,在 224 的图里扫。你扫到哪儿,就把这 4 个像素点里的最大值搞定来。
这就是池化,池化就是取最大值,取最小值,取平均值,反正就是把图变小,把图压缩。
这就像你拿个放大镜看一张图,你只关切最亮的那个点,其他的就忽略,这就叫池化。 池化层有个益处,它能让网络更稀疏,更鲁棒。网络忒稠密了,就像花了大量钱买了大量不需求的零件,反而效率低。池化就省了局部方块,把图压缩,就省了钱。并且鲁棒性,就是面对噪声也稳定。
比如原图有个噪点,池化层一压,噪点可能就没了,要么被平均掉,这就让模型更稳。 全连接层最爽,最麻利。完事了,卷积下来的图,再跟全连接层一拼,那就成最终结局了。全连接层是啥,就是 101 个神经元,每个神经元都跟 224 个输入点连。你拿个 224 的图,输入进去,全连接层出来 101 个输出。
比如你个 5x5 的图,卷积层出来个 5x5 的图,那最终全连接层出来 101 个神经元。每个神经元就是识别一个特征,比如“眼”、“鼻子”、“嘴”,最终拼起来就是整个的脸。 深度学习为啥能行,为啥能变得越来越智慧。它靠的就是大量的数据和大量的计算。
那会儿深度学习像个小丑,需求有人手把手教,改个代码,跑一下,效果就不中了。目前深度学习,全靠大数据训练。
比如你让模型学猫狗,你得喂它成百万张猫狗图,让它自己瞎练。练多了,它就学会了,不用你教它,它就知道猫是猫,狗是狗。
这就是大数据的威力。 卷积神经网络不是神仙,它就是个工具,一个强大的工具箱。它能把图像处理变成自动化,把图像理解变成智能化。它不需求你懂那么多数学,它把数学逻辑藏进去了,你只需求盯着图跑,等着它变智慧。 最终总结一下,卷积神经网络就是个大杂烩。卷积层负责局部特征,池化层负责全局压缩,全连接层负责全局映射。它靠梯度下降、动量、学习率这些参数调优,靠反向传播、梯度、误差来优化。它靠大数据训练,靠海量数据来训练。它就是个不断自我修正、自我优化的大机器。它能把图像变成数字信号,把图像变成计算机语言,把图像变成计算机理解。 说到底,深度学习这东西,就是个靠数据驱动的模型,靠计算驱动的模型,靠参数调优驱动的模型。它不是魔法,就是数学,就是工程。你只需求把它当成一个工具,把它调教好,它就能干你手头的事儿。