freeCodeCamp.org

CNNs, RNNs, and Transformers Explained: A Mental Model for Key Deep Learning Concepts

6.9内容质量
CNNs, RNNs, and Transformers Explained: A Mental Model for Key Deep Learning Concepts

TL;DR · AI 摘要

CNNs, RNNs, and Transformers Explained: A Mental Model for Key Deep Learning Concepts July 14, 2026 / Deep Learning Rola...

核心要点

  • 主题聚焦:CNNs, RNNs, and Transformers Explained: A Mental
  • 来源:freeCodeCamp.org,建议结合原文判断细节。
  • AI 分析暂不可用,本条为保底评分与摘要。
#AI#编程#前端#后端#安全
打开原文

详解 CNN、RNN 和 Transformer:深度学习核心概念的思维模型

2026年7月14日

/

#深度学习

Roland Sankara

好吧,快速问答:什么是神经网络?什么是深度学习?有没有什么想法?

我知道这种感觉——是的,你现在感受到的正是这种感觉。要么是对自己了解这个问题充满信心,要么是感到有些无措。别担心,朋友:我来帮你。

在本教程中,我将解释你关于深度学习、神经网络需要了解的所有内容,以及为什么我认为你应该了解一个名为 Keras 的高级工具。

先决条件:

这是一篇概念性文章,因此你不需要任何深度学习背景知识即可理解。这正是你在这里将要获得的内容。

基本的 Python 熟悉度对本文有帮助但不是必需的。但如果你想在之后使用 Keras 进行实践,安装 Python 3.9+ 和 pip 将使你轻松开始实验。

目录

  • 什么是深度学习?
  • 那么神经网络是什么?
  • 神经网络工作原理的类比
  • 什么是 CNN、RNN 和 Transformer?
  • CNN 的工作原理
  • RNN 的工作原理
  • Transformer 的工作原理
  • 使用 Keras 构建 ML 模型
  • 总结

什么是深度学习?

为了向你解释深度学习,我假设你已经了解人工智能(AI)和机器学习(ML)的基本概念。这些术语对你来说可能并不陌生,尤其是在今天。

但也许只是简单总结一下:人工智能是一种使计算机能够模拟人类认知能力(如学习和理解、解决问题、创造力和自主性)的技术。

机器学习是人工智能的一个子集。它涉及开发能够识别模式并从训练数据中学习的算法,随后能够在新数据上做出准确推断,而无需明确编程。

深度学习是机器学习的一个子集,它由多层神经网络驱动,这些网络的设计灵感来自于人脑的结构。

查看下面的图表,以直观理解这些概念是如何分层的:

图片来源 — Research Gate

根据我正在阅读的一本书《Python 深度学习》(作者:François Chollet),深度学习中的“深度”一词并不是指这个概念实现了某种更深层次的理解。相反,它代表了这种数据表示的连续层次结构。这些表示层次是通过称为神经网络的模型学习的,这些模型以字面意义上的层堆叠在一起。

查看下面的图片,可以直观地看到这种分层结构:

Chollet 还澄清了一个有趣的假设,即深度学习模型(神经网络)并不是大脑的模型。相反,只是深度学习的一些核心部分受到了我们对大脑理解的启发,特别是视觉皮层。

但你知道视觉皮层是什么吗?😅 看看下面的图片(绿色圈出的部分):

视觉皮层是大脑中处理你眼睛所见内容的部分。在 20 世纪 60 年代,神经科学家 Hubel 和 Wiesel 在研究它时发现了一些令人惊讶的事情:视觉皮层更深层的神经元并不会直接对整个物体做出反应。相反,最早的神经元只对简单的事物(如特定角度的线条)做出反应。只有在后续阶段,神经元才会将这些简单的信号组合成对更复杂形状的响应。

换句话说,大脑是通过分阶段构建“看到物体”的过程——先识别简单模式,再处理复杂结构。这种分阶段的结构是卷积神经网络(CNNs)堆叠滤波器层的松散灵感来源,我们稍后会展开讨论。

现在你已经掌握了这个概念,让我们一起探索神经网络这一既有趣又令人困惑的概念。

