先上一张图片,这张图片是这段时间看的资料的图谱的图片,感觉花了很久的时间。

残差网络详细的特征提取过程 残差网络为什么叫残差_西电


那么我们就按照上面的 图谱上的知识点,一点一点的进行下去。

1、深度残差网络

深度残差网络的理解:


为什么进行深度残差网络的构造,原因是网络的层数越高,网络会遇到梯度消失问题,在前面网络层无法进行有效的权值更新。

所以引入了深度残差网络

残差网络详细的特征提取过程 残差网络为什么叫残差_学习心得_02


通过shortcut connection(捷径连接)的方式,将输入直接传到输出作为初始结果,为H(x)=F(x)+x,我们resetnet网络的学习目标就是目标值H(x)和x的差值,也就是所谓的残差:F(x) := H(x)-x,将残差逼近于0,这样随着网络的加深,准确率不会下降。

公式推导:

残差网络详细的特征提取过程 残差网络为什么叫残差_学习心得_03


残差网络详细的特征提取过程 残差网络为什么叫残差_学习心得_04


而对于反向传播,假设损失函数为E,根据反向传播的链式法则可以得到:

残差网络详细的特征提取过程 残差网络为什么叫残差_人工智能_05


将梯度分成了两个部分:不通过权重层的传递

残差网络详细的特征提取过程 残差网络为什么叫残差_学习心得_06


和通过权重层的传递

残差网络详细的特征提取过程 残差网络为什么叫残差_残差网络详细的特征提取过程_07


。其中

残差网络详细的特征提取过程 残差网络为什么叫残差_面试经验_08

保证了信号能够直接传回到任意浅层xl,同时这个公式也保证了不会出现梯度消失的现象,因为

残差网络详细的特征提取过程 残差网络为什么叫残差_面试经验_09


不可能为-1。

总结:

第一,由于f也是恒等映射,优化变得更加简单(与原始ResNet相比)。第二,在预激活中使用BN能够提高模型的正则化,从而减少了过拟合的影响。

2.BatchNormalize

深度理解Batch Normalization批标准化


机器学习中的重要假设:IID独立同分布假设,假设训练数据和测试数据是满足相同分布的,这是训练数据训练出来的模型能够在测试集获得好效果的基本保障。而batch normalize就是住在深度神经网络的训练过程中使得每一层的神经网络的输入保持相同的分布。

解决的问题是:网络层数的加深,训练变得很困难,收敛越来越慢。

Mini-Batch SGD相对于One Example SGD的两个优势:梯度更新方向更准确;并行计算速度快;(为什么要说这些?因为BatchNorm是基于Mini-Batch SGD的,所以先夸下Mini-Batch SGD,当然也是大实话);然后吐槽下SGD训练的缺点:超参数调起来很麻烦。(作者隐含意思是用BN就能解决很多SGD的缺点)

什么是covariate shift?如果ML系统实例集合<X,Y>中的输入值X的分布老是变,这不符合IID,在深度学习中,我们隐层的网络的输入的分布老是变来变去的,这就是internal covariate shift。

图像上的白化操作:就是对于输入数据分布变换到0均值,单位方差的正态分布,那么神经网络就会很快收敛。本来白化是输入图像上的白化,我们将其应用到每一个隐层的输入上,这就变成了BN,可以理解为:为对深层神经网络每个隐层神经元的激活值做简化版本的白化操作。

BN的手段就是将分布偏移的激活输入值强行拉回到均值为0方差为1的标准正态分布上,让激活输入值落在非线性函数对输入较为敏感的区域,这样让梯度变大,避免了梯度消失问题的产生,梯度变大也表示学习收敛速度能加快,加快训练速度。

也就是一句话:对于每个隐层神经元,把逐渐向非线性函数映射后向取值区间极限饱和区靠拢的输入分布强制拉回到均值为0方差为1的比较标准的正态分布,使得非线性变换函数的输入值落入对输入比较敏感的区域,以此避免梯度消失问题。

一般都是输入的取值x是符合正态分布,经过激活函数后其分布发生偏移和变形后,BN就是将其拉回均值为0,方差为1的正太分布。

