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

未完待续

时间: 2024-10-14 04:54:17

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

Sigmoid函数与Softmax函数的理解

1. Sigmod 函数 1.1 函数性质以及优点 其实logistic函数也就是经常说的sigmoid函数,它的几何形状也就是一条sigmoid曲线(S型曲线). 其中z是一个线性组合,比如z可以等于:b + w1*x1 + w2*x2.通过代入很大的正数或很小的负数到g(z)函数中可知,其结果趋近于0或1 A logistic function or logistic curve is a common “S” shape (sigmoid curve). 也就是说,sigmoid函数的功能

神经网络为什么要用sigmoid函数?为什么要映射到0-1之间?

(1)对于深度神经网络,中间的隐层的输出必须有一个激活函数.否则多个隐层的作用和没有隐层相同.这个激活函数不一定是sigmoid,常见的有sigmoid.tanh.relu等. (2)对于二分类问题,输出层是sigmoid函数.这是因为sigmoid函数可以把实数域光滑的映射到[0,1]空间.函数值恰好可以解释为属于正类的概率(概率的取值范围是0~1).另外,sigmoid函数单调递增,连续可导,导数形式非常简单,是一个比较合适的函数 (3)对于多分类问题,输出层就必须是softmax函数了.s

机器学习之sigmoid函数

先说一下,ML小白. 这是第一次写个人博客类似东西, 主要来说说看 sigmoid 函数,sigmoid函数是机器学习中的一个比较常用的函数,与之类似的还有softplus和softmax等函数,这里也就不说,先来看看sigmoid函数的表达式的和图像 sigmoid函数表达式如下 这就是sigmoid函数的表达式,这个函数在伯努利分布上非常好用,现在看看他的图像就清楚 可以看到在趋于正无穷或负无穷时,函数趋近平滑状态,sigmoid函数因为输出范围(0,1),所以二分类的概率常常用这个函数,事

ReLU 和sigmoid 函数对比

详细对比请查看:http://www.zhihu.com/question/29021768/answer/43517930 . 激活函数的作用: 是为了增加神经网络模型的非线性.否则你想想,没有激活函数的每层都相当于矩阵相乘.就算你叠加了若干层之后,无非还是个矩阵相乘罢了.所以你没有非线性结构的话,根本就算不上什么神经网络. 2. 为什么ReLU效果好: 重点关注这章6.6节:Piecewise Linear Hidden Unitshttp://www.iro.umontreal.ca/~b

sigmoid函数

这个英文资料有它的非常直观明了的介绍,强烈推荐.http://computing.dcu.ie/~humphrys/Notes/Neural/sigmoid.html ------------------------------------------ Sigmoid函数是一个S型函数. Sigmoid函数的数学公式为: 它是常微分方程 的一个解. Sigmoid函数具有如下基本性质: 定义域为 值域为, 为有界函数 函数在定义域内为连续和光滑函数 函数的导数为 不定积分为, 为常数 由于Sig

S型函数:Sigmoid 函数

Logistic函数或Logistic曲线是一种常见的S形函数,它是皮埃尔·弗朗索瓦·韦吕勒在1844或1845年在研究它与人口增长的关系时命名的.广义Logistic曲线可以模仿一些情况人口增长(P)的S形曲线.起初阶段大致是指数增长:然后随着开始变得饱和,增加变慢:最后,达到成熟时增加停止. Sigmoid函数,即f(x)=1/(1+e-x).神经元的非线性作用函数.(-x是幂数) sigmoid函数是一个良好的阈值函数, 连续,光滑 严格单调 关于(0,0.5)中心对称 对阈值函数 _ 1

Sigmoid函数总结

Sigmoid函数又叫Logistic函数,它在机器学习领域有极其重要的地位. 目录一 函数基本性质二 Sigmoid函数与逻辑回归三 为什么要选择Sigmoid函数LR的需求选择Sigmoid是可以的Sigmoid特殊的性质为什么选择Sigmoid正态分布解释最大熵解释四 总结 一. 函数基本性质首先Sigmoid的公式形式: 函数图像: 函数的基本性质: 1.定义域:(−∞,+∞)(−∞,+∞)2.值域:(−1,1)(−1,1)3.函数在定义域内为连续和光滑函数4.处处可导,导数为:f′(x

如何用softmax和sigmoid来做多类分类和多标签分类

首先,说下多类分类和多标签分类的区别 多标签分类: 一个样本可以属于多个类别(或标签),不同类之间是有关联的,比如一个文本被被划分成“人物”和“体育人物”两个标签.很显然这两个标签不是互斥的,而是有关联的多类分类:  一个样本属于且只属于多个分类中的一个,一个样本只能属于一个类,不同类之间是互斥的,比如一个文本只能被划分成“人物”,或者被划分成“文化”,而不能同时被划分 成“人物”和“文化”,“文化”和“人物”这两个分类就是互斥的 那么,如何用softmax和sigmoid来做多类分类和多标签分

python实现并绘制 sigmoid函数,tanh函数,ReLU函数,PReLU函数

python实现并绘制 sigmoid函数,tanh函数,ReLU函数,PReLU函数 # -*- coding:utf-8 -*- from matplotlib import pyplot as plt import numpy as np import mpl_toolkits.axisartist as axisartist def sigmoid(x): return 1. / (1 + np.exp(-x)) def tanh(x): return (np.exp(x) - np.e