译自: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. APUE—UNIX文件系统

    在linux系统中——一切都是文件. 1. 磁盘物理结构 磁盘的物理结构如下: 磁盘由很多盘面组成,而盘面上则是由很多同心圆环组成的磁道,每个磁道又被切割成许多扇区.所有磁盘面的同一个磁道构成一个柱面 ...

  2. jQuery浮窗图片到页面中间的代码兼容移动端

    jQuery浮窗图片到页面中间的代码兼容移动端 <!doctype html> <html> <head> <meta charset="utf-8 ...

  3. 关于多个版本的jquery冲突的问题

    关于多个版本的jquery冲突的问题 先加载新的版本jquery 然后使用no confi代码,直接上代码看效果 <script src="https://libs.baidu.com ...

  4. RookeyFrame2.0发布,UI重构

    RookeyFrame2.0在原来1.0的基础上进行了UI的重构,设计了扁平化的样式风格,看起来更清爽,更赏心阅目,由于之前工作比较忙升级比较慢,后续会投入比较多时间来更新维护,同时针对二次开发项目做 ...

  5. window.postMessage()实现跨域消息传递

    window.postMessage() 方法可以安全地实现跨源通信.通常,对于两个不同页面的脚本,只有当执行它们的页面位于具有相同的协议(通常为https), 端口号(443为https的默认值), ...

  6. Winform c# 多线程处理实例

    我们在用C# 开发程序时,经常会使用的多线程,实现多任务的处理.一般常用的方法是新建多个线程,进行处理. 今天我分享一个采用线程池的方式来实现的实例.对有需要的朋友做个借鉴. 实例: Winform ...

  7. 在 Windows 上的 Visual Studio 中使用 Python

    地址:https://docs.microsoft.com/zh-cn/visualstudio/python/tutorial-working-with-python-in-visual-studi ...

  8. moodle3.7上传中文文件,无法引用,图片不显示

    初始安装moodle3.7 上传图片,名称为中文时,无法引用图片,图片不显示.这里采用修改moodle根目录下的config.php文件, 添加了变量$CFG->slasharguments = ...

  9. Python基础12

    jupyter notebook 快捷键 ”Ctrl + / ” 快速注释/撤销注释.注释整行或者整段代码.

  10. Spring MVC处理参数Convert

    Springmvc.xml 配置convert,xml中配置多个相同的泛型时,xml里配置的convert会从上到下挨个执行. <!-- 配置注解驱动,并配置convert --> < ...