Skip to content

MIT深度学习课程第一讲:神经网络与深度学习导论

本节课是课程的第一讲,主题是神经网络与深度学习导论。课程前半部分先梳理 AImachine learningdeep learninggenerative AI 的关系,解释为什么 deep learning 能突破传统机器学习在非结构化数据上的限制;后半部分从 logistic regression 出发,把一个简单模型改写成神经网络形式,并引入 weightsbiaseslayersneuronsactivation functionsdense layer 等核心术语。

一、AI 的起点与发展脉络

AI 这个领域起源于 1956 年的 Dartmouth 会议。老师特别提到,虽然这个领域没有起源于 MIT,但 MIT 在这次会议中有重要代表:

  • Marvin Minsky:创立 MIT AI Lab。
  • John McCarthy:发明 LISP,后来去了西海岸。
  • Claude Shannon:信息论创始人,曾任 MIT 教授。

这些早期研究者非常乐观,曾认为 AI 会在当年秋天前被“基本解决”。后来的发展显然比他们预期的复杂得多。

老师将之后几十年的发展概括为几个重要阶段:

  • 传统 AI 方法
  • machine learning
  • deep learning
  • generative AI

这些阶段并不是互相完全替代,而是逐步扩展了计算机可以处理的问题范围。

二、传统 AI:基于规则的方法

老师先给出一个非正式定义:AI 是让计算机具备执行通常只有人类能完成的认知任务的能力。

传统方法的思路很直接:

  1. 找专家。
  2. 让专家解释他们如何做决策。
  3. 把专家的经验写成规则。
  4. 将规则输入计算机。
  5. 计算机根据规则执行任务。

例如:

  • 找象棋大师,总结不同棋局下该怎么走。
  • 找心脏科医生,总结如何解读 ECG

这种方法通常会形成大量 if-then rules

三、为什么传统规则方法没有普遍成功

传统规则方法看起来很合理,但只在少数领域取得过成功。老师解释了两个主要原因。

3.1 规则难以泛化到新情况

真实世界中会出现无限多种情况。开发者能写下来的规则,只覆盖其中一小部分。

因此,规则系统通常很脆弱:

  • 没见过的新情况可能无法处理。
  • 边界情况和角落情况很难穷尽。
  • 部署到真实环境后,会遇到训练或规则设计阶段没有覆盖的情况。

老师指出,问题不只是“写规则很耗时间”。计算机越来越快,时间成本不是最根本的问题。真正关键的是:规则系统很难泛化到新场景。

3.2 Polanyi's Paradox:知道多于能说出

第二个原因是 Polanyi's paradox人知道的东西,往往多于能够清楚说出来的东西。

例如,人类看到一张图片,可以很快判断是狗还是猫。老师提到,这类识别可能在约 20 milliseconds 的尺度内完成。但如果要求解释“到底是如何判断出来的”,人类往往只能给出一些表面理由,例如有胡须、耳朵形状等。

问题在于:

  • 人未必能准确说出自己真正的判断过程。
  • 即使能说出一些理由,这些理由也未必对应大脑真实的处理方式。
  • 如果人类自己无法明确描述规则,就很难把这些规则写进计算机。

因此,传统规则系统受限于两件事:

  • 很难写出覆盖所有情况的规则。
  • 很多认知能力本身无法被人类完整表达为规则。

四、机器学习:从输入输出样本中学习映射

为了解决规则方法的问题,machine learning 提出了一种不同思路:

不再显式告诉计算机该怎么做,而是给它大量输入和输出样本,让它用统计方法学习从输入到输出的映射。

例如:

  • 棋盘局面 → 下一步走法
  • ECG → 诊断结果
  • 患者信息 → 是否发生心脏事件

老师将 machine learning 概括为:

使用统计技术,从 input-output examples 中学习函数映射。

如果做过 linear regression,其实就已经做过机器学习。神经网络只是众多机器学习方法中的一种。其他常见方法还包括 The Analytics Edge 或类似分析类课程中会接触到的传统模型。

五、结构化数据与传统机器学习

machine learning 已经在很多领域取得巨大成功。老师也指出,人们日常谈论 AI 时,很多时候实际上指的是 machine learning,只是 AI 听起来更酷。

传统机器学习通常要求输入数据是结构化数据

