Python:最大似然率和最大化概率 (五十九)

最大似然率

在我们学习深度学习的过程中,将一直用到概率。在这节课,我们将学习如何使用概率来评估(并改善)我们的模型。

哪个模型更准确?

我们依然在寻找一种算法,可以帮助我们,选择区分数据的最佳模型,因为我们处理的是概率,所以可以充分利用概率。
假设我是一名学生,有两个模型,一个说我被录取的概率是 80%,另一个说我被录取的概率是 55%,哪个模型更准确?

如果我被录取了,那么说 80% 这个模型更好,如果没被录取呢,那么录取概率 55% 的模型更准确,但这只是我一个人,如果是我和我的朋友呢,那么最佳模型更可能是对于实际在我们身上发生情况所对应的概率更大的模型,无论实际情况是被录取还是被拒绝,这看上去很直观,该方法叫做最大似然法(maximum likelihood)

我们要做的是选出实际情况对应概率最大的模型,也就是说通过最大化概率,我们可以选出最优的模型。

概率

file

思考:左侧和右侧哪个模型更好?
当然是右侧的了,因为它对四个点都分类正确了。

我们从概率角度讨论一下为何右侧的模型更好,通过这一讨论,我们将说明与左侧相比,右侧的情况更有可能发生。

计算四个点是实际颜色的概率,也就是红点是红色,蓝点是蓝色。
如果假设点的颜色是独立事件,那么整个图标的概率是四个点概率的积。

file

file

因此可以确定右侧的模型比左侧的更好。

如果我们可以通过一种方式最大化这一概率,我们可以将其一直增大到 0.3024,因此我们的目标就是最大化这一概率,正如前面提到的,这个方法叫做最大似然法。

file

最大化概率

在这节课和这节课的练习中,我们将学习如何运用数学最大化概率。只会用到高中数学知识,准备回忆些以往的知识吧!

如何最大化概率?

如果你还记得,我们之前提到了误差函数,以及最小化误差函数可获得最佳解决方案,这两种有关联性吗?我们可以通过概率获得误差函数吗?最大概率是否就等价于最小化误差函数?也许的确是这样的。

file

最大似然率,我们通过将点的概率相乘,但是概率时数字的乘积,而乘积很难计算,或许计算四个数字的乘积并不那么可怕,但是如果有几千个数据点呢?那么就需要计算几千个数字的乘积,所有数字都在 0 和 1 之间,这个积将会很小,大概是 0.000000 几,肯定要离这些数字远点,并且,如果计算几千个数字的积的过程中改变了其中一个数字,那么乘积就会发生很大的变化,总结下,我们不希望用到乘积来表示这个概率,有什么比乘积更好的办法呢?

乘积不好,但是求和不错,所以,我们求和吧,我们试着将这些积变成和,我们需要找一个将积变成和的函数,是什么函数呢?

练习题

哪个函数会将积变成和?

file

我们选择对数函数 log, 而不是指数函数 exp.

为者常成,行者常至