softmax的前世今生系列是作者在学习NLP神经网络时,以softmax层为何能对文本进行分类、预测等问题为入手点,顺藤摸瓜梳理了整个神经网络工作的基本原理。其中包含:
1.softmax函数的正推原理,softmax的代数和几何意义,softmax为什么能用作分类预测,softmax链式求导的过程。
2.从数学的角度上研究了神经网络为什么能通过反向传播来训练网络的原理,神经网络的权重更新原理,权重正则化的原理。
3.结合信息熵理论,对二元交叉熵为何适合作为损失函数进行了探讨。
通过对本系列的学习,你可以全面的了解softmax的来龙去脉。如果你尚不了解神经网络,通过本系列的学习,你也可以学到神经网络反向传播的基本原理。学完本系列,基本神经网络原理就算式入门了,毕竟神经网络基本的网络类型就那几种,很多变种,有一通百通的特点。
网上对softmax或是神经网络反向传播知识的整理,基本都通过一个长篇大论堆积出来,一套下来面面俱到但又都不精细。本文将每个环节拆开,分别进行详细介绍,即清晰易懂,又减轻了阅读负担,增加可读性。本文也借鉴了其他作者的内容,并列举引用,希望大家在学习过程中能有所收获
softmax函数常用在解决多分类的问题上,就是如何将一批数据分成多个不同的类。在刚学习softmax函数时,网上资料一上来就是下面这个公式,
于是很费解这个奇怪的公式时从何而来,为什么这样的一个公式就可以做多分类的概率预测函数?让我们来一起研究一下他的数学意义,并将其推导出来。
在探讨多分类问题时,我们首先要引入一个重要的分类模型,就是形如下面这个向量
如果你学过onehot code编码的话就会知道,这个T向量代表一个“东西”有“五种分类”的可能,分别对应向量中的五个位置,哪个位置上的数字是1,就说明这个东西属于哪一类。一个向量中只有一位可以为1,其他位置都为0. 那么显然,上图T对应的“东西”就属于“第三类”,因为只有三号位置上的值为1,其余位置上都为0.
利用这个模型,就很容易的把逻辑上的分类问题转换成数学上的向量问题了。
我们给向量中的每个元素定义一个通项式,
对于T向量中的每个元素来说,表达式就是
有了一个可以对分类问题进行描述的数学模型T,我们再来构建一个可以用于计算分类的概率模型。
结合文章第一部分的例子,对于一个“东西”来说,他有五种分类可能,属于“第一类”的概率为、属于“第二类”的概率为、……属于”第五类“概率为,即:
那么根据常识有:
于是我们可以推出描述一个“东西”属于k种类型中的某一类的概率表达式:
很好理解,一个“东西”肯定属于几种分类中的一种,那么所有分类的概率之和则为1,即:
结合文章第一部分和第二部分的两个例子:
表示的是向量中,第个元素等于1的概率。
因此可以求得期望E:
而向量中只有第三项为1,其余均为0,所以:
即期望值等于概率分布:
此时我们要引入一个指示函数 I 的概念:
这个函数的意义是,当 I 函数括号内表达式为真时,I 函数值为1。当 I 数括号内表达式为假时,I 函数值为0。所以,T 向量中的某个元素的值还可以表示成:
利用这个概念,我们将多项式分布转换为指数分布族表达式,这一堆东西看起来很复杂,其实并不难理解。看不懂也没关系,继续往下看后面的注释
其中:
因此我们得到一个很有用的表达式:
这里补充一下:
多项式分布为什么能转换为指数分布族表达式?我们知道指示函数I 只有两个结果,即0或1,
又因为指数计算有如下基本定义:
所以当y = i时,有:
可以看出二者是等价的关系,这就是多项式分布能转换为指数分布的原理。
参考文献:https://www.cnblogs.com/wallacup/p/6024855.html?utm_source=itdadao&utm_medium=referral
此时我们得到一个指数分布族表达式:
我们对其进行变换,变换过程如下:
对1式,我们对两边同时求和:
根据文中第二部分结论 得出:
因为1式中 ,联立两式的:
得出:
上式就是我们推导出来的softmax函数表达式,即:
根据第二部分我们知道, 表示的是向量中,第个元素等于1的概率。因此softmax计算出的最后结果为:
代表的是一个概率值,对于一个分类问题来说,softmax函数的结果,表示一个“东西”属于每个类别的可能性。这也就是为什么softmax函数适用于解决分类问题的原因。
看完本文,基本对softmax函数的表达式究竟是怎么来的有了一个清楚的认识。
1.我们本意是想构建一个数学模型,用来表示一个已知“东西”属于很多类中的哪一类,于是我们提出了一个T向量。
2.后来我们又延伸了想法,对于一个未知的“东西”,我们怎么判断他属于哪一类事物?于是我们引入了一个概率模型φ。
3.但是向量T和概率φ之间并没有关联关系,于是我们引入了一个“指示函数I”,通过I的特性,将向量T和φ之间构建了一个关系表达式。这个表达式就是我们的softmax函数,它描述了概率和分类之间的关系。
4.那这个表达式为什么叫softmax?为啥不叫hardmax?不叫softmin?或者其他的什么?下一篇文章我们来解析一下这个问题。
传送门:softmax函数名字的由来(代数&几何原理)——softmax前世今生系列(2)
参考文献:
https://www.cnblogs.com/90zeng/p/softmax_regression_introduction.html
https://blog.csdn.net/ITleaks/article/details/80337855
https://blog.csdn.net/hejunqing14/article/details/48980321