笔记来源于B站UP主@王木头学科学
笔记来源https://www.bilibili.com/video/BV1cP4y1t7cP

  • 问题引入
    sigmoid函数
    在这里插入图片描述
    如果数值恰好落在这个绿色区域的话,这里梯度是非常小的,如果这个梯度再方向传播,传播到前面几层,那几乎不剩啥了,这就叫做梯度消失,为解决这个问题,就需要换成ReLu函数。

ReLu函数
在这里插入图片描述
ReLu函数如果是大于0,就是一条直线各个地方梯度保持一致,这个就能避免梯度消失问题。但是ReLU函数它的最大值可以是无穷大的,而神经网络的损失函数不论是极大似然估计法还是交叉熵都是基于概率的,也就是最后的输出值是0-1之间,relu函数是不具备这个特征的,那怎么办呢?其实直觉上也很简单,只要在最后一层用sigmoid,前面用ReLu,只要最后一层用sigmoid就能把原来的数值重新归到0-1之间。但是如果用sigmoid只能解决一种分类问题,如果一下子有很多分类问题的话,那就出问题了,因为sigmoid只能解决一个感知机输出的结果归一,并不能保证多个分类情况加起来的结果也归一。这个时候就要softmax出场了。

注意:并不是所有的分类问题都用softmax,具体问题具体分析。如果分类问题是互斥的,是猫就不能是狗,那么只能用softmax。另一种情况就是,要给某个东西分类,它可以分为很多类(比如王老师上传视频,给这个视频打标签这个视频可以是技术知识类的,又是基础知识的),这时候用softmax不太合适,可能还要换回sigmoid。

那softmax是什么呢?

1. softmax

回顾之前的神经网络输出层只有一个感知机的情况,如下图所示,Z[L][K]
表示第L层,第K张图片,这是线性运算得到的结果,然后再通过激活函数sigmoid函数得到a[L][K],这个a是在0-1之间,所以把她看做是一个概率
在这里插入图片描述
如果是多分类的情况,也就是输出层不止一个感知机的情况,那就要换激活函数,其输出的结果应该也是概率,因为损失函数交叉熵、最大似然估计都是需要概率。
对y进行打标签,是某一类就打1,其余为0,
经过激活函数后知道两个条件,就是a>=0,所有a之和等于1.
在这里插入图片描述
那什么样的激活函数才能满足上面的两个条件呢?
神经网络中线性计算输出的结果Z可能是正无穷到负无穷,要想通过激活函数输出的结果a大于0,我们需要进入指数e,定义域在(-无穷,+无穷),值域大于0;满足了第一个条件,要满足第二个条件还需要进行其他转换
在这里插入图片描述
需要进行归一化处理,将输出的结果设为t,每一类的结果为分子,所有类的结果相加为分母。
在这里插入图片描述
softmax比sigmoid的损失函数多出了一层循环
在这里插入图片描述
softmax和sigmoid很像,可以说是增强版的sigmoid。sigmoid只能针对一种分类的情况,softmax可以多分类。
由下面的计算转换可以看出,sigmoid只有两种概率,只不过t2作为分子时,这个概率是不会变的。
在这里插入图片描述
sigmoid有两种概率,那它能不能作为2个分类的情况呢?

在这里插入图片描述
上面的计算结果相差不大,但是意义不同。左边是计算是猫的概率加上不是猫的概率;右边是计算是猫的概率加上是狗的概率。

问题:构造归一函数,为什么要选用以e为底作为基本元素去构造呢?
前面我们知道,神经网络的一个主要作用是它能够逼近任何一种概率模型, 就是寻找似然值最大的概率模型,或者交叉熵最小的,也就是说在逼近目标的时候我们有一个默认的前提假设,那就是似然值最大的概率模型与目标最接近;其实还有另一个隐藏的前提假设,只要选择了sigmoid或者是softmax还默认了最大熵原理。什么是最大熵原理呢?

2. 最大熵原理

假如在我们未知任何信息的情况下,有8支球队,一是猜他们赢得概率都是1/8,另一种猜法是他们赢得概率不均等。那显而易见第一种猜法的熵比较大,而且它的熵是所有猜法种最大的,也就是最大熵

神经网络或者是机器学习并不是完全无知的去猜的,而是在一定的已知事实上再去利用最大熵,已知事实就是训练用的数据集,数据集不是包罗万象的全集,它有一部分是已知的还有很大一部分是未知的,这部分未知的就是要用到最大熵来补齐。

