白话清晰讲解神经网络,适合想搞清神经网络本质的学者--神经网络之softmax(1)

14 篇文章 3 订阅
12 篇文章 0 订阅

转载https://forecast.blog.csdn.net/article/details/95812491?spm=1001.2014.3001.5502

通过对本系列的学习,你可以全面的了解softmax的来龙去脉。如果你尚不了解神经网络,通过本系列的学习,你也可以学到神经网络反向传播的基本原理。学完本系列,基本神经网络原理就算式入门了,毕竟神经网络基本的网络类型就那几种,很多变种,有一通百通的特点。

网上对softmax或是神经网络反向传播知识的整理,基本都通过一个长篇大论堆积出来,一套下来面面俱到但又都不精细。本文将每个环节拆开,分别进行详细介绍,即清晰易懂,又减轻了阅读负担,增加可读性。本文也借鉴了其他作者的内容,并列举引用,希望大家在学习过程中能有所收获

本章内容提要:

softmax函数常用在解决多分类的问题上,就是如何将一批数据分成多个不同的类。在刚学习softmax函数时,网上资料一上来就是下面这个公式,

                                                                                   \Phi =\frac{^{e^{\eta _{i}}}}{\sum_{j=1}^{k}e^{\eta _{j}}}

于是很费解这个奇怪的公式时从何而来,为什么这样的一个公式就可以做多分类的概率预测函数?让我们来一起研究一下他的数学意义,并将其推导出来。

一、定义一个分类模型

在探讨多分类问题时,我们首先要引入一个重要的分类模型,就是形如下面这个向量

                                                                                     T=\begin{vmatrix} 0\\ 0\\ 1\\ 0\\ 0 \end{vmatrix}

如果你学过onehot code编码的话就会知道,这个T向量代表一个“东西”有“五种分类”的可能,分别对应向量中的五个位置,哪个位置上的数字是1,就说明这个东西属于哪一类。一个向量中只有一位可以为1,其他位置都为0. 那么显然,上图T对应的“东西”就属于“第三类”,因为只有三号位置上的值为1,其余位置上都为0.

利用这个模型,就很容易的把逻辑上的分类问题转换成数学上的向量问题了。

我们给向量中的每个元素定义一个通项式,

                                                                                           T_{(y)i}

