Press "Enter" to skip to content

why-what-how方式的机器学习总结之四

玻尔兹曼机

 

why

 

1.之前看到的神经网络基本都可以表示成有向图的形式,那必然也有无向图的模型,这个就是玻尔兹曼机了。

 

2.神经网络在做梯度下降的时候有一定概率陷入局部极小值,而玻尔兹曼机训练的时候采用一种叫模拟退火的方法可以避免这种情况。详情可见 随机神经网络之玻尔兹曼机

 

3.对玻尔兹曼机加上一些限制后的受限玻尔兹曼机广泛的应用于降维,特征提取,自编码器以及深度信念网络等等。

 

what

 

1.玻尔兹曼分布,(1)BM 网络处于某一状态(P(x=α))下的概率主要取决于此状态下的能量 Eα,能量越低,出现的概率越大。(2)BM 网络处于某一状态的概率还取决于温度参数 T,温度越高,不同状态出现的概率越接近,网络能量也较易跳出局部最小而搜索全局最小,温度低的时候相反。详情见 熵的理解(玻尔兹曼分布)

 

2.玻尔兹曼机(BM)又称作随机神经网络

 

(1)BM的神经元只有两种输出状态0和1

 

(2)BM的节点可以分为输入节点,输出节点和隐藏节点,但是这些节点之间是全连接的而且没有没有明显的层次,连接形式可以如下图。

 

 

(3)BM神经元输入和输出的关系类似于逻辑回归,其中netj是输入,

 

 

但是受温度T的影响较大,下图可以看出对同一输入,温度高的时候输出0和1的概率差距较小也就是随机性大,温度低的时候相反

 

 

(4)能量函数如下图

 

 

当第j个神经元变更状态能量变化如下

 

 

(5)模拟退火机制,根据 随机神经网络之玻尔兹曼机 里面的讨论无论输入大于0还是小于0,ΔE都是大概率减少的,但是比如输入大于0时也有可能状态为0如果原来状态为1就可能ΔE>0,网络就有可能往能量升高的方向走,而且系统能量越高的时候这样的概率越大,这就是模拟退火机制。

 

(6)BM当然是符合玻尔兹曼分布的,任意两个状态出现的概率与之对应能量之间的关系,

 

 

(7)根据节点是否能同时是输入和输出节点,BM又分为自联想型和异联想型。

 

(8)BM的典型应用场景还没有找到相关资料,先存疑。

 

3.受限玻尔兹曼机(RBM)

 

(1)受限体现在RBM是二分图,层内无连接,可参考 受限玻尔兹曼机(Restricted Boltzmann Machine)分析

 

 

(2)RBM的网络结构,如下图分为隐藏层和可见层,详情可参考 受限玻尔兹曼机(RBM)学习笔记系列文章 以及 深度学习之受限玻尔兹曼机

 

 

(3)RBM的能量函数,

 

 

这个能量函数实际上是表示v和h的一种亲密关系(见 从逻辑回归到玻尔兹曼机 )

 

(4)v和h的联合概率分布,其中Z被称作配分函数,比较难计算

 

 

这里我比较疑惑是怎幺从能量函数到概率分布的,感觉用熵和状态数应该能推导出来。

 

我们训练RBM的时候拿到的数据集合是

 

 

所以我们需要知道观察数据v的概率分布,这是个边缘分布

 

 

还可以得到可见层上所有节点状态已知的时候,隐藏层某个节点被激活(状态为1)的概率

 

 

(5)接下来是损失函数和梯度下降法

 

 

求偏导数有,

 

 

 

 

上面的式子中对P(v)的求和计算复杂度是指数级的所以不能直接算,如果使用吉布斯采样来做近似计算采样计算量也相当大,所以就引出了对比散度算法(CD)。

 

(6)对比散度算法

 

对比散度算法的基本思路是让MCMC以训练数据的状态作为起点,这样只需要很少的跳转就能抵达RBM的分布了。细节见 受限玻尔兹曼机(RBM)学习笔记(六)对比散度算法

 

