2-2 万般皆自“回归”起
要探究神经网络优化的过程,要先了解简单线性回归求解,线性回归方程式如下:
y=wx+b
已知样本(x, y),要求解方程式中的参数权重(w)、偏差(b)。
图2.2 简单线性回归
一般求解方法有两种:
(1)最小平方法(Ordinary Least Square, OLS);
(2)最大似然估计法(Maximum Likelihood Estimation, MLE)。
以最小平方法为例,首先定义目标函数(Object Function)或称损失函数(Loss Function)为均方误差(MSE),即预测值与实际值差距的平方和,MSE当然越小越好,所以它是一个最小化的问题,我们可以利用偏微分推导出公式,过程如下。
(1)
其中ε:误差,即实际值(y)与预测值之差;
n:样本个数。
(2)MSE=SSE/n,n为常数,不影响求解,可忽略。
(3)分别对w及b偏微分,并且令一阶导数=0,可以得到两个联立方程式,进而求得w及b。
(4)先对b偏微分,又因
f′(x)=g(x)g(x)=g′(x)g(x)+g(x)g′(x)=2g(x)g′(x)
→两边同除以2
→分解
→除以n,为x、y的平均数
→移项
(5)对w偏微分:
→两边同除以-2
→分解
→代入步骤(4)的计算结果
→化简
结论:
范例1.现有一个世界人口统计数据集,以年度(year)为x,人口数为y,按上述公式计算回归系数w、b。
下列程序代码请参考【02_01_线性回归.ipynb】。
(1)使用Pandas相关函数计算,程序如下:
执行结果:
w=0.061159358661557375,b=-116.35631056117687
(2)改用NumPy的现成函数polyfit验算:
执行结果:答案相差不大。
w=0.061159358661554586, b=-116.35631056117121
(3)上面公式,x只限一个,若以矩阵计算则更具通用性,多元回归亦可适用,即模型可以有多个特征(x),为简化模型,将b视为w的一环:
一样对SSE偏微分,一阶导数=0有最小值,公式推导如下:
→移项、整理
(xx′)w=xy
→移项
w=(xx′)−1xy
(4)使用NumPy相关函数计算,程序如下:
执行结果与上一段相同。
范例2.再以Scikit-Learn的房价数据集为例,求解线性回归,该数据集有多个特征(x)。
(1)以矩阵计算的方式,完全不变。
执行结果如下:
(2)以Scikit-Learn的线性回归类别验证答案。
执行结果与采用矩阵计算的结果完全相同。
(3)PyTorch自v1.9起提供线性代数函数库[1],可直接调用,程序改写如下:
执行结果与NumPy计算完全相同。