福甭市建设局网站,荆州做网站公司,手机端网站开发要注意什么,产品推广ppt模板A recurrent latent variable model for sequential data
背景
1 通过循环神经网络的序列建模
循环神经网络#xff08;RNN#xff09;可以接收一个可变长度的序列 x ( x 1 , x 2 , . . . , x T ) x (x_1, x_2, ..., x_T) x(x1,x2,...,xT)作为输入#xff0c;并通…A recurrent latent variable model for sequential data
背景
1 通过循环神经网络的序列建模
循环神经网络RNN可以接收一个可变长度的序列 x ( x 1 , x 2 , . . . , x T ) x (x_1, x_2, ..., x_T) x(x1,x2,...,xT)作为输入并通过递归地处理每个符号同时维持其内部隐藏状态 h h h。在每个时间步 t t tRNN读取符号 x t x_t xt并更新其隐藏状态 h t ∈ R p h_t \in \mathbb{R}^p ht∈Rp如下 h t f θ ( x t , h t − 1 ) (1) h_t f_\theta (x_t, h_{t-1})\tag{1} htfθ(xt,ht−1)(1)
其中 f f f是一个确定性的非线性转移函数 θ \theta θ是 f f f的参数集。转移函数 f f f可以通过长短期记忆LSTM[9]或门控循环单元GRU[5]等具有门控激活函数的方式实现。RNN通过参数化联合序列概率分布的条件概率的乘积来建模序列 p ( x 1 , x 2 , . . . , x T ) ∏ t 1 T p ( x t ∣ x t ) p(x_1, x_2, ..., x_T) \prod_{t1}^{T} p(x_t | x_{t}) p(x1,x2,...,xT)t1∏Tp(xt∣xt) p ( x t ∣ x t ) g τ ( h t − 1 ) (2) p(x_t | x_{t}) g_\tau (h_{t-1}) \tag{2} p(xt∣xt)gτ(ht−1)(2)
其中 g g g是一个将 RNN 隐藏状态 h t − 1 h_{t-1} ht−1映射到可能输出上的概率分布的函数 τ \tau τ是 g g g的参数集。
决定 RNN 表征能力的主要因素之一是输出函数 g g g在方程2中的定义。通过一个确定性的转移函数 f f f g g g的选择实际上定义了 RNN 能够表达的联合概率分布 p ( x 1 , . . . , x T ) p(x_1, ..., x_T) p(x1,...,xT)的家族。
我们可以将方程2中的输出函数 g g g表达为由两部分组成。第一部分 ϕ τ \phi_\tau ϕτ是一个函数它根据隐藏状态 h t − 1 h_{t-1} ht−1返回参数集 ϕ t \phi_t ϕt即 ϕ t ϕ τ ( h t − 1 ) \phi_t \phi_\tau (h_{t-1}) ϕtϕτ(ht−1)而 g g g的第二部分返回 x t x_t xt的密度即 p ϕ t ( x t ∣ x t ) p_{\phi_t} (x_t | x_{t}) pϕt(xt∣xt)。
在建模高维和实值序列时一个合理的观察模型选择是高斯混合模型GMM如在[7]中使用。对于 GMM ϕ τ \phi_\tau ϕτ返回一组混合系数 α t \alpha_t αt均值 μ t \mu_t μt和协方差 Σ t \Sigma_t Σt它们定义了对应混合组件下 x t x_t xt的概率。在混合分布下 x t x_t xt的概率是 p α t , μ t , Σ t ( x t ∣ x t ) ∑ j α t , j N ( x t ; μ t , j , Σ t , j ) p_{\alpha_t, \mu_t, \Sigma_t} (x_t | x_{t}) \sum_j \alpha_{t,j} \mathcal{N}(x_t; \mu_{t,j}, \Sigma_{t,j}) pαt,μt,Σt(xt∣xt)j∑αt,jN(xt;μt,j,Σt,j)
除了[7]的显著例外很少有工作研究了针对实值序列的 RNN 的结构化输出密度模型。
RNN模型输出可变性的方式可能存在一个显著问题。鉴于确定性转移函数是唯一的可变性来源唯一的可变性来源在于条件输出概率密度。这在建模高度可变且需要高信号保真度的序列时会带来问题。为了有效地模拟这些类型的序列RNN必须能够映射 x t x_t xt中非常微小的变化即随机性的唯一来源到 h t h_t ht中可能非常大的变化。限制网络的表达能力如必须通过提高隐藏状态的维度来对抗过拟合将迫使在生成清晰信号和编码足够的输入可变性以捕捉高层次的可变性之间进行折中。
RNN中对高度结构化输出函数的需求已经被之前注意到过。Boulanger-Lewandowski等人[4]广泛测试了NADE和基于RBM的输出密度用于模拟音乐的二进制向量表示的序列。Bayer和Osendorfer[2]引入了一个序列的独立潜变量表示的压缩传递到状态的RNN。他们的模型称为STORN首先从序列的独立潜变量中生成一系列样本 z ( z 1 , . . . , z T ) z (z_1, ..., z_T) z(z1,...,zT)然后在每个时间步骤上转移函数 f f f根据方程1从先前的状态 h t − 1 h_{t-1} ht−1先前的输出 x t − 1 x_{t-1} xt−1和采样的潜变量 z t z_t zt计算下一个隐藏状态 h t h_t ht。他们提出根据VAE原则来训练这个模型见第2.2节。同样Pachitariu和Sahani[16]早期提出了一个序列的独立潜变量和随机隐藏状态的RNN。
这些方法与本文提出的方法密切相关。然而有一个主要差异在于如何对潜在随机变量的先验分布进行建模。与上述方法不同我们的方法使潜在随机变量的先验分布依赖于通过RNN隐藏状态 h t − 1 h_{t-1} ht−1传递的所有前序输入见方程5。引入时间结构到先验分布中预计会提高模型的表征能力这一点我们在实验中实证观察到见表1。然而重要的是要注意任何基于具有随机潜在状态的方法与拥有结构化输出函数的方法是正交的这两者可以一起使用以形成一个单一模型。
2 变分自编码器 (Variational Autoencoder)
对于非序列化数据变分自编码器VAEs[11, 17] 最近已经被证明是一个有效的建模范式用于恢复数据空间上的复杂多模态分布。VAE引入了一组潜在随机变量 z z z旨在捕捉观测变量 x x x 的变化。作为一个有向图模型的例子联合分布被定义为 p ( x , z ) p ( x ∣ z ) p ( z ) . (3) p(x, z) p(x | z)p(z).\tag{3} p(x,z)p(x∣z)p(z).(3)
潜在随机变量的先验 p ( z ) p(z) p(z) 通常选择为一个简单的高斯分布而条件分布 p ( x ∣ z ) p(x | z) p(x∣z) 是一个任意观测模型其参数由 z z z 的参数函数计算得出。重要的是VAE通常用一个高度灵活的函数逼近器如神经网络来参数化 p ( x ∣ z ) p(x | z) p(x∣z) 。尽管潜在随机变量模型的形式如方程 (4) 中所示并不少见这使得条件 p ( x ∣ z ) p(x | z) p(x∣z) 作为从潜在变量 z z z 到观测变量 x x x 的非线性映射是VAE的一个独特特征。
然而从 z 到 x 的高度非线性映射导致后验 p ( z ∣ x ) p(z | x) p(z∣x) 的推理难以处理。相反VAE使用后验的变分近似 q ( z ∣ x ) q(z | x) q(z∣x) 从而允许使用下界 log p ( x ) ≥ − K L ( q ( z ∣ x ) ∣ ∣ p ( z ) ) E q ( z ∣ x ) [ log p ( x ∣ z ) ] , (4) \log p(x) \geq -KL(q(z | x) || p(z)) \mathbb{E}_{q(z|x)} [\log p(x | z)],\tag{4} logp(x)≥−KL(q(z∣x)∣∣p(z))Eq(z∣x)[logp(x∣z)],(4)
其中 K L ( Q ∣ ∣ P ) KL(Q||P) KL(Q∣∣P) 是两个分布 Q 和 P 之间的Kullback-Leibler散度。
在 [11] 中近似后验 q ( z ∣ x ) q(z | x) q(z∣x)是一个高斯 N ( μ , d i a g ( σ 2 ) ) N(\mu, diag(\sigma^2)) N(μ,diag(σ2))其均值 μ \mu μ和方差 σ 2 \sigma^2 σ2是 x 的高度非线性函数的输出通常再次是一个神经网络。
生成模型 p ( x ∣ z ) p(x | z) p(x∣z)和推断模型 q ( z ∣ x ) q(z | x) q(z∣x)然后通过最大化它们的参数的变分下界共同训练其中积分通过随机近似。这个估计的梯度可以有一个低方差估计通过重新参数化 z μ σ ⊗ ϵ z \mu \sigma \otimes \epsilon zμσ⊗ϵ并重写 E q ( z ∣ x ) [ log p ( x ∣ z ) ] E p ( ϵ ) [ log p ( x ∣ z μ σ ⊗ ϵ ) ] , \mathbb{E}_{q(z|x)}[\log p(x | z)] \mathbb{E}_{p(\epsilon)}[\log p(x | z \mu \sigma \otimes \epsilon)], Eq(z∣x)[logp(x∣z)]Ep(ϵ)[logp(x∣zμσ⊗ϵ)],
其中 ϵ \epsilon ϵ是标准高斯变量的向量。推断模型可以通过标准的反向传播技术来进行随机梯度下降训练。
变分循环神经网络(VRNN)
在本节中我们介绍了VAE的递归版本目的是为了模拟序列。受到简单动态贝叶斯网络DBNs如HMMs和卡尔曼滤波器启发提出的变分递归神经网络VRNN明确模型了潜在随机变量在连续时间步之间的依赖性。然而不像这些更简单的DBN模型VRNN保留了模拟高度非线性动态的灵活性。
VRNN每个操作的图形说明(a) 使用方程5计算条件先验(b) 使用方程6的生成函数© 使用方程7更新RNN隐藏状态(d) 使用方程9推断近似后验(e) VRNN的整体计算路径。
Generation
VRNN在每个时间步包含一个VAE。然而这些VAEs是基于RNN的状态变量 h t − 1 h_{t-1} ht−1 的条件。这一新增功能将帮助VAE考虑到序列数据的时间结构。与标准VAE不同潜在随机变量的先验不再是标准高斯分布而是遵循以下分布 z t ∼ N ( μ 0 , t , d i a g ( σ 0 , t 2 ) ) , where [ μ 0 , t , σ 0 , t ] ϕ t p r i o r ( h t − 1 ) , (5) z_t \sim \mathcal{N}(\mu_{0,t}, diag(\sigma_{0,t}^2)), \text{ where } [\mu_{0,t}, \sigma_{0,t}] \phi^{prior}_t (h_{t-1}),\tag{5} zt∼N(μ0,t,diag(σ0,t2)), where [μ0,t,σ0,t]ϕtprior(ht−1),(5) 上述公式说明 z t z_t zt由 h t − 1 h_{t-1} ht−1通过一个神经网络提取特征得到的 μ 0 , t , σ 0 , t \mu_{0,t}, \sigma_{0,t} μ0,t,σ0,t进行计算得到 其中 μ 0 , t \mu_{0,t} μ0,t 和 σ 0 , t \sigma_{0,t} σ0,t 表示条件先验分布的参数。此外生成分布不仅基于 z t z_t zt 进行条件化也基于 h t − 1 h_{t-1} ht−1如下 x t ∼ N ( μ x , t , d i a g ( σ x , t 2 ) ) , where [ μ x , t , σ x , t ] ϕ t d e c ( ϕ t p r i o r ( z t , h t − 1 ) ) , (6) x_t \sim \mathcal{N}(\mu_{x,t}, diag(\sigma_{x,t}^2)), \text{ where } [\mu_{x,t}, \sigma_{x,t}] \phi^{dec}_t (\phi^{prior}_t (z_t, h_{t-1})),\tag{6} xt∼N(μx,t,diag(σx,t2)), where [μx,t,σx,t]ϕtdec(ϕtprior(zt,ht−1)),(6)
其中 μ x , t \mu_{x,t} μx,t 和 σ x , t \sigma_{x,t} σx,t 表示生成分布的参数。生成分布的参数 ϕ t p r i o r \phi^{prior}_t ϕtprior 和 ϕ t d e c \phi^{dec}_t ϕtdec 可以是任何高度灵活的函数比如神经网络。 ϕ t p r i o r \phi^{prior}_t ϕtprior 和 ϕ t d e c \phi^{dec}_t ϕtdec 也可以是神经网络这些网络从 x t x_t xt 和 z t z_t zt 提取特征我们发现这些特征提取器对于学习复杂序列至关重要。RNN使用以下递归方程更新其隐藏状态 h t f θ ( ϕ t e n c ( x t ) , ϕ t p r i o r ( z t ) , h t − 1 ) , (7) h_t f_{\theta}(\phi^{enc}_t (x_t), \phi^{prior}_t (z_t), h_{t-1}),\tag{7} htfθ(ϕtenc(xt),ϕtprior(zt),ht−1),(7)
其中 f f f 最初是从方程1的过渡函数。从方程7我们发现 h t h_t ht 是 x ≤ t x_{\leq t} x≤t 和 z t z_{t} zt 的函数。因此方程5和方程6定义了分布 p ( z t ∣ x ≤ t , z t ) p(z_t | x_{\leq t}, z_{t}) p(zt∣x≤t,zt) 和 p ( x t ∣ z ≤ t , x t ) p(x_t | z_{\leq t}, x_{t}) p(xt∣z≤t,xt)生成模型的参数化导致了以下因式分解的动机 p ( x ≤ T , z ≤ T ) ∏ t 1 T p ( x t ∣ z ≤ t , x t ) p ( z t ∣ x ≤ t , z t ) . (8) p(x_{\leq T}, z_{\leq T}) \prod_{t1}^T p(x_t | z_{\leq t}, x_{t})p(z_t | x_{\leq t}, z_{t}).\tag{8} p(x≤T,z≤T)t1∏Tp(xt∣z≤t,xt)p(zt∣x≤t,zt).(8)
Inference
以类似的方式近似后验不仅仅是 x t x_t xt 的函数也是 h t − 1 h_{t-1} ht−1 的函数如下式所示 z t ∣ x t ∼ N ( μ z , t , d i a g ( σ z , t 2 ) ) , 其中 [ μ z , t , σ z , t ] ϕ t e n c ( ϕ t x ( x t ) , h t − 1 ) , (9) z_t | x_t \sim \mathcal{N}(\mu_{z,t}, diag(\sigma_{z,t}^2)), \text{ 其中 } [\mu_{z,t}, \sigma_{z,t}] \phi_t^{enc}(\phi_t^x(x_t), h_{t-1}),\tag{9} zt∣xt∼N(μz,t,diag(σz,t2)), 其中 [μz,t,σz,t]ϕtenc(ϕtx(xt),ht−1),(9)
其中 μ z , t \mu_{z,t} μz,t 和 σ z , t \sigma_{z,t} σz,t 表示近似后验的参数。我们注意到近似后验的编码和生成的解码通过RNN隐藏状态 h t − 1 h_{t-1} ht−1 进行关联。我们也观察到对 h t − 1 h_{t-1} ht−1 的这种条件化导致了因子分解 q ( z ≤ T ∣ x ≤ T ) ∏ t 1 T q ( z t ∣ x ≤ t , z t ) . (10) q(z_{\leq T} | x_{\leq T}) \prod_{t1}^T q(z_t | x_{\leq t}, z_{t}).\tag{10} q(z≤T∣x≤T)t1∏Tq(zt∣x≤t,zt).(10)
Learning
目标函数变为使用方程8和方程10的时间步长变分下界 E q ( z ≤ T ∣ x ≤ T ) [ ∑ t 1 T ( − K L ( q ( z t ∣ x ≤ t , z t ) ∣ ∣ p ( z t ∣ x ≤ t , z t ) ) log p ( x t ∣ z ≤ t , x t ) ) ] . (11) \mathbb{E}_{q(z_{\leq T} | x_{\leq T})} \left[ \sum_{t1}^T \left( -KL(q(z_t | x_{\leq t},z_{t}) || p(z_t | x_{\leq t},z_{t})) \log p(x_t | z_{\leq t},x_{t}) \right) \right].\tag{11} Eq(z≤T∣x≤T)[t1∑T(−KL(q(zt∣x≤t,zt)∣∣p(zt∣x≤t,zt))logp(xt∣z≤t,xt))].(11)
如同标准VAE我们通过最大化它们参数的变分下界共同学习生成模型和推断模型。VRNN的示意图如图1所示操作a-d分别对应于方程1-7方程9。VRNN在计算条件先验时应用操作a见方程5。如果VRNN的变体VRNN-I不应用操作a那么先验在时间步之间变得独立。实际上STORN[2]可以被认为是VRNN-I模型家族的一个实例。我们在实验评估中包括了这个模型版本VRNN-I以便直接研究先验即条件先验在潜在随机变量上的时间依赖结构的影响。
vrnn_gmm详解
代码https://github.com/jych/nips2015_vrnn
模型的架构和数据流动如下
模型架构 输入层 数据通过train_data.theano_vars()和valid_data.theano_vars()被加载为Theano变量x和m_x分别用于训练和验证。 全连接层FullyConnectedLayer x_1到x_4和z_1到z_4是一系列用于特征变换的全连接层。每个x层处理来自上一层或原始输入x_t的信息而每个z层处理来自潜在变量z_t的信息。phi_1到phi_4用于构建近似后验分布的参数。prior_1到prior_4用于构建先验分布的参数。theta_1到theta_4用于构建生成模型的参数。 LSTM层 rnn层是一个长短时记忆单元用于捕获数据的时序特征。 输出层 phi_mu和phi_sig层分别用于输出近似后验分布的均值和标准差。prior_mu和prior_sig层分别用于输出先验分布的均值和标准差。theta_mu和theta_sig层分别用于输出生成分布的均值和标准差。
数据流动 前向传播 原始输入数据x经过一系列全连接层x_1到x_4被转换为适合LSTM层处理的形式。 递归处理 inner_fn函数定义了每个时间步的处理方式。它首先通过phi_*层处理输入x_t和先前的状态s_tm1来获取近似后验分布的参数然后从该分布中采样得到z_t。z_t接着经过全连接层z_1到z_4处理并和x_t一起被送入rnn层得到新的状态s_t。 后向传播和参数更新 Theano的scan函数被用来迭代整个序列应用inner_fn函数并收集每个时间步的输出。通过比较每一步生成的均值和标准差与先验和后验的相应值使用KLGaussianGaussian计算Kullback-Leibler散度作为正则化项。使用Gaussian函数计算重构损失与KL散度相加得到变分下界也即负对数似然。 优化 通过定义的Adam优化器和Theano函数进行梯度下降更新模型的参数以最小化变分下界。 监控 monitor_fn函数用于在验证数据上计算和监控各种统计量如模型的上界负对数似然、重构项、KL项以及各参数的最大值、最小值和均值。