记号说明
1.输入集X={x1,...,xN}是N个观测值,某一个观测{xn},其中n=1,2,...,N,通俗讲就是x_train,或者文中称为D
2.观测对应的目标值t={t1,...,tn},通俗讲就是y_train
3.模型函数t=y(x),输入变量x,输出对应的t的预测
4.预测分布p(t|x)
5.线性模型y(x,w)=w0+w1x1+...+wDxD=w0+M−1∑j=1wjϕ(x)=wTϕ(x)
6.M多项式拟合的最高阶数
7.ϕj(x)被称为基函数(basis function)j=0,...,M−1
8.w0被称为偏置参数 bias parameter
9.w=(w0,...,wM−1)T
10.ϕ(x)=(ϕ0,...,ϕM−1)T
11.ϕj(x)=xj,多项式基函数
12.β,先验为高斯分布的精度,p(t|x,w,β)=N(t|y(x,w),β−1)
13.Φ=⎛⎜
⎜
⎜
⎜
⎜⎝ϕ0(x1)ϕ1(x1)⋯ϕM−1(x1)ϕ0(x2)ϕ1(x2)⋯ϕM−1(x2)⋮⋮⋱⋮ϕ0(xN)ϕ1(xN)⋯ϕM−1(xN)⎞⎟
⎟
⎟
⎟
⎟⎠N×M
14.Φ+≡(ΦTΦ)−1ΦT,摩尔彭罗斯伪逆(Moore-Penrose pseudo-inverse)
15.ED(w)=12∑Nn=1{tn−w0−∑M−1j=1wjϕj(xn)}2=12N∑n=1{tn−wTϕ(xn)}2,误差函数
15.EW(w)=12wTw,正则化项
3.1.常用的基函数
- 多项式基函数,ϕj(x)=xj
- 高斯基函数,ϕj(x)=exp{−(x−μj)22s2}
- sigmod基函数,ϕj(x)=σ(x−μjs)
其中σ(a)是logistic sigmod函数,σ(a)=11+exp(−a)
- 傅里叶基函数
不同基函数的sin函数拟合
点击查看代码
# 不同基函数拟合
def sinusoidal(x):
return np.sin(2 * np.pi * x)
x_train, y_train = create_toy_data(sinusoidal, 10, 0.25)
x_test = np.linspace(0, 1, 100)
y_test = sinusoidal(x_test)
# Pick one of the three features below
#feature = PolynomialFeature(8)
#feature = GaussianFeature(np.linspace(0, 1, 8), 0.1)
feature = SigmoidalFeature(np.linspace(0, 1, 8), 10)
X_train = feature.transform(x_train)
X_test = feature.transform(x_test)
model = LinearRegression()
model.fit(X_train, y_train)
y, y_std = model.predict(X_test, return_std=True)
plt.scatter(x_train, y_train, facecolor="none", edgecolor="b", s=50, label="training data")
plt.plot(x_test, y_test, label="$\sin(2\pi x)$")
plt.plot(x_test, y, label="prediction")
plt.fill_between(
x_test, y - y_std, y + y_std,
color="orange", alpha=0.5, label="std.")
plt.legend()
plt.show()
3.1.1.线性回归的最大似然和最小平方
假定目标变量$ t 是由确定函数 y(x, w) $加上高斯噪声给出的:
t=y(x,w)+ϵ(3.7)
其中ϵ是均值为0,精度(方差的逆)为β的高斯随机变量。因此可以写成:
p(t|x,w,β)=N(t|y(x,w),β−1)(3.8)
回忆下1.89式
对曲线拟合,计算平均损失,求期望.
E[L]=∫∫L(t,y(x))p(x,t)dxdt(1.86)
求导=0可以得到条件x下t的条件均值,也就是回归函数
y(x)=∫tp(x,t)dtp(x)=∫tp(t|x)dt=Et[t|x](1.89)
回忆结束
则有
E[t|x]=∫tp(t|x)dt=y(x,w)(3.9)
假设X从3.8式p(t|x,w,β)=N(t|y(x,w),β−1)中抽取
则得到下面的似然函数
p(t|X,w,β)=N∏n=1N(tn|wTϕ(xn),β−1)(3.10)
求对数似然
lnp(t|w,β)=N∑n=1lnN(tn|wTϕ(xn),β−1) =N2lnβ−N2ln(2π)−βED(w)(3.11)
其中平方和误差函数定义为:
ED(w)=12N∑n=1{tn−wTϕ(xn)}2(3.12)
最大似然法求确定wβ
∇lnp(t|w,β)=βN∑n=1{tn−wTϕ(xn)}ϕ(xn)T(3.13)
0=N∑n=1tnϕ(xn)T−wT(N∑n=1ϕ(xn)ϕ(xn)T)(3.14)
wML=(ΦTΦ)−1ΦTt(3.15)
这是最小二乘法的解析解
Φ=⎛⎜
⎜
⎜
⎜
⎜⎝ϕ0(x1)ϕ1(x1)⋯ϕM−1(x1)ϕ0(x2)ϕ1(x2)⋯ϕM−1(x2)⋮⋮⋱⋮ϕ0(xN)ϕ1(xN)⋯ϕM−1(xN)⎞⎟
⎟
⎟
⎟
⎟⎠N×M(3.16)
现在,我们可以更加深刻地认识偏置参数w0。如果显式地写出偏置参数,那么误差函数(3.12)变为:
ED(w)=12N∑n=1{tn−w0−M−1∑j=1wjϕj(xn)}2(3.18)
对于$ w_0 求导并使其等于0,求解 w_0 $可得:
w0=¯t−M−1∑j=1wj¯ϕj(3.19)
其中定义了:
¯t=1NN∑n=1tn,¯ϕj=1NN∑n=1ϕj(xn)(3.20)
因此偏置w0补偿了目标值的均值(在训练集上的)与基函数的值的加权均值之间的差。
我们也可以对于噪声精度参数β最大化对数似然函数(3.11),得到:
1βML=1NN∑n=1{tn−wTMLϕ(xn)}2(3.21)
3.1.3 顺序学习
如果误差函数由数据点的和 E=∑nEn组成,那么在n次这样的观测之后随机梯度算法使用
w(τ+1)=w(τ)−ηΔEn(3.22)
来更新参数向量w。其中τ是迭代次数,η是学习率参数。稍后会讨论η的选择问题。w被初始化为某个起始向量w(0)。在平方和误差函数(3.12)的情况下,得到:
w(τ+1)=w(τ)−η(tn−w(τ)Tϕn)ϕn(3.23)
3.1.4 正则化最小平方
在1.1节中,我们介绍了通过添加一个正则项来防止误差函数过拟的想法,得到的需要最小化的总误差函数的形式为:
ED(w)+λEW(w)(3.24)
其中$ \lambda 是控制数据依赖误差 E_D(w) 和正则项 E_W(w) $的相对重要性的正则化参数。一个最简单的正则化项是加权向量元素的平方和:
EW(w)=12wTw(3.25)
那么我们的总误差函数为:
12N∑n=1{tn−wTϕ(xn)}2+λ2wTw(3.27)
添加正则化项
w=(λI+ΦTΦ)−1ΦTt(3.28)
这是最小二乘解(3.15)的一个简单扩展。
有时会使用一种更加一般的正则化项,其误差形式为-q=1表示L1正则
12N∑n=1{tn−wTϕ(xn)}2+λ2M∑j=1|wj|q(3.29)
当q=1时,在统计文献中被称为lasso(Tibshirani, 1996)。它具有如果λ充分大,那么某些系数wj会变为零,从而得到一个使得对应的基函数不起作用的稀疏模型。为了证明这点,首先注意到最小化式(3.29)等价于最小化满足限制
M∑j=1|wj|q≤η(3.30)
的未正则化的平方和误差(3.12)
习题3.5 使用附录E中讨论的拉格朗日乘数法,证明最小化正则化的误差函数(3.29)等价于在限制条件(3.30)下最小化为政者的平方和误差函数(3.12),讨论参数η和λ的关系
解1
带约束的优化问题
minw12∥t−Φw∥22s.t.∥w∥qq≤η.
用拉格朗日乘子法等价转为无约束优化问题
minw12∥t−Φw∥22+λ2(∥w∥qq−η)
记最优解为 w∗λ,若 λ>0,则由 KKT 条件有等式约束满足,即 η=∥w∗λ∥qq,即 η 对应最优解的 q-范数。
解2
ED(w)=12N∑n=1{tn−wTϕ(xn)}2(3.12)
限制M∑j=1|wj|q≤η
用拉格朗日乘子法
L(w,λ)=12N∑n=1{tn−wTϕ(xn)}2+λ2(N∑n=1|wj|q−η)
=12N∑n=1{tn−wTϕ(xn)}2+λ2N∑n=1|wj|q−λ2η
因为∂∂w(λη2)=0
所以对L(w,λ)最小化的w和对3.29最小化的w等价
这次不等式制约为g(w)=12(M∑j=1|wj|q−η)≤0
求f(w)=12N∑n=1{tn−wTϕ(xn)}2最小化
为了极值在边缘,kkt条件要成立
g(w)≤0,λ≥0,λg(w)=0
λ2(M∑n=1|wj|q−η)=0
所以η=M∑n=1|w∗j|q
w和η关系,在边界上达到最优,即η=M∑n=1|w∗j|q
这里注意下,这里的η不是前面3.1.3中提到的学习率

3.1.5多个输出
这章节不是重点,一般不会做多目标输出
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)