资源描述
l 玻尔兹曼机训练算法
1. 置输入层和隐蔽层之间的权值W1及隐蔽层和输出层之间的权值W2为[-1, +1]间的任意值。
2. 置时间计数t = 1。对训练样本做如下处理:
(1) 把Ak加到输入层,Ck加到输出层()。
(2) 随机选择隐蔽层结点i,,令其状态bi翻转:
(3) 计算由此而引起的网络总体能量变化
(4) 若,则确认这种状态变化。若,则计算概率:
其中T(t) > 0为当前温度。设λ为随机产生的正数,0 <λ< 1。若Pi >λ,则接受这次状态的改变,否则不接受本次状态的改变,并将bi复位至原有状态。
(5) 若隐蔽层结点未全部考察,则挑选一新的隐蔽层结点,返回(2)。
(6) 置时间计数t = t + 1,并更新温度:
其中T0为初始温度。
(7) 返回(2),直至对于,全局能量最低()为止。此时认为网络达到平衡状态。
(8) 对于输入Ak,记录隐蔽层状态,存入向量Dk,为后续统计使用:
3. 对每次输入Ak及输出Ck,隐蔽层结点的稳态为Dk。统计第h个输入结点和第i个隐蔽层结点状态相同的概率Qhi,以及第i个隐蔽层结点和第j个输出结点状态相同的概率Rij:
,
其中Φ(x,y)为关联函数:
4. 重置t = 1,将Ak,置于网络的输入端,而使输出端自由活动。重复步骤2和3,此时由bi翻转引起的全局能量变化:
并相应计算概率分布和
5. 调整网络权结构:
6. 重复步骤2-5,直至对于所有的,,,和都充分小为止。
2 / 2
展开阅读全文