(7)RBM应用于推荐系统,输入到可见层的是打分信息通过RBM把隐含的特征输出到隐藏层,再把隐含特征解码到可见层以达到推荐的效果。有两个问题,RBM的节点应该都是0-1变量,用户的评分一般很稀疏怎幺处理确实评分。解决办法是修改RBM的模型,可见层使用Softmax神经元,对于没有评分的项使用特殊神经元,如下图(更多细节看 基于深度学习的推荐系统之受限玻尔兹曼机 )。

 

 

(8)RBM如果只能是0-1的总感觉使用会很不方便,所以有实数值的RBM,0-1RBM节点的值相当于一个伯努利分布而实数值RBM节点的值相当于一个高斯分布。从能量函数的定义能看出来,

 

 

更详细的推导就不写了,可以参考 受限玻尔兹曼机(RBM)的非二值情况的推导二值RBM与实值RBM理论及代码解读

 

(9)深度玻尔兹曼机(DBM)加深RBM的层次就变成了DBM,结构如下

 

 

DBM训练的方法有两种,一种就是直接对整个分布求导,求导的过程中用到了变分贝叶斯+gibbs采样,第二种是逐层贪婪无监督学习算法。

 

(10)深度置信网络(DBN)把DBM稍加改变靠近可见层的地方变成有向图就变成了着名的DBN了。

 

 

DBN的应用可以看看这篇 DBN【深度置信网络】【受限玻尔兹曼机深层】详解

 

变分法

 

why

 

经典的case是最速降线问题,高点a和低点b之间有任意多种线连接,可以是直线也可以是弧线,那每条线都可以看成一个函数,有一个小球靠着重力加速度从a运动到b,问沿着怎样的弧线最快?

 

上面的问题公式化一下就是求下式的极值,

 

 

上面的函数中y是一个函数,要求这样的极值就引出了泛函和变分法。抽象一点说变分问题在数学上的定义通俗地可以理解为泛函的极值问题(参考 最速降线的数学模型—变分法 )。

 

what

 

摘录自 变分贝叶斯算法理解与推导

 

1.泛函的概念,设对于(某一函数集合内的)任意一个函数y(x),有另一个数J[y]与之对应,则称J[y]为y(x)的泛函。泛函可以看成是函数概念的推广。 这里的函数集合,即泛函的定义域,通常要求y(x) 满足一定的边界条件,并且具有连续的二阶导数.这样的y(x)称为可取函数。

 

2.注意不要把泛函和函数复合g=g(f(x))弄混,函数复合g还是和x对应的,而泛函g只和f发生关系。

 

3.泛函极值的概念,当变量函数为y(x)时,泛函J[y]取极大值,对于极值函数y(x)及其“附近”的变量函数y(x)+δy(x),恒有J[y+δy]≤J[y]; 这里自变量是y,δy(x) 称为函数y(x)的变分。

 

4.泛函求极值和普通函数求极值类似,也是求导等于零,泛函J[y]取到极大值的必要条件是一级变分δJ[y]为0,其微分形式一般为二阶常微分方程,即Euler-Largange方程。

 

 

how

 

1.这里记录一个变分法令我感觉很神奇的应用,来自 变分法和变分贝叶斯推断

 

首先给出一个概率质量分布函数f(x),定义该分布下的信息熵为:

 

 

由于f(x)是个概率所以有

 

 

概率分布总有期望和方差,给出定义

 

 

使用拉格朗日乘子法求极值,并引入变分法推导(过程省略),可以得到

 

 

因此可以得出当概率质量分布f(x)为正态分布时,信息熵最大,大自然偏爱正态分布,是不是很神奇?!

 

2.变分贝叶斯推断

 

(1)要解决的问题和吉布斯采样以及EM算法比较类似,也是求隐变量的方法。吉布斯采样有一定随机性而对比较复杂的后验概率形式EM算法计算复杂度会太高。

 