结构化数据指的是可以放进表格中的数据:

  • 每一行是一条样本。
  • 每一列是一个变量。
  • 数值变量可以直接使用。
  • 类别变量可以通过 one-hot encoding 等方式数值化。

例如患者数据可以组织为:

  • 年龄
  • 是否吸烟
  • 是否运动
  • 症状
  • 下一年是否发生心脏事件

这类数据可以很自然地放进电子表格中,因此适合传统机器学习模型处理。

六、非结构化数据为什么困难

与结构化数据不同,图像、音频、文本等属于非结构化数据

老师用一张小狗图片举例。这只狗名叫 Google,是老师曾经的宠物。

一张彩色图像在计算机中可以表示为三张数字表:

  • 红色通道
  • 绿色通道
  • 蓝色通道

每个像素位置上的数字通常表示该位置的光强,范围是 0255

例如某个像素的蓝色通道值为 251,只说明该位置有很多蓝光。但这个数字本身不能告诉模型:

  • 那里是不是天空
  • 那里是不是水
  • 那里是不是蓝色油漆
  • 那里是否属于某个物体的一部分

也就是说,原始数字与它描述的真实对象之间没有直接语义对应关系。

如果算法只能看到这些原始数字,就很难直接理解图片内容。

七、Feature Engineering 与 Representation

在传统机器学习时代,处理非结构化数据通常需要人工做 feature engineeringfeature extraction

例如要识别鸟类,研究者可能需要从图片中手动提取:

  • 喙长
  • 翼展
  • 主色
  • 其他形态特征

这个过程本质上是在手动把非结构化数据变成结构化表格数据。

老师引入了一个重要概念:representation

representation 指的是把原始数据转换成另一种更适合模型使用的表达形式。

在深度学习出现之前,很多研究者会花多年时间为特定问题设计 representations。例如在医学影像任务中,研究者可能花一个博士阶段专门设计某种 CAT scan 表征,以便检测某类中风迹象。

这种方式的问题是:人工设计 representation 是巨大的人工瓶颈。

它限制了机器学习在非结构化数据上的可扩展性和适用范围。

八、Deep Learning:自动学习 Representations

deep learning 位于 machine learning 之内,它的关键突破是:

不再要求人类提前手动设计 representation,而是让模型从原始输入中自动学习合适的 representation。

这意味着模型可以直接处理:

  • 结构化表格数据
  • 图像
  • 文本
  • 音频
  • 其他形式的原始数据

老师用一个流水线描述 deep learning

  1. 原始数据进入模型。
  2. 中间一系列层自动学习 representations
  3. 最后接上一个 linear regressionlogistic regression 式的输出模块。

从这个角度看,deep learning 可以理解为:

输入数据经过多层自动表示学习后,再被送入简单的预测模型。

老师强调,这个看似简单的想法非常强大,已经支撑了 ChatGPTAlphaGoAlphaFold 等系统。他还特别强调,正是这种简单机制产生强大效果的反差,使深度学习在实践中显得非常重要。

九、Deep Learning 成功的三股力量

老师总结,deep learning 的崛起来自三股力量的汇合:

  • 新的算法思想
  • 大量数据
  • GPU 等并行计算硬件

这些力量共同作用在一个较老的思想上:neural networks

也就是说,deep learning 并不是凭空出现,而是神经网络在新算法、数据和硬件条件下重新爆发。

十、传感器与 Deep Learning 的应用直觉

deep learning 能自动处理非结构化数据,因此最直接的应用之一是图像分类。

老师进一步概括:

每个传感器都可以接上一个 deep learning 系统,使传感器具备检测、识别、分类和预测能力。

传感器接收的是非结构化数据:

  • 摄像头接收图像或视频。
  • 麦克风接收音频。
  • 其他传感器接收不同形式的原始信号。

在传感器后接上深度学习模型后,系统就可以:

  • 计数
  • 分类
  • 检测
  • 识别
  • 分析
  • 预测

老师鼓励从创业和产品角度思考:

看到一个传感器时,可以问:能否在它后面接一个 deep learning 模型,做出有用功能?

十一、Deep Learning 应用案例

11.1 Face ID

Face ID 可以看作摄像头传感器后接一个深度学习系统。

摄像头采集图像,模型判断是否为授权用户。老师用玩笑方式说,这本质上是做“drama / non-drama”式分类。

