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) 的关系的更多相关文章

  1. Logstic回归采用sigmoid函数的原因

    ##Logstic回归采用sigmoid函数的原因(sigmoid函数能表示二项分布概率的原因) sigmoid函数: ![](http://images2017.cnblogs.com/blog/1 ...

  2. Sigmoid函数与Softmax函数的理解

    1. Sigmod 函数 1.1 函数性质以及优点 其实logistic函数也就是经常说的sigmoid函数,它的几何形状也就是一条sigmoid曲线(S型曲线).               其中z ...

  3. sigmoid 函数与 softmax 函数

    sigmoid 函数与 softmax 函数     1. sigmoid 函数       sigmoid 函数又称:logistic函数,逻辑斯谛函数.其几何形状即为一条sigmoid曲线. lo ...

  4. 深度学习:Sigmoid函数与损失函数求导

    1.sigmoid函数 ​ sigmoid函数,也就是s型曲线函数,如下: 函数: 导数: ​ 上面是我们常见的形式,虽然知道这样的形式,也知道计算流程,不够感觉并不太直观,下面来分析一下. 1.1 ...

  5. 交叉熵代价函数——当我们用sigmoid函数作为神经元的激活函数时,最好使用交叉熵代价函数来替代方差代价函数,以避免训练过程太慢

    交叉熵代价函数 machine learning算法中用得很多的交叉熵代价函数. 1.从方差代价函数说起 代价函数经常用方差代价函数(即采用均方误差MSE),比如对于一个神经元(单输入单输出,sigm ...

  6. 机器学习之sigmoid函数

      先说一下,ML小白. 这是第一次写个人博客类似东西, 主要来说说看 sigmoid 函数,sigmoid函数是机器学习中的一个比较常用的函数,与之类似的还有softplus和softmax等函数, ...

  7. Softmax与Sigmoid函数的联系

    译自:http://willwolf.io/2017/04/19/deriving-the-softmax-from-first-principles/ 本文的原始目标是探索softmax函数与sig ...

  8. Logistic 回归(sigmoid函数,手机的评价,梯度上升,批处理梯度,随机梯度,从疝气病症预测病马的死亡率

    (手机的颜色,大小,用户体验来加权统计总体的值)极大似然估计MLE 1.Logistic回归 Logistic regression (逻辑回归),是一种分类方法,用于二分类问题(即输出只有两种).如 ...

  9. Sigmoid函数

    Sigmoid函数是一个S型函数. Sigmoid函数的数学公式为: 它是常微分方程 的一个解. Sigmoid函数具有如下基本性质: 定义域为 值域为, 为有界函数 函数在定义域内为连续和光滑函数 ...

随机推荐

  1. 造成socket.error: [Errno 99] Cannot assign requested

    socket.error: [Errno 99] Cannot assign requested address 网上你去搜,基本都是说bind的时候,地址已经被用了,都是胡扯.地址被用报的错误应该是 ...

  2. iOS 应用架构 (二)

    iOS 客户端应用架构看似简单,但实际上要考虑的事情不少.本文作者将以系列文章的形式来回答 iOS 应用架构中的种种问题,本文是其中的第二篇,主要讲 View 层的组织和调用方案.上篇主要讲 View ...

  3. 收集的20个非常有用的Java程序片段

    下面是20个非常有用的Java程序片段,希望能对你有用. 1. 字符串有整型的相互转换 String a = String.valueOf(2); //integer to numeric strin ...

  4. Android商城开发系列(七)—— 使用RecyclerView展示首页数据

    前面我们讲到了使用OkHttp请求网络和FastJson解析数据了,接下来我们就开始把获取到的数据通过数据适配器展示在页面上了.Adapter是用来帮助填充数据的中间桥梁,简单点说就是:将各种数据以合 ...

  5. java面试题(杨晓峰)---第一讲谈谈你对java平台的理解

    本人总结: 面向对象(封装,继承,多态) 平台无关性(jvm运行,class文件) 语言(泛型,lambda) 类库(集合,并发,网络,io/nio) jre(java运行环境,JVM,类库) JDK ...

  6. 日常-acm-三位数反转

    输入一个三位数,分理出它的百位,十位和个位,反转后输出. 样例输入: 127 样例输出: 721 tips:注意最后一位为0的情况,如360,输出063 #include <iostream&g ...

  7. WINDOWS-基础:LPTSTR

    1. LPTSTR解释 与char*等价,表示普通字符/字符串变量,指向字符/字符串的指针. LP:  长指针(long pointer). T:   win32环境中有一个_T宏,用来标识字符是否采 ...

  8. nfs-ganesha使用

    一 nfs-ganesha在centos7上安装 yum -y install centos-release-gluster yum install -y nfs-ganesha.x86_64yum ...

  9. lua 使用递归查找键值

    function cc.exports.findValueByTbl(tbl,key)--递归方法,用于查找tbl中对应的键值 for k,v in pairs(tbl) do if k == key ...

  10. Find the Longest Word in a String-freecodecamp算法题目

    Find the Longest Word in a String(找出最长单词) 要求 在句子中找出最长的单词,并返回它的长度 函数的返回值应该是一个数字. 思路 用.split(' ')将句子分隔 ...