介绍
本门课程是2020年李宏毅老师新课:Deep Learning for Human Language Processing(深度学习与人类语言处理)
课程网站:http://speech.ee.ntu.edu.tw/~tlkagk/courses_DLHLP20.html
B站视频:https://www.bilibili.com/video/BV1EE411g7Uk?t=222
公式输入请参考:在线Latex公式
本节回到End-to-end方式,上节提到的Alignment,我们来详细的对其进行讲解。
上节的时候讲HMM,使用的是State来作为最小单位,End-to-end模型则可以直接使用较大的token进行计算,也就是直接计算给定acoustic feature(声音信号)条件下,某个token sequence出现的最大概率。
也就是Decoding:
Y
∗
=
a
r
g
max
Y
l
o
g
P
(
Y
∣
X
)
Y^*=arg\underset{Y}{\text{max}}logP(Y|X)
Y∗=argYmaxlogP(Y∣X)
在训练阶段,就是要找到一个参数
θ
\theta
θ,使得给定X出现正确答案
Y
^
\hat Y
Y^的几率越大越好:
θ
∗
=
a
r
g
max
θ
l
o
g
P
θ
(
Y
^
∣
X
)
\theta^*=arg\underset{\theta}{\text{max}}logP_{\theta}(\hat Y|X)
θ∗=argθmaxlogPθ(Y^∣X)
由于每个分布难以穷举计算,所以一般取每个分布的前几个进行Beam Search
下面以LAS为例,进行讲解。
LAS
LAS directly computes
P
(
Y
∣
X
)
P(Y|X)
P(Y∣X):
P
(
Y
∣
X
)
=
p
(
a
∣
X
)
p
(
b
∣
a
,
X
)
.
.
.
P(Y|X)=p(a|X)p(b|a,X)...
P(Y∣X)=p(a∣X)p(b∣a,X)...
下面就是LAS的Decoder,吃第一个context vector:
c
0
c^0
c0,产生一个概率分布,橙色那个:
p
(
a
)
p(a)
p(a)
并得到这个概率分布产生a的几率。
a出来之后,将a和下一个context vector:
c
1
c^1
c1作为Decoder的输入,得到下一个概率分布,获得b
b和
c
2
c^2
c2得到最后end of sentence。
这个例子的
P
(
Y
∣
X
)
P(Y|X)
P(Y∣X)的计算就是:a出现的几率乘上,给定a出现的条件下,b出现的几率,乘上给定a,b出现的条件下,EOS出现的几率
CTC,RNN-T
下面来看CTC,RNN-T如何计算
P
(
Y
∣
X
)
P(Y|X)
P(Y∣X),CTC,RNN-T和HMM一样需要alignment。这也是上节中提到这个技术的原因。
以CTC为例,假设输入的acoustic feature有四个,token sequence有两个:
我们需要在token sequence插入一些东西(一般是插入NULL或者重复值),使得token sequence与acoustic feature长度一样,例如上面的例子token sequence变成:
h
=
a
∅
b
∅
h=a\varnothing b\varnothing
h=a∅b∅
把这四个东西对应到下面四个时间步的橙色输出。
然后把所有可能的alignment取出来,然后计算每个acoustic feature产生alignment的几率加起来:
P
(
Y
∣
X
)
=
∑
h
∈
a
l
i
g
n
(
Y
)
P
(
h
∣
X
)
P(Y|X)=\sum_{h\in align(Y)}P(h|X)
P(Y∣X)=h∈align(Y)∑P(h∣X)
HMM:
P
θ
(
X
∣
S
)
=
∑
h
∈
a
l
i
g
n
(
S
)
P
(
X
∣
h
)
P_{\theta}(X|S)=\sum_{h\in align(S)}P(X|h)
Pθ(X∣S)=h∈align(S)∑P(X∣h)
CTC,RNN-T:
P
θ
(
Y
∣
X
)
=
∑
h
∈
a
l
i
g
n
(
Y
)
P
(
h
∣
X
)
P_{\theta}(Y|X)=\sum_{h\in align(Y)}P(h|X)
Pθ(Y∣X)=h∈align(Y)∑P(h∣X)
对比两个对象,接下来就是要讲下面几个问题
后面的内容
如何穷举所有的alignments:1. Enumerate all the possible alignments
如何累加所有的alignments:2. How to sum over all the alignments
3.如何训练CTC,RNN-T,CTC,RNN-T是NN,需要用反向传播(GD)求解,也就是要求导,即:
θ
∗
=
a
r
g
max
θ
l
o
g
P
θ
(
Y
^
∣
X
)
\theta^*=arg\underset{\theta}{\text{max}}logP_{\theta}(\hat Y|X)
θ∗=argθmaxlogPθ(Y^∣X)
要求导:
∂
P
θ
(
Y
^
∣
X
)
∂
θ
=
?
\cfrac{\partial P_{\theta}(\hat Y|X)}{\partial \theta}=?
∂θ∂Pθ(Y^∣X)=?
4.如何测试Testing (Inference, decoding): 就是要解:
Y
∗
=
a
r
g
max
Y
l
o
g
P
(
Y
∣
X
)
Y^*=arg\underset{Y}{\text{max}}logP(Y|X)
Y∗=argYmaxlogP(Y∣X)
All the alignments(穷举)
LAS是直接算,没有用alignment,我们这里对比一下HMM,CTC,RNN-T的alignments有什么不一样。
我们假设acoustic feature(6个)和token sequence(3个)如下所示。
下面来看3个token如何和6个acoustic feature如何进行alignment:
HMM:将token中某些值进行重复,直到长度与acoustic feature长度相同
CTC:将token中某些值进行重复或者插入NULL,直到长度与acoustic feature长度相同
RNN-T:插入T个NULL
穷举alignment
HMM
HMM:将token中某些值进行重复,直到长度与acoustic feature长度相同
For n = 1 to 𝑁
output the n-th token 𝑡𝑛 times
constraint:
t
1
+
t
2
+
.
.
.
+
t
N
=
T
,
t
n
>
0
t_1+t_2+...+t_N=T,t_n>0
t1+t2+...+tN=T,tn>0
把这些alignment集合起来,可以画到一个表格中(Trellis Graph):
除了第一步是斜向下之外,每个列中都有两种选择,一是横着走,一个是右下走
约束是要从起点(橙色)开始,终点(蓝色)结束。下面的黑色箭头是不对的。
从开始到结束的所有路径就是所有alignments的集合。
CTC
CTC:将token中某些值进行重复或者插入NULL(可以在开始或者结束的地方插入NULL,NULL可以有可以没有),直到长度与acoustic feature长度相同
output “𝜙” 𝑐0 times
For n = 1 to 𝑁
output the n-th token 𝑡𝑛 times
output “𝜙” 𝑐𝑛 times
约束:
t
1
+
t
2
+
.
.
.
+
t
N
+
c
0
+
c
1
+
.
.
.
+
c
N
=
T
,
t
n
>
0
,
c
n
≥
0
t_1+t_2+...+t_N+c_0+c_1+...+c_N=T,t_n>0,c_n\geq0
t1+t2+...+tN+c0+c1+...+cN=T,tn>0,cn≥0
当在NULL位置,不能走马步(中国象棋术语)否则会跳过token
所以在起始点,NULL,token三种位置上有不同的走法:
当然,终点有两种,下面看例子:
注意:当token中有重复值的时候,就不能跳到下一个token
RNN-T
output “𝜙” 𝑐0 times
For n = 1 to N
output the n-th token 1 times
output “𝜙” 𝑐𝑛 times
约束:
c
0
+
c
1
+
.
.
.
+
c
N
=
T
,
c
N
>
0
,
c
n
≥
0
for n = 1 to N − 1
c_0+c_1+...+c_N=T,c_N>0,c_n\geq 0 \text{ for n = 1 to N − 1}
c0+c1+...+cN=T,cN>0,cn≥0 for n = 1 to N − 1
如下图所示,前面部分插入不插入NULL都可以,但是最后一定至少要有一个NULL,所有的NULL加起来要有T个。
右下角是有一个格子的,符合最后至少有一个NULL的约束
下面是两个例子。
注意路径不能走出表格:
小结
HMM:
CTC:开始有两个路径(虚线)
RNN-T: