大白话 5 分钟带你走进人工智能 - 第三节最大似然推导 mse 损失函数(深度解析最小二乘来源)(1)

第三节最大似然推导 mse 损失函数(深度解析最小二乘来源)

在第二节中,我们介绍了 高斯分布的来源,以及其概率密度函数对应的参数 的解释。本节的话,我们结合 高斯分布从数学原理部分解释为什么损失函数是最小二乘。 我们再来回归下高斯分布的概率密度函数实际上是这个形式的:

f(x)=\frac{1}{\sigma \sqrt{2\pi }}e\tfrac{-(x-u)^{2}}{2\sigma ^{2}}

那么这个函数有什么用? 其实就是给一个 X,就能知道 X 发生的可能性有多大?相当于给每一个 X 的一个得分。那么我们回忆一下,在咱们讲这概率论之前,咱们讲的最后一个概念是什么? 最小二乘损失函数 。我们由什么 推到最小二乘?实际上是由误差的概念推导而来\hat{y}-y为什么会有误差?实际上因为咱们 收集上来的特征不够全面 , 咱们提出一个假设,就是说我之所以没预测准,不是因为我模型不行,而是因为好多我该知道的事你没告诉我,比如我想预测房价,你就告诉我一个房子尺寸,你没告诉我这房子死没死人,这是一凶宅,结果卖的很便宜,所以我们受到了好多个没有收集到的因素得影响,产生了一个误差,我们叫做ε,而这个东西和我们讲的高斯分布是不是就有点能联系上。那么误差本身是大是小,应该服从一个什么分布最合理,

误差究竟怎么来的? 其实是由好多个没统计到的 随机变量 X 共同决定着误差 是大是小的。这么多没统计到的随机变量,所以我 假设误差服从高斯分布是不是最合理 ?。我没说它一定就客观上服从高斯分布,但你也不知道它服从什么分布的情况下,就硬让你服从一个分布,你选什么你只能选高斯分布。 因为适用性最广 。所以我们的 线性回归里面核心的一点就是 认为背后的误差是服从一个均值为零的高斯分布的

误差为什么均值为零? 假设就是这么假设的, 你想误差如果均值不为零的话,那就说明你这条线整个就偏了, 假如普遍大家都有 1 的误差,有的比 1 小点,有的比 1 大点,说明你此时的θ肯定不是最好的θ。你一旦将θ调整到最好了之后,你的误差一定均值得为零,因为你的基准线一定要落在你预测的这条线上才对。如果你想你的误差是服从一个均值为 1,方差为某个数的高斯分布,那说明大家普遍都差了 1,说明你这个预测不是最好的预测,你普遍都差着呢。既然均值为零,所以误差有的往正的偏,有的往负的偏,你偏得越多的点应该越少,偏的越少的点应该越多,这样才能满足误差为零。 这个理论和假设实际上是线性回归的基石 ,就是它没有任何道理,当然也不能说没有一点道理,还是有一些道理的, 假设误差服从一个均值为零的高斯分布 ,这点大家是否能够明白,能够意识到它是合理的 ,为什么要用高斯分布估计它? 因为它是若干个你没看到的 X 共同影响的那么一个结果,这些x不一定是相加的关系,没关系,反正我也不知道它是怎么回事,我干脆就拿高斯分布来做,至少这个东西不会差的太多。

好的,至此为止,你已经了解了线性回归模型的假设,并且能体会到它有一定的道理。那么我们接着讲误差的事。看下面的公式:

y^{(i)}=\theta ^{T}x^{(i)}+\varepsilon ^{(i)}

咱们逐个元素的去分析公式中的含义,\varepsilon ^{(i)} 代表第 i 条数据预测值与真实值之间的差距。\theta ^{T}x^{(i)} 整体是我们的预测值,y^{(i)}是我们的真实值。那么预测值中的\theta ^{T}代表什么呢?这里不免讲到一个学科叫做 线性代数 ,我个人的理解, 线性代数就是一种简化标记法 ,比如我要写w_{0}x_{0}+w_{1}x_{1}+w_{2}x_{2}+...+w_{n}x_{n} , 写的很累,很长,因为老写这一长串的东西,于是我们干脆引入一个 向量 的概念,用 W 乘以 X 的转置,就等于上面的这些东西,它就是一种运算的定义。即

w_{0}x_{0}+w_{1}x_{1}+w_{2}x_{2}+...+w_{n}x_{n}=WX^{T}