经过BN后,目前大部分Activation的值落入非线性函数的线性区内,其对应的导数远离导数饱和区,这样来加速训练收敛过程

但是有一点较为疑惑:那就是全部输入都落在了线性区域,那么网络的表达能力就下降了,深度的意义就没了,那么为了让其获得一点点的非线性性,BN为了保证非线性的获得,对变换后的满足均值为0方差为1的x又进行了scale加上shift操作(y=scale*x+shift),核心思想应该是想找到一个线性和非线性的较好平衡点,既能享受非线性的较强表达能力的好处,又避免太靠非线性区两头使得网络收敛速度太慢。

BN的训练过程

残差网络详细的特征提取过程 残差网络为什么叫残差_人工智能_10


采用min-batch SGD,一次训练中包含m个训练实例,对于每个输入,进行标准化:

残差网络详细的特征提取过程 残差网络为什么叫残差_面试经验_11


这里面的均值是m个实例的均值,方差也就是m个实例的方差。

上文中说道:变换后某个神经元的激活x形成了均值为0,方差为1的正态分布,目的是把值往后续要进行的非线性变换的线性区拉动,增大导数值,增强反向传播信息流动性,加快训练收敛速度。但是这样会导致网络表达能力下降,为了防止这一点,每个神经元增加两个调节参数(scale和shift),这两个参数是通过训练来学习到的,用来对变换后的激活反变换,使得网络表达能力增强,即对变换后的激活进行如下的scale和shift操作,这其实是变换的反操作:

残差网络详细的特征提取过程 残差网络为什么叫残差_面试经验_12


BN操作的流程如下:

残差网络详细的特征提取过程 残差网络为什么叫残差_学习心得_13


BN推理过程:

不像训练,训练时可以有mini-batch中的若干实例进行激活值的调整,但是推理时,就只剩一个实例了,咋办呢?

使用全局训练数据中的均值和方差:可以用从所有训练实例中获得的统计量来代替Mini-Batch里面m个训练实例获得的均值和方差统计量,因为本来就打算用全局的统计量,只是因为计算量等太大所以才会用Mini-Batch这种简化方式的,那么在推理的时候直接用全局统计量即可。

如何简单获得呢?

因为每次做Mini-Batch训练时,都会有那个Mini-Batch里m个训练实例获得的均值和方差,现在要全局统计量,只要把每个Mini-Batch的均值和方差统计量记住,然后对这些均值和方差求其对应的数学期望即可得出全局统计量,即:

残差网络详细的特征提取过程 残差网络为什么叫残差_西电_14


残差网络详细的特征提取过程 残差网络为什么叫残差_人工智能_15

写成以上形式的原因:在实际运行的时候,按照这种变体形式可以减少计算量

以上的

残差网络详细的特征提取过程 残差网络为什么叫残差_人工智能_16



残差网络详细的特征提取过程 残差网络为什么叫残差_残差网络详细的特征提取过程_17


都是固定值,可以事先算好存起来,推理时直接用就行。

BN的好处是:

①不仅仅极大提升了训练速度,收敛过程大大加快;②还能增加分类效果,一种解释是这是类似于Dropout的一种防止过拟合的正则化表达方式,所以不用Dropout也能达到相当的效果;③另外调参过程也简单多了,对于初始化要求没那么高,而且可以使用大的学习率等。总而言之,经过这么简单的变换,带来的好处多得很,这也是为何现在BN这么快流行起来的原因。

3.深度学习中Dropout原理解析

原文地址:

droout出现的原因:

1.容易过拟合:数据样本少,参数很多,容易产生过拟合。

2.费时

dropout可以有效的缓解过拟合的发生,在一定程度上达到正则化的效果。

形式:

残差网络详细的特征提取过程 残差网络为什么叫残差_面试经验_18


Dropout可以作为训练深度神经网络的一种trick供选择。在每个训练批次中,通过忽略一半的特征检测器(让一半的隐层节点值为0),可以明显地减少过拟合现象。这种方式可以减少特征检测器(隐层节点)间的相互作用,检测器相互作用是指某些检测器依赖其他检测器才能发挥作用。