11.2 乳腺癌检测

老师提到 MIT EECS 教授 Regina Barzilay 的乳腺癌检测系统。该系统基于乳腺 X 光片(mammogram)检测癌症风险,并已部署到 Mass General Hospital

老师还讲了一个相关故事:

  • Regina Barzilay 本人是乳腺癌幸存者。
  • 她后来用自己的系统分析多年前的乳腺 X 光片。
  • 当年人类放射科医生判断没有问题。
  • 系统却指出存在风险信号。

这说明深度学习系统在某些医学图像任务中可能发现人类专家没有注意到的信号。

11.3 自动驾驶

自动驾驶系统中有大量深度学习模型,例如:

  • 行人检测
  • 红绿灯检测
  • 斑马线检测
  • 其他道路目标检测

11.4 制造业视觉检测

制造业中,摄像头可以配合深度学习模型完成视觉质检,例如:

  • 凹陷检测
  • 划痕检测
  • 缺陷检测

11.5 智能望远镜

老师提到一个最近看到的产品:智能望远镜。

用户通过望远镜观察鸟类时,系统可以直接识别并显示鸟的种类。

这个例子展示了一个简单但有商业意义的产品机会:在普通传感器设备后接上深度学习识别能力,就可能形成短期产品优势。

老师也提醒,长期垄断窗口很少,更多时候只是短期优势窗口。

十二、从结构化输出到生成式 AI

前面主要讨论输入侧:deep learning 如何处理结构化和非结构化输入。

老师接着强调输出侧的变化。

传统模型通常擅长输出结构化结果,例如:

  • 单个数字
  • 少数几个数字
  • 一个概率
  • 多个类别概率
  • GPS 坐标

例如:

  • 贷款申请:预测借款人还款概率。
  • 供应链:预测下周需求量。
  • 图像分类:输出 10 类家具的概率。
  • Uber:预测位置坐标。

这些都是结构化输出。

过去较难做到的是:生成非结构化输出。

例如:

  • 生成图片
  • 生成文本
  • 生成音频
  • 生成音乐

generative AI 解决的正是这个问题:生成非结构化数据。

因此,generative AI 属于 deep learning 的一类,但并不等于全部深度学习。深度学习中还有大量非生成式任务。

老师也提醒,当前创业和融资语境中,很多项目会主动把自己称为 generative AI,但这不代表所有深度学习应用都属于生成式 AI。

十三、Generative AI 与 Multimodality

老师列举了生成式 AI 的多种形式:

  • 图像 → 文本描述
  • 文本 → 图像
  • 文本 → 音乐
  • 文本 → 文本,也就是 ChatGPT
  • 文本 + 图像 → 文本
  • 文本、图像交替输入 → 文本和图像输出

其中,老师提到过一张计算机视觉领域很有名的图片,并说明后续课程还会再分析这类图像到文本的例子。

老师特别强调,模型正在快速走向 multimodal

课堂中举了一个例子:用户上传旧金山复杂停车标志的照片,并问:

今天周三下午 4 点,我能不能在这里停车?请用一句话回答。

GPT-4 回答说可以从下午 4 点开始停最多 1 小时。老师表示他复核过,这个答案是正确的。

同时老师也提醒:模型会 hallucinate,因此这类答案仍然需要核查。不能因为模型回答了,就直接把错误后果归给模型。

老师对趋势的判断是:

  • 过去 GenAI 内部有多个相对分开的圈:text-to-texttext-to-imagetext-to-music 等。
  • 这些能力正在合并。
  • 已经有很强的闭源多模态模型,也已经有不错的开源多模态模型。
  • 多模态模型会逐渐成为常态。
  • 未来只使用文本模型可能会显得过时。

十四、关于医学模型标签与 Ground Truth 的问答

学生就乳腺癌检测案例提问:如果当年的放射科医生判断没有问题,而模型后来发现了问题,那么训练标签是否可能本身就是错的?

老师回答,确实可能出现错误标签。

医学影像模型通常使用:

  • 输入:影像,例如 mammogram
  • 标签:人类放射科医生或多名专家给出的判断

这种图像和标签组合称为 ground truth

ground truth 并不意味着绝对没有错误。标签可能有少量噪声。因此模型训练依赖于:

  • 数据完整
  • 数据全面
  • 标签尽量正确
  • 系统对标签噪声具有鲁棒性

