译自: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

未完待续

Softmax与Sigmoid函数的联系的更多相关文章

  1. sigmoid 函数与 softmax 函数

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

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

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

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

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

  4. softmax回归---sigmoid(1)

    介绍softmax之前先讲讲sigmoid: 逻辑回归模型常用的函数:sigmoid函数(用来做二分类) 表达式:f(x)=L/(1+exp-k(x-x0)) 其图像: 本质:将一个真值映射到(0,1 ...

  5. 机器学习之sigmoid函数

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

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

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

  7. Sigmoid函数

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

  8. 笔记+R︱Logistics建模简述(logit值、sigmoid函数)

    本笔记源于CDA-DSC课程,由常国珍老师主讲.该训练营第一期为风控主题,培训内容十分紧凑,非常好,推荐:CDA数据科学家训练营 ---------------------------------- ...

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

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

随机推荐

  1. scala中的Option

    Scala中Option是用来表示一个可选类型 什么是可选? --> 主要是指 有值(Some) 和 无值(None)-->Some和None是Option的子类 val myMap:Ma ...

  2. 『Pushbox 点双联通分量』

    Pushbox Description 周婧涵和她的小伙伴们发明了一个新游戏.游戏名字很准确,但不是特别有 创意.她们称之为"推动箱子在谷仓周围找到正确的位置,不要移动干草"游戏 ...

  3. Entity Framework 学习系列(4) - EF 增删改

    目录 写在前面 一.开发环境 二.创建项目 三.新增 1.单表新增 2.批量新增 3.多表新增 四.编辑 1.先查询,后编辑 2.创建实体,后编辑 五.删除 写在前面 在上一小节中,学习了如何 通过C ...

  4. QQ互联,填写回调时注意事项

    今天在做QQ登录接口的时候,填写回调地址的时候,竟然出现了诡异的事情. 我的回调地址我直接填的域名,也申请通过了.但是在做开发地时候,一直提示这蛋疼的  redirect uri is illegal ...

  5. 分享几套2019年各大公司最新的PHP面试题,几斤几两一试便知

    从面试题发现不足,进而查漏补缺,比通过面试更难得 PHP面试题2019年奇虎360面试题和答案解析 PHP面试题2019年京东工程师面试题和答案解析 PHP面试题2019年新浪工程师面试题和答案解析 ...

  6. .net Redis分布式锁,Dictionary,ConcurrentDictionary 介绍

    1.背景 在计算机世界里,对于锁大家并不陌生,在现代所有的语言中几乎都提供了语言级别锁的实现,为什么我们的程序有时候会这么依赖锁呢?这个问题还是要从计算机的发展说起,随着计算机硬件的不断升级,多核cp ...

  7. 无线安全审计工具FruityWifi初体验

    FruityWIfi是一款有名的无线安全审计的开源工具,其灵感来自于wifipineapple,目前该工具已经更新到2.4.它能够让用户通过web界面来控制和管理模块,十分方便.FriutyWifi最 ...

  8. 达梦DCI

    /************************************************************************/ /* DCI编程实例 */ /********** ...

  9. Java集合学习(10):hashcode() 和 equals()方法

    哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率.在Java的Object类中有一个方法: public native int hashCode(); 根据这个 ...

  10. elasticsearch查询篇索引映射文档数据准备

    elasticsearch查询篇索引映射文档数据准备 我们后面要讲elasticsearch查询,先来准备下索引,映射以及文档: 我们先用Head插件建立索引film,然后建立映射 POST http ...