跳到主要内容

2 篇博文 含有标签「深度学习」

查看所有标签

承上启下

在上一章,我们学习了全连接神经网络。虽然它什么都能算,但在处理图片时有个大问题:参数爆炸。 这一章我们来讲讲 CNN (Convolutional Neural Network),它是如何让 AI 第一次看懂世界的。 虽然在今天的大模型时代,CNN 的地位已经被 Transformer 挑战,但它依然是理解“特征提取”最好的老师。


1. 为什么全连接网络搞不定图片?

所谓全连接网络 (Fully Connected Network),就是我们上一章画的那种最直观的模型:每一个输入像素,都要跟下一层的每一个神经元连一条线

假设你有一张手机拍的照片(1200万像素)。 如果用全连接网络,把每个像素点都当成一个输入:

1200万像素×3(RGB通道)×1000(隐藏层神经元)360亿个参数1200\text{万像素} \times 3 (\text{RGB通道}) \times 1000 (\text{隐藏层神经元}) \approx 360 \text{亿个参数}

这还只是第一层!这还没算显卡内存爆炸的问题。

更重要的是,这违反了人类看东西的直觉。

当你找照片里的猫时,你会死盯着左上角那个像素点的 RGB 值看吗? 不会。你是看特征:这里有个尖尖的耳朵,那里有个毛茸茸的尾巴。 而且,猫在左上角还是右下角,它都是猫(平移不变性)。


2. 卷积的直觉:手电筒与滤镜

CNN 的核心发明是 卷积 (Convolution)。 别被这个数学名词吓到,其实它就是带着滤镜的手电筒

image-20260203160953223

  1. 滤镜 (Filter/Kernel):这不仅仅是个手电筒,它的镜片是有图案的。
    • 有的滤镜专门找竖线
    • 有的滤镜专门找圆圈
    • 有的滤镜专门找眼睛形状
  2. 滑动扫描 (Sliding):拿着这个手电筒,从图片的左上角扫到右下角。
  3. 激活:如果手电筒照到的地方,跟滤镜上的图案很像,它就会灯亮起(输出高数值)。

这就叫特征提取。我们不需要看几千万个像素,只需要知道“哪里有竖线”、“哪里有眼睛”。


3. 抽象的阶梯:Pooling (池化)

扫完一遍后,图片还是很大。这时候需要 Pooling (池化)。 它的逻辑很简单:缩略图

把一张大图缩小一半,细节虽然丢了,但宏观轮廓还在。

  • Layer 1:看到很多线条(横线、竖线)。
  • Layer 2:线条组成了部件(尖尖的形状、圆圆的形状)。
  • Layer 3:部件组成了器官(猫耳朵猫眼睛胡须)。
  • Layer 4:器官组成了整体(一只完整的猫)。

这就是深度学习的精髓:层层抽象

image-20260203161118780


4. 为什么大模型时代它退位了?

CNN 统治了计算机视觉(CV)整整 10 年(2012 AlexNet - 2020 Vision Transformer)。 但在今天,GPT-4V、Sora、Claude 用的视觉编码器,越来越多地转向了 Transformer 架构(ViT)。

为什么?

1. 视野限制 (The Receptive Field Issue)

CNN 是局部着眼的。 它一次只能看一个 3x3 小窗口。虽然叠很多层后能看全图,但它天生对“全局关系”不敏感。

  • CNN:看鼻子是鼻子,看嘴是嘴。
  • Transformer:第一眼就看到了整张脸(Global Attention)。
💡 归纳偏置 (Inductive Bias)
  • CNN 有很强的归纳偏置:它预设了“像素之间是局部相关”的。所以它不需要太多数据就能训练出不错的效果(省数据)。
  • Transformer 几乎没有归纳偏置:它假设“万物皆可关联”。所以它需要海量数据才能把这些关系学出来(费数据,但上限极高)。 这就是为什么 Vision Transformer (ViT) 直到最近数据量爆炸了才打败 CNN。
  • image-20260203164005401

2. 多模态统一

语言(Text)是序列,图片(Image)在 Transformer 眼里切块后也是序列。 用同一套架构(Transformer)处理所有模态,工程上最优雅,效果也更容易迁移。


5. 总结

本章核心
  1. 卷积 (Convolution):是为了解决全连接网络参数爆炸的问题,利用了“局部性”和“平移不变性”。
  2. 特征提取:CNN 是最好的特征提取器,它教会了我们怎么把原始像素变成抽象概念。
  3. 历史地位:它是深度学习爆发的功臣。虽然在 LLM 时代退居二线,但在端侧设备(手机、摄像头)上,由它驱动的高效视觉应用依然无处不在。

下一章预告: CNN 解决了空间上的局部关系,那时间上的先后关系(比如读文章、听语音)怎么办? 接下来,有请真正的天选之子出场。


下一章: Transformer基础

ai学习cnn计算机视觉深度学习ResNet阅读需 5 分钟

这章要解决什么问题?

上一章我们说了“机器能学习”,这一章我们要看它具体是用什么器官学的。 为什么简单的线性公式不够用?为什么我们需要模仿人脑? 传说中的“神经网络”到底长什么样?


1. 为什么我们需要“深度”学习?

在上一章的“猫狗识别”里,如果所有的猫都长得标准,所有的狗都长得标准,那简单的数学公式(比如画一条线把它们分开)就够了。

