手搓GPT系列之 - RNN网络模型与隐马尔科夫链(HMC)模型的表达力(expressivity)关系

RNN模型和HMC模型,都是适合处理时间序列的模型。这两者在结构上具有一定的相似性。笔者在学习这两个模型的时候,对他们之间的关系非常感兴趣,但是却一度十分困惑:它们之间是否存在可互相表示的关系?哪一个的通用性更强?答案其实大家心里都有了吧,只是缺了一个严格的证明。本文将为机器学习算法领域的爱好者证明一个大家都知道的事情:可以用经典RNN网络模型来表达隐马尔科夫链模型。

1. 隐马尔科夫链模型

隐马尔科夫链模型说的是,在我们日常生活中,有一些按时间顺序发生的事情,其发生的规律,与背后隐藏的状态 s s s有关,这个背后隐藏的状态我们没办法直接观察,但是我们可以断定这个状态的变化具有马尔科夫性。也就是说,每一个时刻 t t t下这个状态 s t s_t st,只与其在上一个时刻的状态 s t − 1 s_{t-1} st1有关。我们可以用一个条件概率来表示这种关系,即:
P ( s t ∣ s t − 1 , ⋯   , s 1 , s 0 ) = P ( s t ∣ s t − 1 ) P(s_t|s_{t-1},\cdots,s_1,s_0) = P(s_t|s_{t-1}) P(stst1,,s1,s0)=P(stst1)
我们无法直接观察状态 s t s_t st,我们可以观察的是这些状态表现出来的时间序列事件 [ x 1 , x 2 , ⋯   , x t ] [x_1,x_2,\cdots,x_t] [x1,x2,,xt]。在特定时刻 t t t,事件 x t x_t xt发生的概率与当时的状态有关,我们可以把这种关联性表示为 p ( x t ∣ s t ) p(x_t|s_t) p(xtst)。我们可以通过观察 0 0 0时刻到 t t t时刻发生的事件,来预测下一个时刻的状态 s t + 1 s_{t+1} st+1以及将要发生的事件 x t + 1 x_{t+1} xt+1的概率。在隐马尔科夫链模型中,一个完整的时间序列的联合概率可以表示为:
P ( x t , ⋯   , x 1 , s t , ⋯   , s 0 ) = [ ∏ P ( x t ∣ s t ) ] ⋅ [ ∏ P ( s t ∣ s t − 1 ) ] ⋅ P ( s 0 ) (1) P(x_t,\cdots,x_1,s_t,\cdots,s_0) = [\prod P(x_t|s_t)] \cdot [\prod P(s_t|s_{t-1})]\cdot P(s_0) \tag{1} P(xt,,x1,st,,s0)=[P(xtst)][P(stst1)]P(s0)(1)
其中 P ( s t ∣ s t − 1 ) P(s_t|s_{t-1}) P(stst1)被称为转移概率, P ( x t ∣ s t ) P(x_t|s_{t}) P(xtst)则被称为发射概率。隐马尔科夫链模型可以通过下图来表示:

在这里插入图片描述
可知,HMC模型属于生成式模型。

2. 经典RNN网络模型

不知道是谁开的头,大家喜欢用冰淇淋来比喻RNN网络,咱也学一下。香草味RNN网络,指的就是最经典的RNN网络结构,咱也不清楚为什么香草味是最经典口味,最经典的口味不是原味吗?最经典的RNN模型如下图所示(前向传播):
在这里插入图片描述

左边是折叠图,右边是把左边的折叠图展开之后的结果。估计学过RNN的朋友已经对这张图非常熟悉了。总之,RNN的基本思路就是,把一个序列上的输入信息按顺序进行输入到同一个网络之中,然后每次输入都可以获得相应的输出。这个方法之所以牛逼就在于,可以把任意长度的序列输入到一个网络中,网络可以将以前输入过的信息跟后边输入的信息产生关联记忆,效果杠杠的,总之非常牛逼。其中:
y ^ t = c r o s s m a x ( W o h T h t + b o ) (2) \hat{y}_t = crossmax(W_{oh}^Th_t+ b_o ) \tag{2} y^t=crossmax(WohTht+bo)(2)
h t = σ ( W h h T h t − 1 + W i h T x t + b h ) (3) h_t = \sigma(W_{hh}^Th_{t-1} +W_{ih}^Tx_t + b_h) \tag{3} ht=σ(WhhTht1+WihTxt+bh)(3)

3. 使用RNN模型表示HMC模型

