同一个式子
Week 8 讲非线性关系时写下了这个式子:f(x) = β₀ + β₁h₁(x) + … + βₘhₘ(x)。每个 hₘ(x) 是一个基函数,它把输入 x 变成一列新特征;βₘ 是这列特征的权重,模型的预测就是这些特征的加权求和。
Week 8 的样条、Week 10 的 boosting 和 Week 13 的神经网络都能写成这个形式,三者的差别在 hₘ 由谁决定、在什么时候决定。按这条线把三周连起来读,遇到「哪些参数在训练时变化」这类判断就能直接回答。
Week 8:分析者事先选好 hₘ
多项式取 hₘ(x) = xᵐ。线性样条在节点 ξ 处加一项 max(0, x − ξ),节点左右两侧的斜率因此不同。这些函数在训练之前已经写定,训练只估计 β。模型对 β 仍然是线性的,所以展开后的特征矩阵可以直接交给线性回归。
hₘ 写定以后,模型能表达什么形状也随之定下。节点放少了会漏掉弯曲,放多了会追随噪声;更强的正则化主要压低估计的波动,补不出基函数里没有的曲线。
GAM 把这个思路推广到多个特征:f(x) = β₀ + f₁(x₁) + f₂(x₂) + …,每个特征一条可以弯曲的曲线,再相加。它默认一个特征的作用不随另一个特征变化,需要交互时要另外加入联合项。
Week 10:每一轮从数据里学一个 hₘ
Boosting 的每个基函数是一棵小树。切分哪个变量、阈值放在哪里、叶节点输出多少,都由数据决定,所以 Week 10 把它叫作 learned basis expansion。
如果 600 棵树同时优化,树结构的组合数量大到难以搜索。Forward stagewise 每轮固定已经拟合好的树,只新加一棵,前面的树不再回头重估。平方损失下,新树拟合的是残差,即真实值减去已有各棵树的预测之和;叶节点输出取叶内残差的均值,再乘学习率 η 加到原来的预测上。这是贪心近似,每轮只保证新加的这一棵改进了当前预测,整组树并不保证联合最优。
树深决定有没有交互
深度为 1 的树桩只按一个变量切一次。把所有树桩按变量归并,整个模型可以写成 c + g₁(x₁) + g₂(x₂) + …,形式和 GAM 相同,只是每条曲线变成了阶梯。
这样的模型能表达收入单独的阶梯效应,也能表达收入和年龄各自的效应相加,表达不了「收入的作用方向随年龄改变」。树加得再多也一样,限制来自每棵树的结构。按一条路径至多 d 次分裂算,深度为 d 的树,一条从根到叶的路径至多涉及 d 个不同变量;深度给出的是上限,模型不一定真学到这么高阶的交互。
Week 13:hₘ 和权重一起学
单隐藏层网络的隐藏单元是 hₘ = g(bₘ + Σ wₘⱼxⱼ),输出是 f(x) = α + Σ βₘhₘ。输出这一层仍是隐藏特征的加权求和,和 Week 8 的式子同形。区别在 hₘ 里的 w 和 b 也是训练参数:网络估计输出权重 β 的同时,也在学习怎样把输入变成特征,这叫 representation learning。
β、w、b 一起优化时,损失一般非凸,要靠反向传播求梯度,再用 SGD 或 Adam 迭代更新。输出只对隐藏特征线性,对原始输入不线性,这两种说法要分开。
参数数量按层算:a 个输入连到 b 个单元,加上偏置共 (a + 1) × b 个参数。2 个输入、2 个 ReLU 隐藏单元、1 个 sigmoid 输出的网络,隐藏层有 (2 + 1) × 2 = 6 个,输出层有 (2 + 1) × 1 = 3 个,共 9 个。某个隐藏单元对当前样本输出 0,它的权重和偏置照样计入。