但现实世界太复杂了:

  • 有的猫缩成一团(形状变了)。
  • 有的猫躲在草丛里(颜色变了)。
  • 有的照片是黑白的。

简单的线性分类器(Linear Classifier)遇到这些情况直接歇菜。这就好比你想用一把直尺去测量海岸线的长度——工具太简单,无法描述复杂的现实。

为了处理这种非线性 (Non-linear) 的复杂问题,我们需要一个更复杂的脑子——神经网络 (Neural Networks)


2. 神经网络:模仿人脑的积木

深度学习的核心,就是人工神经网络 (Artificial Neural Networks, ANN)

它的灵感来源是生物学。

Neuron Analogy

2.1 神经元 (Neuron / Perceptron)

生物神经元的工作方式很简单:

  1. 树突 (Dendrites):接收信号(比如手碰到了火)。
  2. 细胞体 (Soma):处理信号(这信号够不够强?)。
  3. 轴突 (Axon):如果信号够强,就发射出去,传给下一个神经元(缩手!)。

我们在电脑里造的人工神经元也是一模一样的逻辑:

输出=激活函数(输入_1×权重_1+输入_2×权重_2++偏置)\text{输出} = \text{激活函数}( \text{输入}\_1 \times \text{权重}\_1 + \text{输入}\_2 \times \text{权重}\_2 + \dots + \text{偏置} )

拆解一下这个微小的机器:

  • 输入 (Inputs):从上一层传过来的数据(比如照片像素)。
  • 权重 (Weights):每个输入有多重要(比如“有胡须”这个特征很重要,权重就大)。
  • 激活函数 (Activation Function):这是灵魂。它决定了这个神经元要不要“兴奋”。

2.2 为什么必须要有“激活函数”?

这就是很多人的知识盲区了。为什么不能直接把数字加起来传下去?

如果只有加减乘除(线性运算),你就算堆一万层神经网络,最后也等价于一层。就像你把一堆这直线叠在一起,它还是一条直线,弯不过来。

激活函数引入了“弯曲”。

  • ReLU (Rectified Linear Unit):最常用的激活函数。
    • 逻辑:如果结果小于0,就变成0(死掉);如果大于0,保持原样。
    • 作用:让网络学会“忽略”某些没用的信号,只关注有用的。这就引入了非线性,让模型能理解复杂的形状。

3. 深度网络:一层包一层的特征

所谓“深度”学习(Deep Learning),就是很多层神经网络叠在一起。

Deep Network 每一层都在看不同的东西:

  1. 输入层 (Input Layer):看到原始像素(一堆 255, 0, 128...)。
  2. 隐藏层 1 (Hidden Layer 1):发现了一些线条边缘
  3. 隐藏层 2 (Hidden Layer 2):发现线条拼成了形状(眼睛、耳朵)。
  4. 隐藏层 3 (Hidden Layer 3):发现形状拼成了对象(这是猫脸)。
  5. 输出层 (Output Layer):大喊一声:“是猫!”

这就是“深度 = 抽象”。 层数越多,模型能理解的概念就越抽象、越高级。

工程注

理论上越深越好,但实际上层数越深,训练越难(比如梯度传着传着就没了),容易导致过拟合或训练失败。这也是后来 ResNet (残差连接) 等结构出现的原因。


4. 反向传播 (Backpropagation):魔法的核心

还记得上一章说的“下山”吗?

  • 前向传播 (Forward Pass):数据从左进去,一层层传算,最后猜个答案。
  • 反向传播 (Backward Pass)
    • 裁判(Loss Function)看了眼答案,说:“错了!误差是 0.8!”
    • 这个 0.8 的误差,会被反向传回去。
    • 输出层告诉隐藏层3:“是你算错了,你得改!”
    • 隐藏层3告诉隐藏层2:“我也被坑了,你也得改!”
    • ...
    • 一直传到第一层。

在这个过程中,利用链式法则 (Chain Rule),我们算出了每一个权重参数对在这场错误里到底负多大责任(这就是上一章说的梯度)。责任大的狠狠改,责任小的稍微改。

这一步是深度学习真正的技术门槛。 在反向传播算法普及之前,多层网络根本没法高效训练。只有有了它,我们才能指挥这些数百万计的参数协同工作。


5. 总结

本章核心知识点
  1. 神经网络是模仿人脑的结构,为了解决复杂、非线性的问题。
  2. 激活函数(如 ReLU)是网络的灵魂,它赋予了网络“弯曲”现实的能力。
  3. 深度意味着抽象层级。层数越多,理解越深刻。
  4. 反向传播是训练的引擎,它把错误的责任精准地分摊给每一个神经元,逼着它们修正自己。

下一章预告

现在我们有了最强的脑子(深度神经网络),但如果有几十亿个神经元全都连在一起,那个计算量就算把地球烧了也不够(全连接网络的弊端)。

能不能让网络变得更聪明一点?比如看照片时只盯着重点看?或者读文章时记住上下文?

我们将分两条路进阶:

  • 看图专家:CNN (卷积神经网络)(略讲,但它是视觉基础)
  • 语言专家:Transformer(重头戏!)

下一章,我们先插播一个视觉领域的传奇,看看 AI 是怎么“看”世界的。


下一章: CNN卷积网络

ai学习深度学习神经网络阅读需 6 分钟