Multionoulli分布(范畴分布)与softmax

一、Multionoulli分布

Multionoulli分布(或范畴分布)指在具有k个不同状态的单个离散型随机变量上的分布,其中k是一个有限值。Multionoulli分布,由向量P \in\[0,1\]^{k-1}参数化,其中每一个分量p_i表示第i个状态的概率。最后第k个状态的概率可以通过1-\mathbf {1}^Tp给出,\mathbf {1}^Tp\le1 。这里\mathbf {1}^Tp,其实应该为\sum_1^{k-1}p_i 即除第k个状态的其他状态概率之和。

Multionoulli分布经常用来表示对象分类的分布,很少假设状态1具有数值1之类的。因此,不需要Multionoulli分布的随机变量的期望和方差。

注:Multionoulli分布是多项式分布的一个特例。多项式分布是\{0,...,n\}^k中的向量分布,用于表示对Multionoulli分布采样n次时k个类别中的每一个被访问的次数。很多地方使用“多项式分布”而实际上说的是Multionoulli分布,但并没有说是对于n=1的情况。

参考:深度学习(Ian GoodFellow) 40页

二、softmax(用于Multionoulli输出分布的softmax单元)

当想要表示具有n个可能取值的离散型随机变量的分布时,可以使用softmax函数。softmax函数最常用作分类器的输出,来表示n个不同类别的概率分布。

对于有n个值的离散变量,\hat{y}_i=P(y=i|x)。不仅要求每个\hat{y}_i在0到1之间,而且\sum \hat{y}_i=1 。

首先,线性层预测了未归一化的对数概率:z = W^Th + b  ,其中z_i = log\hat{P}(y=i|x)。softmax函数然后对z指数化和归一化来获得需要的\hat{y}。最终,softmax函数的形式为:softmax(z)_i=\frac{exp(z_i)}{\sum _jexp(z_j)} 

我们想要最大化log\hat{P}(y=i;z)=log(softmax(z)_i);即log(softmax(z)_i) = z_i - log\sum exp(z_j),当最大化对数似然时,第一项鼓励z_i被推高,第二项则鼓励所有的z被压低。为了对第二项log\sum exp(z_j)有一个直观的理解,注意到这一项可以大致近似认为max_jz_j。这种近似是基于对任何明显小于max_jz_jz_kexp(z_k)都是不重要的。

从这种近似中得到的直觉是,负对数似然代价函数总是强烈地惩罚最活跃的不正确的预测。如果正确答案已经具有了softmax的最大输入,那么-z_j项和log\sum exp(z_j)\approx max_jz_j=z_i项将大致抵消。这个样本对于整体训练代价贡献很小,这个代价主要由其他未被正确分类的样本产生。

参考:深度学习(Ian GoodFellow) 115页

三、softmax求导(这里只是针对单个样本的情况)

多分类问题,我们通常使用交叉熵损失函数Loss = -\sum_k t_i\cdot lnP(y=i),其中目标类的t_i是1(真实值),其余类为0(one-hot编码的形式);也可以写成Loss = -\sum_k t_i\cdot lny_it_i表示真实值,y_i是求出的softmax值。

当预测第i个时,此时可认为t_i=1,则Loss_i =-ln y_i

接着,对loss求导。

根据softmax的定义: y_i=\frac{e^i}{\sum_j e^j};且有 \frac{e^i}{\sum_j e^j}=1-\frac{\sum_{j\neq i} e^j}{\sum_j e^j}

Loss_i = -lny_i

对其求导:

\frac{\partial L_i}{\partial _i} =-\frac{\partial ln\frac{e^i}{\sum e^j}}{\partial _i} \\ =-\frac{1}{\frac{e^i}{\sum e^j}} \cdot \frac{\partial \frac{e^i}{\sum e^j} }{\partial _i} \\=-\frac{1}{\frac{e^i}{\sum e^j}} \cdot \frac{\partial \frac{\sum _{_i \neq j}e^j}{\sum e^j} }{\partial _i} \\ =-\frac{1}{\frac{e^i}{\sum e^j}} \cdot \sum _{_i \neq j}e^j \cdot \frac{\partial \frac{1}{\sum e^j} }{\partial _i} \\=-\frac{1}{\frac{e^i}{\sum e^j}} \cdot \sum _{_i \neq j}e^j \cdot-\frac{1}{(\sum e^j)^2} \cdot \frac{\partial e^i}{\partial _i} \\=\frac{\sum _{i \neq j}e^j}{\sum e^j}=1 - \frac{e^j}{\sum e^j} = 1-y_i

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值