图像分类、目标检测、机器翻译、语音识别看起来完全不同,但都可以抽象成同一件事:给定输入 X,学习一个函数 F,输出任务需要的 Y。
深度学习的重要变化,是把过去分开的“人工设计特征”和“训练分类器”合成一个可端到端优化的模型。网络直接从数据中学习中间表示,再完成最终任务。
一、数据驱动学习在学什么
监督学习给出训练样本
D={(xi,yi)}i=1n,
希望学到 F(x) 或条件分布 P(Y∣X)。这里有两个容易混淆的目标:
- 拟合:在训练样本上预测得准;
- 泛化:对训练时没见过的新样本也预测得准。
把训练数据背下来只完成了拟合,不等于学到可推广的规律。模型容量、训练目标、正则化与数据覆盖共同决定泛化。
二、参数模型与非参数模型
课件用两种形式作对比。
非参数模型的预测显式依赖训练样本:
y=F(x;x1,x2,…,xn).
例如 K 近邻预测时必须保存并查询训练集。这里“非参数”并不表示真的没有参数,而是模型复杂度可随数据量增长,通常没有固定维度的参数向量概括全部训练数据。
参数模型用固定形式的参数 θ 概括数据:
y=F(x;θ).
训练阶段从数据中求 θ,推理阶段只需输入和参数。神经网络属于参数模型;即使参数多达数十亿,它的参数维度在模型结构确定后仍是固定的。
三、从一个神经元到多层感知机
一层线性变换先计算预激活值
a=Wx+b,
再通过逐元素非线性函数得到激活值
h=σ(a).
课件以 Sigmoid 为例:
σ(a)=1+e−a1.
将若干层串联,得到 L 层多层感知机(Multi-layer Perceptron,MLP):
h(0)a(l)h(l)y=x,=W(l)h(l−1)+b(l),=σ(l)(a(l)),l=1,…,L,=h(L).
也可以把偏置并入权重:给输入补一个恒为 1 的节点 x0=1,对应连接权重就是偏置。但实际写矩阵形状时,把 b 单独列出通常更清楚。
非线性为什么不可缺
若每层都没有激活函数,两层线性变换仍然只是一次线性变换:
W(2)(W(1)x+b(1))+b(2)=Wx+b.
堆再多层也无法表达弯曲决策边界。非线性激活让网络能把简单特征逐层组合成复杂函数。
四、层、节点、权重与参数怎么数
设网络宽度为
d0→d1→⋯→dL.
第 l 层的权重矩阵形状为 dl×dl−1,偏置长度为 dl,所以总参数量为
l=1∑L(dldl−1+dl).
课件给出两个具体网络。
例 1:3→4→2
- 非输入神经元:4+2=6;
- 权重:4×3+2×4=20;
- 偏置:4+2=6;
- 总参数:20+6=26。
例 2:3→4→4→1
- 非输入神经元:4+4+1=9;
- 权重:4×3+4×4+1×4=32;
- 偏置:4+4+1=9;
- 总参数:32+9=41。
网络“几层”存在两种口径:有的资料数所有带参数的层,有的只数隐藏层。最稳妥的表达是直接说“两个隐藏层”,不要只写一个可能有歧义的数字。
五、一个完整前向传播例子
取输入
x=(0,ln3)T,
第一层参数为单位矩阵和零偏置:
W(1)=[1001],b(1)=(0,0)T.
使用 Sigmoid 激活,第一层输出为
h(1)=σ(W(1)x+b(1))=(0.5,0.75)T.
第二层参数为
W(2)=(1,−1),b(2)=0.
于是
a(2)=0.5−0.75=−0.25,
y=σ(−0.25)≈0.438.
整个前向过程只有“矩阵乘法 → 加偏置 → 非线性”反复出现。训练要做的,就是根据预测与目标的差距,反过来调整每层的 W,b;具体推导见下一讲:梯度下降与反向传播。
六、MLP 的能力与代价
足够宽、带非线性激活的 MLP 可以近似很广的一类连续函数。但“能表示”不等于“容易学到”:参数过多会增加数据需求和计算量,结构没有利用任务先验也会很低效。
例如把图像所有像素直接接到全连接层,会忽略局部邻域和同一特征可出现在不同位置的规律。CNN 用局部连接与权重共享解决这个问题;RNN 则让参数沿时间复用,专门处理序列。
课件用“现代 CNN 约千万神经元、人类视觉皮层约数十亿神经元”形成数量直觉。两者的单元、连接方式和学习机制并不相同,所以这个对比只能说明规模,不能把人工神经元与生物神经元逐个等同。
七、常见误区与 sanity check
- 参数量要同时计算权重和偏置;漏掉偏置会使课件两个例子分别少算 6 和 9。
- 矩阵形状应满足 W(l)∈Rdl×dl−1,输出维数等于行数。
- 多层线性映射仍是线性的;隐藏层之间必须有非线性才有意义。
- 训练与推理不同:训练要计算损失和梯度,推理只做前向传播。
- 参数模型不是“参数少的模型”,非参数模型也不是“完全没有参数”。区分点是模型复杂度是否由固定维参数概括。