正则化定义一、CD算法
提出者:Geoffrey Hinton教授
(1)算法步骤:
通过一个格局的能量的概率模型定义一个概率(分布):
这里的Z是正则化系数,是所有格局的能量和。
一个格局的能量为:
一个RBM的可见层概率分布有下面的公式给出:
变量v表示输入向量可见向量,变量h表示输出向量或者隐层向量。一个RBM 定义为可见层和隐层共同构成的一个联合概率。对这个概率分布求边缘分布就得到了可见层的概率分布。每一对(v,h)神经元的能量由下面公式定义:
b,c分别是可见层和隐层的误差向量,W是权值矩阵,v,h分别是可见层和隐层变量。结合这个能量方程和上面的概率方程可以发现,w,v,h越大能量越小,能量越小概率越大。所以P(h丨v)就等于:
通过上面的能量方程可以轻松的求得概率而不用直接求每一个格局的能量。
下面是条件概率:
上面介绍的模型只适合二元分布即伯努利分布(Bernoulli distribution)。要让这个方法应用于连续的分布。能量方程E需要改成高斯-伯努利分布,这只要增加一个二次项就可以了
σ1表示输入变量的标准差。使用这个能量方程,条件概率P(h丨v)几乎没有什么
改变,但是P(v丨h)变成了一个多元高斯分布,它的均值是协方差矩阵式是:
这样一个高斯-伯努利RBM中,只有第一层是连续的,其他都是二元的。对于连续的输入还有许多不同的定义能量方程的方法。
(2)优点
对比散度(contrastive divergence,CD)学习方法由Hinton提出,能够有效地进行RBM学习,而且能够避免求取对数似然函数梯度的麻烦,因此在基于RBM构建的深度模型中广泛使用。CD算法使用估计的概率分布与真实概率分布之间K-L距离作为度量准则。在近似的概率分布差异度量函数上求解最小化。执行CD学习算法时,对每个批次的各训练样本运行n步Gibbs采样,使用得到的样本计算。则连接权重的CD梯度近似为:
其中pn为n步Gibbs采样后获得的概率分布。通常在使用中只需要取n=1即可以进行有效的学习,因此在使用中较为方便。
(3)缺点
CD算法随着训练过程的进行与参数的增加,马尔可夫链的遍历性将会下降,此时算法对梯度的近似质量也会退化。
二、Gibbs采样
Gibbs采样(Gibbs sampling)算法是一种基于马尔可夫链蒙特卡罗(Markov Chain Monte Carlo,MCMC)策略的采样方法。给定一个N维的随机向量X=(X1,X2,…,XN),若直接求取X的联合分布P(X1,X2,…,XN)非常困难,但如果
可以在给定其他分量时,求得第k个分量的条件分布P(Xk|Xk-),其中Xk-=(X1,X2,…,Xk-1,Xk+1,…,XN)指代排除Xk的其他N-1维的随机向量,则可以从X的一个任意状态[x1(0),x2(0),…,xk(0)]开始,利用条件分布,对各分量依次迭代采样。随着采样次数增加,随机变量[x1(n),x2(n),…,xk(n)]将会以几何级数的速度收敛于联合分布P(X1,X2,…,XN)。在训练RBM的迭代过程中,可以设置一个收敛到模型分布的马尔可夫链,将其运行到平衡状态时,用马尔可夫链近似期望值。
(1)通俗地举个例子:首先,什么是sampling。sampling就是以一定的概率分布,看发生什么事件。举一个例子:甲只能E:吃饭、学习、打球,时间T:上午、下午、晚上,天气W:晴朗、刮风、下雨。现在要一个sample,这个sample可以是:打球+下午+晴朗等等;
问题是我们不知道p(E,T,W),或者说,不知道三件事的联合分布,当然,如果知道的话,就没有必要用gibbs sampling了,但是,我们知道三件事的conditionaldistribution。也就是说,p(E|T,W),p(T|E,W),p(W|E,T)。现在要做的就是通过这三个已知的条件分布,再用gibbs sampling的方法,得到joint distribution。
具体方法:首先随便初始化一个组合,i.e. 学习+晚上+刮风,然后依条件概率改变其中的一个变量。具体说,假设我们知道晚上+刮风,我们给E生成一个变量,比如,学习-》吃饭。我们再依条件概率改下一个变量,根据学习+刮风,把晚上变成上午。类似地,把刮风变成刮风(当然可以变成相同的变量)。这样学习+晚上+刮风-》吃饭+上午+刮风;
同样的方法,得到一个序列,每个单元包含三个变量,也就是一个马尔可夫链。然后跳过初始的一定数量的单元(比如100个),然后隔一定的数量取一个单元(比如隔20个取1个)。这样sample到的单元,是逼近联合分布的。
(2)优点
使用Gibbs采样算法具有通用性好的优点;
(3)缺点
由于每次迭代中都需要马尔可夫链达到极限分布,而Gibbs采样收敛度缓慢,需要很长的时间,因此也限制了其应用。
三、对比散度算法(Contrastive Divergence)
尽管利用Gibbs采样,我们可以得到对数似然函数关于未知参数梯度的近似,但是通常情况下,需要使用较大的采样步数,这使得RBM的训练效率仍然不高,尤其当观测数据的特征维数较高时。2002年Hinton提出了RBM的一个快速学习算法,对比散度算法(Contrastive Divergence)。与Gibbs采样不同,Hinton指出,当使用训练数据初始化v0时,我们仅需要使用k(通常k=1)步Gibbs采样就可以得到足够好的近似。在CD算法一开始,可见单元的状态被设置成一个训练样本,并利用以下公式计算隐藏层单元的二值状态,在所有隐藏单元状态确定了之后,根据下面公式来确定每个可见单元取值为1的概率。进而得到可见层的一个重构。然后将重构的可见层作为
真实的模型带入RBM的Δ中,就可以进行梯度下降算法了。
p(hi=1|v)=sigmoid(ci+Wiv)
p(vj=1|h)=sigmoid(bj+W′jh)
#输入:一个训练样本x0;隐藏层单元个数m,学习速率alpha,最大训练周期T #输出:链接权重矩阵W,可见层的偏置向量a,隐藏层的偏置向量b
#训练阶段:初始化可见层单元的状态为v1 = x0;W,a,b为随机的较小的数值for t = 1:T
for j = 1:m #对所有隐藏单元
P(h1j=1|v1)=sigmoid(bj + sum_i(v1i * Wij));
for i = 1:n#对于所有可见单元
p(v2i=1|h1)=sigmoid(ai + sum_j(Wij * h1j)
for j = 1:m #对所有隐藏单元
P(h2j=1|v2)=sigmoid(bj+sum_j(v2i*Wij))
W = W + alpha * (P(h1=1|v1)*v1 - P(h2=1|v2)*v2)
a = a + alpha * (v1 - v2)
b = b + alpha*(P(h1=1|v1) - P(h2=1|v2))
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论