怎么解释上面公式? 此时的W通常在咱们手写的时候,通常会写成\vec{W},这就是 向量 的意思。那什么叫向量?假如说我的 W 向量为\vec{W}=(1,2,3)是什么意思呢?此时W不再是一个实数了,而是由三个实数构成的这么一个集合体,你就简单地把它联系理解成三个数的一个组合,把三数放一块,我把三个数硬生生写成一个字母,要不我还得称它w1,w2,w3 , 好麻烦!,所以我们直接称它叫\vec{W}向量,其中它的第一个元素是 1,第二个元素是 2,第三个元素是 3,它们三个整体构成了一个叫做三维向量,因为它是由三个元素构成的。向量为了方便运算,定义了 行向量和列向量 ,横着写的就叫行向量,竖着写的叫列向量。这些东西没有什么原因就这么定义的,就是一个起名。我们把从行向量变成列向量的运算叫做 转置 ,比如\vec{W}=(1,2,3) ,它的 转置 就是竖着写下上面的向量。为什么要转来转去?因为我们定义了行向量乘以列向量这种运算。 我们此时对于这个例子来说,A 向量乘以 B 向量的转置,假设 A 是行向量\vec{W}=(1,2,3),B 是列向量\vec{W}=(1,2,3)转置 W^{T}那么一个行向量乘一个列向量怎么定义 ?就是行的第一个元素乘以列向量的第一个元素的结果,加上行的第二个元素乘以列向量的第二个元素结果,加上行的第三个元素乘以列向量的第三个元素的结果,就是WW^{T}=11+22+3*3 。那么w_{0}x_{0}+w_{1}x_{1}+w_{2}x_{2}+...+w_{n}x_{n}=WX^{T}这个公式就可以借用上面行向量乘以列向量的表示方式。我们通常把\theta都定义为列向量,那么 \theta的本身是w_{0},w_{1},...w_{n}的一个列向量\theta ^{T}就是 w_{0},w_{1},...w_{n}的一个行向量。 那么x^{(i)} 怎么解释?每一条数据 x 是不是有 n 个维度,X 本身是不是也可以给它写成一个向量?我们就直接写x^{(i)}向量就包含了这一条数据的所有维度了,当它为列向量的情况下, w_{0}x_{0}+w_{1}x_{1}+w_{2}x_{2}+...+w_{n}x_{n}就变成了一个行向量乘以列向量的形式。 所以目前为止就把线性代数当作一种运算的简写方式。际上你就把这想成就是一个暗号,你看到这个暗号,你就知道它背后根据向量的乘法的定义会得到一个这样的结果,就是w_{0}x_{0}+w_{1}x_{1}+w_{2}x_{2}+...+w_{n}x_{n},也就是\sum x^{i}w^{i}这么一个结果,它计算出来的结果是什么?就是我们的\hat{y},也就是我们的预测值。那么\hat{y}+\varepsilon是不是就是我们的真实值?刚好符合我们的公式。

我们总结下上面说的核心。 误差是由我们多个未观测到的属性或者叫特征决定的,多个未观测到的属性共同决定误差,我们应该假设它符合同一个高斯分布,什么样的高斯分布呢?就是误查服从一个均值为零,方差虽然你不知道,但一定也是某个确定的值的高斯分布。 好,上面的核心你已了解,我们就可以引入一个概率的问题,一个可能性问题。既然 误差服从均值为零的高斯分布 ,那误差自己的概率密度函数写出来如下:

p(\varepsilon ^{(i)})=\frac{1}{\sqrt{2\pi }\sigma }exp(-\frac{(\varepsilon ^{i})^{2}}{2\sigma ^{2}})

某一个误差发生的概率是不是就应该等于上面的公式。用心观察一下这个式子怎么来的?还记得高斯分布的概率密度函数吗?

f(x)=\frac{1}{\sigma \sqrt{2\pi }}e\tfrac{-(x-u)^{2}}{2\sigma ^{2}}

对比发现是不是只有(\varepsilon ^{i})^{2}变了,为什么变了? 均值为零 ,它本来应该减个零,把减零去掉了。那么 每个样本被采样到的概率 也应该为:

p(y^{(i)}|x^{(i)};\theta )=\frac{1}{\sqrt{2\pi }\sigma }exp(-\frac{(y^{(i)-}{\theta^{T}x^{(i)^{2}} })}{2\sigma ^{2}})