大概的原理是这样的:
神经网络中,首先 需要拿到训练集的数据,从中归纳出背后隐藏的概率模型来,然后再把概率模型的特征挑选出来,再然后让我们的目标概率模型也具有这些特征。这样也类似于,给定一些点,让我们画一条直线将这些点连起来,这样连线有无数种可能,也是说我们的目标函数有无数种可能,这时候需要用到最大熵把熵最大的那个概率模型挑选出来,这样的概率模型既能满足已知的信息,又能让未知的信息熵最大 。
这个问题可以分成两部分:一是解决相同的问题,二是解决最大熵的问题。

先解决第一部分,先介绍这个概念

先以最简单的概率分布作为例子,期望和方差可以做如下转换
在这里插入图片描述
x是个统计量,E(x)表示这个统计量的期望,方差也可以转换出结果
在这里插入图片描述
由此引入
在这里插入图片描述
也就是任何一个概率都可以有矩这个向量表示出来。一个概率分布对应一个特征函数,这两个是一 一对应的,这个特征函数可以做泰勒展开
在这里插入图片描述
不论是什么样的概率分布,只要这个概率分布存在,那么它一定可以用特征函数的形式表示出来,只要能用特征函数表示出来,那么它就可以做泰勒展开,这个泰勒展开对应的就是这个矩向量的线性关系,也就是这个向量的线性关系就能确定概率分布的样子。

拓展:为什么是特征函数和概率分布是一 一对应呢?
求期望,然后对f(x)做傅里叶变换,可以看出它的傅里叶函数和特征函数是共轭的,它们是一 一对应的关系,而傅里叶变换和概率分布也是一 一对应的,于是一个概率分布就可以和一个特征函数做一 一对应。
在这里插入图片描述

现在,在不知道概率分布的具体函数表达式的时候,只知道一些样本数据的时候,还想让两个概率分布一样,现在就找到了方法。

假设,f(x)是一个向量,现在对这个向量求期望,如下,只需要两个期望相等,那就代表了Q和P两个概率分布是一样的。
在这里插入图片描述

交叉熵是两个都是用来对比两个概率模型的,如果是用矩来对比两个概率模型的话,可以精确的知道两个概率模型是不是一致的,如果两个概率模型的形式不一致的话,用很难定量表达两者之间的差距,这时候就应该用交叉熵了,不论两个概率模型是什么样子的,用交叉熵最后都会定量的表达两者之间相差有多大。

相同的问题算是解决了一半,那具体到机器学习,具体到训练集这个情况是什么样子的呢?
假设有一个训练集,或者说是样本空间,为了后面解决问题方便,先引入一个概念** P ~ (P tilde),用它代表经验概率,也就是从数据里面直接归纳出来的概率,比如这个样本有身高性别,把这些所有的相同数据找出来除以总样本数,得到的就是P tilde 的概率分布,我们把P tilde 叫做经验概率**,神经网络里的图片也可以进行类似的计算。
在这里插入图片描述

神经网络里的图片也可以进行类似的计算,
在输入层,因为没有完全一样的图片,所以P~ = 1/N,
在这里插入图片描述
到后面的隐藏层,特别是输出层的前一层,特征没那么多,或者只考虑x,这时候这个P~算出来的值就没有那么单一了
在这里插入图片描述
而我们的目标是求
在这里插入图片描述
也就是当输入一张照片x的时候,是y的概率是多少

目标里面有一部分是已知的,一部分是未知的

已知的部分要完全相等,未知的部分要用最大熵。那哪些是已知的哪些是未知的呢,这时候我们要做一些处理
利用贝叶斯公式以及经验概率
在这里插入图片描述
最后得到已知的条件,但是目前只知道概率,没有随机变量,所以先假设随机变量,然后再进行求期望
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(其实就是把很多维度的情况投射变成一维)

2.1 条件熵

前面已经解决了期望的问题
在这里插入图片描述
在这里插入图片描述
推导出条件熵的公式,只要求出H(Y|X)最大即可。P(Y|X)如何取值才能使熵最大。
将P(X)换成经验概率,右边式子做个转换,求其最小值,还需要满足以下2个条件。利用格朗日公式,求出最小值
在这里插入图片描述
在这里插入图片描述
转换问题,求极值
在这里插入图片描述
在这里插入图片描述

所以到这一步就明白了,sigmod和softmax他们到底是什么,只要的神经网络在最后一层或者在输出层,选择了sigmoid或者softmax,那就是默认默认选择了最大熵的方式进行机器学习, 这就是softmax的本质,而它的结果单个值大于零,整个所有情况等于1,也就是归一,这只是他的附带结果。所以sigmoid和softmax都不是凑出来的 ,神经网络选择它们作为激活函数最后就保留了最大熵作为基本原则,哪怕是隐藏层里面用的是其他激活函数,relu或者其他,只要神经网络最后一层用的是sigmod或者是softmax,最后的神经网络依然是保留了最大熵。

问题还没完!
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
左边最大熵,右边极大似然估计 ,二者是等价
在这里插入图片描述

更多推荐