神经网络中的softmax层为何可以解决分类问题——神经网络之softmax(3)

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

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

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

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

本章内容提要:

从前两篇文章中,我们了解了softmax函数的基本原理,知道了他为什么叫做softmaxsoftmax函数有什么特性,以及softmax函数的推导过程。

本文基于前两篇文章的基础上,讲一下为什么我们在做分类预测的时候,经常会选择在神经网络的最后一层的输出结果上,加一个softmax层,来对输出结果进行分类。

一、softmax层和神经网络的关系

先看一下神经网络的结构:

                                                             

红色是网络的开端,是输入层。蓝色的部分是网络的隐含层,用于计算。绿色是输出层,输出计算结果 。想了解更多网络内部原理可以参考之前的文章。

那么加上softmax层后的网络形状如下:

                                         

在output layer后多出来的一个黑色的layer,就是用于分类的softmax层。最后紫色的new output层就是经过softmax层后,转换成概率的新输出层。

从这个图上可以看出来,softmax层只是对神经网络的输出结果进行了一次换算,将输出结果用概率的形式表现出来。

二、神经网络各层的内部定义

为了方便后续学习,我们对神经网络中每层节点的概念、及节点之间的计算关系介绍一下。因为输入层只做输入数据用,没有计算,图就去掉了。L1层对应隐含层,L2层对应输出层,L2层后链接的就是softmax层,最后输出的S就是经过softmax层转换后的概率输出。

                                             

(1)

在隐含层L1中,x是L1上一层的输出结果,也是L1层的输入值,有j个神经元节点,记为:

                                                                                                 x_{j}

(2)

L1层和L2之间的W是权重矩阵,它连接L1层与L2层之间的神经元节点,每两个神经元节点之间由一条权重边链接。其中,L1层的第j个神经元节点x,指向L2层的第i个神经元节点z的权重边w,记为:

                                                                                                w_{ij}

(3)

在输出层L2中,z是L1层的输入值x,与两层之间的权重矩阵W,计算后的结果,记为:

                                                                                                 z_{i}

(4)

z,x,w之间的关系为:

                                                                      z_{1} = x_{1} * w_{11} + x_{2} * w_{12} +x_{3} * w_{13}

即如下,(其中b为独立的偏置项,为方便描述,暂不讨论):

                                                                      z_{i} = \sum x_{j}*w_{ij} + b

(5)

softmax层对L2层传来的数值进行一个换算,换算公式如下:

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

公式的概念及推导过程请看之前的文章:softmax函数的正推原理——softmax前世今生系列(1)

(6) 

s指L2层中,神经元节点z的值,经过softmax层计算后,转换成的概率值,s与z的关系为:

                                                                       z_{i}\rightarrow softmax(z_{i}) \rightarrow s_{i}

三、softmax表达式和概率的关系

根据常识我们知道:表述一件事情发生的概率时,一般用百分数来表示。一定发生的事情的概率是100%,不会发生的事情概率是0%.不存在大于100%或者小于0%的概率。一件事情的所有可能性的概率之和等于1.

再来观察一下,输出值经过softmax层计算后的结果表达式:

                                                        s_{i} = \frac{e^{z_{i}}}{e^{z_{1}}+e^{z_{2}} +...+e^{z_{i}}+...+e^{z_{k}}}

显然有:

                                                                          s_{i}\in [0\%,100\%]

对所有神经元s求和,可以得到一个结果:

                                                      \sum_{i=1}^{k}s_{i} = \frac{e^{z_{1}}+e^{z_{2}} +...+e^{z_{i}}+...+e^{z_{k}}}{e^{z_{1}}+e^{z_{2}} +...+e^{z_{i}}+...+e^{z_{k}}}

即:

                                                                                  \sum_{i=1}^{k}s_{i} = 1

由此可知,输出层的数据,经过softmax函数转换后的结果,即可满足概率表达式的特性。

因此,输出层的数据转化成概率表达式后的输出值,就有了新的意义。对分类问题来说,不同大小的概率值表示,这个结果属于不同类别的可能性大小。

 

四、示例

引用一张网上的原理图,该图描述了softmax对输出结果的计算过程:

                                             

神经网络的输出向量为:

                                                                               output=\begin{bmatrix} 3\\ 1\\ -3 \end{bmatrix}

带入softmax计算公式:

                                                softmax(3) = \tfrac{e^{3}}{e^{3}+e^{1}+e^{-3}} \approx \frac{20}{20+2.7+0.05} \approx0.88

                                                softmax(1) = \tfrac{e^{1}}{e^{3}+e^{1}+e^{-3}} \approx \frac{2.7}{20+2.7+0.05} \approx0.12

                                                softmax(-3) = \tfrac{e^{-3}}{e^{3}+e^{1}+e^{-3}} \approx \frac{0.05}{20+2.7+0.05} \approx 0

通过softmax转换:

                                                                        newoutput = \begin{bmatrix} 0.88\\ 0.12\\ 0 \end{bmatrix}

通过softmax转换后,结果表达的意思是:这个T向量属于“第一类”的概率是88%,属于“第二类”的概率是12%,属于“第三类”的概率是0%.这就是softmax层在神经网络中,解决分类问题的基本原理。通过softmax函数,将神经网络的输出结果转化成概率表达式。找到最大概率项,为其分类。

五、总结

通过本文学习,我们知道了softmax在神经网络中分类的原理。softmax适用于解决多分类问题,当分类情况只有两种的时候,softmax就转换成了回归问题,也就是二分类问题/逻辑回归/logistic回归。

干脆我们顺手推导一番,当分类结果只有x1和x2两种情况时:

                                               softmax(x) = \tfrac{e^{x_{1}}}{e^{x_{1}}+e^{x_{2}}} = \tfrac{e^{x_{1} }\div e^{x_{1} }}{e^{x_{1}} \div e^{x_{1} }+e^{x_{2}}\div e^{x_{1} }} = \tfrac{1}{1+e^{x_{2}-x_{1}}}

我们来对比一下logistic回归的函数表达式:

                                                 logistic(x) = \frac{1}{1+e^{-x}} 

咦?突然发现不知不觉中我们竟然把逻辑回归的知识也给学了。不仅如此,其实你马上就要在不知不觉中学会神经网络了。呵呵呵,让我们继续走下去。

通过三篇文章的学习,此时对于softmax函数的概念和基本原理,我们已经基本理清楚了。但实践出真知,softmax函数到底应该怎么用呢?在BP神经网络中,它扮演着什么样的角色?当我们预测的概率结果和正确结果对比有差异时,我们要如何取修正这个神经网络,使得预测的概率更加准确?

当你在思考这些问题时,你已经一只脚踏进了BP神经网络的大门。下一篇文章我们会学习一个叫做交叉熵的东西,我们会明白交叉熵如何帮助我们判断预测结果是否准确,以及如何根据预测结果来修正神经网络参数。

此处是一个小阶段的完结,但也是一个新的开始。有什么问题可以留言问我,如有错误欢迎指正。

相关链接:

softmax函数的正推原理——softmax前世今生系列(1)

softmax函数名字的由来(代数&几何原理)——softmax前世今生系列(2)

六、附学习笔记如下:

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值