老师补充,神经网络即使面对一定程度的标签噪声,仍然经常能表现不错。

十五、Embodied Intelligence 的问答

有学生问课程是否会覆盖 embodiment

老师解释,embodiment 指的是机器人等智能系统需要在真实世界中行动,这属于 embodied intelligence

由于时间限制,本课程不会深入讲机器人。但本课程讲到的很多深度学习内容,都是现代机器人系统的基础构件。

十六、X 和 Y 可以是什么

老师总结,今天的关键背景是:

XY 可以是任何东西,而且可以是多模态的。

老师强调,这句话看起来很简单,但含义很深:几年前还很难把这句话作为课程 slide 放出来,而现在它已经成为深度学习和生成式 AI 的现实能力。

只要有足够数据,就可以学习从任意输入到任意输出的映射:

  • 图像到文本
  • 文本到图像
  • 文本到音乐
  • 图像和文本到文本
  • 多模态输入到多模态输出

老师强调,当前关于 AI 的许多兴奋点都来自 deep learning。理解深度学习后,很多新的应用才变得可想象。

十七、从 Logistic Regression 进入 Neural Network

课程后半部分开始讲“什么是神经网络”。

老师从 logistic regression 开始,因为它是大家熟悉的模型。

logistic regression 的形式是:

  1. 输入一组数字,也就是一个向量。
  2. 先通过一个线性函数。
  3. 再通过 sigmoid 函数。
  4. 输出 0 到 1 之间的概率。

sigmoid 函数形式为:

text
1 / (1 + e^(-a))

其中 a 是线性函数输出的数值。

贷款审批、是否会被录取、是否会被叫去面试等问题,都可以归入这类概率预测。

十八、GPA 与工作经验示例

老师用一个小例子解释如何把 logistic regression 看成一个计算网络。

任务是预测某毕业生是否会被叫去面试。

输入变量:

  • GPA
  • experience

输出变量:

  • 0:不会被叫去面试
  • 1:会被叫去面试

这是一个二分类问题。

使用 RGLM、Python 的 statsmodelsscikit-learn 等工具都可以拟合这个 logistic regression 模型。

课堂示例中拟合出的参数为:

  • intercept:0.4
  • GPA coefficient:0.2
  • experience coefficient:0.5

线性部分可以写成:

text
0.4 + 0.2 * GPA + 0.5 * experience

然后把这个值送入 sigmoid,得到概率。

例如某人:

  • GPA = 3.8
  • experience = 1.2

课堂中先计算 GPA 对应项:0.2 * 3.8 = 0.76。再加上 experience 对应项 0.5 * 1.2 = 0.6 和 intercept 0.4,线性函数输出约为 1.76

1.76 再经过 sigmoid 后得到约 0.85。这表示该人被叫去面试的概率约为 0.85

十九、把 Logistic Regression 写成网络

老师将 logistic regression 改写为一个图形网络:

  1. 左侧是输入节点,例如 GPAexperience
  2. 每个输入沿箭头流动。
  3. 箭头上有系数。
  4. 中间节点把输入加权求和,并加上 intercept。
  5. 求和结果进入 sigmoid
  6. 输出概率。

这种图形表示虽然看起来比公式更啰嗦,但它的价值在于:

一旦写成网络,就可以自然地想到在输入和输出之间加入更多中间计算。

这正是神经网络的关键想法。

如果输入变量不止两个,而是 x1xk,同样的图形逻辑仍然成立:每个输入都有对应的权重,所有加权输入加上 bias 后进入 sigmoid,数据从左向右流动。

二十、神经网络术语:Weights 与 Biases

在回归中常说:

  • coefficients
  • intercept

在神经网络中对应术语是:

  • weights
  • biases

有时为了简化,也会把所有参数统称为 weights

老师解释,新闻中说某个模型的 weights 泄露,意思就是模型参数泄露了。只要知道模型架构和参数,就可以重建模型。

二十一、为什么要画成网络

学生回答,图形网络的好处是更容易看清多个函数如何流动。

老师进一步指出,更根本的原因是:

写成网络之后,会自然意识到输入和输出之间可以有很多中间层。

deep learning 中,自动学习 representations 的能力就来自这些中间层。

输入由数据决定,输出由任务决定。真正可设计的是中间部分。