上面公式要怎么理解呢? 那么假如有一个样本,预测的\hat{y}是 1.6,真实的y是 2.0,那么它的误差\varepsilon是 0.4,带入误差的概率密度函数是不是可以计算出 0.4 发生的概率是有多大? 而\varepsilon为 0.4 发生就代表一个真实结果为 2.0 的值被你取到了。因为你预测的\hat{y}已经算出来了就等于 1.6 了,所以它们是可以唯一相互确定的,这点要想透。p(y^{(i)}|x^{(i)};\theta )这个叫做条件概率,表示在已知x^{(i)}的情况下,y^{(i)}发生的概率。其实换个角度也能理解,就是因为y^{(i)}=\theta ^{T}x^{(i)}+\varepsilon ^{(i)} 这个公式,所以把样本被采样到的概率中y^{(i)}-\theta ^{T}x^{(i)}替换成\varepsilon ^{(i)},结果是一样的,只不过我们要从实际含义去理解。

既然知道每个样本采样到的概率后,那我们来计算这个概率。可以发现这里面真正变得是 \theta,因为其他参数都是已知,假如\theta全等于 0,你算出来的是一个概率,假如\theta全等于 1,算出来是另一个概率,也就是说 每一条样本被采样到的可能性是随着\theta的变化而变化的 。这是某一条样本被采样到的概率,而最终所有的样本都被你采样到了。比如说你拿到了 1 万条数据,拿第一条数据,是不是有一组x,有一个y, 分别是x^{1}y^{1},带进去上面的概率公式, 得到一个关于\theta的一个表达式只要\theta确定,结果也就确定了。 那么第一条样本被抽样到的概率是一个关于 \theta 的表达式,第二个样本被抽样到的概率也是一个关于 \theta 的表达式,跟第一个表达式不一样,因为带进去的y^{(i)}x^{(i)}是不一样的,这样下去,你会得到 1 万个表达式, 每个表达式代表每一个点被抽样到的概率,1 万个点共同的被抽样到了,那么你通通把它乘起来,就代表这 1 万个点共同被你抽样到的概率,得到了一个总的概率。总的概率是高是低取决于谁? x^{(i)}已知y^{(i)}已知,所以 总概率高低取决于\theta\theta变一变,这总概率就变一变 。 那么你希望找到的 \theta 是使总概率越高还是越低越好?因为你已经抽样到了这些数据,你 最合理的 \theta 应该能让样本总体被抽样到的概率越高越好, \theta 才越趋近于真实 。我们称这种思想叫做 极大似然估计(MLE)。所谓似然 就是上面说的 1 万个 \theta 的表达式相乘的结果就叫似然,其实就是最大概率估计,只不过民国时期翻译那些经典的数学书籍的时候,把概率翻译成了似然。

由于训练集上的样本被抽选到这个随机事件是彼此独立的,那么训练集上所有的样本全部都被抽选到的概率转换为数学公式就是:

\prod_{i=1}^{m}p(y^{(i)}|x^{(i)};\theta )=\frac{1}{\sqrt{2\pi }\sigma }exp(-\frac{(y^{(i)-}{\theta^{T}x^{(i)^{2}} })}{2\sigma ^{2}})

通常我们称上面的 总概率函数为似然函数。 那什么样的\theta是最好的\theta呢? 能够使这个式子最大的θ就是最好的 \theta 。因为它代表整个训练及被抽样到的总概率,既然它已经发生的事情,概率理应最大,这样 \theta 才最真实,否则 \theta 计算出来,这个概率没有达到最大,说明给的 \theta 不够好,毕竟这些东西已经被你抽到了,这个概率还没达到最高值,说明给的 \theta 不够合理。 所以最大似然的思想就是已经抽样到的样本的总概率应该最大,而最合理的\theta就应该是让似然函数最大的\theta 这一点只要理解透了,后面的东西都很简单,这是本节最大的重点,极大似然估计会出现在机器学习的方方面面。方方面面都会有极大似然估计,它的核心思想就是已经发生的概率理应最大,而且概率取决于谁?取决于 \theta

我们不要忘记初心,我们机器学习,学习的是一组参数 w_{0},w_{1},...w_{n} ,其实就是 \theta ,本质就想找到一组最好的 \theta ,现在似然函数是不是相当于给了我们一个指导方针? 能够让总概率最大(也就是似然函数最大)的 \theta 就是最好的 \theta

那么这跟那 MSE 函数(损失函数)有什么关系?我们回顾之前的知识,我们的目的是想找到一组一组参数w_{0},w_{1},...w_{n},即(\theta),使损失函数(MSE)最小,而本节讲的是让这组参数w_{0},w_{1},...w_{n}(即\theta),使似然函数最大,那么他们之间矛盾吗?要是能找到他们之间的关系,是不是所有的原理,无论从哪一方面都能解释通了。所以下一节中,我们来解剖 MSE 和最大似然之间的真正关系。