📌 注意:神经网络在刚开始学习时会让人感到困惑,因为这是一个全新的概念。但一旦你花时间去理解,它们就会变得更容易掌握。

那么什么是神经网络?

首先,神经网络是深度学习中的一个概念。“神经”一词源于人类大脑中的神经元。

神经网络由称为人工神经元的连接单元或节点组成,这些节点松散地模拟了大脑中的神经元。

以下是正式且技术性的定义:

神经网络是一种机器学习模型,它通过在多层中堆叠简单的“神经元”,从数据中学习模式识别的权重和偏差,从而将输入映射到输出。(摘自IBM博客)

下面是更简单且有趣的定义:

神经网络只是一个通过逐步纠正错误来提升猜测、模式识别和分析能力的机器。

神经网络有多种架构/类型,例如:

  • CNNs(卷积神经网络)
  • RNNs(循环神经网络)
  • Transformers

我们将在本文后续部分探讨这些类型,目前只需理解它们之间的区别在于:在进行猜测、识别模式或提供分析时,它们选择关注的重点不同。

神经网络工作原理的类比

图片来源

想象一下,你正在蒙眼学习投掷飞镖,每次投掷后有人会告诉你一个信息。例如:“你离目标左偏6英寸,下偏2英寸。”你不会被告知原因,也不会得到关于瞄准姿势或握镖方式的讲座,你只得到一个距离和方向的修正建议。

于是你根据这个修正反馈,略微调整(轻微移动或扭转)手臂的角度,再次投掷并获得新的修正信息。你不断重复这个过程,反复调整,直到击中目标。

随着时间的推移,你通过这种方式“学习”(请划线强调)——不是因为有人向你解释了飞镖投掷的物理原理,而是因为每次投掷都给了你一个具体的微小修正,而你持续朝着减少偏离目标可能性的方向进行调整。

这正是神经网络的工作原理。

现在,让我们从上面的类比中学习一些用于描述神经网络的技术术语。

“将你的手臂以这种方式和程度调整一下”这样的指令或信号,我们称之为梯度。梯度指示了修正的方向和幅度,同时也指明了权重和偏差调整的速率,以降低损失函数。

例如“左偏6英寸”这样的修正细节,就是损失。神经网络中的损失函数是一种数学工具,用于衡量模型的预测结果与实际目标值之间的匹配程度。

当我们在减少误差或偏差的方向上不断进行修正时,这个过程被称为梯度下降。这是神经网络使用的优化算法(逐步执行的流程),用于确定移动方向以及需要采取多大的步长(步长大小)才能达到精确值。在此语境中,"descent"(下降)的含义与日常英语中的意思完全一致:即向下移动的动作。

你手臂肌肉记忆的调整过程对应着权重更新。权重是数值,它们通过确定哪些因素比其他因素更重要,帮助网络中的每个节点做出决策。

📍 现在……暂停一下,仔细体会这个概念。在继续之前,如果你想再次重新阅读这个类比,可以再读一遍。

什么是CNN、RNN和Transformer?

我希望你仍然在这里……因为你也需要理解这些术语。还记得之前提到的,CNN、RNN和Transformer只是不同类型的神经网络架构。它们的学习过程是相同的,就像蒙眼掷飞镖的类比一样:它们都遵循"猜测→测量误差/损失→调整"的循环。

它们之间的区别在于,在做出猜测/预测/输出之前,选择关注哪些信息。

📌 让我为你详细解释:

  • CNN(卷积神经网络) 只关注局部的小区域并进行分析,然后移动到下一个区域。可以想象成通过一个小管子只看到飞镖盘上的某一点。
  • RNN(循环神经网络) 按照顺序处理信息,并在处理过程中持续更新摘要信息。就像从左到右阅读故事,并在每句话后更新对情节的思维摘要。
  • Transformer 让神经网络一次性查看所有信息,并实时判断哪些内容最重要。就像用一眼扫过整页内容,然后决定哪些词语之间存在关联。

让我们更深入地了解每种神经网络的工作原理。

卷积神经网络(CNN)的工作原理

这是一种专为具有空间结构的数据(如图像)设计的神经网络。它使用一个称为"滤波器"(例如3x3)的小型数字网格进行处理。这些数字是权重,初始时只是随机的数值,没有任何特定含义。