二十二、从线性变换到表示学习

老师说,在数学中拿到一组数据后,最基本的操作就是先做线性变换。

因此,可以把输入 x1xk 先送入一个线性函数:

text
x1 * w1 + x2 * w2 + ... + xk * wk + b

一个带加号的圆圈就表示一个线性函数。

如果输入有 k 个数字,可以通过一个线性函数压缩成 1 个数,也可以通过多个线性函数压缩成多个数。例如把 k 个输入变成 3 个数。

这 3 个数就是某种新的中间表示。

老师强调,此时并不知道这个表示是否有用,也不知道中间维度应该是 3、4、10 还是其他数。当前只是给网络提供学习有用表示的机会,至于是否真正学到有用表示,要通过训练和评估来判断。

多做几层变换,就给模型更多机会从数据中学习有用结构。

二十三、为什么需要非线性 Activation Function

在线性函数后面,需要接一个非线性函数。这个函数称为 activation function

老师暂时要求先接受一个结论:

如果没有非线性函数,前面堆很多层的努力会变成浪费。

原因是多个线性变换叠加后,本质上仍然是一个线性变换。只有加入非线性,网络才有能力表达更复杂的函数。

二十四、Neural Network 的基本定义

老师对神经网络给出一个直观定义:

神经网络就是把输入反复变换,最后送入一个 linear regressionlogistic regression 模型。

换句话说:

  • 输入保持不变。
  • 输出任务保持不变。
  • 中间加入很多层函数变换。
  • 每一层都给模型学习 representation 的机会。

这种复杂性让模型能够从简单输入中学习复杂映射。

二十五、关于 Explainability 的问答

学生问:神经网络的可解释性问题是否来自不知道输入沿哪条箭头流动?

老师回答,不是。

对于任意一个输入数据点,模型中每一步计算都可以追踪。问题不是不知道数据怎么流动,而是很难把最终预测归因到某一个原始属性。

原因是输入特征在多层变换中会混合在一起。

因此:

  • 计算路径是已知的。
  • 但很难说清“模型为什么因为某个属性做出判断”。

老师说明,这只是对 explainabilityinterpretability 的初步回答,后面课程会再展开。

二十六、谁决定网络层数和结构

学生问:中间有多少层、多少函数,是不是由建模者决定?

老师回答,是的。

网络中有两类东西:

  • 输入和输出:由问题给定。
  • 中间结构:由建模者设计。

中间结构包括:

  • 隐藏层数量
  • 每层神经元数量
  • 隐藏层激活函数
  • 输出层形式

后续课程会给出如何设计这些结构的指导。

二十七、Neuron 与 Layer

老师定义了神经网络中的 neuron

一个 neuron 通常是一个线性函数后接一个非线性 activation function。

一个 neuron 可以接收多个输入,但只输出一个数。这个输出数可以被复制并传给下一层的多个节点。

神经网络中几个重要术语:

术语含义
input layer输入本身,虽然叫 layer,但不真正做计算
hidden layer输入和输出之间的中间层
output layer产生最终输出的层
activation function线性函数后的非线性变换
layer一组纵向排列的 neurons

老师也提到,neuron 这个概念受到生物神经元启发,但深度学习和神经科学之间的关系存在争议。对于工业中的实用深度学习系统,不需要过度依赖神经科学类比。

二十八、Fully Connected / Dense Layer

如果某一层中的每个神经元都连接到下一层中的每个神经元,这种层称为:

  • fully connected layer
  • dense layer

也就是说,一个神经元输出的数,会沿多条边传递给下一层所有神经元。

老师指出,logistic regression 可以看作一个没有隐藏层的神经网络。因此它几乎是最简单的神经网络。

deep learning 则是具有很多层的神经网络。

二十九、ResNet 与深层网络

老师展示了几个深层网络例子,并特别提到 ResNet

ResNet 很有名,因为它是较早在图像分类任务中超过人类水平表现的网络之一。

老师提到,下一次课会实际使用 ResNet,对它进行 fine-tuning,并在课堂中解决一个真实问题。

老师也说明,今天展示的这些深层网络在当前已经不算特别夸张;它们主要用于说明“深度学习就是很多层的神经网络”这一点。

三十、Activation Function

activation function 是一个接收单个数字并输出单个数字的函数。