对于T向量中的每个元素来说,表达式就是

                                                                                     \left\{\begin{matrix} T_{(y)1} = 0\\ T_{(y)2} = 0\\ T_{(y)3} = 1\\ T_{(y)4} = 0\\ T_{(y)5} = 0 \end{matrix}\right.

二、定义一个概率模型

有了一个可以对分类问题进行描述的数学模型T,我们再来构建一个可以用于计算分类的概率模型。

结合文章第一部分的例子,对于一个“东西”来说,他有五种分类可能,属于“第一类”的概率为\Phi _{1}、属于“第二类”的概率为\Phi _{2}、……属于”第五类“概率为\Phi _{5},即:

                                                     P( y = i ) = \Phi _{i}

那么根据常识有:

                                                     \Phi _{1}+\Phi _{2}+\Phi _{3}+\Phi _{4}+\Phi _{5} = 1

于是我们可以推出描述一个“东西”属于k种类型中的某一类的概率表达式:

                                                     \sum_{i=1}^{k}\Phi _{i} = \Phi _{1} + \Phi _{2} + \Phi _{3} +......+ \Phi _{k-1} + \Phi _{k} =1 

很好理解,一个“东西”肯定属于几种分类中的一种,那么所有分类的概率之和则为1,即:

                                                     \sum_{i=1}^{k}\Phi _{i} = 1

结合文章第一部分和第二部分的两个例子:

                                                     \Phi _{i}表示的是向量T中,第T_{(y)i}个元素等于1的概率。

因此可以求得期望E:

                                                     E[T_{(y)i}] = T_{(y)1}*\Phi _{1} + T_{(y)2}*\Phi _{2} + T_{(y)3}*\Phi _{3} + T_{(y)4}*\Phi _{4} + T_{(y)5}*\Phi _{5}

而向量T中只有第三项为1,其余均为0,所以:

                                                     E[T_{(y)i}] = 0*\Phi _{1} + 0*\Phi _{2} + 1*\Phi _{3} + 0*\Phi _{4} + 0*\Phi _{5} = \Phi _{3}

即期望值等于概率分布:

                                                     E[T_{(y)i}] = P(y=i) = \Phi _{i}

 

三、引入一个指示函数概念

此时我们要引入一个指示函数 I  的概念:

                                                            

这个函数的意义是,当 I 函数括号内表达式为真时,I 函数值为1。当 I 数括号内表达式为假时,I 函数值为0。所以,T 向量中的某个元素T_{(y)i}的值还可以表示成:

 

                                                               
即当y=i时:

                                                                I(y=i) = I(i = i) = 1  

利用这个概念,我们将多项式分布转换为指数分布族表达式,这一堆东西看起来很复杂,其实并不难理解。看不懂也没关系,继续往下看后面的注释

                                       

其中:

                                                       \eta = \begin{bmatrix} \eta _{i} = log_{e}\frac{\Phi _{1}}{\Phi _{k}}\\ \eta _{i} = log_{e}\frac{\Phi _{2}}{\Phi _{k}}\\ .\\ .\\ .\\ \eta _{i} = log_{e}\frac{\Phi _{k-1}}{\Phi _{k}} \end{bmatrix}

因此我们得到一个很有用的表达式:

                                                      \eta _{i} = log_{e}\frac{\Phi _{i}}{\Phi _{k}}

这里补充一下:

多项式分布为什么能转换为指数分布族表达式?我们知道指示函数I 只有两个结果,即0或1,

                                                         I = \left\{\begin{matrix} 0\\ 1 \end{matrix}\right.

又因为指数计算有如下基本定义:

                                                                \left\{\begin{matrix} n^{0} = 1\\ n^{1} = n \end{matrix}\right.

所以当y = i时,有:

                                                     P(y,\Phi ) = \Phi _{1}^{I\left \{ y = 1 \right \}} * \Phi _{2}^{I\left \{ y = 2 \right \}} * ..... *\Phi _{i}^{I\left \{ y = i \right \}} *...... * \Phi _{k}^{I\left \{ y = k \right \}}

                                                     P(y,\Phi ) = \Phi _{1}^{0} * \Phi _{2}^{0} *...* \Phi _{i}^{1} * ......* \Phi _{i}^{0}

                                                     P(y,\Phi ) = 1 * 1 *...* \Phi _{i}^{1} * ......* 1 = \Phi _{i}

可以看出二者是等价的关系,这就是多项式分布能转换为指数分布的原理。

参考文献:https://www.cnblogs.com/wallacup/p/6024855.html?utm_source=itdadao&utm_medium=referral

四、通过概率模型和分类模型推导softmax表达式

此时我们得到一个指数分布族表达式:

                                                                        \eta _{i} = log_{e}\frac{\Phi _{i}}{\Phi _{k}}

我们对其进行变换,变换过程如下:

                                                          

对1式,我们对两边同时求和:

                                                          

根据文中第二部分结论 \sum_{i=1}^{k}\Phi _{i} = 1 得出:

                                                          

因为1式中 \Phi _{k} * e^{\eta _{i}} = \Phi _{i} ,联立两式的:

                                                                        \left\{\begin{matrix} \Phi _{k} = \frac{\Phi _{i}}{e^{\eta _{i}}}\\ \Phi _{k} = \frac{1}{\sum_{j=1}^{k}e^{\eta _{j}}} \end{matrix}\right.

得出:

                                                                           \Phi _{i} = \frac{e^{\eta _{i}}}{\sum_{j=1}^{k}e^{\eta _{j}}}

上式就是我们推导出来的softmax函数表达式,即:

                                                                        softmax = \frac{e^{\eta _{i}}}{\sum_{j=1}^{k}e^{\eta _{j}}}

根据第二部分我们知道, \Phi _{i}表示的是向量T中,第T_{(y)i}个元素等于1的概率。因此softmax计算出的最后结果为:

                                                                        softmax = \begin{bmatrix} \Phi _{1}\\ \Phi _{2}\\ \Phi _{3}\\ \Phi _{4}\\ \Phi _{5} \end{bmatrix}

\Phi _{i}代表的是一个概率值,对于一个分类问题来说,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

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值