简单总结一下机器学习最常见的两个函数,一个是logistic函数,另一个是softmax函数,若有不足之处,希望大家可以帮忙指正。本文首先分别介绍logistic函数和softmax函数的定义和应用,然后针对两者的联系和区别进行了总结。

1. logistic函数

1.1 logistic函数定义

  引用wiki百科的定义:

  A logistic function or logistic curve is a common "S" shape (sigmoid curve).

  其实逻辑斯谛函数也就是经常说的sigmoid函数,它的几何形状也就是一条sigmoid曲线。

  logistic函数的公式形式如下:

$f(x) = \frac{L}{1+e^{-k(x-x_{0})}}$

  其中,$x_{0}$表示了函数曲线的中心(sigmoid midpoint),$k$是曲线的坡度。

  logistic的几何形状如下所示:

1.2 logistic函数的应用

  logistic函数本身在众多领域中都有很多应用,我们只谈统计学和机器学习领域。

  logistic函数在统计学和机器学习领域应用最为广泛或者最为人熟知的肯定是逻辑斯谛回归模型了。逻辑斯谛回归(Logistic Regression,简称LR)作为一种对数线性模型(log-linear model)被广泛地应用于分类和回归场景中。此外,logistic函数也是神经网络最为常用的激活函数,即sigmoid函数。

2. softmax函数

2.1 softmax函数的定义

  同样,我们贴一下wiki百科对softmax函数的定义:

  softmax is a generalization of logistic function that "squashes"(maps) a $K$-dimensional vector $z$ of arbitrary real values to a $K$-dimensional vector $\sigma(z)$ of real values in the range (0, 1) that add up to 1.

  这句话既表明了softmax函数与logistic函数的关系,也同时阐述了softmax函数的本质就是将一个$K$维的任意实数向量压缩(映射)成另一个$K$维的实数向量,其中向量中的每个元素取值都介于(0,1)之间。

  softmax函数形式如下:

$\sigma(z)_{j}=\frac{e^{z_{j}}}{\sum^{K}_{k=1}e^{z_{k}}}$

  其中$j = 1,2, ... , K$。

2.2 sotfmax函数的应用

  softmax函数经常用在神经网络的最后一层,作为输出层,进行多分类。此外,softmax在增强学习领域内,softmax经常被用作将某个值转化为激活概率,这类情况下,softmax的公式如下:

$P_{t}(a)=\frac{e^{\frac{q_{t}(a)}{T}}}{\sum^{n}_{i=1}e^{\frac{q_{t}(i)}{T}}}$

  其中,$T$被称为是温度参数(temperature parameter)。当T很大时,即趋于正无穷时,所有的激活值对应的激活概率趋近于相同(激活概率差异性较小);而当T很低时,即趋于0时,不同的激活值对应的激活概率差异也就越大。这个结论很重要,Hinton在2015年的一篇paper中重点阐释了如何根据温度参数来soften神经网络的输出,从而提出了distillation的思想和方法。