Dropout说的简单一点就是:我们在前向传播的时候,让某个神经元的激活值以一定的概率p停止工作,这样可以使模型泛化性更强,因为它不会太依赖某些局部的特征。如上图所示。
Dropout流程如下:
(1)(1)首先随机(临时)删掉网络中一半的隐藏神经元
,输入输出神经元保持不变(图3中虚线为部分临时被删除的神经元)

残差网络详细的特征提取过程 残差网络为什么叫残差_残差网络详细的特征提取过程_19


(2) 然后把输入x通过修改后的网络前向传播,然后把得到的损失结果通过修改的网络反向传播。一小批训练样本执行完这个过程后,在没有被删除的神经元上按照随机梯度下降法更新对应的参数(w,b),这时候的网络的状态还是之前那样,没有改变。

(3)然后继续重复这一过程:

3.1、恢复被删掉的神经元(此时被删除的神经元保持原样,而没有被删除的神经元已经有所更新)

3.2、从隐藏层神经元中随机选择一个一半大小的子集临时删除掉(备份被删除神经元的参数)。

3.3、对一小批训练样本,先前向传播然后反向传播损失并根据随机梯度下降法更新参数(w,b) (没有被删除的那一部分参数得到更新,删除的神经元参数保持被删除前的结果)。

不断重复这一过程。

(1)采用dropout方法的模型的训练阶段:

残差网络详细的特征提取过程 残差网络为什么叫残差_面试经验_20


没有使用dropout的计算公式如下:

残差网络详细的特征提取过程 残差网络为什么叫残差_学习心得_21


使用dropout的计算公式如下:

残差网络详细的特征提取过程 残差网络为什么叫残差_人工智能_22


上面公式中Bernoulli函数是为了生成概率r向量,也就是随机生成一个0、1的向量,让第l层的网络节点乘以0或者1然后失效。此时的上一层的输入y是向量,维数为节点的个数。

注意: 经过上面屏蔽掉某些神经元,使其激活值为0以后,我们还需要对向量y1……y1000进行缩放,也就是乘以1/(1-p)。如果你在训练的时候,经过置0后,没有对y1……y1000进行缩放(rescale),那么在测试的时候,就需要对权重进行缩放,操作如下。

理解为:**节点数减少了,那么整体的输出值也变小了,所以需要乘以大于1的值将y输出进行放大,若是没有放大输出值,那么我们只能对于权值进行缩小,**也就是下面所讲的:

(2)在测试模型阶段

预测模型的时候,每一个神经单元的权重参数要乘以概率p。

残差网络详细的特征提取过程 残差网络为什么叫残差_面试经验_23


测试阶段Dropout公式:

残差网络详细的特征提取过程 残差网络为什么叫残差_学习心得_24


3、为什么Dropout可以解决过拟合问题?

(1)取平均的作用: 先回到标准的模型即没有dropout,我们用相同的训练数据去训练5个不同的神经网络,一般会得到5个不同的结果,此时我们可以采用 “5个结果取均值”或者“多数取胜的投票策略”去决定最终结果。例如3个网络判断结果为数字9,那么很有可能真正的结果就是数字9,其它两个网络给出了错误结果。这种“综合起来取平均”的策略通常可以有效防止过拟合问题。因为不同的网络可能产生不同的过拟合,取平均则有可能让一些“相反的”拟合互相抵消。dropout掉不同的隐藏神经元就类似在训练不同的网络,随机删掉一半隐藏神经元导致网络结构已经不同,整个dropout过程就相当于对很多个不同的神经网络取平均。而不同的网络产生不同的过拟合,一些互为“反向”的拟合相互抵消就可以达到整体上减少过拟合。

(2)减少神经元之间复杂的共适应关系: 因为dropout程序导致两个神经元不一定每次都在一个dropout网络中出现。这样权值的更新不再依赖于有固定关系的隐含节点的共同作用,阻止了某些特征仅仅在其它特定特征下才有效果的情况 。迫使网络去学习更加鲁棒的特征 ,这些特征在其它的神经元的随机子集中也存在。换句话说假如我们的神经网络是在做出某种预测,它不应该对一些特定的线索片段太过敏感,即使丢失特定的线索,它也应该可以从众多其它线索中学习一些共同的特征。从这个角度看dropout就有点像L1,L2正则,减少权重使得网络对丢失特定神经元连接的鲁棒性提高。

(3)Dropout类似于性别在生物进化中的角色:物种为了生存往往会倾向于适应这种环境,环境突变则会导致物种难以做出及时反应,性别的出现可以繁衍出适应新环境的变种,有效的阻止过拟合,即避免环境改变时物种可能面临的灭绝。

思考:上面我们介绍了两种方法进行Dropout的缩放,那么Dropout为什么需要进行缩放呢?

因为我们训练的时候会随机的丢弃一些神经元,但是预测的时候就没办法随机丢弃了。如果丢弃一些神经元,这会带来结果不稳定的问题,也就是给定一个测试数据,有时候输出a有时候输出b,结果不稳定,这是实际系统不能接受的,用户可能认为模型预测不准。那么一种”补偿“的方案就是每个神经元的权重都乘以一个p,这样在“总体上”使得测试数据和训练数据是大致一样的。比如一个神经元的输出是x,那么在训练的时候它有p的概率参与训练,(1-p)的概率丢弃,那么它输出的期望是px+(1-p)0=px。因此测试的时候把这个神经元的权重乘以p可以得到同样的期望。

4.梯度消失、梯度爆炸

详解机器学习中的梯度消失、爆炸原因及其解决方法:

what and why?

残差网络详细的特征提取过程 残差网络为什么叫残差_人工智能_25


残差网络详细的特征提取过程 残差网络为什么叫残差_人工智能_26


梯度消失问题:初始化的w值小于1且激活函数的导数最大为1/4时,其导数==连乘后的值肯定远远小于1,那么导数为0,对于前段网络的权值不更新;

梯度爆炸问题:当w乘以激活函数的导数大于1时,连乘之后其值远远大于1,就会发生梯度爆炸现象。

总结:从深层网络角度来讲,不同的层学习的速度差异很大,表现为网络中靠近输出的层学习的情况很好,靠近输入的层学习的很慢,有时甚至训练了很久,前几层的权值和刚开始随机初始化的值差不多。因此,梯度消失、爆炸,其根本原因在于反向传播训练法则,属于先天不足。

从激活函数可以看出,使用sigmoid激活函数,其梯度不超过0.25,这样经过链式求导时,很容易发生梯度消失现象。而tanh(x)函数的导数小于1,相比sigmoid来讲好点,但是还是小于1;

how:

解决方法:

1.预训练加微调

也就是DBN(深度信念网络),采用无监督的逐层训练的方法,其基本思想是每次训练一层隐节点,训练时将上一层隐节点的输出作为输入,而本层隐节点的输出作为下一层隐节点的输入,此过程就是逐层“预训练”(pre-training);在预训练完成后,再对整个网络进行“微调”(fine-tunning)。

2.梯度正切、正则

找到梯度的阈值,超过这个值,限制在这个范围内,可以防止梯度爆炸。

解决梯度爆炸:采用权重的正则化操作,常见的是L1和L2正则,通过正则化限制其大小,限制过拟合,正则项的损失函数为:

残差网络详细的特征提取过程 残差网络为什么叫残差_西电_27


其中,alpha是指正则项系数,因此,如果发生梯度爆炸,权值的范数就会变的非常大,通过正则化项,可以部分限制梯度爆炸的发生。

注:注:事实上,在深度神经网络中,往往是梯度消失出现的更多一些。

3.改变激活函数

改用relu,leakrelu、elud等激活函数;

4.使用Batch Normalize

批规范化操作将输出信号x规范化保证网络的稳定性;batchnormalize就是对于每一层的输出规范为均值和方差一致的方法,消除了w带来的放大缩小的影响,进而解决梯度消失和爆炸的问题,或者理解为BN将输出从饱和区拉到了非饱和区。