通过"猜测→测量误差→调整"的循环,这些随机数值会逐渐变得擅长对图像中的特定模式(如垂直边缘、特定颜色等)做出强烈反应。

📌 注意:没有人会告诉滤波器该寻找什么。它会通过训练自行发现这些模式,就像我们讨论的所有网络中的权重都会自行学习一样。

该滤波器会以几个像素为步长在图像上滑动,每次在特定位置查看一个小区域并生成一个数值。这个数值表示滤波器所学习到的模式在该位置出现的强度。

当滤波器滑动完整个图像后,你会得到一个数字网格,这个网格实际上展示了检测到的模式在图像中出现的位置分布。

📌 注意:通过一种称为"参数共享"的技术,相同的滤波器和相同的数值会在每个位置重复使用。这正是CNN效率高的原因。

以下是滤波器在图像矩阵上滑动的示例:

在真实的卷积神经网络(CNN)中,过滤器层会逐层堆叠,每一层都基于前一层的输出进行构建。早期的层直接处理原始像素,通常会捕捉到非常简单的事物,例如边缘或一块颜色区域。由于下一层查看的是第一层的输出而非原始像素,因此可以将这些简单的边缘组合成稍微复杂一些的形状,例如曲线或角落。

逐层累积下去,这种组合会持续发生:形状组合成部件(例如耳朵或胡须的形状),部件进一步组合成网络可以识别的整体对象,例如猫。

堆叠过滤器层的真正优势在于:所有过程都不是一步完成的,每一层只需解决相同小问题的一个略微更难的版本。

以下图像展示了整个卷积神经网络(CNN)的处理过程:

卷积神经网络(CNN)的应用场景包括:

  • 医学影像:CNN分析医学扫描图像(如胸部X光片),通过标记潜在异常供临床医生复核来辅助诊疗。
  • 图像生成:CNN可以创建新图像或对现有图像进行编辑。
  • 自主系统:CNN可用于自动驾驶系统(如自动驾驶汽车)中的车道检测、障碍物检测和交通标志识别。

你可在此处了解更多内容。

📍 现在暂停一下,注意关键要点:过滤器与参数共享。

循环神经网络(RNN)的工作原理

循环神经网络(RNN)处理具有顺序的数据,其中顺序本身具有意义。例如音频数据和构成故事的句子。

与按无特定顺序滑动图像块的卷积神经网络(CNN)不同,RNN需要逐步读取数据。

例如,句子需要按顺序逐词阅读,因为先前的审查内容会影响神经网络对后续内容的理解。这种顺序特性使得处理大规模数据集时速度较慢。

RNN会维护一个称为隐藏状态的持续摘要。

📌 注意:可以将其想象成一个小笔记本,用于记录到目前为止理解的重要信息。在开始阅读之前,这个笔记本本质上是空白的(初始隐藏状态,通常为全零)。

以下是一个简单架构示意图:

因此,隐藏状态永远不会是RNN所见过所有内容的查找表。它是一个持续更新的摘要,在每个步骤中都会被覆盖,仅保留网络认为值得保留的信息。

📌 注意:RNN的缺点在于,如果序列较长,早期信息可能会几乎完全消失,导致RNN丢失先前审查内容的上下文。这种RNN中的问题称为梯度消失问题

循环神经网络(RNN)的应用场景包括:

  • 语音识别:RNN用于语音识别系统,通过随时间处理音频数据,帮助模型理解声音如何构成单词和句子。
  • 语音AI系统:在语音处理流程中,RNN有助于处理顺序音频数据。结合文本到语音(TTS)等技术,它们有助于构建自然语音生成流水线。
  • 时间序列预测:在金融或天气预测领域,RNN通过分析历史数据,使用概率方法预测未来结果。
  • 文本生成:RNN可通过基于先前词汇预测下一个词来生成文本,这在聊天机器人和生成式AI工具中非常有用。

你可以观看以下视频了解更多关于RNN的内容。

📍 现在暂停一下,注意几个关键点:隐藏状态和梯度消失问题(这是RNN的缺陷)。

Transformer的工作原理

2017年,Google Brain的研究团队发表了一篇影响深远的论文:“Attention Is All You Need”。

