机器学习中的熵一般包括信息熵,条件熵,交叉熵几种
信息熵
为什么信息熵中有log?
参考博客:https://www.cnblogs.com/kyrieng/p/8694705.html
自信息\(I(x)\)
- 一条信息的信息量大小和它的不确定性有直接的关系, 信息量的度量就等于不确定性的多少
- 考虑一个离散随机变量\(x\),随机变量的信息量由概率分布\(p(x)\)确定
- 我们的目标是找到一个函数\(I(x) = f(p(x))\)(自变量是\(p(x)\),因为随机变量的信息量由概率分布确定),能够衡量\(x\)信息内容的多少
- 且必须是概率分布\(p(x)\)的单调函数?
- 现在考虑同时出现两个相互独立的随机变量\(x\)和\(y\),那么他们的信息量和应该是
$$I(x,y) = I(x)+I(y) = f(p(x)) + f(p(y))$$- 同时他们的联合概率分布为
$$p(x,y) = p(x)p(y)$$
- 同时他们的联合概率分布为
- 由上面的两个表达式可以知道\(f(\cdot)\)应该是一个对数相关的函数,因为
$$log_{a}(MN) = log_{a}M + log_{a}N$$ - 所以我们可以考虑把原始信息量定义为
$$I(x) = f(p(x)) = -log p(x)$$- 其中负号是用来保证信息量是正数或者零
- log 函数基的选择是任意的(信息论中基常常选择为2,因此信息的单位为比特bits;而机器学习中基常常选择为自然常数,因此单位常常被称为奈特nats)
- \(I(x)\)也被称为随机变量\(x\)的自信息(self-information),描述的是随机变量的某个事件发生所带来的信息量
信息熵\(H(x)\)
- 现在假设一个发送者想传送一个随机变量的值给接收者
- 那么在这个过程中,他们传输的平均信息量可以通过求 \(I(x)=−logp(x)\)关于概率分布\(p(x)\)的期望得到:
$$
\begin{align}
H(x) &= \sum_{x}p(x)(-logp(x))
&= -\sum_{x}p(x)logp(x)
&= -\sum_{i=1}^{n}p(x_{i})logp(x_{i})
\end{align}
$$ - \(H(X)\)就被称为随机变量\(x\)的熵,它是表示随机变量不确定的度量,是对所有可能发生的事件产生的信息量的期望
- 从公式可得,随机变量的取值个数越多,状态数也就越多,信息熵就越大,混乱程度就越大,当随机分布为均匀分布时,熵最大,且
$$0 ≤ H(X) ≤ logn$$- 证明
$$p(1)+p(2)+\dots+p(n)=1$$ - 目标函数
$$f(p(1),p(2),\dots,p(n))=-(p(1)logp(1)+p(2)logp(2)+\dots+p(n)logp(n))$$ - 约束条件
$$g(p(1),p(2),\dots,p(n),\lambda)=p(1)+p(2)+\dots+p(n)-1=0$$ - 定义拉格朗日函数
$$
L(p(1),p(2),\dots,p(n),\lambda)=-(p(1)logp(1)+p(2)logp(2)+\dots+p(n)logp(n))+\lambda(p(1)+p(2)+\dots+p(n)-1)
$$ - 对\(p(i)\)和\(\lambda\)求偏导,并令其等于0得
$$p(1)=p(2)=\dots=p(n)=\displaystyle\frac{1}{n}$$ - 带入目标函数得
$$
\begin{align}
f(\displaystyle\frac{1}{n},\frac{1}{n},\dots,\frac{1}{n}) &= -(\frac{1}{n}log\frac{1}{n} + \frac{1}{n}log\frac{1}{n} + \dots + \frac{1}{n}log\frac{1}{n})
& = -log(\frac{1}{n})
& = logn
\end{align}
$$
- 证明