公式9.4.2没有看明白,\pi_{i}(h_{i})是什么意思?
如果我没有理解错的话,这里并不需要任何符号。这一步只是把前面的乘积符号拆开了然后加了个括号而已
我觉得这里讲的就是图9.4.1。我是这样理解:我想要将原来相当复杂的计算方式变成一个递推的顺序计算,那么先定下h_1,那么就是对所有h_1相关的事情相乘然后求和,然后乘以h_1之后的东西,至于为什么可以这么算,应该是因为隐马尔可夫模型(假设约束),也就是图9.4.1。
此处原本的累加符号是【对h1到hT的每一个元素都有k种不同的取值下】,分别计算后面的累乘部分,并对累乘的结果(共k^T个)进行累加。
你标注的红框中,是【先固定了h2到hT的每一个元素的k种不同的取值】,得到k^(T-1)个不同的子状态,然后在不同子状态下,分别单独考虑h1的k个不同取值,并对累乘的结果进行累加。
例子,T=3,k=4,有 AAA AAB AAC AAD ABA ABB ABC ABD ACA… 共4^3=64种情况下的累乘结果需要累加。
现在先对前两个坑位分类为:AA AB AC AD BA BB BC…共4^2=16种情况,然后考虑最后一位的A B C D 4个选项。
数形结合,假设4x4x4魔方的每个小块(共64块)分别是一个累乘运算,原始写法是直接做63次加法,变换后,相当于将魔方切丝成16条,先在丝内各做3次加法(共3*16=48),再把16条丝加起来做15次加法,合计(48+15=63)。
实际只是改变了计算的顺序,因为63次加法中存在大量交叉重复的运算,但在原始写法的顺序中,重复的部分是分散不连贯的,重新调整顺序之后,便于重复利用运算结果,实现动态规划。
为什么bidirectional在对前向预测中会有糟糕的表现,但是困惑度却很低?
应该是FP时disable ‘backward recursion’了。
但觉得梯度链并没有增加,因为双向 是可以并行计算的。慢的原因到底是啥
这里需要考虑h1的所有情况,需要把h1所有情况累加起来,公式没错
- 本质上是以离散状态来考虑的,所以只是将连乘符号展开而已
- 如果变换后也是计算63次,优化在哪?应该是应用了‘不对齐运算即去重’,类似于recursion to loop
- yt
给定所有 x1,x2…xi-1 的情况下 hi的概率是 πi(hi)
给定hi的情况下
所有xi+1,xi+2,…xt同时满足的概率是ρi(hi)
所有xi,xi+1,…xt同时满足的概率是P(xi | hi)ρi(hi)
πi(hi) 乘以 P(xi | hi) 乘以 ρi(hi) 等于P(x1,…,xt, hi)
再对所有hi求和
等于P(x1,…,xt)