5.残差网络

残差可以 将输入直接连到输出端,反向传播时会直接有一个梯度到达输入端,这样可以直接对去输入端的权值进行更新,不会出现梯度消失问题。

残差网络详细的特征提取过程 残差网络为什么叫残差_面试经验_28


残差网络详细的特征提取过程 残差网络为什么叫残差_面试经验_29


6.LSTM

用来解决RNN的梯度不更新问题,通过内部的门结构,记住输入端的重要信息和历史信息,可以生成文本。rnn无法获得距离太长的历史信息,这就是依赖问题,而LSTM可以解决这个问题。

5 、RBM(受限玻尔兹曼机)

一起读懂传说中的经典:受限玻尔兹曼机:
http://baijiahao.baidu.com/s?id=1599798281463567369&wfr=spider&for=pc 什么是受限玻尔兹曼机?
两层神经网络,分为可见层或者输入层,第二层为隐藏层。

残差网络详细的特征提取过程 残差网络为什么叫残差_人工智能_30


相邻层之间相连,同层之间的节点是不相连的;

1.前向传递

残差网络详细的特征提取过程 残差网络为什么叫残差_学习心得_31


第一:玻尔兹曼机就两层,前向传递过程中跟前馈神经网络一样,隐藏层节点的减少意味着RBM节点起着自编码器的作用。

2.重建在RBM中,它以一种无监督的方式通过自身来回传递来自建数据,在只有两层的情况下,可见层个隐藏层之间会存在数次的前向和反向传播;

残差网络详细的特征提取过程 残差网络为什么叫残差_面试经验_32


重建阶段,隐藏层的输出变成了输入,反向传递阶段与权值相乘并和输入层的偏置项相加,输出是对于原始输入的一次重建。

误差函数:重建结果和原始输入之间的差距;

前向和反向重建过程中,具有相同的权值;重建就是在和自身对抗,预测出自身原始输入的概率分布;

假如输入分布和输出分布是两个不同形状的正太曲线,部分重叠。利用KL散度衡量两个分布之间的相似性。

权重其实在反应输入数据的结构,并对于隐藏层的激活值进行编码,学习过程就像两个分布在一步步重叠;

那就是联合概率分布:给定a时x的概率大小以及给定x时a的概率,根基RBM两层之间的共享权重来确定;
从某种意义上而言,学习重建的过程就是学习在给定的图像集合下,哪些像素会倾向于同时出现。

你会注意到 RBM 有两个偏置项。这是有别于其它自动编码器的一个方面。隐藏层的偏置项有助于 RBM 在前向传递中获得非零激活值,而可见层的偏置有助于 RBM 学习后向传递中的重建。

多层受限玻尔兹曼机

因为这些权重早已接近数据的特征,所以在使用深度信念网络进行图像分类的时候,后续的监督学习阶段可以更简单地学习。从某种程度而言,它们完成了某种类似于反向传播的功能:**它们很好地调整了权重,以对数据进行更好的建模。**你可以说预训练和反向传播是达到相同目的的可替代方法。

在这里:

显元/隐元(VisibleUnit/HiddenUnit)指神经网络的层。显元或者可见层,是输入到达的层,隐元或者隐藏层,是输入被结合成更复杂特征的层。这两种单元都有各自所谓的变换,在这里,可见层是高斯变换,隐藏层是整流线性单元,它们将来自它们对应层的信号映射到新的空间。

6、DBN-DNN

深度置信神经网络(DBN-DNN):


残差网络详细的特征提取过程 残差网络为什么叫残差_人工智能_33


网络共有3个受限玻尔兹曼机RBM单元堆叠而成,RBM共有两层,上层为隐层,下层为显层,在加上一层输出层,就形成了DBN-DNN结构;

根据可见层(v)和隐藏层(h)的取值不同,可将RBM分成两大类,如果v和h都是二值分布,那么它就是Bernoulli-Bernoulli RBM(贝努力-贝努力RBM);如果v是实数,比如语音特征,h为二进制,那么则为Gaussian-Bernoulli RBM(高斯-贝努力RBM)。因此,图一中的RBM1为高斯-贝努力,RBM2和RBM3都是贝努力-贝努力RBM。

