← 全部章节

P11 · 第 11 讲

深度学习简介

46:30

本章目录(8 节)
  1. 一、本节的问题与直观理解
  2. 二、核心知识:结构、矩阵形式、输出层
  3. 三、关键推导:一次前向的维度账(复习补充)
  4. 四、原讲义例子:深度到底带来了什么
  5. 五、易错点
  6. 六、自测
  7. 七、30 秒速记
  8. 八、和其他 P 的关系
项 内容
课程版本 李宏毅 2016 秋季《Machine Learning》Lecture 6:Brief Introduction of Deep Learning
视频分 P https://www.bilibili.com/video/BV1ou411N7X3?p=11 (46:30;搬运合集)
官方讲义 DL (v2).pdf,32 页
材料说明 对应官方讲义整理+必要补充,非视频逐字稿

页码为 PDF 物理页(封面第 1 页)。这一版幻灯片用 sigmoid 作激活、用 softmax + cross-entropy 作输出,和 2021 版(P1/P2)的 ReLU 讲法不是同一套素材;本文只按 2016 讲义的内容写,不把后来的经验倒灌进来。

一、本节的问题与直观理解

这一讲要回答「深度学习到底是什么」,答案朴素得有点反高潮:它还是三步,只是第一步的函数集合换成了神经网络。第 4 页把三步写成:定义一组函数(neural network)、评价函数好坏、挑出最好的那个。第 5 页画出一个「神经元」——把输入做加权和、加偏置、过激活函数——并说明不同的连接方式给出不同的网络结构,而网络参数 \(\theta\) 就是所有神经元里的权重与偏置。

直观上,一个神经元是一把「带方向的尺子」:\(w^\top x+b\) 衡量输入在某个方向上的投影,\(\sigma\) 把它压到 0–1 之间,表示这个方向上的特征「有多强」。一层神经元就是同时拿很多把尺子量同一个输入,得到一个特征向量;下一层再对这些特征量一遍。所谓「深度」,就是这种「重新描述」重复很多次。第 5 页把这个结构叫 fully connect feedforward network:相邻层全连、信息单向往前。

二、核心知识:结构、矩阵形式、输出层

单个神经元。 第 5–6 页的神经元与 sigmoid 定义写成

$$z=\sum_{j}w_jx_j+b=w^{\top}x+b,\qquad a=\sigma(z)=\frac{1}{1+e^{-z}}.$$

\(x\in\mathbb{R}^{D}\)、\(w\in\mathbb{R}^{D}\)、\(b\in\mathbb{R}\),输出是标量 \(a\)。

一层与多层。 第 9 页把层分成 input layer、hidden layers、output layer;第 13–14 页把逐神经元求和写成矩阵:

$$\mathbf{a}^{1}=\sigma\!\left(W^{1}\mathbf{x}+\mathbf{b}^{1}\right),\quad \mathbf{a}^{2}=\sigma\!\left(W^{2}\mathbf{a}^{1}+\mathbf{b}^{2}\right),\quad\dots,\quad \mathbf{y}=\sigma\!\left(W^{L}\mathbf{a}^{L-1}+\mathbf{b}^{L}\right).$$

若第 \(l\) 层有 \(n_l\) 个神经元,则 \(W^{l}\in\mathbb{R}^{n_l\times n_{l-1}}\)、\(\mathbf{b}^{l}\in\mathbb{R}^{n_l}\)、\(\mathbf{a}^{l}\in\mathbb{R}^{n_l}\)。第 14 页顺带说明为什么大家敢堆层:矩阵乘法可以并行算,GPU 正好擅长这个。

输出层与 softmax。 第 15 页把输出层解释成 multi-class classifier:隐藏层是「替代人工特征工程的 feature extractor」,最后一层接 softmax 把 \(K\) 个实数变成概率。第 16–17 页的例子是手写数字:\(16\times16=256\) 维输入(有墨为 1、无墨为 0),输出 10 维,每一维代表「是 0」「是 1」……的置信度,取最大者为预测。第 21 页给出单样本损失

$$C(y,\hat y)=-\sum_{i=1}^{10}\hat y_i\ln y_i,$$