我们用 l 1 ( h t − 1 ; W h h , b h 1 ) l_1(h_{t-1};W_{hh},b_{h1}) l1(ht1;Whh,bh1)表示关于 h t − 1 h_{t-1} ht1的似然公式,用 l 2 ( x t ; W i h , b h 2 ) l_2(x_t;W_{ih},b_{h2}) l2(xt;Wih,bh2)表示关于 x t x_t xt的似然公式,这样,我们就能把 h t h_t ht表示为两个似然公式的积:
h t = l 1 ( h t − 1 ; W h h , b h 1 ) ⋅ l 2 ( x t ; W i h , b h 2 ) (4) h_t = l_1(h_{t-1};W_{hh},b_{h1}) \cdot l_2(x_t;W_{ih},b_{h2}) \tag{4} ht=l1(ht1;Whh,bh1)l2(xt;Wih,bh2)(4)
为了简化,我们把式(4)写成:
h t = l θ 1 ( h t − 1 ) ⋅ l θ 2 ( x t ) (5) h_t = l_{\theta_1}(h_{t-1}) \cdot l_{\theta_2}(x_t) \tag{5} ht=lθ1(ht1)lθ2(xt)(5)
我们将 l θ 1 l_{\theta_1} lθ1表示成联合概率公式:
l θ 1 ( h t − 1 ) = P ( h t ∣ h t − 1 ) ⋅ P ( h t − 1 , ⋯   , h 0 ) ⋅ ∏ i = 1 t − 1 P ( x i ∣ h i ) = ∏ i = 1 t P ( h i ∣ h i − 1 ) ⋅ P ( h 0 ) ⋅ ∏ j = 1 t − 1 P ( x j ∣ h j ) (6) \begin{aligned} l_{\theta_1}(h_{t-1}) &= P(h_{t}|h_{t-1})\cdot P(h_{t-1},\cdots,h_0) \cdot \prod_{i=1}^{t-1} P(x_i|h_i) \\ &=\prod_{i=1}^{t}P(h_{i}|h_{i-1})\cdot P(h_{0}) \cdot \prod_{j=1}^{t-1} P(x_j|h_j) \tag{6} \end{aligned} lθ1(ht1)=P(htht1)P(ht1,,h0)i=1t1P(xihi)=i=1tP(hihi1)P(h0)j=1t1P(xjhj)(6)
我们将 l θ 2 l_{\theta_2} lθ2表示成条件概率公式:
l θ 2 ( x t ) = P ( x t ∣ h t ) (7) l_{\theta_2}(x_{t}) = P(x_{t}|h_{t}) \tag{7} lθ2(xt)=P(xtht)(7)
(6)、(7)代入(5)中,得:
h t = ∏ j = 1 t P ( x j ∣ h j ) ⋅ ∏ i = 1 t P ( h i ∣ h i − 1 ) ⋅ P ( h 0 ) \begin{aligned} h_t &= \prod_{j=1}^{t} P(x_j|h_j) \cdot \prod_{i=1}^{t}P(h_{i}|h_{i-1})\cdot P(h_{0}) \\ \end{aligned} ht=j=1tP(xjhj)i=1tP(hihi1)P(h0)
这个式子与式(1)是等效的。因此我们可以得到:

h t = P ( x t , ⋯   , x 1 , h t , ⋯   , h 0 ) = h t − 1 ⋅ P ( h t ∣ h t − 1 ) ⋅ P ( x t ∣ h t ) (8) h_t = P(x_t,\cdots,x_1, h_t,\cdots,h_0) = h_{t-1} \cdot P(h_t|h_{t-1} ) \cdot P(x_t|h_t) \tag{8} ht=P(xt,,x1,ht,,h0)=ht1P(htht1)P(xtht)(8)

现在,我们再来处理一下式子(2)。我们可以用条件概率 p ( x t + 1 ∣ x t , ⋯   , x 1 , h t , ⋯   , h 0 ) p(x_{t+1}|x_t,\cdots,x_1,h_t,\cdots,h_0) p(xt+1xt,,x1,ht,,h0)来表示:
y ^ t = p ( x t + 1 ∣ x t , ⋯   , x 1 , h t , ⋯   , h 0 ) \hat{y}_t = p(x_{t+1}|x_t,\cdots,x_1,h_t,\cdots,h_0) y^t=p(xt+1xt,,x1,ht,,h0)

4. 结论

我们可以通过将将式(3)定义为式(6)、(7)的样子,就可以将RNN模型表示成HMC模型。这个过程实质上就是为模型增加额外限制的过程。因此我们说,HMC模型被在RNN网络模型包含,RNN模型具有比HMC模型更强的表达力。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值