似然函数
总是被论文中各种各样奇怪的损失函数折磨,干脆就抽半天专门看看这东西
似然函数
似然函数是一种关于模型中参数的函数。“似然性likehood”和概率词义相近,但统计学上是完全不同的含义:
-
概率用于在已知参数的情况下,预测接下来的观测结果
-
似然性用于根据一些观测结果,估计给定模型的参数可能值
似然函数的本质就是衡量在某个参数下,整体的估计和真实的情况一样的概率,越大代表越相近。
负对数似然
先从熟悉的两点分布说起,对应二分类问题,其分布律为:
P(X=x∣p)=px(1−p)1−x={p if x=11−p if x=0
P(X=x \mid p)=p^{x}(1-p)^{1-x}= \begin{cases}p & \text { if } x=1 \\ 1-p & \text { if } x=0\end{cases}
P(X=x∣p)=px(1−p)1−x={p1−p if x=1 if x=0
对于多分类问题,只需将其扩展到多项分布,假设X有 KKK 种可能的取值:
P(X=x∣p1,p2,…,pk)=∏i=1Kpixi∑i=1Kpi=∑i=1Kxi=1,xi∈{0,1}
\begin{aligned}
&P\left(X=x \mid p_{1}, p_{2}, \ldots, p_{k}\right)=\prod_{i=1}^{K} p_{i}^{x_{i}} \\
&\sum_{i=1}^{K} p_{i}=\sum_{i=1}^{K} x_{i}=1, x_{i} \in\{0,1\}
\end{aligned}
P(X=x∣p1,p2,…,pk)=i=1∏Kpixii=1∑Kpi=i=1∑Kxi=1,xi∈{0,1}
其中, pip_{i}pi 表示X属于各类别的概率, xxx 是用one_hot向量表示的类别。
现在假设分类器输出了一组预测概率 ypred =(p1,p2,…,pk)y_{\text {pred }}=\left(p_{1}, p_{2}, \ldots, p_{k}\right)ypred =(p1,p2,…,pk) ,我们想知道: 如果以这组概率 为多项分布的参数,观测到对应 ytrue =(x1,x2,…,xk)y_{\text {true }}=\left(x_{1}, x_{2}, \ldots, x_{k}\right)ytrue =(x1,x2,…,xk) 的概率是多少。如果观测到 ytrue y_{\text {true }}ytrue 的 概率大,表示模型预测的精准。这就是似然函数:
L(ytrue ∣ypred )=∏i=1Kypred (i)ytrue (i)
L\left(y_{\text {true }} \mid y_{\text {pred }}\right)=\prod_{i=1}^{K} y_{\text {pred }}(i)^{y_{\text {true }}(i)}
L(ytrue ∣ypred )=i=1∏Kypred (i)ytrue (i)
在预测序列为ypredy_{pred}ypred情况下,真实序列ytruey_{true}ytrue出现的可能性越大,表示ypredy_{pred}ypred预测的越靠谱,或者说,真实序列ytruey_{true}ytrue出现时,ypredy_{pred}ypred表示的是其预测的靠谱程度
我们要做的,就是在ypredy_{pred}ypred的取值范围内,**找到能使得L(ytrue ∣ypred )L\left(y_{\text {true }} \mid y_{\text {pred }}\right)L(ytrue ∣ypred ) 能够取得最大值(就是在这个ypredy_{pred}ypred下,正确序列出现的概率最高)的 ypred^\hat{y_{pred}}ypred^,**由于ypred^\hat{y_{pred}}ypred^使得似然函数取值达到最大,因此ypred^\hat{y_{pred}}ypred^,就是参数ypredy_{pred}ypred的极大似然估计
未知参数ypredy_{pred}ypred取估计值ypred^\hat{y_{pred}}ypred^,时,获取的到真实序列ytruey_{true}ytrue的可能性比其他任何情况下都大
如何获得极大似然估计?
问题其实转换为一个求最值的问题,可以对似然函数求导,使得导数为0的ypredy_{pred}ypred的取值,就是我们要找的极大似然估计ypred^\hat{y_{pred}}ypred^
但①连乘函数求导比较复杂②由于函数 g(x)g(x)g(x) 和 ln(g(x))\ln (g(x))ln(g(x)) 的单调性是保持一致的。
因此我 们可以选择把似然函数 L(x)L(x)L(x) 转化为 ln(L(x))\ln (L(x))ln(L(x)) ,这样连乘就变成了连加:
L(ytrue ∣ypred )=∑i=1Kytrue (i)log(ypred (i))
L\left(y_{\text {true }} \mid y_{\text {pred }}\right)=\sum_{i=1}^{K} y_{\text {true }}(i) \log \left(y_{\text {pred }}(i)\right)
L(ytrue ∣ypred )=i=1∑Kytrue (i)log(ypred (i))
此时再对他进行求导就变得容易了,如果方程有唯一解,且是极大值点,那么我们就求得了极大似 然估计值。
负对数似然函数和交叉熵损失函数
图像为 −log(L(ytrue ∣ypred ))-\log(L\left(y_{\text {true }} \mid y_{\text {pred }}\right))−log(L(ytrue ∣ypred )),损失函数的目的是使得ypredy_{pred}ypred预测的跟ytruey_{true}ytrue越来越接近,
用负对数似然的原理来解释,就是L(ytrue ∣ypred )L\left(y_{\text {true }} \mid y_{\text {pred }}\right)L(ytrue ∣ypred )取值尽可能大,(但不用找到最大似然估计)
用损失函数的思想,最小化 −log(L(ytrue ∣ypred ))-\log(L\left(y_{\text {true }} \mid y_{\text {pred }}\right))−log(L(ytrue ∣ypred ))的结果是,使得LLL越来越接近1,即使得ypredy_{pred}ypred预测的跟ytruey_{true}ytrue越来越接近
最小化交叉熵函数的本质就是对数似然函数的最大化。
通常机器学习都是最小化损失函数的,所以我们给 log(L)\log (L)log(L) 加上负号,变成负对数似然。最小化 负对数似然等价于最大化似然函数,即交叉熵:
CrossEntropy(ytrue ,ypred )=−log(L)=−∑i=1Kytrue (i)log(ypred (i))
\operatorname{CrossEntropy}\left(y_{\text {true }}, y_{\text {pred }}\right)=-\log (L)=-\sum_{i=1}^{K} y_{\text {true }}(i) \log \left(y_{\text {pred }}(i)\right)
CrossEntropy(ytrue ,ypred )=−log(L)=−i=1∑Kytrue (i)log(ypred (i))
参考资料
https://www.zhihu.com/question/54082000
https://zhuanlan.zhihu.com/p/268171298
https://blog.youkuaiyun.com/silver1225/article/details/88914652
本文介绍了似然函数的概念及其在统计学中的区别,强调了它在模型参数估计中的作用。通过二分类和多分类问题的例子,解释了似然函数如何衡量模型预测的准确性,并探讨了极大似然估计的求解过程。负对数似然函数和交叉熵损失函数被用来简化优化目标,使模型预测更接近实际观察结果。最小化负对数似然等价于最大化似然函数,从而实现模型的优化。
1990

被折叠的 条评论
为什么被折叠?