其中 \(y\) 是 softmax 输出(预测分布),\(\hat y\) 是 target 的 one-hot 向量。第 22 页把总损失写成 \(L=\sum_{n=1}^{N}C_n\),训练目标就是找使 \(L\) 最小的 \(\theta^*\)。

优化与反传。 第 24–26 页仍是梯度下降:算出 \(\nabla L\) 的每个分量、按 \(-\mu\,\partial L/\partial w\) 更新,重复。第 27 页点明反向传播只是「高效算 \(\partial L/\partial w\) 的方法」,不是另一种学习算法。

三、关键推导:一次前向的维度账(复习补充)

讲义第 6–8 页用一个小网络手算,给出 \(f(0,0)=[0.51,0.85]\)、\(f(1,-1)=[0.62,0.83]\) 两组输入输出,用来说明「结构定下来,函数就定下来了」。为了把维度讲清楚,这里另编一个 \(3\to4\to2\) 的例子(权重自编,仅用于核对形状,不是讲义数据)。

取 \(\mathbf{x}\in\mathbb{R}^{3}\)、第一层 4 个 sigmoid、第二层 2 个 sigmoid:

$$ \begin{aligned} \mathbf{z}^{1}&=W^{1}\mathbf{x}+\mathbf{b}^{1}, & W^{1}&\in\mathbb{R}^{4\times3},\ \mathbf{b}^{1}\in\mathbb{R}^{4},\ \mathbf{z}^{1}\in\mathbb{R}^{4},\\ \mathbf{a}^{1}&=\sigma(\mathbf{z}^{1})\in\mathbb{R}^{4}, & &\\ \mathbf{z}^{2}&=W^{2}\mathbf{a}^{1}+\mathbf{b}^{2}, & W^{2}&\in\mathbb{R}^{2\times4},\ \mathbf{b}^{2}\in\mathbb{R}^{2},\\ \mathbf{y}&=\sigma(\mathbf{z}^{2})\in\mathbb{R}^{2}. & & \end{aligned} $$

用一组自编权重与 \(\mathbf{x}=(1.0,0.5,-1.0)\) 实算,得到 \(\mathbf{z}^{1}=(0.2229,-0.1562,0.6083,-0.2967)\)、\(\mathbf{a}^{1}=(0.5555,0.4610,0.6476,0.4264)\)、\(\mathbf{y}=(0.2053,0.2815)\)。这个网络的参数是 \(W^{1}\) 的 12 个、\(\mathbf{b}^{1}\) 的 4 个、\(W^{2}\) 的 8 个、\(\mathbf{b}^{2}\) 的 2 个,共 26 个。

如果输出层接 softmax,则 \(\mathrm{softmax}(\mathbf{y})=(0.4809,0.5190)\),两个数相加为 1。注意 softmax 的输入应是 logits(未过 sigmoid 的 \(\mathbf{z}^{2}\)),把 sigmoid 输出再送 softmax 在数学上不算错,但等于人为压窄了动态范围;工程实现里输出层通常只做 linear + softmax,不再套 sigmoid。

四、原讲义例子:深度到底带来了什么

历史不是直线。 第 3 页列了一串时间点:1958 年 perceptron(线性模型)、1969 年指出其局限、1980 年代多层感知机、1986 年反向传播、1989 年「一个隐藏层就够用,为什么要深」、2006 年 RBM 初始化、2009 年 GPU、2011 年语音识别起势、2012 年 ILSVRC 夺冠。这段的作用不是背年份,而是提醒:「深」这个问题在 1989 年就被提出过,后来是靠数据、算力与初始化/训练技巧一起解决的,不是单靠一个公式。

更深是否更好(第 29 页)。 语音识别的词错误率:

结构 WER 结构 WER
1×2k 24.2% 1×3772 22.5%
2×2k 20.4% 1×4634 22.6%
3×2k 18.4% 1×16k 22.1%
4×2k 17.8%
5×2k 17.2%
7×2k 17.1%

同样每层 2k,1 层到 7 层从 24.2% 降到 17.1%;而把单层加宽到 16k,只有 22.1%。表面上看是「深比宽好」。但第 29 页自己也写了一行 “Not surprised, more parameters, better performance”——层数增加同时参数也增加,这张表无法把「深度」和「参数量」分开。读表时要意识到这是观察,不是受控实验。

