姓名 | |
学号 | |
班号 | |
电子邮件 | |
手机号码 |
1 实验目的
掌握最小二乘法求解(无惩罚项的损失函数)、掌握加惩罚项(2范数)的损失函数优化、梯度下降法、共轭梯度法、理解过拟合、克服过拟合的方法(如加惩罚项、增加样本)
2 实验要求及实验环境
2.1 实验要求
-
生成数据,加入噪声;
-
用高阶多项式函数拟合曲线;
-
用解析解求解两种loss的最优解(无正则项和有正则项)
-
优化方法求解最优解(梯度下降,共轭梯度);
-
用你得到的实验数据,解释过拟合。
-
用不同数据量,不同超参数,不同的多项式阶数,比较实验效果。
-
语言不限,可以用matlab,python。求解解析解时可以利用现成的矩阵求逆。梯度下降,共轭梯度要求自己求梯度,迭代优化自己写。不许用现成的平台,例如pytorch,tensorflow的自动微分工具。
2.2 实验环境
Windows10; python3.8.5; jupyter notebook
3 设计思想
由泰勒级数可知,足够高阶的多项式可以拟合任意的函数,所以本次实验使用多项式来拟合正弦函数 s i n ( 2 π x ) sin(2\pi x) sin(2πx)。在 m m m 阶多项式中,有 m + 1 m+1 m+1 个待定系数,这些系数(由低到高)组成的列向量记作 w w w。用最小二乘法确定 w w w,设 E ( w ) = 1 / 2 ∗ ( X w – Y ) T ( X w – Y ) E(w) = 1/2 * (Xw – Y)^T(Xw– Y) E(w)=1/2∗(Xw–Y)T(Xw–Y),其中, X X X 为多项式中各个未知项代入观测数据求得的矩阵,若记 X i X_i Xi 为 X X X 的第 i i i 行的向量,则 X i [ j ] X_i[j] Xi[j] 为第 i i i 个观测数据 x i x_i xi 的 j j j 次方,记有 n n n 组观测数据,多项式最高次为 m m m,易知 X X X的维度为 n ∗ ( m + 1 ) n*(m+1) n∗(m+1)。 Y Y Y 为观测标签向量, Y [ j ] Y[j] Y[j] 为第 j j j 组观测数据的标签值(即 y y y 值)。从而问题转化为:求向量 w w w,使得 E ( w ) E(w) E(w) 最小。
3.1 生成数据
根据输入的多项式阶数和训练集大小参数生成相应大小的数据集,根据输入的高斯分布的均值和标准差参数生成噪声,将噪声加入到数据集中,最后根据数据集生成训练集等数据。
def generate_data(order, size, mu=0, sigma=0.05, begin=0, end=1):
x = np.arange(begin, end, (end - begin) / size)
guass_noise = np.random.normal(mu, sigma, size) # 高斯分布噪声
y = np.sin(2 * np.pi * x) + guass_noise
train_y = y.reshape(size, 1)
train_x = np.zeros((size, order + 1))
nature_row = np.arange(0, order+1))
for i in range(size):
row = np.ones(order + 1) * x[i]
row = row ** nature_row
train_x[i] = row
return train_x, train_y, x, y
3.2 最小二乘法求解析解(无正则项)
E ( w ) = 1 2 ( X w − Y ) T ( X w − Y ) = 1 2 ( w T X T − Y ) ( X w − Y ) = 1 2 ( w T X T X w − w T X T Y − Y T X w + X T Y ) = 1 2 ( w T X T X w − 2 w T X T Y + X T Y ) E(\pmb{w})=\frac 1 2(\pmb {Xw}-\pmb Y)^T(\pmb{Xw}-\pmb Y)\\ \qquad\quad=\frac 1 2(\pmb w^T\pmb X^T-\pmb Y)(\pmb {Xw}-\pmb Y)\\ \qquad\qquad\qquad\qquad\qquad\;\;\;\;=\frac 1 2(\pmb w^T\pmb X^T\pmb X\pmb w-\pmb w^T\pmb X^T\pmb Y-\pmb Y^T\pmb X\pmb w+\pmb X^T\pmb Y)\\ \qquad\qquad\qquad\quad\,=\frac 1 2(\pmb w^T\pmb X^T\pmb{Xw}-2\pmb w^T\pmb X^T\pmb Y+\pmb X^T\pmb Y)\\ E(www)=21(XwXwXw−YYY)T(XwXwXw−YYY)=21(wwwTXXXT−YYY)(XwXwXw−YYY)=21(wwwTXXXTXXXwww−wwwTXXXTYYY−YYYTXXXwww+XXXTYYY)=21(wwwTXXXTXwXwXw−2wwwTXXXTYYY+XXXTYYY)
令
∂ E ∂ w = X T X w − X T Y = 0 \frac{\partial E}{\partial \pmb w} = \pmb X^T\pmb{Xw}-\pmb X^T\pmb Y =0 ∂www∂E=XXXTXwXwXw−XXX