DBN模型的某层的分布只和上一层有关,是单向的,而DBM为无向图模型,某层由上层和下层共同决定,DBM比DBN具有更好地鲁棒性,求解复杂性较大,DBN可用逐层预训练的方法,复杂性较小。

对于DBN来讲,我们采用CD-K算法来逐层学习权值大小,这里K表示迭代次数,具体的CD-k算法请看这一章节:具体步骤就是先求解激活值,并在0-1之间取值得到输出{0,1}分量,将输出值大于阈值的值为1,小于阈值的值为0,那么再求解输入值,往返两次就是CD-1的算法。

cd-k的算法目的就是求解出一个最能产生训练样本的概率分布,这个分布的决定性因素在于W,目的是找到最佳的权值。

2.有监督的调优训练(fine-turing)

也就是前向传播算法计算误差+反向传播算法采用梯度下降 法来调整权值和偏置参数。

DBN-DNN结构的两大步骤:无监督的预训练+有监督的调优训练

7.自编码器


自编码器的作用和DBN一样,都是无监督学习,学习数据的高效表示。编码维度小于输入数据,可以进行降维。自编码器作为强大的特征检测器,可以用于网络的预训练。还可以生成与输入数据相似的数据,被称为生成模型。

编码(输入数据的高效表示)就是自编码器在一些限制条件下学习恒等函数的副产品。

残差网络详细的特征提取过程 残差网络为什么叫残差_面试经验_34


两部分:encoder(也为识别网络)将输入转换成内部表示;decoder(生成网络),将内部表示转换为输出。

不完备线性自编码器:表示内部表示的维度相对输入数据维度来讲,其维度减少了,实现了降维,且其损失函数为均方损失函数且其激活函数为线性激活函数。

栈式自编码器

架构关于中间隐层对称的:

残差网络详细的特征提取过程 残差网络为什么叫残差_学习心得_35


权值也是对称的,decoder的权值和encoder的权值是相同的,参数少一半,加快训练速度,降低过拟合。

栈式自编码器一次可训练一个自编码器并将它们合并在一起。

残差网络详细的特征提取过程 残差网络为什么叫残差_残差网络详细的特征提取过程_36


1.第一个自编码器学习去重建输入,得到第一个层的权重;2.第二个自编码器学习去重建第一个隐藏层的输出,并在hidden3上计算其误差。最后将权值集合在一起即可;

如何进行无监督的预训练?

残差网络详细的特征提取过程 残差网络为什么叫残差_人工智能_37


采用低层的权值进行预训练,相当于迁移学习,如上图所示,先根据所有数据(未标注数据)预训练一个自编码器,并将学习出来的权值复制到建立的神经网络上,通过再次训练可完成真正的任务,这样做的好处是:防止权值陷入局部最优解上,能够快速拟合并得到最优解。

自编码器也可以用来去燥,输入加噪声的数据,输出为原始数据;或者丢弃部分输入,得到完整原始输入。

8.各种熵的详解

