zoukankan      html  css  js  c++  java
  • 最大熵与玻尔兹曼分布

    熵的概念:
    熵是描述一个系统的混乱程度的度量,最基础的定义是:

    $S={{k}_{b}}ln Omega $ 

    kb是热力统计学里的波尔茨曼常量,单位 焦耳/K,为了简便,在信息学里直接取值1 J/K。

    $S=sumlimits_{k}{{{S}_{k}}}=-sumlimits_{k}{{{p}_{k}}log ({{p}_{k}})}$ 的定义是从上面的式子推导而来的,可证明二者等价,这里先暂时不做论述。

    该公式描述了熵与构成系统的所有变量的可能的排列组合个数的关联。取底数=2,可得熵等于使用二进制编码一个系统的所有可能出现的情况所需的比特数。(注:越复杂混乱的变量,需要越多的信息比特来描述,从直觉上也很好理解)

    这里温度单位K代表开尔文,而温度的定义是 单位能量转化为熵的效率:$ ext{T}=frac{dQ}{dS}$ 这里内能是Q,熵是S,T是温度。

    当一个封闭系统内,存在若干个可以相互交换能量的体系,且能量守恒时,两个体系之间的温度趋于相等。因为如果体系之间温度不相等,同样数额的能量在不同的效率(温度)转化为熵时,就存在熵差$Delta {{ ext{S}}_{1}} e Delta {{ ext{S}}_{2}}$ ,所以全局熵 S = S1 + S2就存在变化。根据热力学第二定律,熵趋于增加,所以两个体系会自动交换能量,使两者温度相等,这时候达到热平衡(thermal equilibrium),系统熵S到达最大值。

    以一个多分类机器学习问题为例子,N个样本{(x1, y1), (x2, y2), ......(xN, yN)}在K个分类里{T1, T2, ... TK},y是长度为K的 one hot 形式的向量。

    下面要讲述正则系统的构建方法。这里定义正则系统构建的逻辑并不是特别严谨,严谨的构建参见下一篇文章

    因为构建逻辑比较复杂,所以这里就先偷换概念简化一下,有些名词概念这里也没仔细解释,主要目的还是为了展示数学推导部分。

    将上述分类问题转化为封闭系统意味着要做出以下假设:

    1.  系统内的体系数,既分类数K的数量固定不变。
    2. 每一个体系拥有的能量总和等于系统总能量,是固定不变的。这个必要假设之所以成立,是因为每样本只能拥有有限的能量,否则可能出现样本没有唯一稳定态(最低能量,能量为负)的情况,不符合常理。
    3. 样本归属于所有体系的概率总和为1,概率有限且被归一化。

    有了封闭系统的假设之后,我们开始考虑一个虚拟场景:

    假如输入是一个二值化的28x28的黑白图片,输出是K=10的向量,代表10种分类的能量,所以样本可能的排列组合一共有Ω=28x28x2x10=15680种。

    往封闭系统内放入Ω个样本,重复很多次,则可以得到10种样本的经验概率分布。

    每个样本携带很小的能量E(x),能量大小取决于样本输入值x, 当一个样本xi归属的分类yi从Ta转移到Tb时,体系Ta里的能量也随之被转移到Tb,能量转移的值等于E(xi)。

    这里封闭体系不涉及压强变化或是体积变化做功,所以内能U就等于能量E,两者符号可互换。

    现在开始构建正则系统:

    定义微正则系统:一种(x, y)的排列组合的样本

    定义巨正则系统:一个分类k下,拥有Nk个微正则系统以及Uk内能

    在没有任何先验知识的情况下,所有微正则系统出现的概率相等,既都为 p(x, y) = 1/Ωsys,这样是最公平没有偏见的做法。

    对于分类问题而言,我们并不关心p(x, y),而是关心p(y|x) 。所以一个巨正则系统下的微正则系统个数,正比于它的概率。$p{}_{k}propto {{Omega }_{k}}$

    同时需要使系统的熵最大化,既最大化${{k}_{b}}ln {Omega}_{sys}$,等价于最大化${Omega}_{sys} ext{=}prodlimits_{ ext{k}}{{{Omega }_{k}}}$ 

     

    因为熵${S}_{k}$与微正则数${Omega}_{k}$在公式上的关联,以及温度将熵变与能量变${{ ext{T}}_{ ext{k}}} ext{=}frac{ ext{d}{{ ext{U}}_{ ext{k}}}}{ ext{d}{{ ext{S}}_{ ext{k}}}}$关联了起来,所以可以将一个体系的微正则数与它的能量关联:

    ${{Omega }_{k}}={Omega}({{E}_{k}})$ 

     将体系的划分考虑为某个分类k,以及其他分类,可得:

     ${{Omega }_{ ext{sys}}} ext{=}Omega ({{E}_{k}})Omega ({{U}_{sys}}-{{E}_{k}})$

    该式描述了整个封闭系统sys的微正则数与系统内某个巨正则体系k的微正则数的关系。只有这样的关系才能满足所有巨正则体系能量之和等于封闭系统的能量,同时巨正则体系的熵之和等于封闭系统的熵。

     热力学第二定律最大化封闭系统的熵,得到:

    $frac{partial {{Omega }_{sys}}}{partial {{E}_{k}}}=0=frac{partial }{partial {{E}_{1}}}left( {{Omega }_{1}}{{Omega }_{2}} ight)={{Omega }_{2}}frac{partial {{Omega }_{1}}}{partial {{E}_{1}}}+{{Omega }_{1}}frac{partial {{E}_{2}}}{partial {{E}_{1}}}frac{partial {{Omega }_{2}}}{partial {{E}_{2}}}$ 

    其中

    ${{E}_{1}}={{E}_{k}}$ ,${{E}_{2}}={{U}_{ ext{sys}}}-E_{k}^{{}}$ ,$frac{partial {{E}_{2}}}{partial {{E}_{1}}}=-1$

    所以

     $frac{1}{Omega ({{ ext{E}}_{1}})}frac{partial Omega ({{ ext{E}}_{1}})}{partial {{ ext{E}}_{1}}}=frac{1}{Omega ({{ ext{E}}_{2}})}frac{partial Omega ({{ ext{E}}_{2}})}{partial {{ ext{E}}_{2}}}$

    左右两边相互独立而相等,所以

    [frac{1}{Omega ({{ ext{E}}_{k}})}frac{partial Omega ({{ ext{E}}_{k}})}{partial {{ ext{E}}_{k}}}=const ext{=}frac{1}{{{k}_{b}}{{T}_{equi}}}] 

     Tequi是热平衡时(熵最大后稳定态)的温度,kb是玻尔兹曼常数。

    解上面微分函数得:

    $Omega ({{E}_{k}})propto {{e}^{-{{E}_{k}}/{{k}_{b}}T}}$ 

    构建正则系统时的假设定义了一个体系k出现的概率正比于它的微正则个数,所以归一化后得到

    ${{ ext{p}}_{k}} ext{=}frac{1}{Z}{{e}^{-{{E}_{k}}/{{k}_{b}}T}}$ 

    配分函数$ ext{Z}=sumlimits_{k}{{{e}^{-{{E}_{k}}/{{k}_{b}}T}}}$ 

    由此得到玻尔兹曼分布。

     可以看出玻尔兹曼分布于softmax的形式基本上一模一样。除了softmax,机器学习中的受限玻尔兹曼机Restricted Boltzmann Machine也具有类似的数学形式。

    实际上两者都属于能量模型,下一篇文章将仔细总结能量模型和波尔茨曼分布的关系。

  • 相关阅读:
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    微信小程序TodoList
    C语言88案例-找出数列中的最大值和最小值
    C语言88案例-使用指针的指针输出字符串
  • 原文地址:https://www.cnblogs.com/ws12345/p/7874802.html
Copyright © 2011-2022 走看看