表达能力(第 30 页)。 通用逼近定理:任意连续函数 \(f:\mathbb{R}^{N}\to\mathbb{R}^{M}\),只要隐藏层神经元足够多,一个隐藏层的网络就能实现。这句话常被误读成「深没有必要」。它说的是存在性:存在一组参数能逼近,不保证梯度下降找得到,也不保证在有限数据上泛化得好。第 30 页把「为什么是深而不是胖」标成下一讲的问题,本讲没有给答案。

复习补充:参数预算的对比。 同为 56 维输入、1 维输出:一个隐藏层 1000 个神经元需要 \(56\times1000+1000+1000+1=58001\) 个参数;8 层各 100 个需要 \(5700+7\times10100+101=76501\) 个;单层要 4000 个神经元才到 \(232001\) 个参数。也就是说「宽」要用更多参数换同样的覆盖,但这只是算术,不能反过来证明「深更省参数」——真正省不省取决于函数的结构,讲义没有在这里下结论。

五、易错点

  1. 通用逼近定理 ≠ 一个隐藏层就够了。 它要求「足够多神经元」,且只保证存在;优化难度、样本效率、泛化都不在定理里。
  2. 第 29 页的表不能证明「深优于宽」。 参数量没控制,讲者自己都标注了这一点;把它当成「深度必然更好」的证据是过度解读。
  3. softmax 不是激活函数。 它作用在输出层,把 \(K\) 个 logits 归一化成概率;隐藏层用什么激活是另一件事。
  4. cross-entropy 的符号方向。 \(C=-\sum_i \hat y_i\ln y_i\),\(\hat y\) 是 one-hot target,\(y\) 是预测;写反了在 one-hot 下数值相同,但多分类软标签时会出错。
  5. \(\theta\) 包含所有层。 说「参数量」时要把每层 \(W\) 与 \(\mathbf{b}\) 都算上,只数权重会漏掉偏置。
  6. 这是 2016 年的讲义。 全篇用 sigmoid,没有 ReLU、没有 batch norm、没有 Adam;不要拿 2021 版的结论去补它没讲的内容。

六、自测

Q1. 输入 256 维、隐藏层 100 个 sigmoid、输出 10 类,参数量是多少?

参考答案

第一层 \(100\times256+100=25700\),输出层 \(10\times100+10=1010\),合计 \(26710\)。若输出层接 softmax,softmax 本身没有参数。

Q2. 通用逼近定理说一个隐藏层可以逼近任意连续函数,为什么实际还要堆深?

参考答案

定理只保证「存在一组参数」,不保证这组参数能被梯度下降在有限样本、有限算力下找到,也不保证泛化。深层结构提供了参数共享与特征复用的归纳偏置,实践中更容易学、更省参数;但这是经验与结构设计问题,不是定理的直接推论。

Q3. 为什么第 29 页「1×16k 只有 22.1%」不能直接说明宽网络不行?

参考答案

因为宽网络的参数量(约 16k×输入维)与深层网络不同,且只试了一个宽度;要比较「深 vs 宽」必须控制参数量、训练预算与数据,做受控实验。这张表只说明在这个语音任务上,加深比加宽带来的收益更大。

Q4. 输出层已经用了 softmax,还能在前面再套一个 sigmoid 吗?

参考答案

技术上可以,但会把 logits 压到 (0,1) 再取 softmax,等于缩小了可用的动态范围、削弱了置信度的区分度;标准做法是输出层保持 linear,直接接 softmax 与 cross-entropy。

七、30 秒速记

三步:函数集合(网络)→ 损失(cross-entropy 求和)→ 梯度下降。神经元 \(a=\sigma(w^\top x+b)\);一层 \(\mathbf{a}=\sigma(W\mathbf{x}+\mathbf{b})\),\(W\) 形状「本层×上层」。输出层 softmax + one-hot cross-entropy。深度 = 隐藏层多;第 29 页更深更好但参数量未控制;第 30 页通用逼近只是存在性;「为什么深」本讲留白。

八、和其他 P 的关系

来源与说明

基于对应官方讲义整理,未取到完整视频字幕;不冒充逐字稿。