购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

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 )=2 g ( 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 ′) −1 xy

(4)使用NumPy相关函数计算,程序如下:

执行结果与上一段相同。

范例2.再以Scikit-Learn的房价数据集为例,求解线性回归,该数据集有多个特征( x )。

(1)以矩阵计算的方式,完全不变。

执行结果如下:

(2)以Scikit-Learn的线性回归类别验证答案。

执行结果与采用矩阵计算的结果完全相同。

(3)PyTorch自v1.9起提供线性代数函数库 [1] ,可直接调用,程序改写如下:

执行结果与NumPy计算完全相同。 opLtXiDmAATX5sfX847i8Ug1AiTazxcAzTC2fEYJYElWOwR11uvFwkOpsTBbnsFg

点击中间区域
呼出菜单
上一章
目录
下一章
×