(2)计算过程有三个要素,用KL散度对原始分布求近似,用独立场假设化简,用变分法求极值。详细内容可看 变分贝叶斯算法理解与推导

 

变分自编码器(VAE)

 

why

 

普通自编码器做特征提取以及数据重构是ok的,但是想做数据生成,比如用提取到的特征去生成新的数据比如生成音乐,生成图片等等却往往做的不好。主要的原因是普通自编码器提取的特征是不连续的,而VAE的隐含空间被设计成连续的,所以VAE就比较擅长做图片生成音乐生成这些工作(较详细的可以看 是什幺让变分自编码器成为如此成功的多媒体生成工具呢? 以及 论文最爱的变分自编码器,不了解一下? )。

 

what

 

来自 变分自编码器系列变分自编码器的原理和程序解析 做一些摘要整理。

 

1.VAE希望通过隐变量z分解描述数据X的分布

 

 

2.模型大致的过程

 

 

和一些简单自编码器模型直接把z看做一个确定的隐变量不一样,VAE把z看成一个高斯分布从而提高了解码时候的鲁棒性。

 

3.更详细的过程

 

 

模型认为一个训练样本和隐变量的关系是这样的,先得到一套独立的均值和方差参数,再用这两个参数对应的高斯分布生成隐变量z。模型的一个基本假设是p(z|x)是正态分布。

 

这里均值和方差都是未知变量,所以两个神经网络来拟合

 

 

VAE还让所有的p(Z|X)都向标准正态分布看齐,这样就防止了噪声为零,同时保证了模型具有生成能力。

 

 

做法就是加入了额外的损失项,

 

 

4.重参数化技巧,主要是在模型的计算过程中需要用p(z|x)采样出一个z来,而做优化的过程中需要求导,采样的动作又不可导但采样的结果是可导的,所以就做了变换。

 

 

5.损失函数计算(参考 变分自编码器 ),生成模型中有一个难点是我不知道样本数据的真是分布,所以我也没法判断训练分布和真实分布之间的相似度。我们先假设p(x)已经存在了。

 

那我们要优化的对数最大似然函数是

 

 

我们需要最小化训练模型q和真实模型p的kl散度,经过变换我们转过来求对数似然函数的变分下界,

 

 

然后用蒙特卡洛+minibatch来做估算,

 

 

上面的式子还有不少未知变量,我们再把先验知识加入进来

 

 

 

最后有

 

 

6.VAE感觉牛逼的地方是并没有直接假设数据的分布,只是对数据做了一些相关假设,真正有泛函的感觉。

 

生成式对抗网络(GAN)

 

why

 

GAN的用途和VAE比较类似,也是可以学习特征然后进行以假乱真的图片生成,音乐生成等等,GAN生成图片的时候没有VAE可能会碰到的模糊问题。

 

GAN有一个较大的优势是不用计算配分函数,不用做采样这些特别麻烦的事情。

 

GAN要解决的最大的问题和VAE一样,不知道目标分布该是什幺,所以也不知道该怎幺写损失函数。GAN的思路是不知道没关系,就把未知的东东当成一个神经网络,慢慢训练就知道了。GAN网络和它的名字“干”一样,主要思路就是搞一个生成网络G和一个判别网络D然后让两个网络干起来,最后干不动了,就意味着模型训练好了。

 

what

 

主要摘录自 GAN(生成对抗网络)学习笔记互怼的艺术:从零直达WGAN-GP生成式对抗网络(GAN)基础

 

1.主要结构如下图,

 

 

左下的神经网络G是生成网络用于生成假样本集,右边的神经网络D是判别网络用来判断样本是否为真,训练过程就是反复生成和判别的过程,生成过程尽量让D(G(z))接近1,判别的时候尽量让D(G(z))接近0,直到两个网络都饱和输出0.5的概率。

 

2.形式化定义就是轮换D和G,D的时候最大化G的时候最小化下式

 

Be First to Comment

发表评论

电子邮件地址不会被公开。 必填项已用*标注