zoukankan      html  css  js  c++  java
  • Softmax与Sigmoid函数的联系

    译自:http://willwolf.io/2017/04/19/deriving-the-softmax-from-first-principles/

    本文的原始目标是探索softmax函数与sigmoid函数的关系。事实上,两者的关系看起来已经是遥不可及:一个是分子中有指数!一个有求和!一个分母中有1!。当然,最重要的是两个的名称不一样。

    推导一下,很快就可以意识到,两者的关系可以回溯到更为泛化的条件慨率原理的建模框架(back out into a more general modeling framework motivated by the conditional probability axiom)。本文首先探索了sigmoid函数是一种特殊的softmax函数,以及各自在Gibbs distribution, factor products和概率图模型方面的理论支撑。接下来,我们继续展示概框架如何自然的扩展到canonical model class,如softmax回归,条件随机场(Conditional Random Fields),朴素贝叶斯(Naive Bayes)以及隐马尔科夫模型(Hidden Markov Model)。

    目标(Our Goal)

    下图是一个预测模型(predictive model),其中菱形表示接收输入,并产生输出。输入向量,有3种可能的输出:。模型的目标在于在输入的条件下产生各种输出的概率:。概率是位于闭区间[0,1]的一个实数值。

    输入对输出的影响(How does the input affect the output?)

    每个输入是4个数的列表(输入向量是4维),每一维度对各个可能的输出影响程度不同,这里我们称它为权重(weight)。4个输入数据乘以3个输出,代表了12个不同的权重。可能如下表所示:

    生成输出(Producing an Output)

    给定一个输入向量,我们的模型将使用上述权重来生成输出。这里假设每个输入元素的影响是加性的(The effect of each input element will be additive.)。至于原因留待后续解释。

    这些求和公式会对模型的输出结果产生贡献。最大的数将会胜出。例如,若上式得到的结果是,则我们的模型会得到结论:最大可能产生c。

    转换为概率(Converting to Probabilities)

    之前说过,我们的目标在于获得概率:。其中为黑体,为了表示任意的输入向量。当给定一个具体的输入向量时,我们用花体表示,这样我们的目标可以更精确的表示为:。至此,我们已经获得。为了将这些值转换成一个概率,也就是闭区间[0,1]之间的一个实数值,我们只需要用这些值的和去除原始值。 最后我们得到一个合理的概率分布,所有值的和相加为1.

    如果我们得到的值是负数怎么办?(What if our values are negative?)

    如果其中的一个未经正则化的概率的值为负数,例如,,那么所有的都会被破坏。该值对应的概率值也不会是一个合理的概率, 因为它不能落在[0,1]闭区间之内。

    为了保证所有没有正则化的概率值为正数,我们必须用一个函数对这些值进行处理,以保证能够产生一个严格的正实数。简单来说,就是指数函数,我们选额欧拉数e作为底。这种选择的原理有待后续解释。

    这样我们正则化后的概率,也就是合法的概率,如下式所示:

    泛化表示为:,也就是softmax函数。

    与Sigmoid函数的联系(Relationship to the sigmoid)

    如果说Softmax可以得到在多于两个()不同的输出上的一个合理的概率分布,那么sigmoid可以得到针对两种输出()的一个合理的概率分布。也就是说,sigmoid仅仅是softmax的一个特例。用定义来表示,假设模型只能产生两种不同的输出:,给定输入,我们可以写出sigmoid函数如下:

    然而,值得注意的是,我们只需要计算一种结果的产生概率,因为另外一种结果的产生概率可以由概率分布的性质得到:。接下来,我们对的产生概率的表示进行扩展:

    然后,对该分式的分子和分母都同时除以,得到:

    最后,我们可以用该式代入求另一种结果的产生概率的式子中得到:

    该等式是欠定的(underdetermined),由于等式中有多于1个的未知变量。如此说来,我们的系统可以有无穷多组解。因此,我们对上式进行简单的修改,直接固定其中一个值。例如:

    这就是sigmoid函数,最终,我们得到:

    为什么这些未正则化概率值是求和得到(影响是加性的)?(Why is the unnormalized probability a summation?)

    我们理所当然的认为canonical线性组合的语义是。但是为什么先求和?

    为了回答这个问题, 我们先复述一下我们的目标:给定输入,预测各种可能结果的产生概率,即。接下来,我们重新看一下条件概率的定义式:

    发现这个式子很难解释,我们对这个式子重新变化一下,以或则某些直觉:

    得到的信息是:同时观测到A与B的值的概率,也就是A与B的联合概率,等于观测到A的概率乘以给定A观测到B的概率。

    例如,假设生一个女孩的概率是0.55,而女孩喜欢数学的概率是0.88,因此,我们得到:

    现在,我们对原始的模型输出,利用条件概率的定义式,进行重写:

    值得注意的是,这里采用指数函数,以保证将每个未正则的概率值转换为一个严格概率值。技术上来讲,这个数字称为,因为可能大于1,所以并非一个严格的概率,我们需要引入另一个项到我们的等式链中:

    例如,我们的算术等式:

    等式左边的项:

    分子是一个严格的联合概率分布。

    分母为观测到任意一个x值的概率,为1

    等式右边的项:

    分子是一个严格的正的未经归一化的概率值

    分母是某个常数,以保证和为1。这里归一化项称为partition function。

    知道了这些,我们可以对softmax等式中的分子进一步分解:

    Lemma:若我们的输出函数softmax函数通过指数函数得到一个多个可能结果上的合理的条件概率分布,那么下述结论肯定成立:该softmax函数的输入()必须是原始输入元素的加权求和模型。

    上述Lemma成立的前提是我们首先接收这样的事实:。从而引出来Gibbs distribution。

    (二)Gibbs Distribution

    Gibbs Distribution给出了一个结果集合上的未归一化的联合概率分布,类似于,定义如下:

    其中定义了一个factor的集合。

    Factor本质为满足下面两个条件的函数:(1)将随机变量作为输入,所有输入随机变量构成的列表称为scope;(2)针对每个可能的随机变量的组合值(即scope的叉积空间中的点),返回一个值。例如,scope为的factor可能如下所示:

     

    (三)Softmax regression

    未完待续

  • 相关阅读:
    MyBatis 学习笔记
    JavaEE路径陷阱之getRealPath
    Java路径问题最终解决方案—可定位所有资源的相对路径寻址
    Hibernate4.3.10通过slf4j使用log4j
    Hibernate关联关系映射
    SpringMVC 学习笔记
    Spring 学习笔记
    Hibernate 学习笔记
    Struts2 学习笔记
    vue element tree组件,根据不同的状态显示不同的字体颜色
  • 原文地址:https://www.cnblogs.com/shuzirank/p/6766787.html
Copyright © 2011-2022 走看看