LR采用的Sigmoid函数与最大熵(ME) 的关系
LR采用的Sigmoid函数与最大熵(ME) 的关系
从ME到LR
先直接给出最大熵模型的一般形式,后面再给出具体的推导过程。
\[\begin{align*}
P_w(y|x) &= \dfrac{1}{Z_w(x)}\exp\left(\sum_{i=1}^{n}w_if_i(x,y)\right)\\
\mbox{where } Z_w(x) &= \sum_y\exp\left(\sum_{i=1}^nw_if_i(x,y)\right)
\end{align*}\]
下面我们只考虑二分类问题,则有原式
\[\begin{align*}
P_w(y|X) &= \dfrac{\exp(W_0X)}{\exp(W_0X) + \exp(W_1X)}\\
&= \dfrac{1}{1 + \exp((W1-W0)X)}\\
&= \dfrac{1}{1 + \exp(WX)}
\end{align*}\]
这特么不就是用于二分类的Sigmoid函数么,也就是说LR采用Sigmoid函数除了因为Sigmoid函数具有一些漂亮的数学性质,比如\(f=sigmoid(x)\),那么\(f‘(x) =(1-f(x))*f(x)\),更重要的是这样找出来的模型是熵最大的。那么为什么要熵最大?最大熵原理是概率模型学习的一个准则,最大熵原理认为,学习概率模型时,在所有可能的概率模型(分布)中,熵最大的模型是最好的模型。
最大熵模型推导
最大熵模型是一个带约束的最优化问题
\[\begin{align*}
E_{\tilde{P}}(f) &= E_{P}(f)\\
\mbox{where } E_{\tilde{P}}(f) &= \sum_{x,y}\tilde{P}(x,y)f(x,y)\\
\mbox{and } E_{P}(f) &= \sum_{x,y}\tilde{P}(x)P(y|x)f(x,y)
\end{align*}\]
目标函数为
\[
H(P) = -\sum_{x,y}\tilde{P}(x)P(y|x)\log P(y|x)
\]
写成更加正式的形式如下
\[\begin{align*}
\min_{P\in \mathcal{C}}& -H(P) = \sum_{x, y}\tilde{P}(x)P(y|x)\log P(y|x)\\
\mbox{s.t. }& E_{P}(f) - E_{\tilde{P}}(f) = 0 \\
&\sum_yP(y|x) = 1
\end{align*}\]
引入拉格朗日乘子有
\[\begin{align*}
L(P,w) &=-H(P) + w_0\left(1 - \sum_yP(y|x)\right) + \sum_{i=1}^nw_i(E_{\tilde{p}}(f_i)-E_P(f_i))\\
&= \sum_{x,y}\tilde{P}(x)P(y|x)\log P(y|x) + w_0\left(1 - \sum_y P(y|x)\right)\\
&+ \sum_{i=1}^nw_i\left(\sum_{x,y}\tilde{P}(x,y)f_i(x,y) - \sum_{x,y}\tilde{P}(x)P(y|x)f_i(x,y)\right)
\end{align*}\]
由原始问题的极小极大问题转为极大极小的对偶问题有
\[\begin{align*}
\dfrac{\partial L(P,w)}{\partial P(y|x)} &= \sum_{x,y}\tilde{P}(x)(\log P(y|x) + 1) - \sum_yw_0 -\sum_{x,y}\left(\tilde{P}(x)\sum_{i=1}^nw_if_i(x,y)\right)\\
&= \sum_{x,y}\tilde{P}(x)\left(\log P(y|x)+1-w_0-\sum_{i=1}^nw_if_i(x,y)\right)
\end{align*}\]
令其为0,解得
\[ P(y|x) = \exp\left(\sum_{i=1}^nw_if_i(x,y) +w_0 - 1\right) = \dfrac{\exp(\sum_{i=1}^nw_if_i(x,y))}{\exp(1-w_0)}\]
由于\[\sum_yP(y|x)=1\]有
\[ \exp(1-w_0) = \sum_y\exp\left(\sum_{i=1}^nw_if_i(x,y)\right)\]
即\[\begin{align*}
P_w(y|x) &= \dfrac{1}{Z_w(x)}\exp\left(\sum_{i=1}^nw_if_i(x,y)\right)\\
\mbox{where } Z_w(x) &= \sum_y\exp\left(\sum_{i=1}^nw_if_i(x,y)\right)
\end{align*}\]
看到这个形式的模型是不是突然就有一种似曾相识的感觉?对的,除了LR、ME以外,CRF也是这种形式的。这种模型有一个统一的的名称,对数线性模型。
LR采用的Sigmoid函数与最大熵(ME) 的关系的更多相关文章
- Logstic回归采用sigmoid函数的原因
##Logstic回归采用sigmoid函数的原因(sigmoid函数能表示二项分布概率的原因) sigmoid函数: . 其中z ...
- sigmoid 函数与 softmax 函数
sigmoid 函数与 softmax 函数 1. sigmoid 函数 sigmoid 函数又称:logistic函数,逻辑斯谛函数.其几何形状即为一条sigmoid曲线. lo ...
- 深度学习:Sigmoid函数与损失函数求导
1.sigmoid函数 sigmoid函数,也就是s型曲线函数,如下: 函数: 导数: 上面是我们常见的形式,虽然知道这样的形式,也知道计算流程,不够感觉并不太直观,下面来分析一下. 1.1 ...
- 交叉熵代价函数——当我们用sigmoid函数作为神经元的激活函数时,最好使用交叉熵代价函数来替代方差代价函数,以避免训练过程太慢
交叉熵代价函数 machine learning算法中用得很多的交叉熵代价函数. 1.从方差代价函数说起 代价函数经常用方差代价函数(即采用均方误差MSE),比如对于一个神经元(单输入单输出,sigm ...
- 机器学习之sigmoid函数
先说一下,ML小白. 这是第一次写个人博客类似东西, 主要来说说看 sigmoid 函数,sigmoid函数是机器学习中的一个比较常用的函数,与之类似的还有softplus和softmax等函数, ...
- Softmax与Sigmoid函数的联系
译自:http://willwolf.io/2017/04/19/deriving-the-softmax-from-first-principles/ 本文的原始目标是探索softmax函数与sig ...
- Logistic 回归(sigmoid函数,手机的评价,梯度上升,批处理梯度,随机梯度,从疝气病症预测病马的死亡率
(手机的颜色,大小,用户体验来加权统计总体的值)极大似然估计MLE 1.Logistic回归 Logistic regression (逻辑回归),是一种分类方法,用于二分类问题(即输出只有两种).如 ...
- Sigmoid函数
Sigmoid函数是一个S型函数. Sigmoid函数的数学公式为: 它是常微分方程 的一个解. Sigmoid函数具有如下基本性质: 定义域为 值域为, 为有界函数 函数在定义域内为连续和光滑函数 ...
随机推荐
- JavaScript笔记6-数组新方法
七.ECMAScript5关于数组的新方法 1.forEach():遍历数组,并为每个元素调用传入的函数; 举例: var a = [1,2,3]; var sum = 0; //传一个 ...
- form表单转换为Json字符串数据
https://github.com/marioizquierdo/jquery.serializeJSON 效果图 加载使用 <script type="text/javascrip ...
- Java transient关键字使用
1. transient的作用及其使用方法 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的 ...
- 记一次RabbitMq 安装和配置坑
记一次RabbitMq 安装和配置坑 正常情况下安装 先安装erl ,在安装rabbitmq 这个在windows下的安装没什么技巧,按照默认一路下一步就ok.安装好后可以到cmd测试是否安装好. 测 ...
- UVA11478 Halum (差分约束)
每次操作是独立的,而且顺序并不影响,作用在同一个结点上的d可以叠加,所以令x(u) = sigma(dui). 最后就是要确定所有的x(u). 因为m越大,满足条件的边就越少,二分答案m. 对于一条边 ...
- mysq--索引模块
问题:为什么要 使用索引? --->快速查询数据,但是仅仅这么回答,就是不专业的!!! 应该要分为数据量少的时候,不适用索引,走全表扫描的话,查询速率也是很快的 数据量大的话,使用索引,查询速率 ...
- GTA5(侠盗猎车5)中文版破解版
)中文版破解版迅雷下载地址(使用迅雷新建任务填上地址): magnet:?xt=urn:btih:65F16B126D8A656E4FC825DE204EBFAF04B070FC
- shell时间变量拼接问题
shell时间变量拼接问题 例1 ABC=ABC_`date –date='yesterday' "+%Y%m%d"`
- java中求几个字符串的最大公共子串 使用了比较器Comparator
package com.swift; import java.util.ArrayList; import java.util.Collections; import java.util.Compar ...
- drawRect - 谈画图功能的内存优化
作者介绍 作者:毕洪博 ( @毕洪博 ),iOS 开发者,pop Art 追随者.现在正在鼓捣 AVFoundation,博客 bihongbo.com, 欢迎大家找我讨论技术. 作者已将本文在微信公 ...