3. logistic和softmax的关系

  1)logistic具体针对的是二分类问题,而softmax解决的是多分类问题,因此从这个角度也可以理解logistic函数是softmax函数的一个特例。

  这里借鉴UFLDL教程中的推导,具体的推导过程如下:

  当分类数为2时,softmax回归的假设函数表示如下:

  利用softmax回归参数冗余的特点,从两个参数向量中都减去向量$\theta_{1}$,得到:

  最后,用$\theta^{'}$来表示$\theta_{2}-\theta_{1}$,上述公式可以表示为softmax回归器预测其中一个类别的概率为

$\frac{1}{1+e^{\theta^{'T}x^{i}}}$

  另一个类别的概率为

$1-\frac{1}{1+e^{\theta^{'T}x^{i}}}$

  这与logistic回归是完全一致的。

  2)从概率角度来看logistic和softmax函数的区别。

  softmax建模使用的分布是多项式分布,而logistic则基于伯努利分布,这方面具体的解释可以参考Andrew Ng的讲义去理解。

  3)softmax回归和多个logistic回归的关系。

  有了解的同学可能知道多个logistic回归通过叠加也同样可以实现多分类的效果,那么多个logistic回归和softmax一样不一样呢?

  softmax回归进行的多分类,类与类之间是互斥的,即一个输入只能被归为一类;

  多个logistic回归进行多分类,输出的类别并不是互斥的,即"苹果"这个词语既属于"水果"类也属于"3C"类别。

4. 参考内容

  [1] wiki百科:logistic函数

  [2] wiki百科:softmax函数

  [3] UFLDL教程之softmax回归

[Machine Learning] logistic函数和softmax函数的更多相关文章

  1. 机器学习---逻辑回归(二)(Machine Learning Logistic Regression II)

    在<机器学习---逻辑回归(一)(Machine Learning Logistic Regression I)>一文中,我们讨论了如何用逻辑回归解决二分类问题以及逻辑回归算法的本质.现在 ...

  2. sigmoid 函数与 softmax 函数

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

  3. [机器学习入门篇]-Logistic函数与Softmax函数

    1.Logistic函数 在维基百科中,对logistic函数这样介绍道: A logistic function or logistic curve is a common "S" ...

  4. 机器学习---逻辑回归(一)(Machine Learning Logistic Regression I)

    逻辑回归(Logistic Regression)是一种经典的线性分类算法.逻辑回归虽然叫回归,但是其模型是用来分类的. 让我们先从最简单的二分类问题开始.给定特征向量x=([x1,x2,...,xn ...

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

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

  6. [Machine learning] Logistic regression

    1. Variable definitions m : training examples' count \(X\) : design matrix. each row of \(X\) is a t ...

  7. How do I learn machine learning?

    https://www.quora.com/How-do-I-learn-machine-learning-1?redirected_qid=6578644   How Can I Learn X? ...

  8. Logistic回归Cost函数和J(θ)的推导----Andrew Ng【machine learning】公开课

    最近翻Peter Harrington的<机器学习实战>,看到Logistic回归那一章有点小的疑问. 作者在简单介绍Logistic回归的原理后,立即给出了梯度上升算法的code:从算法 ...

  9. Machine Learning/Introducing Logistic Function

    Machine Learning/Introducing Logistic Function 打算写点关于Machine Learning的东西, 正好也在cnBlogs上新开了这个博客, 也就更新在 ...

随机推荐

  1. x01.MagicCube: 简单操作

    看最强大脑,发现魔方还是比较好玩的,便买了一个,对照七步还原法,居然也能成功还原. 为什么不写一个魔方程序呢?在网上找了找,略作修改,进行简单操作,还是不错的,其操作代码如下: protected o ...

  2. Oracle创建用户设置权限

    (转:http://www.cnblogs.com/yangy608/archive/2011/08/22/2148893.html) create user TEST identified by & ...

  3. java中的匿名内部类总结

    原文地址: http://www.cnblogs.com/nerxious/archive/2013/01/25/2876489.html 匿名内部类也就是没有名字的内部类 正因为没有名字,所以匿名内 ...

  4. [LeetCode] Longest Valid Parentheses 最长有效括号

    Given a string containing just the characters '(' and ')', find the length of the longest valid (wel ...

  5. .NET高性能框架Chloe.ORM-完美支持MySql

    扯淡 这是一款轻量.高效的.NET C#数据库访问框架(ORM).查询接口借鉴 Linq(但不支持 Linq).借助 lambda 表达式,可以完全用面向对象的方式就能轻松执行多表连接查询.分组查询. ...

  6. C#工程引用自定义目录的DLL

    在App.config里配置: <configuration> <runtime> <assemblyBinding xmlns="urn:schemas-mi ...

  7. 修改/etc/profile和/etc/environment导致图形界面无法登陆的问题

    在使用ubuntu开发时,往往要修改PATH变量,有时会通过修改/etc/profile和/etc/environment来修改默认的PATH变量,但是一旦出错,很容易造成无法登陆进入图形界面的问题. ...

  8. 【编码】_C#中编码名称(Name)与页面标识(CodePage)的关系_编码gb2312的获取

    在写C#代码时,发现VS提供没有直接提供gb2312的中文编码, 所以,需要找到对应编码名称的codepage来调用想要的编码方式. 下面是微软编程提供的所有编码信息,包括编码名称,编码代码页标识符, ...

  9. 【USACO 3.2】Magic Squares

    题意 4*2个格子分别为 1234 8765 的魔板有3种操作,A:上下两排互换,B:最后一列放到第一列前面,C:中间四个顺时针旋转1格. 现在给出目标状态,找出最少步数可从原始状态到达目标状态,且输 ...

  10. js中this关键字测试集锦

    参考:阮一峰<javascript的this用法>及<JS中this关键字详解> this是Javascript语言的一个关键字它代表函数运行时,自动生成的一个内部对象,只能在 ...