乐读窝

深度学习

乐读窝 > 文学理论 > 深度学习

20.7 用于结构化或序列输出的玻尔兹曼机

书籍名:《深度学习》    作者:伊恩.古德费洛



在结构化输出场景中,我们希望训练可以从一些输入x映射到一些输出y的模型,y的不同条目彼此相关,并且必须遵守一些约束。例如,在语音合成任务中,y是波形,并且整个波形听起来必须像连贯的发音。

表示y中的条目之间关系的自然方式是使用概率分布p(y|x)。扩展到建模条件分布的玻尔兹曼机可以支持这种概率模型。

使用玻尔兹曼机条件建模的相同工具不仅可以用于结构化输出任务,还可以用于序列建模。在后一种情况下,模型必须估计变量序列上的概率分布,而不仅仅是将输入x映射到输出y。为完成这个任务,条件玻尔兹曼机可以表示形式的因子。

视频游戏和电影工业中一个重要序列建模任务是建模用于渲染3-D人物骨架关节角度的序列。这些序列通常通过记录角色移动的运动捕获系统收集。人物运动的概率模型允许生成新的(之前没见过的)但真实的动画。为了解决这个序列建模任务,Taylor  et  al.(2007)针对小的m引入了条件RBM建模。该模型是上的RBM,其偏置参数是x前面m个值的线性函数。当我们条件于x(t−1)的不同值和更早的变量时,我们会得到一个关于x的新RBM。RBM关于x的权重不会改变,但是条件于不同的过去值,我们可以改变RBM中的不同隐藏单元处于活动状态的概率。通过激活和去激活隐藏单元的不同子集,我们可以对x上诱导的概率分布进行大的改变。条件RBM的其他变体(Mnih  et  al.,2011)和使用条件RBM进行序列建模的其他变体是可能的(Taylor  and  Hinton,2009;Sutskever  et  al.,2009;Boulanger-Lewandowski  et  al.,2012)。

另一个序列建模任务是对构成歌曲音符序列的分布进行建模。Boulanger-Lewandowski  et  al.(2012)引入了RNN-RBM序列模型并应用于这个任务。RNN-RBM由RNN(产生用于每个时间步的RBM参数)组成,是帧序列x(t)的生成模型。与之前只有RBM的偏置参数会在一个时间步到下一个发生变化的方法不同,RNN-RBM使用RNN来产生RBM的所有参数(包括权重)。为了训练模型,我们需要能够通过RNN反向传播损失函数的梯度。损失函数不直接应用于RNN输出。相反,它应用于RBM。这意味着我们必须使用对比散度或相关算法关于RBM参数进行近似的微分。然后才可以使用通常的通过时间反向传播算法通过RNN反向传播该近似梯度。