前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >logistic regression一点理解为什么用sigmoid函数?为什么要用交互熵做损失函数?

logistic regression一点理解为什么用sigmoid函数?为什么要用交互熵做损失函数?

作者头像
sladesal
发布2018-08-27 11:02:07
1K0
发布2018-08-27 11:02:07
举报
文章被收录于专栏:机器学习之旅机器学习之旅

关于logistic regression一些常见问题,整理出来,方便大家应对各种坑爹的面试官。

为什么用sigmoid函数?

the odds of experiencing an event

如果我们想预测每天股票涨多少,可以假设线性模型

f(x)=w_{0}+w_{1}x_{1}+w_{2}x_{2}+...+w_{m}x_{m}
f(x)=w_{0}+w_{1}x_{1}+w_{2}x_{2}+...+w_{m}x_{m}

,然后通过MSE进行模型更新;但是如果我们想要预测每天是否涨这样就不行了,因为f(x)对于的结果要么是1要么是0(要么涨要么不涨)。

要解决这个问题,我们先理解一个概念the odds of experiencing an event: 假设我们认为股票涨的概率为p,对于伯努利分布而言,不涨的概率即为1-p。那么我们构造了p/(1-p),就是the odds of experiencing an event胜率,

ln(\frac{p}{1-p})
ln(\frac{p}{1-p})

即为对数胜率。当我们坚信它会涨的情况下,p趋向1,

ln(\frac{p}{1-p})
ln(\frac{p}{1-p})

趋向正无穷;当我们坚信它不会涨的情况下,p趋向0,

ln(\frac{p}{1-p})
ln(\frac{p}{1-p})

趋向负无穷。这就又转化为可以用线性模型预测的问题了:

ln(\frac{p}{1-p}) = g(x) = w_{0}+w_{1}x_{1}+w_{2}x_{2}+...+w_{m}x_{m}
ln(\frac{p}{1-p}) = g(x) = w_{0}+w_{1}x_{1}+w_{2}x_{2}+...+w_{m}x_{m}

ln(\frac{p}{1-p}) = g(x)
ln(\frac{p}{1-p}) = g(x)

展开就可以得到:

p = \frac{1}{1+e^{-g(x)}}
p = \frac{1}{1+e^{-g(x)}}

,这就解释了为什么说logistic regression是线性模型,因为它的决策边界是线性的;这就解释了为什么想到了要用sigmoid作为压缩函数。

exponential model

就这一种办法么?当然不是: 假设第i个特征对涨的贡献是

w_{1i}
w_{1i}

,则记数据点(

x_1, \ldots, x_n)
x_1, \ldots, x_n)

属于涨的概率为

w_{11}x_1 + w_{12}x_2 + \ldots + w_{1n}x_n
w_{11}x_1 + w_{12}x_2 + \ldots + w_{1n}x_n

,正比于

\exp(w_{11}x_1 + w_{12}x_2 + \ldots + w_{1n}x_n)
\exp(w_{11}x_1 + w_{12}x_2 + \ldots + w_{1n}x_n)

假设第i个特征对不涨的贡献是

w_{0i}
w_{0i}

,则记数据点(

x_1, \ldots, x_n)
x_1, \ldots, x_n)

属于不涨的概率为

w_{01}x_1 + w_{02}x_2 + \ldots + w_{0n}x_n
w_{01}x_1 + w_{02}x_2 + \ldots + w_{0n}x_n

,正比于

\exp(w_{01}x_1 + w_{02}x_2 + \ldots + w_{0n}x_n)
\exp(w_{01}x_1 + w_{02}x_2 + \ldots + w_{0n}x_n)

所以,令涨=1则有:

p(y=1)=\frac{\exp(w_{11}x_1 + w_{12}x_2 + \ldots + w_{1n}x_n)}{\exp(w_{11}x_1 + w_{12}x_2 + \ldots + w_{1n}x_n)+\exp(w_{01}x_1 + w_{02}x_2 + \ldots + w_{0n}x_n)}
p(y=1)=\frac{\exp(w_{11}x_1 + w_{12}x_2 + \ldots + w_{1n}x_n)}{\exp(w_{11}x_1 + w_{12}x_2 + \ldots + w_{1n}x_n)+\exp(w_{01}x_1 + w_{02}x_2 + \ldots + w_{0n}x_n)}

,上下同除以

\exp(w_{11}x_1 + w_{12}x_2 + \ldots + w_{1n}x_n)
\exp(w_{11}x_1 + w_{12}x_2 + \ldots + w_{1n}x_n)

且令

w_{0i}-w_{1i} = w_{2i}
w_{0i}-w_{1i} = w_{2i}

,则依旧得到了

p(y=1)= \frac{1}{1+e^{-h(w_{2i}x)}}
p(y=1)= \frac{1}{1+e^{-h(w_{2i}x)}}

的sigmoid结果。

exponential family

如果大家对数学有点点研究的话,exponential family指出:如果一类分布(a class of distribution)属于exponential family,那么它能写成如下形式:

p(y;\eta )=b(y)exp(\eta ^{T}T(y)-a(\eta ))
p(y;\eta )=b(y)exp(\eta ^{T}T(y)-a(\eta ))

伯努利分布可以写成:

p(y;\Theta ) = \Theta ^{y}(1-\Theta )^{1-y}
p(y;\Theta ) = \Theta ^{y}(1-\Theta )^{1-y}
p(y;\Theta ) =exp(ylog( \Theta) +(1-y)log(1-\Theta ))
p(y;\Theta ) =exp(ylog( \Theta) +(1-y)log(1-\Theta ))

把后面的

(1-y)log(1-\Theta )
(1-y)log(1-\Theta )

展开,就有了sigmoid形式出现了:

p(y;\Theta ) =exp(ylog( \Theta/(1-\Theta)) +log(1-\Theta ))
p(y;\Theta ) =exp(ylog( \Theta/(1-\Theta)) +log(1-\Theta ))

对应上方的exponential family的形式,

\eta =log( \Theta/(1-\Theta))
\eta =log( \Theta/(1-\Theta))

,这不又回到了the odds of experiencing an event胜率的问题了嘛。


为什么要用交互熵做损失函数?

极大似然角度:

我们假设预测结果服从伯努利分布,那么可以把一个case预测结果写成:

p(y_{i}) = \Theta ^{y_{i}}(1-\Theta )^{1-y_{i}}
p(y_{i}) = \Theta ^{y_{i}}(1-\Theta )^{1-y_{i}}

其中

\Theta
\Theta

为给定前提

p(y_{i}=1|x_{i}) =1
p(y_{i}=1|x_{i}) =1

y_{i}=1
y_{i}=1

概率值

要使当前参数下所有事情发生的概率最大,联合分布为各边缘分布的乘积,得到:

L(w)=\prod (h(x_{i}))^{y_{i}}(1-h(x_{i}))^{1-y_{i}}
L(w)=\prod (h(x_{i}))^{y_{i}}(1-h(x_{i}))^{1-y_{i}}

其中

h(x) = w_{0}+w_{1}x_{1}+w_{2}x_{2}+...+w_{m}x_{m}
h(x) = w_{0}+w_{1}x_{1}+w_{2}x_{2}+...+w_{m}x_{m}

取log后方便计算:

ln(L(w))=\sum (y_{i}lnh(x_{i})+(1-y_{i})ln(1-x_{i})))
ln(L(w))=\sum (y_{i}lnh(x_{i})+(1-y_{i})ln(1-x_{i})))

这个就是我们最初的交互熵的形式。

信息熵角度:

用来衡量信息量大小,熵越大,越不稳定,信息量越大。

S(x) = -\sum_{i}P(x_{i})logP(x_{i})
S(x) = -\sum_{i}P(x_{i})logP(x_{i})

KL散度

用来衡量两份数据的相似程度,KL散度越大,越不相似。

\begin{equation*} D_{KL}(A||B) = \sum_{i}P_{A}(x_i) log\bigg(\frac{P_{A}(x_i)}{P_{B}(x_i)} \bigg) = \sum_{i}P_{A}(x_i)log(P_{A}(x_i ))- P_{A}(x_i)log(P_{B}(x_i)) \end{equation*}
\begin{equation*} D_{KL}(A||B) = \sum_{i}P_{A}(x_i) log\bigg(\frac{P_{A}(x_i)}{P_{B}(x_i)} \bigg) = \sum_{i}P_{A}(x_i)log(P_{A}(x_i ))- P_{A}(x_i)log(P_{B}(x_i)) \end{equation*}

从公式上,我们就可以看出:

D_{KL}(A||B) + S(A)=H(A,B)
D_{KL}(A||B) + S(A)=H(A,B)

其实很好理解的,对应训练数据traindata分布,和未知的真实数据分布越一致越好;同理,模型预测的分布,和训练数据traindata分布也是越一致越好,所以用KL散度来度量就是一个不错的方法。

至于为什么不直接最小化

D_{KL}(A||B)
D_{KL}(A||B)

而是选择了最小化H(A,B),我是觉得就和交互熵求导前面加上1/2一样,为了简化计算量,本质上是一致的。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.08.14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么用sigmoid函数?
    • the odds of experiencing an event
      • exponential model
        • exponential family
        • 为什么要用交互熵做损失函数?
          • 极大似然角度:
            • 信息熵角度:
              • KL散度
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档