back to index
[DLHLP 2020] Speech Recognition (6/7) - RNN-T Training (optional)

link |
整理&字幕由Amara.org社區提供
link |
整理&字幕由Amara.org社區提供
link |
整理&字幕由Amara.org社區提供
link |
整理&字幕由Amara.org社區提供
link |
整理&字幕由Amara.org社區提供
link |
整理&字幕由Amara.org社區提供
link |
整理&字幕由Amara.org社區提供
link |
L0 跟 H1 丟到 decoder 裡面去
link |
那 decoder 產生一個 probability distribution
link |
這個 probability distribution
link |
我們用 P 下標 1 下標 0 來表示
link |
下標 1 下標 0 的意思我們這邊就表示是說
link |
它吃第一個 acoustic feature
link |
RNT 產生出來的 probability distribution
link |
它吃 H1 代表吃第一個 acoustic feature 當作輸入
link |
這 L0 代表之前沒產生出任何的 token
link |
然後產生一個 distribution 叫做 P1
link |
好那 Phi、Nor 這個 symbol
link |
這個 Nor 這個 symbol 放在聚首的機率
link |
P1 這個 distribution 裡面產生 Nor 的機率是多少
link |
你就知道這個 Nor 放在聚首的機率
link |
接下來我們要計算有了這個 Nor 以後
link |
上面這個 RNN 而言不會造成任何影響
link |
如果底下產生的東西是 Nor 它就不動
link |
底下要產生 token 它才會有所動作
link |
但是產生 Nor 的時候 encoder 這邊會不一樣
link |
這個 acoustic feature 我能夠用的資訊都用盡了
link |
給我下一個 acoustic feature
link |
所以 encoder 就再給你一個 decoder H2
link |
代表說我們已經讀到了第二個 acoustic feature
link |
然後沒有產生任何 token 的時候的一個
link |
probability distribution
link |
給了這個 Phi 產生 C 的機率是多少
link |
你就看這個 distribution 裡面 C 的機率是多少
link |
你就看這個 distribution 裡面 C 的機率是多少 算出來
link |
接下來我們來計算有 Phi 有 C 以後
link |
所以左上角這個 RN 把 C 讀進去
link |
那它 output 就不是 L0 了
link |
把 C 讀進去以後 它的輸出有點變了
link |
那 input 的地方 encoder 的地方不變
link |
encoder 的地方沒有看到 Nor
link |
但是來自左上角這個 recurrent network
link |
這邊是 L0 這邊是 L1 不一樣了
link |
所以這邊 output 也是不一樣的 叫做 P21
link |
然後同樣的 process 就一直進行下去
link |
從 encoder 那邊給你一個新的 vector 叫 H3
link |
然後 H3 跟 L1 一起產生 P31
link |
然後你再看 P31 產生 Nor 的機率
link |
會再給你一個新的 vector 叫 H4
link |
然後我們再看 P41 產生 A 的機率
link |
左上角的這個 RN 被 update 了
link |
然後這個 P52 計算它產生 T 的機率
link |
然後這個 process 就反覆一直下去
link |
你要計算這個 alignment 的機率
link |
在這個 distribution 裡面的機率
link |
就是這個 alignment 的機率
link |
就是這一個 alignment 的機率了
link |
就是這個 alignment 的機率了
link |
token 和 token 之間的關係
link |
recurrent network 來表達
link |
而這個 recurrent network
link |
這樣在 training 的時候會有幫助
link |
現在我們就要來看看它的 training
link |
都會對應到一個機率的 distribution
link |
所以其實看到是 encoder 的 output
link |
那個 recurrent network 裡面產生 L2
link |
output 的 distribution
link |
今天每一個格子的 distribution
link |
他就有一個固定的 distribution
link |
這個格子裡面 distribution
link |
就這一個格子裡的 distribution
link |
這個 distribution 是固定的
link |
你這個 distribution 是固定的
link |
所以你要計算這個 distribution
link |
那反正這個 distribution
link |
你要算這個 distribution
link |
這個 distribution 算出來了
link |
什麼叫做這個 distribution 的機率
link |
P42這個 distribution
link |
P42這個 distribution
link |
然後產生 c 跟 a 產生兩個 token
link |
你可以說你先 no c no no a
link |
你也可以有 no no no c a
link |
如果這個 RNN 他會讀這個 no 的話
link |
RNN 的 output 就不一樣了
link |
dynamic programming
link |
所有 alignment 的分數的總和
link |
假設你熟悉 Hidden Markov Model 的話
link |
你知道說 Hidden Markov Model
link |
是用所謂的 Forward Backward Algorithm
link |
來算出所有 alignment 的分數
link |
用來算所有 alignment 分數加總的方法
link |
HMM 用的 Forward Backward Algorithm
link |
α 下標 i 下標 j 是什麼意思呢
link |
α 下標 i 下標 j 是說我們考慮
link |
i 個 Acoustic Feature
link |
這個 token 的 alignment
link |
舉例來說這個格子就對應到 α 4,2
link |
我們把所有有讀過四個 Acoustic Feature
link |
我們把所有讀過四個 Acoustic Feature
link |
token 的 alignment 通通找出來
link |
他們全部都已經讀了四個 Acoustic Feature
link |
我們把這些 alignment 的分數
link |
這個 α 4,2 是 α 4,1 跟 α 3,2
link |
α 4,2 可以由 α 4,1 跟 α 3,2 算出來
link |
我們來看看 α 4,2 是怎麼產生的
link |
他有四個 Acoustic Feature
link |
他已經讀了四個 Acoustic Feature
link |
看四個 Acoustic Feature
link |
他可能只讀了四個 Acoustic Feature
link |
已經讀了三個 Acoustic Feature
link |
接下來他只要再讀下一個 Acoustic Feature
link |
看四個 Acoustic Feature
link |
只產生一個 token 要變成 4,2
link |
從 3,2 變到 4,2 要怎麼做呢
link |
本來只讀了三個 Acoustic Feature
link |
已經讀了三個 Acoustic Feature
link |
接下來就讀下一個 Acoustic Feature
link |
就可以讀到第四個 Acoustic Feature了
link |
所以讀第四個 Acoustic Feature
link |
那我們現在假設 alpha 4,1 跟 alpha 3,2
link |
所有的 alignment 分數的和
link |
接下來你就可以算 alpha 4,2 了
link |
你假設你知道 alpha 4,1 的值
link |
alpha 4,2 就是把 alpha 4,1 的值
link |
乘上產生 NO 這個 symbol 的機率
link |
因為 4,1 的 alignment
link |
3,2 的 alignment 只要再產生 NO symbol
link |
已經是 4,1 這個狀態的 alignment
link |
再加上所有已經變成 3,2 這個狀態的 alignment
link |
這邊這個 alpha 4,1 乘上 a 的機率
link |
然後變成 4,2 的 alignment 的分數總和
link |
然後這個 alpha 3,2 乘以 NO 的機率
link |
從 3,2 變成 4,2 的 alignment 的分數總和
link |
Cursive Feature 2 個 Token
link |
的所有的 alignment 的分數總和
link |
你就可以算出所有 alignment 的分數的總和
link |
所有 alignment 都從左上角起始
link |
你可以把右下角這個點的 alpha i,j 算出來
link |
所有的我們今天要找的 alignment 的分數總和
link |
計算所有 alignment 分數總和這個任務
link |
格子的 alpha i,j 算出來呢
link |
你只要用 Dynamic Programming 的概念
link |
把這邊每一個格子的 alpha i,j 依序填滿
link |
那你要算這個格子的 alpha i,j
link |
你只需要知道這邊的 alpha i,j
link |
這兩個 alpha i,j 你都知道
link |
你就可以算出這個格子的 alpha i,j 是多少
link |
每一個格子的 alpha i,j 都填滿
link |
最右下角這個格子裡面的 alpha i,j
link |
所有 alignment 的分數總和算出來了
link |
是計算 P of Y given X
link |
我們知道怎麼窮取所有的 alignment
link |
把所有 alignment 的分數算出來以後加總
link |
你才能算 P of Y given X
link |
RNNT 的參數怎麼算 P of Y given X
link |
我們的目標是假設給你一段聲音訊號 X
link |
token sequence 是 Y hat
link |
我們希望 P of Y hat given X 越大越好
link |
我們希望 learn 一個 network 的參數
link |
使得 P of Y hat given X 越大越好
link |
怎麼 optimize 這個 objective function 呢
link |
我們會用 gradient descent 的技術
link |
要做 gradient descent
link |
你的 network 參數 theta
link |
對 P of Y hat given X 的偏微分
link |
這是我們要 optimize 的 objective function
link |
theta 對 P of Y given X 的偏微分
link |
好那這個 P of Y given X
link |
是 summation over 所有的 alignment
link |
summation over 所有 alignment 的 P of H given X
link |
每一個 alignment 這個 H 的 P of H given X
link |
那有哪些機率相乘得到這些 alignment 呢
link |
其中所經過的每一個箭頭上面的機率相乘
link |
就是這一個 alignment 的分數
link |
所有的這些 alignment 的分數的和
link |
所以這一項 P of Y given X 裡面
link |
都是這些機率作為它的 component
link |
這些機率是 P of Y given X 的基本組成
link |
就得到 P of Y given X
link |
那我們現在知道 P of Y given X
link |
是由這些 token 被產生出來的機率所組成的
link |
而這些 token 被產生出來的機率
link |
是受到 network 的參數的影響
link |
這些參數影響了這些 token 被產生的機率
link |
這些 token 被產生的機率影響了 P of Y given X
link |
按照 Chain Rule 就寫成這個樣子
link |
然後再計算這一項對 P of Y given X 的偏微分
link |
加上 Theta 對 P 下標 32
link |
產生 Naught 的這個機率作偏微分
link |
再乘上這一項機率對 P of Y given X 的偏微分
link |
我們就可以算出 Theta 對 P of Y given X 的偏微分
link |
我們要算出 Theta 對這個 P 41 of A 的偏微分
link |
計算 P 41 of A 對 P of Y given X 的偏微分
link |
加上 Theta P 32 of Naught
link |
乘上 P 32 of Naught 對 P of Y given X 的偏微分
link |
把 Theta 對每一項 component 的偏微分
link |
再乘上每一項 component 對 P of Y given X 的偏微分
link |
然後再對所有的 component 加起來
link |
對 P of Y given X 的影響
link |
我們先計算出 Theta 對這邊每一個箭頭上的機率
link |
再計算出每一個箭頭對 P of Y given X 造成的影響
link |
對這邊每一個箭頭上面的機率的偏微分呢
link |
那我們這邊用 Theta 對 P41 of A 的偏微分
link |
作為我們用 Theta 對 P41 of A 的偏微分
link |
跟 train 一般的 network 沒有什麼不同
link |
其實這邊你用的就是一般的 backpropagation
link |
所以其實是 backpropagation through time
link |
你先跑 forward path 計算出 P41
link |
然後接下來你跑 backward path
link |
那這個 backward path 這個 error signal
link |
然後會傳到左上角這個 language model 裡面
link |
總之這個部分跟 train 一般的 network 是一樣的
link |
這個地方就使用 backpropagation through time
link |
你怎麼 train 一般的 network
link |
因為我們在 train 一般的 network 的時候
link |
對 network output 的偏微分
link |
network 的參數對這個 P41
link |
這個 output distribution 的偏微分
link |
那這個我們在過去學 backpropagation 的時候
link |
那接下來我們要計算 P41 of A
link |
對 P of y hat given Theta 的偏微分
link |
首先 P of y hat given Theta
link |
是由很多的 alignment 的分數
link |
那我們現在把 alignment 分成兩類
link |
另外一類是沒有 P41 of A 的
link |
所以如果你的 alignment 裡面有 P41 of A
link |
如果你的 alignment 裡面沒有 P41 of A
link |
P of y hat given Theta 的偏微分
link |
這邊每一個 P of h given x
link |
這邊的 P of h given x
link |
那把這一項對 P41 of A 做偏微分
link |
我們就是 summation over 所有的 h
link |
也可以寫成把 P41 of A 提出來
link |
就是把所有有通過 P41 of A 的
link |
把有 P41 of A 的 alignment
link |
P41 of A 對 P of y given x 的 gradient
link |
一個 Acoustic Feature
link |
跟這個 Token 的 alignment
link |
已經產生了四個 Acoustic Feature
link |
就是 β42 它讀了第五個 Acoustic Feature
link |
產生 NO 這個 Symbol 以後
link |
而 β42 產生 Token T 以後
link |
在 42 這個狀態下產生 T 的機率
link |
加上 β52 乘以 P42 of Y
link |
產生 NO 這個 Symbol 的機率
link |
乘上從 β42 走到 β43 的機率
link |
那這個 P41 of A 跟 P41 of A
link |
P41 of A 對 P of y hat
link |
怎麼用 gradient descent
link |
P of y given x 的值最大
link |
P of y given x 值最大的 y
link |
更何況這個 P of y given x
link |
讓這個 alignment 相加的值最大
link |
這個 y 它所有的 alignment
link |
比較容易的 decoding 的做法
link |
所有的 alignment 的分數加起來
link |
它分數最高的那一個 alignment
link |
我們把 summation over 所有的 alignment
link |
換成指導分數最高的那一個 alignment
link |
但是其中分數最大的那個 alignment
link |
來代表全部 alignment 的分數
link |
會比其他的 alignment 大很多嗎
link |
那我們就可以用下面這個 approximation
link |
這個 alignment 的機率是最大的
link |
這個機率最大的 alignment 叫做 h star
link |
用一個這個 alignment inverse
link |
我們找出這個分數最高的 h star
link |
那怎麼算 P of h given x 呢
link |
r n t 都會跑出一個 distribution
link |
都會跑出一個 distribution
link |
這個每一個 distribution 裡面
link |
h star 的一個 approximation
link |
當然我們在講 bin search 的時候
link |
每一個 time step 取機率最大的那個
link |
不見得會讓 P of h given x
link |
每一個 time step 都取機率最大的
link |
這邊你一樣可以用 bin search 的方法
link |
這個 r n t training 的部分呢
link |
LAS CTC RNT 這三個模型的比較
link |
已經 generate 出來的 token
link |
沒有考慮在之前的 time step
link |
之前已經 generate 出來的東西
link |
所以在 decoder 上是比較強的
link |
接下來我們看 alignment 的部分
link |
CTC 跟 RNT 都需要做 alignment
link |
LAS 它的 alignment 可以說是 soft
link |
LAS 用 attention 這個機制
link |
那 CTC 跟 RNT 的訓練是比較麻煩的
link |
你都必須要把所有的 alignment 加起來
link |
怎麼窮取所有可能的 alignment
link |
是你要做到 online recognition
link |
可以做到 online decoding
link |
像 Pixel 4 內建的那個語音辨識系統