最大似然估计法

        参考资料:

        3.1. 线性回归 — 动手学深度学习 2.0.0 documentation (d2l.ai)

        3.4. softmax回归 — 动手学深度学习 2.0.0 documentation (d2l.ai)

        总是听到别人说最大似然、极大似然估计,自己查过,但事后总是忘记到底是什么意思,还是记录一下,加深印象。

1、最大似然

        首先了解一下正太分布,若随机变量 x 具有均值 u 和方差  \sigma2(标准差\sigma),其正态分布概率密度函数如下:

p(x) = \frac{1}{\sqrt{2 \pi \sigma^2}} \exp\left(-\frac{1}{2 \sigma^2} (x - \mu)^2\right).

        现在使用该函数作为损失函数计算,计算的函数为y'=ax+b,真实的函数为y。现在可以写出通过给定的x观察到特定y的似然:

P(y \mid \mathbf{x}) = \frac{1}{\sqrt{2 \pi \sigma^2}} \exp\left(-\frac{1}{2 \sigma^2} (y - ax- b)^2\right).

        根据最大似然估计法,参数 a 和 b 的最优值是使整个数据集的似然最大的值:

通俗的说,就是当y'=y时,需要计算的函数与真实的函数最接近,函数有最大值,所以最大似然估计法就是求P(Y=y|x)的最大值。

P(\mathbf y \mid \mathbf X) = \prod_{i=1}^{n} p(y^{(i)}|\mathbf{x}^{(i)}).

 ————————————————————————————分界线————————————————————————————

2、对数似然

        由于历史原因,优化通常是说最小化而不是最大化。 我们可以改为最小化负对数似然−log⁡P(y∣X)。

        由此可以得到最小化负对数似然的数学公式:

-\log P(\mathbf y \mid \mathbf X) = \sum_{i=1}^n-\log P(\mathbf{y}^{(i)}, {\mathbf{x}}^{(i)})

3、求损失:

        ①为了让预测的输出总是非负,且概率总和为1,所以我们写为(相当于先写成指数除以指数和的形式,输出从o1变成了概率y1^):

\hat{y}_1, \hat{y}_2, \hat{y}_3 = \text{softmax}(o_1, o_2, o_3),

其中

\hat{y}_1 = \frac{ \exp(o_1)}{\sum_{i=1}^3 \exp(o_i)},\quad \hat{y}_2 = \frac{ \exp(o_2)}{\sum_{i=1}^3 \exp(o_i)},\quad \hat{y}_3 = \frac{ \exp(o_3)}{\sum_{i=1}^3 \exp(o_i)}.

( 也写成:\hat{\mathbf{y}} = \mathrm{softmax}(\mathbf{o}),其中 \hat{y}_j = \frac{\exp(o_j)}{\sum_k \exp(o_k)}\operatorname*{argmax}_j \hat y_j = \operatorname*{argmax}_j o_j. )

       softmax回归对样本i分类的矢量计算表达式为:

\begin{aligned} \boldsymbol{o}^{(i)} &= \boldsymbol{x}^{(i)} \boldsymbol{W} + \boldsymbol{b},\\ \boldsymbol{\hat{y}}^{(i)} &= \text{softmax}(\boldsymbol{o}^{(i)}). \end{aligned}

        ②在图像分类的例子中,在计算损失时,我们其实并不需要预测概率完全等于标签概率,只要其中一个预测值比其他预测值都大就行了。使用平方损失则过于严格,例如y1^(i)=y2^(i)=0.2要比y1^(i)=y2^(i)=0.4的损失要小很多,虽然两者都有同样正确的分类预测结果。

        所以此处我们使用交叉熵(cross entropy)衡量两个概率分布差异:

H\left(\boldsymbol y^{(i)}, \boldsymbol {\hat y}^{(i)}\right ) = -\sum_{j=1}^q y_j^{(i)} \log \hat y_j^{(i)},

        假设训练数据集的样本数为n,交叉熵损失函数(cross entropy loss)定义为(Θ代表模型参数):

 \ell(\boldsymbol{\Theta}) = \frac{1}{n} \sum_{i=1}^n H\left(\boldsymbol y^{(i)}, \boldsymbol {\hat y}^{(i)}\right )

(  如果样本只有一个标签,则可写成\ell(\boldsymbol{\Theta}) = -(1/n) \sum_{i=1}^n \log \hat y_{y^{(i)}}^{(i)}  )

        ③再求损失函数(由于y是一个独热编码向量,只需要考虑其为1时的值):

 \begin{aligned} l(\mathbf{y}, \hat{\mathbf{y}}) &= - \sum_{j=1}^q y_j \log \frac{\exp(o_j)}{\sum_{k=1}^q \exp(o_k)} \\ &= \sum_{j=1}^q y_j \log \sum_{k=1}^q \exp(o_k) - \sum_{j=1}^q y_j o_j\\ &= \log \sum_{k=1}^q \exp(o_k) - \sum_{j=1}^q y_j o_j. \end{aligned}

        对损失函数求导:

 \partial_{o_j} l(\mathbf{y}, \hat{\mathbf{y}}) = \frac{\exp(o_j)}{\sum_{k=1}^q \exp(o_k)} - y_j = \mathrm{softmax}(\mathbf{o})_j - y_j.

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值