大家好,最近有朋友留言询问为什么在机器学习中的损失函数用2n为底,如下公式所示。
![e1e307210f009d220e0660ee1ecfb838.png](https://i-blog.csdnimg.cn/blog_migrate/bf68f74c9881f2854e80b5e0b6823f7a.jpeg)
损失函数
如上图所示,MSE(Mean-square error,均方误差)是比较常用的损失函数方程。确实,MSE公式中,如果使用n替换掉2n,可以达到同样的效果。
那么,为什么大部分公式中倾向保留2n呢?
机器学习的目的
在机器学习中,当有了数据集(dataset),我们需要创建一个模型,使得模型的预测值和数据集中的真实值尽可能地接近。但是,预测值和真实值是几乎不可能一样的,这样就存在一个误差值。
![dd03bf858a119638313fa8bcc03b6bd7.png](https://i-blog.csdnimg.cn/blog_migrate/29ccb9af72c0f77f31f374199f482bd6.jpeg)
误差
其中,机器学习的目的是不停地迭代,使得模型的预测值和数据集中的真实值的总体误差尽量小。
误差的分布假设
![27cc24c32b9783ac912d88adc37568e8.png](https://i-blog.csdnimg.cn/blog_migrate/7745622117bfe5ca39ca3552ce237e5c.jpeg)
误差分布
也就是说,当我们使用机器学习模型的时候,我们是允许误差的存在。简单来说,训练数据集中有多少个数据点,就会生成相应数量的误差。简单来说,我们可以假设所有的误差符合一个统计分布,比如正态分布。
![c11ad2b3fea4c5a4484b6676443f091e.png](https://i-blog.csdnimg.cn/blog_migrate/d98d801b6ab4fe68465bf8e5530cafa2.jpeg)
误差的正态分布
对于误差来说,自然希望误差尽可能接近0。这样可以假设误差符合标准正态分布。
![749a4421056493ec2decc1e3e1c61bf3.png](https://i-blog.csdnimg.cn/blog_migrate/9814f920f997c44f9f8ae7e8cec6bf29.jpeg)
误差的标准正态分布
![db18fe0e20503c460a5e6725269bd736.png](https://i-blog.csdnimg.cn/blog_migrate/a6f8c267075af75a913ada1ef1c680fb.jpeg)
标准正态分布
通过标准正态分布的公式可以得到误差的分布公式,如下:
![421724ce5b5b7a83a669f1fd5fefa3a0.png](https://i-blog.csdnimg.cn/blog_migrate/97056186ff2b7204ef147bfa5113f520.jpeg)
误差的标准正态分布公式
对上式左右取对数,可得:
![8f8ca81f814adf0f4bc2fb08a3a4ddbd.png](https://i-blog.csdnimg.cn/blog_migrate/a65b9c983f95d2bdae89a2cda8b7413f.jpeg)
上式只是对于数据集中的一个数据点的计算,当我们需要求出所有数据点的平均值的时候,可以得到MSE的计算公式,当然第二项是常数项,在计算中可以省略。
![e1e307210f009d220e0660ee1ecfb838.png](https://i-blog.csdnimg.cn/blog_migrate/bf68f74c9881f2854e80b5e0b6823f7a.jpeg)
损失函数
求导数方便
当然,使用2n而不是n对于之后的损失函数求导也会方便很多。由于(x^2)' = 2x。这样一来,求导之后,2会被约分掉。
总结
很多时候,公式里的常数项会有一定的理由存在。不用去死记硬背公式,我们需要的是去理解公式本身的含义。