详细讲解最小二乘法名称的由来

最小二乘法是一种典型的数学优化技术,其目的是通过最小化误差函数(也称为成本函数、损失函数)而求得最优的解。名称中关键的词语就是"最小"、"二乘",名称的英文为"Least Squares"。所谓最小就是使误差函数最小,"二乘"就是指的平方,因此,最小二乘法又称为最小平方法。

要想打好机器学习的数学基础,请参见清华大学出版社的人人可懂系列,包括《人人可懂的微积分》(已上市)、《人人可懂的线性代数》(即将上市)、《人人可懂的概率统计》(即将上市)。

先来看最为简单的在平面中拟合直线方程的情况,这种情况下只需要找出1个系数和截距。这种情况下,最小二乘法使用的误差函数为:

J ( θ ) = 1 2 m ∑ i = 0 m − 1 ( y p i − y i ) 2 J\left( \mathbf{\theta} \right) = \frac{1}{2m}\sum_{i = 0}^{m - 1}{(y_{pi} - y_{i})}^{2} J(θ)=2m1i=0∑m−1(ypi−yi)2

(公式1)

做线性拟合的目的就是要使 J ( θ ) J\left( \mathbf{\theta} \right) J(θ)这个误差函数的值尽可能的小。值更小就表明预测值与真实值的差值更小。公式1中, y pi y_{\text{pi}} ypi表示第i 个预测值; y i y_{i} yi即为 y t i y_{ti} yti,表示第i 个真实值; m m m表示 m m m个数据样本。因此这个函数表示计算预测值与真实值的差的平方和后再求平均。

这里有2个问题要说明,这2个问题初次接触者很容易困惑。

第1个问题是公式1中为什么要采用平方?因为平方计算后都变成了正数,就不必再担心预测值与真实值的差为负数的情况;二是平方后做导数计算。这还能有未知数存在;三是平方函数的图形是一根开口向上的抛线,必有极小值。从 J ( θ ) J\left( \theta \right) J(θ)来要求的未知数是 θ \theta θ,但是公式1中并未见 θ \theta θ?实际上是有的,只是隐含在 y pi y_{\text{pi}} ypi中罢了。要拟合的直线模型为:

y = θ 1 x + θ 0 y = \theta_{1}x + \theta_{0} y=θ1x+θ0

(方程1)

把这方程代入到公式1中,实际上就是:

J ( θ ) = 1 2 m ∑ i = 0 m − 1 ( ( θ 1 x i + θ 0 ) − y i ) 2 J\left( \mathbf{\theta} \right) = \frac{1}{2m}\sum_{i = 0}^{m - 1}{((\theta_{1}x_{i} + \theta_{0}) - y_{i})}^{2} J(θ)=2m1i=0∑m−1((θ1xi+θ0)−yi)2

(公式2)

这样把拟合方程1就转化了求得 J ( θ ) J\left( \theta \right) J(θ)的最小值,在做最小值优化的过程中来求得最合适的 θ 1 \theta_{1} θ1、 θ 0 \theta_{0} θ0这2个参数的值。

**提示:**再次提醒,求解模型是要求其中的 θ 1 \theta_{1} θ1、 θ 0 \theta_{0} θ0这些参数值,而不是xyxy的值事先都是已知的值。

要想打好机器学习的数学基础,请参见清华大学出版社的人人可懂系列,包括《人人可懂的微积分》(已上市)、《人人可懂的线性代数》(即将上市)、《人人可懂的概率统计》(即将上市)。

如果 θ \theta θ只有一次方,则求导数值就会变成1,这就没有办法再求解下去了。假定采用的公式是:

J ( θ ) = 1 2 m ∑ i = 0 m − 1 ( ( θ 1 x i + θ 0 ) − y i ) J\left( \mathbf{\theta} \right) = \frac{1}{2m}\sum_{i = 0}^{m - 1}{((\theta_{1}x_{i} + \theta_{0}) - y_{i})} J(θ)=2m1i=0∑m−1((θ1xi+θ0)−yi)

用这个公式对 θ 0 \theta_{0} θ0求偏导数:

∂ J ( θ ) ∂ θ 0 = ∂ ∂ θ 0 ( 1 2 m ∑ i = 0 m − 1 ( ( θ 1 x i + θ 0 ) − y i ) ) = 1 2 m ∑ i = 0 m − 1 ∂ ∂ θ 0 ( ( θ 1 x i + θ 0 ) − y i ) \frac{\partial J\left( \mathbf{\theta} \right)}{\partial\theta_{0}} = \frac{\partial}{\partial\theta_{0}}\left( \frac{1}{2m}\sum_{i = 0}^{m - 1}\left( \left( \theta_{1}x_{i} + \theta_{0} \right) - y_{i} \right) \right) = \frac{1}{2m}\sum_{i = 0}^{m - 1}{\frac{\partial}{\partial\theta_{0}}\left( \left( \theta_{1}x_{i} + \theta_{0} \right) - y_{i} \right)} ∂θ0∂J(θ)=∂θ0∂(2m1i=0∑m−1((θ1xi+θ0)−yi))=2m1i=0∑m−1∂θ0∂((θ1xi+θ0)−yi)

= 1 2 m ∑ i = 0 m − 1 1 = 1 2 m × m = 1 2 = \frac{1}{2m}\sum_{i = 0}^{m - 1}1 = \frac{1}{2m} \times m = \frac{1}{2} =2m1i=0∑m−11=2m1×m=21

这就使得导数值变成了一个常数,这就违背了做优化的初衷。因为在极值点, ∂ J ( θ ) ∂ θ 0 = 0 \frac{\partial J(\mathbf{\theta})}{\partial\theta_{0}} = 0 ∂θ0∂J(θ)=0,而这里 ∂ J ( θ ) ∂ θ 0 = 1 2 \frac{\partial J(\mathbf{\theta})}{\partial\theta_{0}} = \frac{1}{2} ∂θ0∂J(θ)=21,这就互相矛盾了。上述求导过程中,为什么 ∂ ∂ θ 0 ( ( θ 1 x i + θ 0 ) − y i ) = 1 \frac{\partial}{\partial\theta_{0}}\left( \left( \theta_{1}x_{i} + \theta_{0} \right) - y_{i} \right) = 1 ∂θ0∂((θ1xi+θ0)−yi)=1?前述数学知识中我们已经学过,求偏导数时,把 θ 0 \theta_{0} θ0看成未知数,则把 θ 1 \theta_{1} θ1看成是常量, x i x_{i} xi、 y i y_{i} yi是已知数,也看成是常量,常量的导数为0,因此:

∂ ∂ θ 0 ( ( θ 1 x i + θ 0 ) − y i ) = ∂ θ 0 ∂ θ 0 = 1 \frac{\partial}{\partial\theta_{0}}\left( \left( \theta_{1}x_{i} + \theta_{0} \right) - y_{i} \right) = \frac{\partial\theta_{0}}{\partial\theta_{0}} = 1 ∂θ0∂((θ1xi+θ0)−yi)=∂θ0∂θ0=1

同理,对 θ 1 \theta_{1} θ1求偏导数:

∂ J ( θ ) ∂ θ 1 = ∂ ∂ θ 1 ( 1 2 m ∑ i = 0 m − 1 ( ( θ 1 x i + θ 0 ) − y i ) ) = 1 2 m ∑ i = 0 m − 1 ∂ ∂ θ 1 ( ( θ 1 x i + θ 0 ) − y i ) = 1 2 m ∑ i = 0 m − 1 ∂ ∂ θ 1 ( θ 1 x i ) = 1 2 m ∑ i = 0 m − 1 x i \frac{\partial J(\mathbf{\theta})}{\partial\theta_{1}} = \frac{\partial}{\partial\theta_{1}}\left( \frac{1}{2m}\sum_{i = 0}^{m - 1}\left( \left( \theta_{1}x_{i} + \theta_{0} \right) - y_{i} \right) \right) = \frac{1}{2m}\sum_{i = 0}^{m - 1}{\frac{\partial}{\partial\theta_{1}}(\left( \theta_{1}x_{i} + \theta_{0} \right) - y_{i})} = \frac{1}{2m}\sum_{i = 0}^{m - 1}{\frac{\partial}{\partial\theta_{1}}(\theta_{1}x_{i})} = \frac{1}{2m}\sum_{i = 0}^{m - 1}x_{i} ∂θ1∂J(θ)=∂θ1∂(2m1i=0∑m−1((θ1xi+θ0)−yi))=2m1i=0∑m−1∂θ1∂((θ1xi+θ0)−yi)=2m1i=0∑m−1∂θ1∂(θ1xi)=2m1i=0∑m−1xi

