一、实验目的
掌握最小二乘法求解(无惩罚项的损失函数)、掌握加惩罚项(2范数)的损失函数优化、梯度下降法、共轭梯度法、理解过拟合、克服过拟合的方法(如加惩罚项、增加样本)
二、实验要求及实验环境
实验要求
-
生成数据,加入噪声;
-
用高阶多项式函数拟合曲线;
-
用解析解求解两种loss的最优解(无正则项和有正则项)
-
优化方法求解最优解(梯度下降,共轭梯度);
-
用你得到的实验数据,解释过拟合。
-
用不同数据量,不同超参数,不同的多项式阶数,比较实验效果。
-
语言不限,可以用matlab,python。求解解析解时可以利用现成的矩阵求逆。梯度下降,共轭梯度要求自己求梯度,迭代优化自己写。不许用现成的平台,例如pytorch,tensorflow的自动微分工具。
实验环境
-
Windows 10 专业教育版
-
python 3.7.4
-
jupyter notebook 6.0.1
-
pycharm 2020.2.3
三、设计思想(本程序中的用到的主要算法及数据结构)
数学原理
最小二乘法求解析解(无惩罚项)
根据泰勒级数,足够高阶的多项式可以拟合任意函数f:X→Yf:X\rightarrow Yf:X→Y。对于我们的加入sin(2πx)sin(2\pi x)sin(2πx)来说,完全可以用多项式函数来拟合,已知训练集有NNN个样本点(x1,t1),(x2,t2)...(xN,tN)(x_1,t_1),(x_2,t_2)...(x_N,t_N)(x1,t1),(x2,t2)...(xN,tN)。
mmm阶多项式函数为
y(x,w)=∑i=0mwixi y(x,\boldsymbol w)=\sum_{i=0}^m w_i x^i y(x,w)=i=0∑mwixi
使用最小二乘法的代价函数为
E(w)=12∑n=1N{
y(xn,w)−tn}2 E(\boldsymbol w)=\frac{1}{2} \sum_{n=1}^{N}\left\{y\left(x_{n}, \boldsymbol{w}\right)-t_{n}\right\}^{2} E(w)=21n=1∑N{
y(xn,w)−tn}2
其中多项式的系数矩阵w\boldsymbol ww如下
w=(w0w1...wm) \boldsymbol w=\begin{pmatrix} w_0\\ w_1\\ ...\\ w_m \end{pmatrix} w=⎝⎜⎜⎛w0w1...wm⎠⎟⎟⎞
现在令
T=(t1t2...tN) \boldsymbol T=\begin{pmatrix} t_1\\ t_2\\ ...\\ t_N \end{pmatrix} T=⎝⎜⎜⎛t1t2...tN⎠⎟⎟⎞
X=(1x1x12...x1m1x2x22...x2m......1xNxN2...xNm) \boldsymbol X=\begin{pmatrix} 1& x_1& x_1^2& ...&x_1^m\\ 1& x_2& x_2^2& ...&x_2^m\\ &&......\\ 1& x_N& x_N^2& ...&x_N^m \end{pmatrix} X=⎝⎜⎜⎛111x1x2xNx12x22......xN2.........x1mx2mxNm⎠⎟⎟⎞
则可以将代价函数E(w)E(\boldsymbol w)E(w)写成矩阵形式
E(w)=12(Xw−T)T(Xw−T)(1) E(\boldsymbol w)=\frac12(\boldsymbol X\boldsymbol w-\boldsymbol T)^T(\boldsymbol X\boldsymbol w-\boldsymbol T) \tag{1} E(w)=21(Xw−T)T(Xw−T)(1)
我们进行多项式拟合的目的就是求出w\boldsymbol ww,能够使得E(w)E(\boldsymbol w)E(w)最小,那么我们可以对(1)(1)(1)式求导,从而求出解析解
(1)(1)(1)式化简后为
E(w)=12(wTXTXw−2wTXTT+TTT) E(\boldsymbol w)=\frac12(\boldsymbol w^T\boldsymbol X^T\boldsymbol X\boldsymbol w-2\boldsymbol w^T\boldsymbol X^T\boldsymbol T+\boldsymbol T^T\boldsymbol T) E(w)=21(wTXTXw−2wTXTT+TTT)
对w\boldsymbol ww求导
∂E∂w=XTXw−XTT(2) \frac{\partial E}{\partial \boldsymbol w}=\boldsymbol X^T\boldsymbol X\boldsymbol w-\boldsymbol X^T\boldsymbol T \tag{2} ∂w∂E=XTXw−XTT(2)
令导数为0,则
w∗=(XTX)−1XTT=X−1T(3) \boldsymbol w^* =(\boldsymbol X^T\boldsymbol X)^{-1}\boldsymbol X^T\boldsymbol T=\boldsymbol X^{-1}\boldsymbol T \tag{3} w∗=(XTX)−1XTT=X−1T(3)
最小二乘法求解析解(有惩罚项)
在前面的求解过程中,没有加惩罚项,此时随着阶数mmm的增大,w∗\boldsymbol w^*w∗往往具有较大的绝对值,从而赋予多项式函数E(w)E(\boldsymbol w)E(w)更强的变化能力。往往会为了更加贴合训练集中样本点,使得w\boldsymbol ww各维数值绝对值很大、很复杂,因为它的学习地太“过火”了,将一些不属于训练集的特征(如:噪声的影响)都学习到了,其本质上就是发生了过拟合。于是,我们可以增加惩罚项,迫使w∗\boldsymbol w^*w∗的绝对值没有那么大。
E~(w)=12∑n=1N{
y(xn,w)−tn}2+λ2∥w∥2 \widetilde E(\boldsymbol w)=\frac{1}{2} \sum_{n=1}^{N}\left\{y\left(x_{n}, \boldsymbol{w}\right)-t_{n}\right\}^{2}+\frac{\lambda}{2}\|\boldsymbol w\|^2 E
(w)=21n=1∑N{
y(xn,w)−tn}2+2λ∥w∥2
写成矩阵形式
E~(w)=12[(Xw−T)T(Xw−T)+λwTw](4) \widetilde E(\boldsymbol w)=\frac12[(\boldsymbol X\boldsymbol w-\boldsymbol T)^T(\boldsymbol X\boldsymbol w-\boldsymbol T)+\lambda\boldsymbol w^T \boldsymbol w] \tag{4} E
(w)=21[(Xw−T)T(Xw−T)+λwTw](4)
同前面一样,对w\boldsymbol ww求导
∂E~∂w=XTXw−XTT+λw(5) \frac{\partial \widetilde E}{\partial \boldsymbol w}=\boldsymbol X^T\boldsymbol X\boldsymbol w-\boldsymbol X^T\boldsymbol T+\lambda \boldsymbol w \tag{5} ∂w∂E
=XTXw−XTT+λw(5)
令导数为0,求得
w∗=(XTX+λI)−1XTT(6) \boldsymbol w^* =(\boldsymbol X^T\boldsymbol X+\lambda \boldsymbol I)^{-1}\boldsymbol X^T\boldsymbol T \tag {6} w∗=(XTX+λI)−1XTT(6)
上式中的III表示单位阵
由于我们引入了超参数λ\lambdaλ来控制惩罚项的重要性,我们就需要确定它的值。
我们可以将(4)(4)(4)式视为以λ\lambdaλ和w\boldsymbol ww为变量的函数E~(w,λ)\widetilde E(\boldsymbol w,\lambda)E
(w,λ),再通过实验,手动给λ\lambdaλ确定一个合适的范围,让λ\lambdaλ在这个范围内取一些值,分别求出对应的解析解w∗\boldsymbol w^*w∗后,代回E~(w,λ)\widetilde E(\boldsymbol w,\lambda)E
(w,λ),选取最小值所对应的λ\lambdaλ即可
λ=argminλE~(w,λ)(7) \lambda = \operatorname{argmin}_{\lambda} \widetilde E(\boldsymbol w,\lambda) \tag{7} λ=argminλE
(w,λ)(7)
梯度下降法求优化解
梯度实际上就是多变量微分的一般化。例如,θ1,θ2,θ3...θN\theta_1,\theta_2,\theta_3...\theta_Nθ1,θ2,θ3...θN是NNN个变量,Θ=(θ1θ2...θN) \Theta = \begin{pmatrix} \theta_1\\ \theta_2\\ ...\\ \theta_N \end{pmatrix}Θ=⎝⎜⎜⎛

本文介绍了最小二乘法在无和有正则项情况下的求解过程,探讨了过拟合现象及其解决方法,包括增加样本数量和正则化。通过实验展示了不同阶数多项式对模型泛化能力的影响,以及在梯度下降和共轭梯度法中如何选择学习率和迭代次数。实验结果表明,正则化和增加样本数量能有效缓解过拟合,共轭梯度法在求解次数上优于梯度下降法。

2252

被折叠的 条评论
为什么被折叠?



