015、AI如何看懂世界:卷积神经网络(CNN)入门
昨天调一个图像分类模型,测试集准确率死活卡在70%上不去。把训练好的模型拿过来,随手丢了一张办公室咖啡杯的图片进去,结果模型信心十足地判定为“键盘”。问题出在哪?不是数据不够,也不是训练轮数不足——根本原因是网络结构没选对。全连接层在处理图像时,把像素间的空间关系全丢掉了。这正是我们今天要聊的卷积神经网络(CNN),它让AI真正开始“看懂”图像。
从全连接的坑说起
传统神经网络处理图像时,会把28x28的MNIST手写数字拉成784个像素点输入。想象一下,把你眼前的画面拆成碎片再让大脑识别,这显然违反直觉。更糟的是,参数爆炸:1000x1000的彩色图,输入层到第一个隐藏层就需要30亿个权重。所以早期计算机视觉搞了几十年特征工程,SIFT、HOG这些手工特征提取算法成了标配,直到CNN出现才改变游戏规则。
卷积到底在干什么
看这个简单的卷积操作:
# 别直接调库,我们先手写一遍理解原理defnaive_conv2d(image,kernel)