在极值点, ∂ J ( θ ) ∂ θ 1 = 1 2 m ∑ i = 0 m − 1 x i = 0 \frac{\partial J(\mathbf{\theta})}{\partial\theta_{1}} = \frac{1}{2m}\sum_{i = 0}^{m - 1}x_{i} = 0 ∂θ1∂J(θ)=2m1∑i=0m−1xi=0,这个表达式里已经没有了 θ 1 \theta_{1} θ1,因此也没有办法求得 θ 1 \theta_{1} θ1。

此外,在求误差时,参照图3-3来看,已知点的分布实际情况多会是分布在线的上下,如果 θ \theta θ只有一次方,误差值有正有负,做加法时会相互抵消,也会使误差值不真实。要使误差值不相互抵消,可能您会想到可以使用绝对值,即:

J ( θ ) = 1 2 m ∑ i = 0 m − 1 ∣ ( θ 1 x i + θ 0 ) − y i ∣ J\left( \mathbf{\theta} \right) = \frac{1}{2m}\sum_{i = 0}^{m - 1}{|(\theta_{1}x_{i} + \theta_{0}) - y_{i}|} J(θ)=2m1i=0∑m−1∣(θ1xi+θ0)−yi∣

但是这样做,会使这个函数成了一个不可导的函数。前面的数学知识中已经学过,在 ∣ ( θ 1 x i + θ 0 ) − y i ∣ |(\theta_{1}x_{i} + \theta_{0}) - y_{i}| ∣(θ1xi+θ0)−yi∣这个函数的极值点, ( ( θ 1 x i + θ 0 ) − y i ) ((\theta_{1}x_{i} + \theta_{0}) - y_{i}) ((θ1xi+θ0)−yi)和 − ( ( θ 1 x i + θ 0 ) − y i ) - ((\theta_{1}x_{i} + \theta_{0}) - y_{i}) −((θ1xi+θ0)−yi)的导数值不同,产生矛盾,因此不可导。

第2个问题是公式1中系数 1 2 m \frac{1}{2m} 2m1为什么分母有个2?这是为了简化计算,当求导数时, d θ 2 dθ = 2 θ \frac{d\theta^{2}}{\text{dθ}} = 2\theta dθdθ2=2θ,这样就可以把 2 θ 2\theta 2θ前的2约掉。当然,不想要简化计算的话,用 1 m \frac{1}{m} m1也是可以的,因为并不影响求解参数 θ 1 \theta_{1} θ1、 θ 0 \theta_{0} θ0这2个参数的值,而且也不影响求做优化计算。在做优化过程中,函数前有系数 1 2 \frac{1}{2} 21和没有系数 1 2 \frac{1}{2} 21,使函数值往最小值的方向发展趋势是一样的。

要想打好机器学习的数学基础,请参见清华大学出版社的人人可懂系列,包括《人人可懂的微积分》(已上市)、《人人可懂的线性代数》(即将上市)、《人人可懂的概率统计》(即将上市)。

讲了这么多,都是为了让大家解开心中对取公式1这样的优化函数的疑团。我始终认为,只有清楚为什么这么做,才会对知识理解得透彻。

相关推荐
Sherry Wangs4 小时前
【Science Robotics】Human-robot facial coexpression
人工智能·具身智能·emo机器人
Turboex邮件分享4 小时前
邮件系统的未来趋势:AI、机器学习与大数据分析的融合应用
人工智能·机器学习·数据分析
RockHopper20254 小时前
寻找具身智能系统中的传统工程理论脉络
人工智能·具身智能·具身认知
爱打代码的小林4 小时前
机器学习(数据清理)
人工智能·机器学习
囊中之锥.4 小时前
神经网络原理通俗讲解:结构、偏置、损失函数与梯度下降
人工智能·深度学习·神经网络
weixin_377634844 小时前
【2026目标检测】高质量模型汇总
人工智能·目标检测·目标跟踪
光羽隹衡4 小时前
机器学习——PCA数据降维
人工智能·机器学习
KAI智习4 小时前
大模型榜单周报(2026/1/17)
人工智能·大模型
PNP Robotics4 小时前
PNP机器人分享具身操作策略和数据采集
大数据·人工智能·学习·机器人
AI白艿4 小时前
先知AI如何破解男装行业的数据迷局?
人工智能·aigc