该论文介绍了Transformer,这是一种革新AI工程实践的新型语言处理架构。自那时起,Transformer已成为几乎所有大型语言模型的核心架构,包括Gemini。

简化版架构如下:

简而言之,Transformer可以同时处理大量数据(与按顺序处理数据的RNN不同)。

Transformer基于几个关键概念。首先是自注意力机制,其中每个数据元素都有位置编码,帮助Transformer识别元素顺序。其次是嵌入(embeddings),它能捕捉每个词的含义以及所有数据元素之间的上下文关系。与其它神经网络相比,嵌入使Transformer能更高效地处理数据。

📍 注意:Transformer架构解决了RNN中存在的梯度消失问题。

Transformer的应用场景包括:

  • 自然语言处理(NLP)任务:自注意力机制通过高效完整地分析整篇文本,增强机器学习模型的语言处理能力。
  • 计算机视觉:图像识别模型的发展表明,自注意力是提升模型鲁棒性和泛化能力的关键组件。

你可以通过这个视频了解更多关于Transformer的内容。

📍 现在暂停一下,注意几个关键点:自注意力机制、嵌入、位置编码,以及数据同时被摄入和处理的特性。

使用Keras构建机器学习模型

现在你已经了解了各种神经网络类型及其应用场景,可能想知道如何开始构建模型。

什么是Keras?

虽然有很多选择,但让我最欣赏的工具是Keras。它已被用于Google YouTube推荐引擎和Waymo自动驾驶车队等项目。

Keras是一个开源的高级神经网络API,设计上注重用户友好、模块化和可扩展性。它最初是独立开发的,可以运行在TensorFlow、Theano或CNTK等后端之上。

自2019年起,Keras已成为TensorFlow(2.0+版本)的官方高级API,提供Sequential和Functional等高级API,并内置常见层、优化器和损失函数的支持。

📌 简而言之,Keras让你能够快速轻松地构建AI/ML模型。

Keras为构建深度学习模型提供了完整的工具包。构建、训练、评估和部署深度学习模型从未如此简单。

新版本——Keras 3.0

一个重要的近期进展是Keras 3.0的发布。这是对Keras的全面重写,使Keras工作流程能够运行在多个后端之上,如JAX、TensorFlow、PyTorch和OpenVINO(仅限推理),而不再局限于TensorFlow。

📍 这是Keras与“仅仅是另一种编写神经网络代码的方式”真正不同的地方:

  • 它不仅让你构建CNN、RNN或Transformer。它允许你使用相同的模式构建这三种模型。
  • 包裹它们的训练循环——贯穿整篇文章所讨论的“猜测、测量误差、微调”的循环始终如一。Keras只是以一种统一的方式表达这个循环,无论你使用的是哪种架构。

你只需编写一次模型,就可以选择最适合自己的框架。根据当前目标,你还可以在不同框架之间切换,而无需重写模型本身。

这种灵活性不仅仅停留在理论层面,对性能也有重要影响。

在Keras自身的基准测试中,JAX通常在GPU、TPU和CPU上都能提供最佳的训练和推理性能,不过不同模型的表现会有所差异。

📌 无需修改模型代码即可切换后端,这意味着你不会被项目启动时最快的框架所限制。

总结

我就到这里为止了。希望你现在对CNN、RNN、Transformer以及深度学习框架Keras在其中的位置有了清晰的理解。

这就是核心认知:一种学习过程,三种由其构建数据决定的架构,而Keras作为统一的API,让你能够构建其中任意一种。如果你要从中带走一个概念,那应该是“猜测→测量误差→微调”的循环。它是你未来学习深度学习所有知识的基础。

觉得这篇文章有帮助吗?你可以通过电子邮件或LinkedIn联系我,告诉我哪些内容对你最有启发,以及你接下来想学习什么。

祝好。

软件工程师(6年以上经验)和作者。我相信人才无处不在,但机会并非如此。我正在利用技术专长指导他人,帮助他们通过数字技能建立成功的职业生涯。

如果你读到了这里,请感谢作者,向他们表达你的支持。说声谢谢

免费学习编程。freeCodeCamp的开源课程已帮助超过40,000人成为开发者。立即开始

ADVERTISEMENT