典型流程是:

  1. 一个 neuron 接收多个输入。
  2. 先通过线性函数得到一个标量。
  3. 标量进入 activation function
  4. 输出另一个标量。

30.1 Sigmoid

sigmoid 是一种 activation function,形式为:

text
1 / (1 + e^(-a))

它把任意输入映射到 01 之间。

特点:

  • 输入很小或很负时,输出接近 0。
  • 输入很大时,输出接近 1。
  • 中间区域变化最明显。

因此,sigmoid 适合用于输出概率。

30.2 Linear Activation

linear activation 基本不改变输入,只是把数字原样传递出去。

老师说它几乎不做任何事情,但为了完整性仍然列出来。

30.3 ReLU

ReLU 全称是 Rectified Linear Unit

它的定义是:

text
max(a, 0)

含义是:

  • 如果输入 a 为正,原样输出 a
  • 如果输入 a 为负,输出 0。

老师强调,ReLU 会很快成为课程中的高频词。

许多长期从事深度学习的人认为,ReLU 是深度学习成功的重要因素之一。它有一些非常有用的性质,后续课程会继续讲。

课堂图示中,老师还说明了几种 activation function 的视觉 shorthand:

  • linear activation:线性函数后直接输出。
  • ReLU:用类似 ReLU 曲线形状的符号表示。
  • sigmoid:用类似 sigmoid 曲线形状的符号表示。

30.4 其他激活函数

老师还提到很多其他激活函数,例如:

  • tanh
  • leaky ReLU
  • GELU
  • swish

研究者经常提出新的激活函数或修改已有函数,以适应特定任务。

不过在本课程中,隐藏层主要使用 ReLU

三十一、如何选择 Activation Function

学生问:如何判断某个任务适合什么激活函数?

老师给出规则:

31.1 Hidden Layers

隐藏层默认使用 ReLU

经验上,ReLU 在隐藏层中表现很好,可以作为非常强的默认选择。

31.2 Output Layer

输出层的激活函数由输出类型决定。

如果输出是 0 到 1 之间的概率:

  • 使用 sigmoid

如果输出是 10 个类别概率,并且这些概率加起来等于 1:

  • 使用 softmax

老师强调,输出层不能随意选择,必须和任务输出形式匹配。

三十二、设计神经网络时哪些由问题给定,哪些由建模者决定

设计神经网络时:

  • 输入是什么,由问题给定。
  • 输出是什么,由问题给定。
  • 中间怎么设计,由建模者决定。

建模者需要选择:

  • 隐藏层数量
  • 每层神经元数量
  • 隐藏层激活函数
  • 与输出类型匹配的输出层

这些选择后续会有经验规则和方法指导。

三十三、Neural Architecture Search 与 Dropout

有学生问:是否存在动态设置层数,让系统自己决定网络层数?

老师回答,有一个领域叫 neural architecture search,简称 NAS

NAS 会尝试多种网络架构,并用优化方法甚至 reinforcement learning 来寻找适合特定问题的结构。

不过,训练时第一轮用 2 层、第二轮用 7 层这种动态改变层数的方式通常不做。原因与优化和 gradient descent 的约束有关。

老师还提到一种会在后续讲的技术:dropout

dropout 的做法是在每次数据通过某层时,随机不使用其中一些节点。它是一种防止 overfitting 的有效技术。

三十四、Weights 如何确定

学生问:这些系数是否需要手动指定?

老师回答,网络中的 weightsbiases 不是手动写死的。

训练过程会使用:

  • 训练数据
  • loss function
  • 优化算法

让网络自己找到合适的 weights,以最小化预测误差。

老师强调,建模者只需要搭好结构,然后让训练过程运行,可能需要等待很多小时。

三十五、Node 的定义

学生问:什么是 node

老师回答,node 可以理解为:

一个线性函数后接一个非线性激活函数。

一个 node 的特点:

  • 可以接收多个输入数字。
  • 对输入做线性组合。
  • 通过 ReLUsigmoid 等激活函数。
  • 输出一个数字。

这个输出数字可以被传递给下一层的每个节点。

三十六、面试预测 DNN 示例

老师回到 GPAexperience 的面试预测问题,用一个小型 DNN 举例。

输入:

  • x1 = GPA
  • x2 = experience

输出:

  • 被叫去面试的概率
  • 必须在 0 到 1 之间