机器学习面试之各种混乱的熵:https://www.jianshu.com/p/09b70253c840 1.熵
就是对于不确定性的度量,对于不同概率的刻画,概率越大,表示事情越确定,其熵越小;因为概率大的事情相对于概率小的事情具有更大的信息量。
刻画:
概率越大,不确定越小,熵的表示为:-logP
但是熵只是表示某个概率的不确定性,但是一个概率分布有多个概率组成,他们概率之和为1;
所以我们在衡量一个概率分布的不确定性时,不能只衡量某个概率,而是综合衡量所有概率的不确定性。这就是熵的表达式:
-∑PlogP
可以理解为不确定性的期望值,值越大,表示概率分布不确定性越大。
为了准确的估计随机变量的状态,我们一般习惯性最大化熵,认为在所有可能的概率模型(分布)的集合中,熵最大的模型是最好的模型。换言之,在已知部分知识的前提下,关于未知分布最合理的推断就是符合已知知识最不确定或最随机的推断,其原则是承认已知事物(知识),且对未知事物不做任何假设,没有任何偏见。
熵是描述不确定性的,但是方差也是可以描述变量的变化程度,直觉上,方差越大,不确定也就越大,熵越大,方差和熵具有内在一致性。
1.联合熵
x和y联合概率分布为p(x,y),这个联合概率分布的熵就是联合熵:
H(x,y) = -Σp(x,y)log(p(x,y))
联合概率的变量越多,其不确定性就越大,相当于在原本不确定性的变量上又加上一个不确定性,不确定性显然变大了。H(x,y)肯定是大于等于H(x)和H(y)。
2.条件熵
H(x|y) = H(x,y) - H(y),相当于对于y来讲,引入的x增大了熵,那么,x的引入增大了多少呢?这就是条件熵
H(x|y) = - Σp(x,y)log(p(x|y))
条件熵是在Y上引入X后增加的不确定性,从感觉上,增加的不确定性无论如何不可能大于X本身自有的不确定性,也就是:
H(x|y) <= H(x)
信息增益:X原有的不确定性是H(x),现在我们引入Y,得到了联合的不确定性H(x,y),从这个不确定性中减去Y自身带来的不确定性H(Y),剩下的就是H(x|y),这个值小于等于H(x),说明什么?说明,由于Y的引入,X的不确定性变小了,不确定性变小,就是信息含量的增加。不确定性变小的多少就是信息增益:
为:gain(X) = H(x) - H(x|y)
3.相对熵(KL散度)
KL散度用来衡量真实分布和假设分布的相似程度;
最大似然函数在未知变量的情况下,最大化似然概率也就是让最大化真实输出的概率。
最大似然函数最终表达式:
Σp(x)log(q(x))
再取负号就是
d= -Σp(x)log(q(x))
最大化似然函数等价于最小化交叉熵
但是KL散度不是交叉熵,D(q||p) = d - H§=Σp(x)log(p(x)/q(x)) = d- H§
由于最大化似然函数就是在现有样本的情况下,去拟合真实的分布,来达到真实样本发生概率的最大化;
而最小化交叉熵损失函数等价于最小化真实分布和现在分布(也就是输出样本),最小化他们之间的差别,常用于逻辑回归上。
所以同样是在样本和分布上的函数,一个是由已知样本最大化分布函数;还有一个就是由最小化分布和样本之间的差异,结果都是一样的;
假设p和q是两个分布,q和p越接近,越相同,则D就越小。互熵D(q||p)实际上就是在衡量我们通过计算得出的真实分布的表达式q,究竟与由样本统计得来的分布p有多接近,在衡量多接近这个概念时,我们运用到了熵的形式。
4.交叉熵
d1= -Σp(x)log(q(x))为p和q的交叉熵
d2 = -Σq(x)log(p(x)) 为q和p的交叉熵
交叉熵不满足交换律,也可以用来表示p和q之间的相似程度

9 .最大熵模型详解


最大熵模型的表示:

残差网络详细的特征提取过程 残差网络为什么叫残差_学习心得_38


本质上就是已知x,计算y的概率,且尽可能让y的概率最大,从而利用已知信息,尽可能最准确推测出位未知信息,这就是最大熵模型要解决的事情。

相当于已知x,计算y最大可能的概率,也就是最大化上述式子H(Y/X)。

最后最大熵模型的对偶问题的极小化等价于最大熵模型的极大似然估计。

判定:最大熵的解(无偏的对待不确定性)也就是最符合样本数据分布的解,进一步证明了最大熵模型的合理性。两者相比,熵是不确定性的代表,似然表示与知识的吻合程度,进一步,最大熵模型表示的是对于不确定度的无偏分配,最大似然估计则是对于知识的无偏理解。

求解算法:IIS(迭代尺度法):类似于EM算法求解函数极大值,并求解满足极大值的参数;

思想是:假设最大熵模型当前的参数向量是λ,希望找到一个新的参数向量λ+δ,使得当前模型的对数似然函数值L增加。重复这一过程,直至找到对数似然函数的最大值。

于2019年7月6日完结,thank you!