设计选择:

  • 1 个隐藏层
  • 3 个隐藏层神经元
  • 隐藏层使用 ReLU
  • 输出层使用 sigmoid

结构可以理解为:

text
x1, x2 → 3 个 ReLU neurons → sigmoid → y

三十七、参数数量计算:13 个参数

老师让学生计算这个小型网络的参数数量。

网络结构:

  • 输入层:2 个输入
  • 隐藏层:3 个神经元
  • 输出层:1 个输出

参数数量:

参数来源数量
输入到隐藏层 weights2 * 3 = 6
隐藏层 biases3
隐藏层到输出层 weights3 * 1 = 3
输出层 bias1

总数:

text
6 + 3 + 3 + 1 = 13

老师提醒,初学复杂网络时要手动算几次参数数量,避免忘记 biases。很多人会只数箭头上的权重,漏掉偏置。

三十八、训练后如何做预测

老师假设网络已经训练完成,并得到最佳 weightsbiases

对任意输入 x1x2

  1. 计算隐藏层第一个神经元输出 a1
  2. 计算隐藏层第二个神经元输出 a2
  3. 计算隐藏层第三个神经元输出 a3
  4. a1a2a3 加权求和,并加上输出层 bias。
  5. 送入 sigmoid
  6. 得到最终概率 y

老师强调,要理解这个机制,因为后续学习 transformers 时,如果不熟悉这种数据流和计算方式,会变得困难。

课堂中还展示了一次具体代入计算,转写稿中给出的结果为 22.6。由于本例前面定义的输出层使用 sigmoid,若把 22.6 理解为最终概率会与 01 的概率范围冲突;因此这里更适合作为课堂代入演示中的数值记录,重点是理解从输入、隐藏层到输出层的前向计算流程。

课堂中还展示了将这个小网络完整展开为数学函数的形式。展开后的公式虽然可以写出来,但可读性明显差于网络图。

三十九、为什么图形表示比展开公式更易理解

老师指出,可以把这个小网络写成一个完整的数学函数。

但即使只有:

  • 2 个输入
  • 1 个隐藏层
  • 3 个隐藏节点

展开后的函数也会比 logistic regression 复杂得多。

这说明两点:

  1. 图形化网络结构更容易推理和理解。
  2. 神经网络的强大能力来自这种复杂可训练函数。

老师强调,输入变量数量没有变,仍然只有两个;复杂性来自从输入到输出之间更复杂的变换路径。

只要能正确训练,神经网络就能从简单输入中学习复杂映射。

四十、Feedforward Neural Network 与 Architecture

本节课示例中的网络是数据从左向右流动的网络,称为 feedforward neural network

老师将它与 recurrent networks 作对比,但说明本课程不会重点讲 recurrent networks。原因是 transformers 已经表现得更强,成为当前主流。

网络中神经元、层、激活函数等的排列方式称为网络的 architecture

老师提到:

  • transformer 是一种特定的神经网络架构。
  • convolutional neural networks 也是一种特定架构。
  • 后续课程会讲用于计算机视觉的 CNN,也会重点关注 transformers

四十一、本节课核心总结

本节课的知识链条可以概括为:

  • 传统 AI 用人工规则解决问题,但受限于泛化能力和 Polanyi's paradox
  • machine learninginput-output examples 中学习映射。
  • 传统机器学习更适合结构化数据。
  • 非结构化数据需要 representation
  • deep learning 能自动学习 representations,打破人工特征工程瓶颈。
  • generative AIdeep learning 中用于生成非结构化输出的一类方法。
  • 多模态能力正在让输入和输出都变得更加灵活。
  • logistic regression 可以看作一个没有隐藏层的神经网络。
  • 神经网络通过中间层反复变换输入,学习复杂表示。
  • weightsbiasesneuronslayersactivation functionsarchitecture 是理解神经网络的基本术语。
  • 隐藏层通常使用 ReLU,输出层激活函数由任务输出类型决定。
  • 网络参数通过训练数据、loss function 和优化算法学习得到。

最核心的思想是:

Deep learning 的关键能力,是让模型自动学习 raw data 的 useful representations。

理解这一点后,神经网络就不再只是很多圆圈和箭头,而是一个自动构建数据表示并完成预测或生成任务的系统。

最后更新于: