back to index

[DLHLP 2020] Audio BERT (2/2) (由助教紀伯翰同學和助教楊書文同學講授)


link |
00:00.000
我們就開始上課吧
link |
00:02.000
那我是今天第二個講者
link |
00:04.000
那我今天想要講的主題是
link |
00:06.000
link |
00:08.000
link |
00:10.000
Albert 做在
link |
00:12.000
Audio 上面的 Case
link |
00:14.000
那這篇就叫
link |
00:16.000
Aalbert 這樣子
link |
00:18.000
是 Audio 的 Albert
link |
00:22.000
那一開始呢
link |
00:24.000
我們就先 recap 一下
link |
00:26.000
Albert 是一個怎麼樣的模型
link |
00:28.000
Albert 其實它是去年的
link |
00:30.000
九月在 iClear 上面
link |
00:32.000
所提出來的模型
link |
00:34.000
那它主要的想法其實是
link |
00:36.000
它對原本的 BERT 減少了
link |
00:38.000
很多的參數以及
link |
00:40.000
呃 減少了很多的參數
link |
00:42.000
那其實它最終的目的是希望說
link |
00:44.000
在這麼大的一個
link |
00:46.000
pre-trained model
link |
00:48.000
它是一個
link |
00:50.000
你需要有很大的 memory 以及
link |
00:52.000
參數量你才有辦法做到
link |
00:54.000
做到很好的表現的時候
link |
00:56.000
它是希望說我們可不可以
link |
00:58.000
以一個
link |
01:00.000
我們可不可以不需要一個這麼大的
link |
01:02.000
模型來做這些事情
link |
01:04.000
而是用一個比較小的模型來做
link |
01:06.000
link |
01:08.000
那主要來說
link |
01:10.000
它的貢獻我在這邊就先講個
link |
01:12.000
三點是跟 Albert 有關的事情
link |
01:14.000
是第一個是它
link |
01:16.000
去 factorize 所謂的
link |
01:18.000
embedding matrix
link |
01:20.000
那相信在做作業的時候
link |
01:22.000
大家都對 BERT 的底層
link |
01:24.000
都非常熟悉
link |
01:26.000
那等一下就會講一下說 Albert 上面
link |
01:28.000
到底做了哪些事情
link |
01:30.000
第一個點是 factorize embedding matrix
link |
01:32.000
第二個點是
link |
01:34.000
它也是它主要一個 novelty
link |
01:36.000
就是它在每一個
link |
01:38.000
每一個 layer 之間它 share
link |
01:40.000
它都是使用同一個參數
link |
01:42.000
那第三個會簡單介紹
link |
01:44.000
一下說
link |
01:46.000
它的 model 的 configuration
link |
01:48.000
然後跟 BERT 相比
link |
01:50.000
差在哪裡
link |
01:52.000
那第一個點是
link |
01:54.000
Albert 這個模型的時候
link |
01:56.000
它在做的時候它是有
link |
01:58.000
把 BERT 的 embedding matrix
link |
02:00.000
做一個減參的動作
link |
02:02.000
那減參是什麼意思呢
link |
02:04.000
就是我這邊
link |
02:06.000
來說的話
link |
02:08.000
左邊是原本的 BERT
link |
02:10.000
那一開始
link |
02:12.000
一開始呢
link |
02:14.000
你會有一個 embedding matrix
link |
02:16.000
是一個 3萬乘以 768 matrix
link |
02:18.000
那這個 matrix 是什麼呢
link |
02:20.000
就是說
link |
02:22.000
一開始你每一個字
link |
02:24.000
就是 BERT 裡面應該會有一個
link |
02:26.000
vocabulary 的 matrix
link |
02:28.000
那它需要
link |
02:30.000
你需要把字餵給它之後
link |
02:32.000
它去這個 vocabulary 的 matrix 裡面
link |
02:34.000
找出對應的 vector 拿出來
link |
02:36.000
那那個 vocabulary 的 size 是一個
link |
02:38.000
3萬
link |
02:40.000
是有3萬個
link |
02:42.000
就是它有3萬個 vocabulary
link |
02:44.000
然後每一個 vocabulary 的 dimension 都是 768
link |
02:46.000
那 Albert 這篇作品
link |
02:48.000
他在這裡做了一個細微的
link |
02:50.000
做法就是說
link |
02:52.000
今天我雖然說我的 vocabulary
link |
02:54.000
一樣是有3萬
link |
02:56.000
那我從這個點出發
link |
02:58.000
我把原本的 dimension 從 768
link |
03:00.000
變成 128
link |
03:02.000
那再經由一個
link |
03:04.000
projection 的 head
link |
03:06.000
就是這個 projection layer 把 128
link |
03:08.000
投到 768
link |
03:10.000
那做這件事情的時候
link |
03:12.000
因為原本你的 embedding matrix
link |
03:14.000
的數的
link |
03:16.000
因為 vocabulary 有
link |
03:18.000
3萬個所以你 3萬乘以 768
link |
03:20.000
其實在 BERT 裡面的參數
link |
03:22.000
就會佔 23.04M
link |
03:24.000
那經由 Albert 這樣
link |
03:26.000
小小的改動的時候
link |
03:28.000
他把 768 先降到
link |
03:30.000
128 然後再經由一個
link |
03:32.000
簡單的 linear transform
link |
03:34.000
把 128 投到 768
link |
03:36.000
的 matrix 之後
link |
03:38.000
原本在這個第零層的時候
link |
03:40.000
你會有 23.04
link |
03:42.000
的 parameter 那經由
link |
03:44.000
這樣的改變就只會變成
link |
03:46.000
3.898M 的 parameter
link |
03:48.000
那這是他第一個
link |
03:50.000
把 parameter 變少的
link |
03:52.000
一個簡單的步驟
link |
03:54.000
那這是第一個
link |
03:56.000
link |
03:58.000
那第二個點是
link |
04:00.000
原本 BERT 有 12 個 layer
link |
04:02.000
那 12 個 layer 裡面
link |
04:04.000
每一層都是一個 transformer
link |
04:06.000
那 transformer 裡面原本的 BERT
link |
04:08.000
是需要有
link |
04:10.000
12 個 transformer 裡面
link |
04:12.000
參數都是不一樣的
link |
04:14.000
那在這裡 Albert 他這個 walk 裡面
link |
04:16.000
他讓
link |
04:18.000
他只使用了
link |
04:20.000
一層的 transformer
link |
04:22.000
那讓這一層的 transformer
link |
04:24.000
只要 loop 12 次
link |
04:26.000
就會變成 12 層
link |
04:28.000
然後去做這件事情
link |
04:30.000
然後他發現說其實我在 pre-train 的時候
link |
04:32.000
這麼做在表現上
link |
04:34.000
也不會掉太多
link |
04:36.000
那我還可以減少非常非常多的
link |
04:38.000
參數量
link |
04:40.000
那這是他
link |
04:42.000
第二個比較有趣的地方
link |
04:44.000
就是他從
link |
04:46.000
他把 12 層的 parameter
link |
04:48.000
變成一層
link |
04:50.000
那我只要對這一層 code 12 次
link |
04:52.000
就可以做到一樣的效果
link |
04:54.000
那在他的 paper 裡面
link |
04:56.000
有提了一些
link |
04:58.000
就是他的 configuration
link |
05:00.000
就是他對 BERT 的 base
link |
05:02.000
跟 large 的 parameter
link |
05:04.000
你可以看到說 Albert 他有四個 setting
link |
05:06.000
是 base, large, x large
link |
05:08.000
跟 xx large
link |
05:10.000
那你可以看到說
link |
05:12.000
他的參數量
link |
05:14.000
使用都是比 BERT 的參數來的小
link |
05:16.000
只有這個 xx large 是
link |
05:18.000
比 base 來的大
link |
05:20.000
但還是比 large 來的小
link |
05:22.000
這樣子
link |
05:24.000
那還有一些細微的改動
link |
05:26.000
就比較像是他的 hidden size
link |
05:28.000
有的是 768 有的是 1024
link |
05:30.000
那其實他最大的 contribution
link |
05:32.000
還是在 parameter sharing
link |
05:34.000
這個地方
link |
05:36.000
12 層的 layer 只共用了
link |
05:38.000
一層的參數
link |
05:40.000
那下面是他的
link |
05:42.000
他在幾個 downstream task 的表現
link |
05:44.000
那其實我想要提的點是
link |
05:46.000
link |
05:48.000
Albert 裡面
link |
05:50.000
model 他最後其實是用
link |
05:52.000
xx large 跟 large
link |
05:54.000
BERT large 在做比較
link |
05:56.000
那你可以看到一點是
link |
05:58.000
他們兩個差在哪裡
link |
06:00.000
一個點是
link |
06:02.000
因為 hidden size 變大了
link |
06:04.000
Albert xx large 只有一層的參數
link |
06:06.000
但他的一層的參數已經
link |
06:08.000
就是只是比 BERT large
link |
06:10.000
24 層的參數來的少一點點
link |
06:12.000
那這樣子的做法
link |
06:14.000
雖然說 parameter 有減少
link |
06:16.000
不過在
link |
06:18.000
他的速度上是會變比較慢的
link |
06:20.000
那等一下會講的
link |
06:22.000
Albert 上面
link |
06:24.000
我們的
link |
06:26.000
hidden size 都跟原本的
link |
06:28.000
marking j的 size 是一樣的
link |
06:30.000
所以在速度上
link |
06:32.000
不會有所謂的減少
link |
06:34.000
這件事情
link |
06:36.000
然後我們的參數也會變得比較少
link |
06:38.000
Albert 目前原本那篇
link |
06:40.000
work 的介紹
link |
06:42.000
大概到這邊
link |
06:44.000
那我們就進入今天要講的
link |
06:46.000
audio albert
link |
06:48.000
那 audio albert 跟
link |
06:50.000
albert 的差別是什麼呢
link |
06:52.000
就只差在說原本你的 input 是
link |
06:54.000
在 albert 裡面
link |
06:56.000
你是 mask 的
link |
06:58.000
token 的 input
link |
07:00.000
你可能有一個句子
link |
07:02.000
中間有一些字被 mask 掉
link |
07:04.000
那換在我們 audio albert 裡面
link |
07:06.000
我們的 input 就會變成
link |
07:08.000
就是剛剛廷煒學長也有說過
link |
07:10.000
就是 male spectrogram
link |
07:12.000
裡面有一些被 mask
link |
07:14.000
成 0 的 token
link |
07:16.000
那這邊的做法其實是跟
link |
07:18.000
marking j 的做法是一模一樣
link |
07:20.000
那我們的 reconstruction 這裡就會變成是
link |
07:22.000
linear spectrogram
link |
07:24.000
那 linear spectrogram
link |
07:26.000
就是我們希望
link |
07:28.000
我們的 input 是 mask 的 male spectrogram
link |
07:30.000
然後到我們最後一層
link |
07:32.000
會有一個 prediction head
link |
07:34.000
那這個 prediction head 會去
link |
07:36.000
做 linear spectrogram
link |
07:38.000
就是要 male spectrogram 對應到的
link |
07:40.000
linear spectrogram 做 reconstruction 的動作
link |
07:42.000
那原本的 albert 只是
link |
07:44.000
把 mask 的 token 還原回來
link |
07:46.000
那跟 albert 的差異
link |
07:48.000
就有幾個點是一樣的
link |
07:50.000
第一個點是
link |
07:52.000
albert 有做一個 factorized matrix
link |
07:54.000
那他還會再多一個 projection head
link |
07:56.000
那在這裡是一樣的
link |
07:58.000
只是差在說跟 albert 不同的點
link |
08:00.000
是差在這個
link |
08:02.000
原本是文字的
link |
08:04.000
文字的 reconstruction
link |
08:06.000
變成 spectrogram reconstruction
link |
08:08.000
這樣
link |
08:12.000
那跟 marking j 的差異是差在說
link |
08:14.000
原本 marking j 是
link |
08:16.000
我是用 我是跟
link |
08:18.000
marking j 的 linear large 相比
link |
08:20.000
那 linear large 是有 12 層
link |
08:22.000
那在我們這個 work 裡面
link |
08:24.000
我們需要用
link |
08:26.000
一層的參數就可以做到這件事情
link |
08:28.000
但我們還是會有 12 層
link |
08:30.000
或是等一下會有
link |
08:32.000
相關層數的介紹
link |
08:34.000
那差距就只差在
link |
08:36.000
我們 share 參數
link |
08:38.000
這樣子
link |
08:40.000
那這篇 paper 裡面
link |
08:42.000
我們總共有 6 個模型
link |
08:44.000
那 6 個模型裡面我們就是
link |
08:46.000
有 albert
link |
08:48.000
我們的 audio albert 就會有 3 層 6 層
link |
08:50.000
跟 12 層的 model
link |
08:52.000
那 marking j 我們也有對應的
link |
08:54.000
3 層 6 層跟 12 層的模型
link |
08:56.000
那參數量因為
link |
08:58.000
audio albert 都是 share parameter
link |
09:00.000
所以都會是 7.4
link |
09:02.000
那在 marking j 3, 6, 12 層
link |
09:04.000
裡面就會有對應的
link |
09:06.000
parameter 數量
link |
09:10.000
好 那在 pre-training 的時候
link |
09:12.000
就不免俗的
link |
09:14.000
再提一下就是
link |
09:16.000
一樣是使用 360 小時的
link |
09:18.000
libri speech
link |
09:20.000
那在 input 是有 mask
link |
09:22.000
的 male spectrogram
link |
09:24.000
然後最後一層
link |
09:26.000
我們會再經過一個 prediction head
link |
09:28.000
然後去 reconstruct 我們
link |
09:30.000
對應的
link |
09:32.000
就是如果沒有 mask 沒有 spectrogram
link |
09:34.000
對應的 linear spectrogram
link |
09:36.000
的 output 就是有這個 ground truth
link |
09:38.000
會去跟他做 L1 loss 的
link |
09:40.000
算 loss 然後去
link |
09:42.000
update 我們的模型
link |
09:44.000
那這是在 pre-training 的時候
link |
09:46.000
link |
09:48.000
那講完了
link |
09:50.000
那這個是所謂的
link |
09:52.000
pre-training 的 stage
link |
09:54.000
那講完了之後我們來看一下
link |
09:56.000
downstream task
link |
09:58.000
那在 downstream task 裡面
link |
10:00.000
我們有主要兩個 task
link |
10:02.000
那一開始我就先講
link |
10:04.000
風鈴 classification
link |
10:06.000
那風鈴 classification 裡面我有做兩種 setting
link |
10:08.000
第一種 setting 是使用
link |
10:10.000
微提上 就是
link |
10:12.000
12 層裡面我還會
link |
10:14.000
每一層有一個 weight
link |
10:16.000
去跟我的
link |
10:18.000
每一層 representation
link |
10:20.000
乘起來之後再 aggregate 出來
link |
10:22.000
變成這個最後的
link |
10:24.000
這個
link |
10:26.000
representation 這樣子
link |
10:28.000
那還有一種 setup 是
link |
10:30.000
fine tune 是指說
link |
10:32.000
這個藍色的意思就是
link |
10:34.000
我們在 downstream 的時候會動到的
link |
10:36.000
參數 也就是說在
link |
10:38.000
feature extraction 的時候 雖然我
link |
10:40.000
微提上只有額外的 weight
link |
10:42.000
我 pre-trained model 裡面
link |
10:44.000
我所有的參數都是
link |
10:46.000
freeze 的 那在 fine tune 裡面
link |
10:48.000
不管是 pre-trained model
link |
10:50.000
還是我們對應的 classifier
link |
10:52.000
它也都會被調到
link |
10:54.000
那在風鈴 classification
link |
10:56.000
裡面我們還有
link |
10:58.000
我們除了做微提上跟 fine tune 的
link |
11:00.000
fine tune 的
link |
11:02.000
task 的
link |
11:04.000
環境之外我們還有
link |
11:06.000
做一個是
link |
11:08.000
在不同
link |
11:10.000
不同 proportion 的 data 下的
link |
11:12.000
情況就是跟上一篇的
link |
11:14.000
work 是一樣的
link |
11:18.000
那在風鈴 classification
link |
11:20.000
裡面我們的
link |
11:22.000
classifier 是一個 multi-layered
link |
11:24.000
就是可能是
link |
11:26.000
一層或兩層的 classifier
link |
11:28.000
那在這裡我們是用兩層的 classifier
link |
11:30.000
去做風鈴的 classification task
link |
11:32.000
那就是會有
link |
11:34.000
微提上跟 fine tune 的環境
link |
11:36.000
這樣
link |
11:38.000
那可以從這個圖
link |
11:40.000
可以看到來說
link |
11:42.000
這裡都是
link |
11:44.000
Audio Albert 的實驗結果
link |
11:46.000
那這邊都是 Marking J 的實驗結果
link |
11:48.000
那 3L 就是指三層的狀況
link |
11:50.000
6L 就是指六層的狀況
link |
11:52.000
12層就是12層的狀況
link |
11:54.000
那可以看到說
link |
11:56.000
藍色是微提上的結果
link |
11:58.000
然後咖啡色的是 fine tune 的結果
link |
12:00.000
那可以看到說
link |
12:02.000
其實在 Audio Albert
link |
12:04.000
跟 Marking J 來說
link |
12:06.000
哪一個層數的
link |
12:08.000
表現他們的
link |
12:10.000
雖然說參數都只有
link |
12:12.000
7.4M 但是他們做到的
link |
12:14.000
那個 accuracy
link |
12:16.000
是非常接近的
link |
12:18.000
跟 Marking J 相比的話
link |
12:20.000
link |
12:22.000
這是一個簡單的
link |
12:24.000
overview
link |
12:26.000
那在進一步的實驗
link |
12:28.000
我們也會發現說
link |
12:30.000
即使我們今天 training data 可能
link |
12:32.000
link |
12:34.000
就是我們可能是有
link |
12:36.000
完整的 360 小時的 data
link |
12:38.000
去 training 以及
link |
12:40.000
最後我們只有用
link |
12:42.000
0.1% 的
link |
12:44.000
training data
link |
12:46.000
在 train 的時候
link |
12:48.000
在 Marking J 跟 Albert 的實驗裡面
link |
12:50.000
我們也可以做到
link |
12:52.000
跟 Marking J 的 model
link |
12:54.000
非常接近的結果
link |
12:56.000
那這一個
link |
12:58.000
這一個三角形的橘色的點
link |
13:00.000
是指我只用
link |
13:02.000
Mail 的
link |
13:04.000
當 input 會得到的
link |
13:06.000
那可以看到說
link |
13:08.000
不管是 Marking J
link |
13:10.000
就是比較粗的
link |
13:12.000
顏色的這個線
link |
13:14.000
跟實心的是 Audio Albert
link |
13:16.000
的線比起來他們的表現
link |
13:18.000
都是遠超過
link |
13:20.000
代表說在
link |
13:22.000
我們這樣的模型裡面
link |
13:24.000
還是非常有用的
link |
13:26.000
有用於幫助 downstream task
link |
13:28.000
那這個
link |
13:30.000
左邊的圖是 weight 上的表現
link |
13:32.000
他們都可以到
link |
13:34.000
69 70%
link |
13:36.000
的 accuracy
link |
13:38.000
那 fine tune 你是有 tune 到所有的 model
link |
13:40.000
還可以再往上 boost
link |
13:42.000
表現到 80 以上
link |
13:44.000
到 83 82
link |
13:50.000
那這是第一個 downstream task
link |
13:52.000
可是封你的 classification
link |
13:54.000
那進一步實驗裡面
link |
13:56.000
我們還有做第二件事情
link |
13:58.000
就是 speaker identification
link |
14:00.000
那 speaker identification
link |
14:02.000
我們還有分兩種環境
link |
14:04.000
是做 utterance label 跟 frame label
link |
14:06.000
那等一下會講一下這兩個 label
link |
14:08.000
的差異是什麼
link |
14:10.000
然後以及他們 overall performance
link |
14:14.000
那在
link |
14:16.000
這個 utterance label 裡面
link |
14:18.000
utterance label 的環境其實是
link |
14:20.000
今天我們 input 了
link |
14:22.000
input 可能是
link |
14:24.000
一段音訊
link |
14:26.000
會一段音訊之後你會
link |
14:28.000
一段音訊
link |
14:30.000
經過完我們的 model
link |
14:32.000
之後你會抽出一排的
link |
14:34.000
一排 representation
link |
14:36.000
那我們會把這一排 representation
link |
14:38.000
直接 apply 一個 mean pooling
link |
14:40.000
變成
link |
14:42.000
一根
link |
14:44.000
然後再過我們簡單的 linear classifier
link |
14:46.000
那就是
link |
14:48.000
這裡所說的我們會用一個
link |
14:50.000
mean pooling 的 operation
link |
14:52.000
變成一根
link |
14:54.000
一根 representation
link |
14:56.000
代表它是這個音訊
link |
14:58.000
這個 utterance 的 representation
link |
15:00.000
然後再經過一個很簡單的
link |
15:02.000
linear classifier
link |
15:04.000
去做我們的 speaker identification
link |
15:08.000
link |
15:10.000
可以先簡單的看一下
link |
15:12.000
performance 就是
link |
15:14.000
先不要看藍色的
link |
15:16.000
就先看綠色跟黃色的話
link |
15:18.000
你可以看到說這種 utterance label
link |
15:20.000
performance
link |
15:22.000
做 speaker identification
link |
15:24.000
的 task 是要去
link |
15:26.000
分辨
link |
15:28.000
251 個 speaker 誰是誰
link |
15:30.000
那在這樣的 task 裡面
link |
15:32.000
我只要用 utterance label representation
link |
15:34.000
過一個很簡單的
link |
15:36.000
linear classifier
link |
15:38.000
然後我只要 train 這個 classifier
link |
15:40.000
我就可以達到 98 到 99 的 accuracy
link |
15:44.000
然後
link |
15:46.000
那我們再回來看
link |
15:48.000
在進一步的實驗裡面
link |
15:50.000
我們知道說 speaker
link |
15:52.000
speaker 的
link |
15:54.000
utterance label 的 identification
link |
15:56.000
這個 task 裡面
link |
15:58.000
我們 model 都可以達到
link |
16:00.000
98 到 99 的 accuracy
link |
16:02.000
那我們再進一步實驗說
link |
16:04.000
假設我們把這樣的 representation
link |
16:06.000
我們把它用 teasing 去 visualize
link |
16:08.000
出來之後我們可以看到
link |
16:10.000
在 utterance label representation
link |
16:12.000
它根本就沒有去對
link |
16:14.000
speaker 的
link |
16:16.000
target 去做 training
link |
16:18.000
它只是做了 pre-training
link |
16:20.000
這樣的 task 之後
link |
16:22.000
它在 teasing visualization 上
link |
16:24.000
它其實是可以
link |
16:26.000
有能力做到分成一群一群的樣子
link |
16:28.000
那同一個顏色代表
link |
16:30.000
就是同一個 speaker
link |
16:32.000
那左邊這個圖是
link |
16:34.000
在 input 的時候我們是用沒有
link |
16:36.000
那沒有我們把它上
link |
16:38.000
我們把它上上
link |
16:40.000
就是同一個顏色代表同一個 speaker
link |
16:42.000
它在左邊 utterance label representation
link |
16:44.000
的時候它是
link |
16:46.000
亂成一團
link |
16:48.000
可是只要經過 MarkingJ
link |
16:50.000
或 AudioAlbert 的 representation 之後
link |
16:52.000
我們把它做
link |
16:54.000
我們達到它的 MarkingJ 跟 AudioAlbert 的
link |
16:56.000
utterance label representation
link |
16:58.000
它們是可以
link |
17:00.000
聚在一起一團一團
link |
17:02.000
同一個 speaker 是有
link |
17:04.000
分群的這樣子
link |
17:06.000
那第二個
link |
17:08.000
是 frame label
link |
17:10.000
就是指說
link |
17:12.000
原本我們的
link |
17:14.000
實驗是 utterance label 是
link |
17:16.000
一段音訊你會得到一排的
link |
17:18.000
然後我再做 mean pooling 變成一根
link |
17:20.000
然後把這一根過一個
link |
17:22.000
很簡單的 linear classifier
link |
17:24.000
分說
link |
17:26.000
這個音訊是誰
link |
17:28.000
那現在 frame label 就會變成
link |
17:30.000
我每一根都要去 classifier
link |
17:32.000
今天這個 frame 代表的人是誰
link |
17:34.000
這件事情
link |
17:36.000
不是不用再做 mean pooling
link |
17:38.000
而是只用這一根
link |
17:40.000
這是 classification
link |
17:44.000
那也是一個很簡單的
link |
17:46.000
linear classification 這樣子
link |
17:48.000
那在
link |
17:50.000
第二個實驗 frame label 實驗
link |
17:52.000
你可以看到說
link |
17:54.000
不管是 AudioAlbert 還是 MarkingJ
link |
17:56.000
裡面它們都可以做到
link |
17:58.000
98到99的表現
link |
18:00.000
然後雖然 AudioAlbert 是
link |
18:02.000
稍微低 MarkingJ 一點點
link |
18:04.000
但是兩者都可以抵達到
link |
18:06.000
98到99的表現這樣子
link |
18:08.000
即使今天你是要 classifier
link |
18:12.000
這個 frame label
link |
18:14.000
其實也是有 251 個 speaker 這樣子
link |
18:20.000
那在 AudioAlbert 的 paper 裡面
link |
18:22.000
我們就是做 phoning 的 classification task
link |
18:24.000
跟 speaker 的
link |
18:26.000
identification 的這兩個 task
link |
18:28.000
去說明說
link |
18:30.000
我們的模型跟 MarkingJ
link |
18:32.000
即使我們今天參數只有
link |
18:34.000
MarkingJ linear large 的
link |
18:36.000
331 但我們還是可以
link |
18:38.000
做到非常
link |
18:40.000
comparable 的 performance
link |
18:42.000
那最後一個是
link |
18:44.000
probing task 那probing task 是什麼呢
link |
18:46.000
就有點像是
link |
18:48.000
我去對每一層
link |
18:50.000
我想知道每一層 representation
link |
18:52.000
它具備有什麼樣的能力
link |
18:54.000
那我要怎麼做就是
link |
18:56.000
把每一層 representation 抽出來
link |
18:58.000
然後去做 phoning 或 speaker 的表現
link |
19:00.000
那這裡的
link |
19:02.000
linear 1 hidden 跟 2 hidden
link |
19:04.000
就是指說
link |
19:06.000
我後面 apply 的 downstream model
link |
19:08.000
可能是一個
link |
19:10.000
很簡單的 linear classifier
link |
19:12.000
還是一個 hidden 還是兩個 hidden
link |
19:14.000
那我們做這件事情的原因
link |
19:16.000
只是想要知道說
link |
19:18.000
在不同深度的 downstream model 裡面
link |
19:20.000
它的表現如何
link |
19:22.000
那其實從這個圖你可以看出來說
link |
19:24.000
綠色的圖
link |
19:26.000
綠色的點是 AudioAlbert 的
link |
19:28.000
每一層的
link |
19:30.000
phone 的
link |
19:32.000
然後紅色的線是
link |
19:34.000
那你可以看到一點是說
link |
19:36.000
這些線
link |
19:38.000
都有一個共同的
link |
19:40.000
特徵其實是
link |
19:42.000
我們今天雖然串好了一個
link |
19:44.000
pre-trained model 那在
link |
19:46.000
BERT 裡面它都是會用
link |
19:48.000
最後一層來做表現
link |
19:50.000
那其實我們這個實驗裡面可以看到一個點
link |
19:52.000
還蠻明顯的就是
link |
19:54.000
不管今天做的是
link |
19:56.000
speaker 還是這三個
link |
19:58.000
都是 phoning 的 setting
link |
20:00.000
那你可以知道說中間層的 representation
link |
20:02.000
是會比最後一層
link |
20:04.000
還要來得好的
link |
20:06.000
那這個是我們這個
link |
20:08.000
ProbablyTask 的
link |
20:10.000
summary 這樣子
link |
20:14.000
那其實
link |
20:16.000
AudioAlbert 的
link |
20:18.000
實驗
link |
20:20.000
目前
link |
20:22.000
這篇 paper 目前就到這邊
link |
20:24.000
那不知道大家有沒有什麼問題
link |
20:40.000
然後如果
link |
20:42.000
沒有問題的話我們等一下
link |
20:44.000
就換
link |
20:46.000
楊書文同學來講一下
link |
20:48.000
他的
link |
20:50.000
understand self-attention 在做什麼
link |
20:52.000
事情
link |
21:04.000
好 那不知道大家對
link |
21:06.000
這篇 paper 有什麼問題想要問
link |
21:28.000
如果
link |
21:30.000
沒有問題的話
link |
21:32.000
那我們就換
link |
21:34.000
楊書文同學來講一下
link |
21:36.000
self-attention 裡面的
link |
21:38.000
phoning 有關的資訊
link |
21:42.000
link |
21:44.000
那我
link |
21:46.000
直接開始嗎
link |
21:48.000
還有下課嗎
link |
21:50.000
應該沒有吧
link |
21:52.000
link |
21:54.000
那我就直接開始吧
link |
21:56.000
link |
22:02.000
link |
22:04.000
那這樣看得到吧
link |
22:06.000
link |
22:08.000
link |
22:10.000
link |
22:12.000
link |
22:14.000
我們就是
link |
22:16.000
有去看一下說
link |
22:18.000
這個
link |
22:20.000
self-attention 的 model
link |
22:22.000
在 train 這個 reconstruction
link |
22:24.000
的 loss 的時候
link |
22:26.000
它會發生什麼事情
link |
22:28.000
那因為過去的話
link |
22:30.000
過去有的 model 是
link |
22:32.000
比方我們用
link |
22:34.000
attention 然後去
link |
22:36.000
去 train 一個
link |
22:38.000
speaker recognition 的 model
link |
22:40.000
然後也是有人去研究說
link |
22:42.000
這樣子
link |
22:44.000
這樣子的 attention 它
link |
22:46.000
在如果你是要
link |
22:48.000
你的 loss 是專門給 speaker
link |
22:50.000
的相關的
link |
22:52.000
資訊的話 你這樣設計出來
link |
22:54.000
你的 attention 會去認哪些東西
link |
22:56.000
但是
link |
22:58.000
就是現在我們現在
link |
23:00.000
這個 birth 用的是 reconstruction loss
link |
23:02.000
link |
23:04.000
我們沒有限制它任何的
link |
23:06.000
就是沒有限制它
link |
23:08.000
要完成什麼 task
link |
23:10.000
link |
23:12.000
第二點是說
link |
23:14.000
過去做
link |
23:16.000
representation learning 的呢
link |
23:18.000
就是去年算是
link |
23:20.000
剛剛開始導入
link |
23:22.000
這個 self-attention 的機制
link |
23:24.000
就是在 acoustic 的
link |
23:26.000
這個 speech 的 representation 上面
link |
23:28.000
所以就是針對
link |
23:30.000
就是 self-attention 還有 reconstruction
link |
23:32.000
這樣的 scenario 呢
link |
23:34.000
就是目前還沒有出現過
link |
23:36.000
這樣子的研究
link |
23:38.000
所以我們就來試試看
link |
23:40.000
那 attention
link |
23:42.000
就基本上畫出來呢
link |
23:44.000
我們把全部的 attention 圖畫出來呢
link |
23:46.000
大概就是長這樣
link |
23:48.000
對 就是
link |
23:50.000
左邊跟右邊分別是不同的
link |
23:52.000
兩個 Ultras 這樣
link |
23:54.000
就是我們可以大概的
link |
23:56.000
掃一下
link |
23:58.000
就會發現說
link |
24:00.000
其實它大概
link |
24:04.000
它大概分三個
link |
24:06.000
category 就是
link |
24:08.000
一個是對整個痊癒做
link |
24:10.000
像這種對整個痊癒做
link |
24:12.000
attention 的
link |
24:14.000
然後還有這種
link |
24:16.000
一個是在 diagonal 上面
link |
24:18.000
我還沒有
link |
24:20.000
先講 attention map 有哪些
link |
24:22.000
我們再來講它的意義是什麼
link |
24:24.000
還有這種 diagonal 的
link |
24:26.000
還有
link |
24:28.000
還有這種就是
link |
24:30.000
開始有一些垂直線的感覺
link |
24:32.000
vertical 的
link |
24:34.000
基本上我們掃一下
link |
24:36.000
基本上大概不出這三個 category
link |
24:38.000
link |
24:40.000
那這三張圖它
link |
24:42.000
分別就是代表什麼意思呢
link |
24:44.000
就是
link |
24:46.000
以這個 diagonal 來說的話
link |
24:48.000
其實它的這個
link |
24:50.000
歪軸啊
link |
24:52.000
從這邊0
link |
24:54.000
這邊是0到70
link |
24:56.000
代表的是 sequence length
link |
24:58.000
那這邊是第0個 query
link |
25:00.000
第10個 query 第20個 query
link |
25:02.000
那每一個 row 呢
link |
25:04.000
就是一個 attention distribution
link |
25:06.000
所以其實
link |
25:08.000
這個 diagonal 的 attention
link |
25:10.000
它的意思其實就是說
link |
25:12.000
在 query 的時候
link |
25:14.000
我只 attend 在
link |
25:16.000
可能就只 attend 在第0個
link |
25:18.000
那個
link |
25:20.000
key factor 還有 value factor
link |
25:22.000
這樣子
link |
25:24.000
那我在我的 query 是第30個
link |
25:26.000
的時候呢
link |
25:28.000
我就拿第30個 value factor
link |
25:30.000
所以就代表說它其實都
link |
25:32.000
attend 在
link |
25:34.000
它的鄰居
link |
25:36.000
就是它的左右鄰居
link |
25:38.000
這樣子
link |
25:40.000
意思是這樣
link |
25:42.000
vertical attention 它就是說
link |
25:44.000
我不管我的
link |
25:46.000
query 的內容物
link |
25:48.000
是什麼
link |
25:50.000
我永遠都在整個
link |
25:52.000
alterns 中我永遠都只 attend 在
link |
25:54.000
某些位置上
link |
25:56.000
那不過值得注意的是說
link |
25:58.000
就是
link |
26:00.000
儘管說它會
link |
26:02.000
fix 在某些位置上
link |
26:04.000
但是呢其實
link |
26:06.000
你不同的 alterns
link |
26:08.000
左邊跟右邊是
link |
26:10.000
不同的 alterns 你不同的 alterns
link |
26:12.000
它會 attend 的
link |
26:14.000
那個位置其實也不一樣
link |
26:16.000
所以代表說它是在
link |
26:18.000
根據你的 content 你整個 alterns 的 content
link |
26:20.000
然後它去
link |
26:22.000
固定的
link |
26:24.000
不管哪一個 query 它都去看
link |
26:26.000
某一些內容
link |
26:28.000
那所以我們就要
link |
26:30.000
好奇說
link |
26:32.000
它看了什麼東西
link |
26:34.000
然後還有這種
link |
26:36.000
pattern 就很多
link |
26:38.000
就是對就很多
link |
26:40.000
我們之後等一下會再
link |
26:42.000
講一下
link |
26:44.000
那為了要讓就是
link |
26:46.000
這三種類別的
link |
26:48.000
attention map 就是我們
link |
26:50.000
可以分類一下
link |
26:52.000
所以就定了三個 metric
link |
26:54.000
那GV
link |
26:56.000
跟大D分別代表是說
link |
26:58.000
這個 globalness 還有
link |
27:00.000
verticality 還有
link |
27:02.000
diagonality
link |
27:04.000
然後它有多
link |
27:06.000
它多 global 或它多
link |
27:08.000
vertical 或它多 diagonal
link |
27:10.000
所以這個式子呢
link |
27:12.000
其實
link |
27:14.000
這個大A
link |
27:16.000
不管上面這個 H 跟 U 這個不重要
link |
27:18.000
大A 其實就是
link |
27:20.000
這張 attention map
link |
27:22.000
那它的 DQ
link |
27:24.000
這是一個 index
link |
27:26.000
小Q 就是它 DQ 個 raw
link |
27:28.000
所以其實
link |
27:30.000
我們用的
link |
27:32.000
metric 就是說
link |
27:34.000
你這個 raw 某一個 raw
link |
27:36.000
一個 attention distribution 呢
link |
27:38.000
它的 entropy 越大
link |
27:40.000
就它越
link |
27:42.000
它越不
link |
27:44.000
attent 在
link |
27:46.000
某一個單一的內容物上面的話
link |
27:48.000
那它這個 globalness 就越大
link |
27:50.000
這樣子
link |
27:52.000
那 verticality 就是說
link |
27:54.000
我先把所有的
link |
27:56.000
attention distribution 先做一個
link |
27:58.000
平均
link |
28:00.000
然後每一個 query 呢
link |
28:02.000
都會有一個 attention distribution
link |
28:04.000
我把所有的 attention
link |
28:06.000
每一個 query 出來的 distribution 先做一個平均
link |
28:08.000
然後如果
link |
28:10.000
這每一個 distribution 它都會
link |
28:12.000
focus 在某一個位置上面的話
link |
28:14.000
那平均起來的結果呢
link |
28:16.000
就也會在某一個位置上面
link |
28:18.000
得到比較大的 attention weight
link |
28:20.000
那一樣再用這個 entropy
link |
28:22.000
去找出
link |
28:24.000
有這樣子 pattern 的
link |
28:26.000
不過這邊就是
link |
28:28.000
出現這樣子 vertical 的性質
link |
28:30.000
link |
28:32.000
那 diagonal 就是說
link |
28:34.000
假設我現在
link |
28:36.000
Q 是 30
link |
28:38.000
Q 是 30
link |
28:40.000
然後 K
link |
28:42.000
K 是 32
link |
28:44.000
對 K 是 32
link |
28:46.000
那 Q 減 K 是 2
link |
28:48.000
就是離它兩步的距離
link |
28:50.000
它的 attention weight
link |
28:52.000
這個乘起來然後再加總起來
link |
28:54.000
所以其實就是說每一個 attention weight 呢
link |
28:56.000
它都
link |
28:58.000
都乘上一個
link |
29:00.000
權重
link |
29:02.000
這個權重呢
link |
29:04.000
就是它距離你的 main diagonal
link |
29:06.000
越遠的話
link |
29:08.000
這個權重就越
link |
29:10.000
link |
29:12.000
就是我們希望讓這個 attention weight
link |
29:14.000
它離這個 main diagonal
link |
29:16.000
越近的話權重越大
link |
29:18.000
所以反正就是定了三個 metric
link |
29:20.000
link |
29:22.000
那我們這個 outline 主要就是
link |
29:24.000
就是我們去
link |
29:26.000
分析這個 diagonal
link |
29:28.000
還有這個 vertical 還有 global
link |
29:30.000
那 global 呢目前還在
link |
29:32.000
就是還沒有很明確的
link |
29:34.000
結論這樣
link |
29:36.000
那 diagonal 呢
link |
29:38.000
我們可以看右邊這四張圖
link |
29:40.000
就是它分成這種
link |
29:42.000
很 focus 在
link |
29:44.000
就是往左邊一個
link |
29:46.000
往左邊兩個或三個
link |
29:48.000
這種 pattern
link |
29:50.000
還有這種 block diagonal 的 pattern
link |
29:52.000
link |
29:54.000
link |
29:56.000
focus 的這種 attention map
link |
29:58.000
其實還蠻容易解釋的
link |
30:00.000
就是說
link |
30:02.000
因為我們在 train 我們的這個
link |
30:04.000
我們在 pre-training 階段
link |
30:06.000
畢竟原本的 BERT 有這個
link |
30:08.000
mask language model
link |
30:10.000
那我們把它套到
link |
30:12.000
語音上面來的時候呢
link |
30:14.000
就是我們變成 mask acoustic model
link |
30:16.000
把這個 frame 直接砍成零
link |
30:18.000
那它砍成零後就沒有任何資訊了嘛
link |
30:20.000
所以
link |
30:22.000
就代表說我們這個 pre-training 階段的時候
link |
30:24.000
我們 attention 呢它學會說
link |
30:26.000
在正中央 main diagonal 這一條線
link |
30:28.000
就是被 mask 的那些 frame 呢
link |
30:30.000
我得不到任何資訊
link |
30:32.000
所以我其實是要靠
link |
30:34.000
左邊一個人左邊兩個人
link |
30:36.000
去 reconstruct 我正中間
link |
30:38.000
這個人
link |
30:40.000
這個 frame 呢它 reconstruct 的時候
link |
30:42.000
它應該要長什麼樣子
link |
30:44.000
因為鄰居跟你還長得蠻像的
link |
30:46.000
所以你用這樣的 reconstruct
link |
30:48.000
應該是最簡單的
link |
30:50.000
那不過呢就是
link |
30:52.000
左邊這兩張圖呢
link |
30:54.000
都是當我的那個
link |
30:56.000
mask 的長度呢大概在
link |
30:58.000
三個 frame 的時候
link |
31:00.000
那右邊這一張圖呢
link |
31:02.000
就是當
link |
31:04.000
我 mask 的長度呢有到
link |
31:06.000
九個 frame 的時候才會出現
link |
31:08.000
右邊這張圖是在這個 mask 長度
link |
31:10.000
只有三個 frame 的時候是不會出現的
link |
31:12.000
所以至少就是說
link |
31:14.000
這樣子的
link |
31:16.000
固定看左邊幾個
link |
31:18.000
右邊幾個這種 attention 呢
link |
31:20.000
它有
link |
31:22.000
aware of 我們這個
link |
31:24.000
mask length 這樣
link |
31:26.000
對這是一個還蠻簡單的結論
link |
31:28.000
那不過呢這邊就有一種
link |
31:30.000
這種 diagonal 呢
link |
31:32.000
它如果有出現在
link |
31:34.000
正對角呢它通常會
link |
31:36.000
它會長得這個 block diagonal 的樣子
link |
31:38.000
link |
31:40.000
這是什麼東西呢
link |
31:42.000
我們等一下下面就會再
link |
31:44.000
研究一下
link |
31:46.000
還有這種 vertical 的 attention 呢就是大概長這樣
link |
31:48.000
link |
31:50.000
那它
link |
31:52.000
左邊這種 pattern 看起來就是
link |
31:54.000
它在認某個東西
link |
31:56.000
右邊這個 pattern 呢
link |
31:58.000
看起來是相反的它不認某個東西
link |
32:00.000
link |
32:02.000
它大部分都是有 attention 位的嘛
link |
32:04.000
可是在某一些位置呢它特別的
link |
32:06.000
特別的沒有 attention 位的
link |
32:08.000
link |
32:10.000
link |
32:12.000
link |
32:14.000
那這種 block diagonal 的 attention 呢
link |
32:16.000
其實
link |
32:18.000
就是有一個猜測
link |
32:20.000
就是說
link |
32:22.000
它會不會其實有認到這個
link |
32:24.000
phoneme 的 boundary
link |
32:26.000
或是 phoneme 的 interval
link |
32:28.000
這代表說
link |
32:30.000
假設在
link |
32:32.000
這幾個 query
link |
32:34.000
比方說第70個
link |
32:36.000
timestamp 到第80個
link |
32:38.000
這十個 timestamp 呢
link |
32:40.000
它們都屬於
link |
32:42.000
同一個 phoneme 的 interval
link |
32:44.000
所以呢
link |
32:46.000
我如果在第75個
link |
32:48.000
query 的時候呢
link |
32:50.000
我可能就想說
link |
32:52.000
那第70個到第80個
link |
32:54.000
都是這個 phoneme 嘛
link |
32:56.000
都長得蠻像的
link |
32:58.000
我都可以拿來 reconstruct
link |
33:00.000
那如果是第77個 query 呢
link |
33:02.000
一樣也會覺得說
link |
33:04.000
是第70個到第80個 frame
link |
33:06.000
所以就造成這種
link |
33:08.000
就是說
link |
33:10.000
我在這個正方形的
link |
33:12.000
link |
33:14.000
這個 query 的範圍內呢
link |
33:16.000
我的 attention distribution
link |
33:18.000
都會長得一樣
link |
33:20.000
那如果它
link |
33:22.000
真的有
link |
33:24.000
是利用 phoneme interval 的話呢
link |
33:26.000
那我們其實就可以
link |
33:28.000
把這個邊界
link |
33:30.000
這個每一個正方形它的邊界
link |
33:32.000
去把它 detect 出來
link |
33:34.000
它是不是代表了
link |
33:36.000
phoneme boundaries
link |
33:38.000
它是不是剛好就是 boundaries
link |
33:40.000
那這樣我們才可以證明說
link |
33:42.000
它真的有認到這個 phoneme 的
link |
33:44.000
interval 嘛
link |
33:46.000
所以這邊是一張
link |
33:48.000
attention map
link |
33:50.000
那這邊呢
link |
33:52.000
那這個 map 呢
link |
33:54.000
是我用真正的 boundary
link |
33:56.000
就是有 label 好的 boundary 去畫出來的 map
link |
33:58.000
那就
link |
34:00.000
去跑一個演算法
link |
34:02.000
對 這個演算法有點複雜
link |
34:04.000
所以這邊就不會特別講
link |
34:06.000
不過呢 基本上它就是會先算
link |
34:08.000
一個 similarity 的 matrix
link |
34:10.000
就是
link |
34:12.000
比方說我 MFCC
link |
34:14.000
現在 sequence length 是100
link |
34:16.000
然後 MFCC 就有100根嘛
link |
34:18.000
那我就先
link |
34:20.000
這個每一個 phi 呢
link |
34:22.000
都是一根 MFCC
link |
34:24.000
對 然後我就先算它
link |
34:26.000
MFCC
link |
34:28.000
peer wise 的
link |
34:30.000
to norm
link |
34:32.000
對 就是去算它
link |
34:34.000
peer wise 的距離
link |
34:36.000
就看它有多像
link |
34:38.000
然後
link |
34:40.000
然後再除以一個
link |
34:42.000
parameter
link |
34:44.000
那這個 parameter 的用意是什麼呢
link |
34:46.000
等一下會講
link |
34:48.000
因為基本上從我們這個
link |
34:50.000
這個式子可以
link |
34:52.000
對 反正就是
link |
34:54.000
這樣算完之後呢 就會產生一個 map
link |
34:56.000
就是比方說在
link |
34:58.000
link |
35:00.000
正中央的
link |
35:02.000
比方說第若三
link |
35:04.000
column 三的位置呢 就是第三根
link |
35:06.000
MFCC 跟第三根 MFCC
link |
35:08.000
自己算距離的這個
link |
35:10.000
的距離這樣
link |
35:12.000
link |
35:14.000
那距離越小 基本上經過這樣子的
link |
35:16.000
transform 之後呢 距離
link |
35:18.000
越小的 就是越像的
link |
35:20.000
它就會越亮
link |
35:22.000
ok 所以
link |
35:24.000
所以我100根 MFCC
link |
35:26.000
這樣算出來呢 也可以得到一張 map
link |
35:28.000
link |
35:30.000
對 就是 peer wise 然後它會是對稱
link |
35:32.000
那一樣的我們
link |
35:34.000
attention map 也可以做這件事情
link |
35:36.000
就是我們做這件事情
link |
35:38.000
基本上只是為了讓它就是這個
link |
35:40.000
這個邊界可以更
link |
35:42.000
明顯一點 所以我們套了
link |
35:44.000
就是直接套同樣一個算法
link |
35:46.000
好 那出現這樣子
link |
35:48.000
block diagonal 的
link |
35:50.000
很明確的 block diagonal 的樣子
link |
35:52.000
之後呢 再去跑一個
link |
35:54.000
detect
link |
35:56.000
detect 這個
link |
35:58.000
boundary 的算法
link |
36:00.000
那個就太細節了 這邊就不講
link |
36:02.000
那反正就是跑完之後呢
link |
36:04.000
就是得到說 如果我們只是用
link |
36:06.000
MFCC 為什麼這邊會用
link |
36:08.000
MFCC 是因為MFCC 過去在
link |
36:10.000
做 phoneme segmentation 的時候
link |
36:12.000
基本上是最常拿來用的 feature
link |
36:14.000
就代表說它
link |
36:16.000
最好用這樣子
link |
36:18.000
那我們現在就
link |
36:20.000
用我們的 attention 作為一個
link |
36:22.000
feature 來跟 MFCC 比
link |
36:24.000
然後就發現 欸 這個
link |
36:26.000
在算
link |
36:28.000
我 predict 出來一排
link |
36:30.000
predicted boundaries
link |
36:32.000
然後跟你
link |
36:34.000
有 label 好的 true boundaries 去算這個
link |
36:36.000
precision recall
link |
36:38.000
然後就發現說 欸 我們算出來
link |
36:40.000
這個
link |
36:42.000
很明顯 不管是我 mask
link |
36:44.000
長度是在
link |
36:46.000
三個 frame 啊 六個 frame 還是九個 frame
link |
36:48.000
我都會 learn 到這一種
link |
36:50.000
這種 block
link |
36:52.000
diagonal attention 然後呢
link |
36:54.000
它跟 phoneme boundaries 的
link |
36:56.000
關係呢 都比這種
link |
36:58.000
MFCC 來得明確
link |
37:00.000
link |
37:02.000
那這邊有一個小小的 issue
link |
37:04.000
是說呢 剛剛
link |
37:06.000
這個第一位
link |
37:08.000
第一位助教 田偉哥呢 他有
link |
37:10.000
提到說 我們要把
link |
37:12.000
self-attention 應用到
link |
37:14.000
speech 上面的時候呢
link |
37:16.000
要 down sample
link |
37:18.000
因為畢竟這個 speech 的 frame 的
link |
37:20.000
長度呢 太多了
link |
37:22.000
所以 我們這個
link |
37:24.000
實驗中我們用的 MarkingJ的
link |
37:26.000
model 都是 down sample 三個 frame
link |
37:28.000
可是呢 我們
link |
37:30.000
並不能把
link |
37:32.000
就是我們在算這個 boundaries
link |
37:34.000
這個 boundaries 呢 它是 label 在
link |
37:36.000
原本的 比較長的
link |
37:38.000
sequence length 上面 如果我們把
link |
37:40.000
這個 phoneme boundaries
link |
37:42.000
也 down sample
link |
37:44.000
那其實有時候 有一些
link |
37:46.000
有一些 boundaries 直接就不見了
link |
37:48.000
對 因為
link |
37:50.000
所以這樣就會不準
link |
37:52.000
所以我們做的事情是我們把
link |
37:54.000
這個 attention map up sample
link |
37:56.000
對 所以原本的 attention map 可能是長這樣
link |
37:58.000
那我們就把 attention map up sample
link |
38:00.000
成這樣 然後呢 我們再去切
link |
38:02.000
所以我們可以看得出來說
link |
38:04.000
這個圖啊
link |
38:06.000
attention map 它看起來就是
link |
38:08.000
不像這個 MFCC 算出來的
link |
38:10.000
這個 similarity metric 這麼
link |
38:12.000
這麼 fine-grained
link |
38:14.000
對 我們可以看到這邊有一些比較大的方塊
link |
38:16.000
對 它看起來比較粗
link |
38:18.000
是因為這個原因這樣
link |
38:20.000
link |
38:22.000
好 那基本上 這邊
link |
38:24.000
link |
38:26.000
這邊可以跳過這樣 好 那
link |
38:28.000
這邊要講的就只是說
link |
38:30.000
我有一排 true boundaries
link |
38:32.000
對 這邊一二三四
link |
38:34.000
是真正的 boundaries
link |
38:36.000
那這邊有
link |
38:38.000
一二三四五 五個
link |
38:40.000
預測的 boundaries
link |
38:42.000
那 現在就有問題就是說
link |
38:44.000
link |
38:46.000
這個要怎麼算
link |
38:48.000
precision recall 就是
link |
38:50.000
難道說我一定要
link |
38:52.000
很剛好的說
link |
38:54.000
我預測出來的這一根
link |
38:56.000
完全就在這一個位置上面
link |
38:58.000
這樣才算
link |
39:00.000
有 hit 嗎
link |
39:02.000
對 這樣才有 hit 嗎
link |
39:04.000
這樣就太嚴格 所以
link |
39:06.000
通常在做這個 phoneme segmentation 的時候呢
link |
39:08.000
都會給一個
link |
39:10.000
tolerance window
link |
39:12.000
就是說
link |
39:14.000
其實它們兩 就是我的
link |
39:16.000
predicted boundary 只要跟 true boundary 呢
link |
39:18.000
夠接近就好了
link |
39:20.000
那這個 tolerance window
link |
39:22.000
通常就會設
link |
39:24.000
20 微秒
link |
39:26.000
就是說 你這個
link |
39:28.000
predicted boundary 只要有出現在
link |
39:30.000
true boundary 的
link |
39:32.000
前後 20 微秒
link |
39:34.000
那我就可以算是說
link |
39:36.000
這一根 true boundaries 呢
link |
39:38.000
可以成功的
link |
39:40.000
抓出來
link |
39:42.000
好 那就講到這邊就好
link |
39:44.000
就是說
link |
39:46.000
這是一個
link |
39:48.000
做 phoneme segmentation 的時候
link |
39:50.000
專用的 evaluation 的方法
link |
39:52.000
ok
link |
39:54.000
link |
39:56.000
link |
39:58.000
接下來有一個小結論是說
link |
40:00.000
我們在
link |
40:02.000
做 segmentation 的時候發現
link |
40:04.000
block diagonal 這種 attention 呢
link |
40:06.000
它跟這種
link |
40:08.000
representation 不管是
link |
40:10.000
MMCC 還是說
link |
40:12.000
我們 Markinger 的
link |
40:14.000
representation 試圖
link |
40:16.000
要去做這個
link |
40:18.000
phoneme segmentation 的時候呢
link |
40:20.000
我們算出來的
link |
40:22.000
similarity representation
link |
40:24.000
的 similarity matrix 長得會像這樣
link |
40:26.000
link |
40:30.000
然後
link |
40:32.000
從左邊到右邊
link |
40:34.000
代表的是
link |
40:36.000
前面這一個 alpha 向
link |
40:38.000
這個 alpha 向呢
link |
40:40.000
基本上就是說
link |
40:42.000
它的效果是
link |
40:44.000
我把 alpha 調得越大
link |
40:46.000
如果我把 alpha 調得越大
link |
40:48.000
link |
40:50.000
跟我正中間這一根
link |
40:52.000
越像的那些
link |
40:54.000
比較像的那些人呢
link |
40:56.000
會變得更像
link |
40:58.000
所以原本 alpha 很小的時候呢
link |
41:00.000
他就只覺得
link |
41:02.000
我們從圖片上面來看的話
link |
41:04.000
我們就只覺得在正中央
link |
41:06.000
的人跟自己很像
link |
41:08.000
其他人都相似度都
link |
41:10.000
很低這樣
link |
41:12.000
可是呢 我只要把 alpha 調得越來越大呢
link |
41:14.000
我就可以漸漸的發現
link |
41:16.000
有這個 phoneme 的
link |
41:18.000
interval 就是說
link |
41:20.000
欸 儘管你原本
link |
41:22.000
覺得旁邊的人跟你很不像
link |
41:24.000
但其實
link |
41:26.000
如果你在跟更旁邊一點
link |
41:28.000
的人比呢 就會發現 欸 其實旁邊的人
link |
41:30.000
跟你已經蠻像的
link |
41:32.000
所以我們是需要
link |
41:34.000
透過去調這個 alpha 值
link |
41:36.000
link |
41:38.000
找出這個
link |
41:40.000
適合的
link |
41:42.000
block diagonal 的樣子
link |
41:44.000
那我們就發現
link |
41:46.000
MFCC 本來它就
link |
41:48.000
存在這種 phoneme interval 的資訊
link |
41:50.000
那一樣的這個
link |
41:52.000
marking trait representation 也存在
link |
41:54.000
這種 phoneme interval 的資訊
link |
41:56.000
中間這兩張
link |
41:58.000
中間這兩張
link |
42:00.000
是我們來套 segmentation
link |
42:02.000
algorithm 的時候呢 表現的
link |
42:04.000
最好的兩張
link |
42:06.000
可是我們從這兩張我們就可以看得出來說
link |
42:08.000
欸 其實
link |
42:10.000
它不只是跟我
link |
42:12.000
左邊幾個人 右邊幾個人很像
link |
42:14.000
就是當我想要把
link |
42:16.000
就是當我把
link |
42:18.000
比方說 原本我覺得左邊幾個人
link |
42:20.000
右邊幾個人非常不像 然後
link |
42:22.000
我現在要把 segmentation 做得好
link |
42:24.000
我就把他們說 欸 他們其實
link |
42:26.000
跟我已經蠻像 但如果
link |
42:28.000
我要
link |
42:30.000
就是我
link |
42:32.000
到底跟我像不像的那個 threshold 呢
link |
42:34.000
放得比較鬆一點之後呢
link |
42:36.000
其實在更遠的一些人呢
link |
42:38.000
其實也都跟我蠻像
link |
42:40.000
對 就代表說
link |
42:42.000
link |
42:44.000
其實會有一些 frame 呢
link |
42:46.000
它離正中間
link |
42:48.000
離我當下的 query 很遠
link |
42:50.000
但它其實
link |
42:52.000
以 phoneme interval 的角度來說呢
link |
42:54.000
它其實跟我也蠻像的
link |
42:56.000
那我們現在再對比說
link |
42:58.000
上面這個
link |
43:00.000
block diagonal
link |
43:02.000
的 attention map 就發現 欸
link |
43:04.000
它其實還蠻
link |
43:06.000
focus 在 就是
link |
43:08.000
它還蠻多 focus 在
link |
43:10.000
我正中央
link |
43:12.000
main diagonal
link |
43:14.000
就是儘管說 你稍遠一點呢
link |
43:16.000
再遠一點呢 都有一些
link |
43:18.000
跟我還蠻像的 frame
link |
43:20.000
但它都比較有去
link |
43:22.000
學著去 ignore 這些
link |
43:24.000
就是
link |
43:26.000
它比較 focus 在我這個
link |
43:28.000
就是比較 local 的 phoneme structure
link |
43:30.000
這樣子 對
link |
43:32.000
link |
43:34.000
所以我們這邊有一個小決定就是說 欸
link |
43:36.000
第一件事情是 block diagonal
link |
43:38.000
attention 呢 它跟我們這個
link |
43:40.000
phoneme interval 還有
link |
43:42.000
boundary 呢 它是有
link |
43:44.000
確定是有相關的 那第二件事情呢
link |
43:46.000
就是說 它不只有相關
link |
43:48.000
它還學著去
link |
43:50.000
呃 忽略
link |
43:52.000
link |
43:54.000
很遠
link |
43:56.000
去忽略一些 呃 可能
link |
43:58.000
跟我很像 但是它很遠的
link |
44:00.000
的 frame 這樣子 好 這邊就有兩個
link |
44:02.000
小結論 好
link |
44:04.000
那我們處理完這個
link |
44:06.000
diagonal attention 的部分的時候呢
link |
44:08.000
我們接著就試著去
link |
44:10.000
看說 呃
link |
44:12.000
vertical 的 attention 還有 global
link |
44:14.000
的 attention 它們到底在做什麼
link |
44:16.000
事情 比方說 global attention
link |
44:18.000
呢 畫出來常常會長這樣
link |
44:20.000
就 就一片
link |
44:22.000
噪音 我們其實
link |
44:24.000
不知道它想要幹嘛 對
link |
44:26.000
然後 接著第二個難點
link |
44:28.000
是說 我們不同的
link |
44:30.000
input alterance
link |
44:32.000
different input alterance 我們就會產生
link |
44:34.000
不同的 attention map
link |
44:36.000
link |
44:38.000
就會造成說 我們
link |
44:40.000
對 已經 單 單單一張
link |
44:42.000
attention map 已經很雜亂了 然後
link |
44:44.000
每一張 每 每 不同的 input
link |
44:46.000
就都長得不一樣 那我們到底要
link |
44:48.000
怎麼去理解它
link |
44:50.000
所以 重點就是
link |
44:52.000
how to summarize the operation of a hat
link |
44:54.000
if exists 那
link |
44:56.000
我們用的方法就是說 欸
link |
44:58.000
我們把它 align 到
link |
45:00.000
phoneme 的 relations
link |
45:02.000
就是說 我 query
link |
45:04.000
我的 query 假設是
link |
45:06.000
是 p 這個 phoneme
link |
45:08.000
好了 那它
link |
45:10.000
attend 到 假設是
link |
45:12.000
n 這個 phoneme 它的 attention weight
link |
45:14.000
多少 我就說 欸 這樣子的
link |
45:16.000
phoneme relation 呢 它
link |
45:18.000
有 對
link |
45:20.000
這個 hat 呢 它多
link |
45:22.000
多認在 欸 它多大的
link |
45:24.000
程度在認這樣子的 phoneme
link |
45:26.000
phoneme relation
link |
45:28.000
好 那我們做的
link |
45:30.000
手法呢 就是說
link |
45:32.000
比方說 現在每一個
link |
45:34.000
raw 都是一個 attention distribution
link |
45:36.000
ok
link |
45:38.000
那 基本上每一個 raw
link |
45:40.000
加總起來都是 1 嘛 那
link |
45:42.000
現在有 100 個 query
link |
45:44.000
那我們 第一件事情
link |
45:46.000
就是先把這一張 attention map
link |
45:48.000
先做成一個 joint distribution
link |
45:50.000
所以 我們就假設每一個
link |
45:52.000
query 它
link |
45:54.000
它出現的機率是一樣的
link |
45:56.000
那 所以我們就把
link |
45:58.000
每一個 attention distribution 呢
link |
46:00.000
都先除以 100
link |
46:02.000
那這樣整張 map 的機率值呢
link |
46:04.000
加總起來就會是 1
link |
46:06.000
然後呢 我們就把
link |
46:08.000
比方說
link |
46:10.000
現在想要看這個
link |
46:12.000
比方說 現在想要看這個
link |
46:14.000
oy
link |
46:16.000
oy 對到
link |
46:18.000
d
link |
46:20.000
oy 對到 d 的這個
link |
46:22.000
它多麼在認這樣一個 relation
link |
46:24.000
的話呢 我就在這一張 map 裡面呢
link |
46:26.000
找出
link |
46:28.000
所有 它的 query 是
link |
46:30.000
oy 它的 key 是
link |
46:32.000
d 的 attention weight
link |
46:34.000
然後把它加總起來
link |
46:36.000
所以其實我們做的事情就是把
link |
46:38.000
每一個 joint distribution 的那個機率值呢
link |
46:40.000
根據它的 phoneme distribution
link |
46:42.000
去做
link |
46:44.000
這個機率值的 reallocation
link |
46:46.000
ok 那我們把它整個
link |
46:48.000
reallocate 到
link |
46:50.000
這張 map 上面的時候呢
link |
46:52.000
那注意一點就是說
link |
46:54.000
每一個 all trans 它長度都不一樣
link |
46:56.000
ok 所以
link |
46:58.000
所以這個
link |
47:00.000
這個 attention map 呢 它可能是
link |
47:02.000
80x80 100x100
link |
47:04.000
500x500 但是呢
link |
47:06.000
經過這一步過來之後呢
link |
47:08.000
全部都會被打成
link |
47:10.000
這個 phoneme 如果
link |
47:12.000
比方說 39 個 phoneme 的話
link |
47:14.000
全部都會被打成 39x39
link |
47:16.000
的這個 phoneme relation map
link |
47:18.000
ok
link |
47:20.000
link |
47:22.000
基本上我們其實就是利用這個
link |
47:24.000
39x39 phoneme relation
link |
47:26.000
來看說
link |
47:28.000
它可能隱含什麼樣的
link |
47:30.000
operation 而且重點是它是
link |
47:32.000
這樣子的效果
link |
47:34.000
是 across 一整個
link |
47:36.000
corpus 就是我們效果是有
link |
47:38.000
是看過一整個 corpus
link |
47:40.000
然後統計出來的結果
link |
47:42.000
那我們就看得出來說
link |
47:44.000
這張圖原本
link |
47:46.000
看起來什麼事都沒 就是我們看不出來它在
link |
47:48.000
幹嘛 但是呢 如果我們
link |
47:50.000
用右邊這張圖呢
link |
47:52.000
我們就發現 欸 它
link |
47:54.000
這個月亮代表說它
link |
47:56.000
attention 位越高
link |
47:58.000
那月暗就代表說
link |
48:00.000
它通常都越不去
link |
48:02.000
attent 它 就代表說
link |
48:04.000
然後就發現說 欸 這個 head 呢
link |
48:06.000
它通常
link |
48:08.000
不管我 query 是什麼
link |
48:10.000
它都去 ignore silence
link |
48:12.000
它都會去
link |
48:14.000
比較看其他
link |
48:16.000
speech 的 part 這樣
link |
48:18.000
ok 那有一個
link |
48:20.000
小小的細節需要注意的是說
link |
48:24.000
其實
link |
48:26.000
其實如果直接用我
link |
48:28.000
剛剛講的這一個
link |
48:30.000
綠值 reallocation 的做法呢
link |
48:32.000
其實是沒辦法成功的
link |
48:34.000
看出任何東西的
link |
48:36.000
我們會生出來的圖呢
link |
48:38.000
長中間這個 color
link |
48:40.000
就不管
link |
48:42.000
不管你是哪一個
link |
48:44.000
head 看起來都是長這樣子
link |
48:46.000
link |
48:48.000
這是為什麼呢 這是因為
link |
48:50.000
我們現在是用
link |
48:52.000
attention weight 去
link |
48:54.000
去描述它
link |
48:56.000
我們用 attention map
link |
48:58.000
去描述
link |
49:00.000
封領之間的關係
link |
49:02.000
但是
link |
49:04.000
但是
link |
49:06.000
這就僅限於說
link |
49:08.000
ortrans 裡面
link |
49:10.000
我整個 speech corpus 裡面呢
link |
49:12.000
這些 ortrans 裡面有出現過的
link |
49:14.000
有出現過
link |
49:16.000
哪些封領 對
link |
49:18.000
比方說假設我整個 speech corpus 裡面
link |
49:20.000
很畸形的就是永遠都沒有
link |
49:22.000
n 這個封領
link |
49:24.000
那就永遠都沒有
link |
49:26.000
n 對上任何人的
link |
49:28.000
機率的
link |
49:30.000
沒有n 去 attend 到任何
link |
49:32.000
其他人的 attention weight
link |
49:34.000
那這張圖看起來
link |
49:36.000
就會很奇怪
link |
49:38.000
link |
49:40.000
那實際的情況是這樣
link |
49:42.000
就是其實我們整個
link |
49:44.000
speech corpus 裡面呢 大部分
link |
49:46.000
每一個 ortrans 它的前後
link |
49:48.000
都有 silence 而且都是
link |
49:50.000
很長一段 silence
link |
49:52.000
link |
49:54.000
link |
49:56.000
這就會造成問題說
link |
49:58.000
其實我如果用這個
link |
50:00.000
attention weight 試圖去描述
link |
50:02.000
我這個 head 要做什麼
link |
50:04.000
它這個
link |
50:06.000
它 我們直接用
link |
50:08.000
機率值 reallocation 得出來的
link |
50:10.000
那個新的 joint distribution
link |
50:12.000
它可能會長成藍色
link |
50:14.000
這一條
link |
50:16.000
藍色這一條就是說在 silence
link |
50:18.000
對到 o y 這個 relation
link |
50:20.000
它的機率值很高
link |
50:22.000
然後 silence 對到 silence
link |
50:24.000
機率更高
link |
50:26.000
但其實這很有可能只是
link |
50:28.000
你在
link |
50:30.000
比方說在某一個 ortrans 上面
link |
50:32.000
它 silence 對到 silence
link |
50:34.000
的 attention weight 可能其實
link |
50:36.000
很小 但是因為
link |
50:38.000
我們這個
link |
50:40.000
整個 speech corpus 裡面
link |
50:42.000
silence 出現太多了
link |
50:44.000
silence attend silence
link |
50:46.000
這樣子的
link |
50:48.000
可能的情況太多了
link |
50:50.000
然後造成說
link |
50:52.000
就算加總起來
link |
50:54.000
它得到的 attention weight
link |
50:56.000
其實還是相對的高
link |
50:58.000
ok 所以
link |
51:00.000
還蠻重要的事情
link |
51:02.000
我們還蠻重要的事情
link |
51:04.000
是我們需要去統計說
link |
51:06.000
整個 speech corpus 裡面
link |
51:08.000
到底存在
link |
51:10.000
哪些 phoneme relation
link |
51:12.000
然後
link |
51:14.000
它們各自的 distribution
link |
51:16.000
有多少
link |
51:18.000
那我們就發現
link |
51:20.000
每一個 ortrans 它這個 silence 對 silence
link |
51:22.000
link |
51:24.000
出現的
link |
51:26.000
次數很多
link |
51:28.000
黑色這條出現的次數很多
link |
51:30.000
silence 對 o y 出現的次數也很多
link |
51:32.000
結果 a w 對 o y
link |
51:34.000
它出現的次數很少
link |
51:36.000
那我們在跟我們剛剛
link |
51:38.000
這個 head attention weight
link |
51:40.000
統計出來的
link |
51:42.000
它的行為去一比較
link |
51:44.000
就發現說
link |
51:46.000
我們原本以為 silence 對 silence
link |
51:48.000
很常出
link |
51:50.000
我們原本以為 silence 對 silence
link |
51:52.000
是它一個很常出
link |
51:54.000
很喜歡的 relation
link |
51:58.000
但其實
link |
52:00.000
跟真正的 silence 對 silence
link |
52:02.000
出現的次數比起來
link |
52:04.000
反而發現說
link |
52:06.000
其實大部分的情況
link |
52:08.000
它都是不去 attend silence to silence
link |
52:10.000
這樣子的 relation
link |
52:12.000
那一旦我出現 a w 對 o y 的 relation
link |
52:14.000
其實我可能才出現
link |
52:16.000
才出現十次
link |
52:18.000
但每一次呢
link |
52:20.000
我分配到的 attention weight 都很多
link |
52:22.000
就會造成
link |
52:24.000
長成這樣的圖
link |
52:26.000
所以其實我們希望
link |
52:28.000
我們真的可以 characterize
link |
52:30.000
一個 head 在做什麼呢
link |
52:32.000
我們需要去
link |
52:34.000
去跟這個 corpus 的
link |
52:36.000
function relation distribution 去
link |
52:38.000
相比
link |
52:40.000
需要以這個黑色的線當作基準
link |
52:42.000
看得出一些有意義的資訊
link |
52:44.000
所以呢
link |
52:46.000
我們就用右邊這個式子
link |
52:48.000
去做一個 normalization
link |
52:50.000
就是說
link |
52:52.000
這個上面有一撇的呢
link |
52:54.000
上面有一撇的
link |
52:56.000
就是剛剛這個 reallocation
link |
52:58.000
直接 reallocation 的結果
link |
53:00.000
會長得是黑色的這種樣子
link |
53:02.000
那如果我去
link |
53:04.000
跟這個 corpus 的
link |
53:06.000
這個 function relation distribution
link |
53:08.000
去做一個
link |
53:10.000
normalization 去減掉它
link |
53:12.000
然後除以它的話
link |
53:14.000
那就會得到右邊這種圖
link |
53:16.000
這是 normalized 過的結果
link |
53:18.000
link |
53:20.000
其實重點只是要除這個值
link |
53:22.000
重點只是除這個值
link |
53:24.000
去找出這個比例之間的關係
link |
53:26.000
那我們之所以要減掉這個值呢
link |
53:28.000
是因為我們這樣就可以去
link |
53:30.000
分別探討說
link |
53:32.000
它是比
link |
53:34.000
corpus 原有的高
link |
53:36.000
代表說它很喜歡去 attain 它
link |
53:38.000
還是說它是比 corpus 原有的低
link |
53:40.000
就代表說它去 neglect
link |
53:42.000
去忽略這樣子的
link |
53:44.000
function relation
link |
53:46.000
ok
link |
53:48.000
好那這邊就是一些
link |
53:50.000
就是我們發現的一些 operation
link |
53:52.000
那像 global 的
link |
53:54.000
這種長得很 global 的
link |
53:56.000
attention 呢
link |
53:58.000
它可能就有出現這種就是
link |
54:00.000
當我 query 是 silence 的時候呢
link |
54:02.000
我就只 focus 在 silence
link |
54:04.000
然後呢
link |
54:06.000
就是它 speech part
link |
54:08.000
那如果我的 query 呢
link |
54:10.000
不是 silence 的時候呢
link |
54:12.000
那我都會去忽略 silence
link |
54:14.000
ok
link |
54:16.000
這條值的就是我都忽略 silence
link |
54:18.000
link |
54:20.000
這張圖就是反過來
link |
54:22.000
直接就反過來就是說
link |
54:24.000
如果我是 silence 的時候呢
link |
54:26.000
我去 attain speech part
link |
54:28.000
那如果我不是 silence 的時候呢
link |
54:30.000
我 attain 在 silence 上面
link |
54:32.000
ok
link |
54:34.000
然後
link |
54:36.000
我都
link |
54:38.000
雖然我很 global 但是呢
link |
54:40.000
我 global 的那些 attention 位呢
link |
54:42.000
大部分其實是去找
link |
54:44.000
跟我 query 是同一個 phone name 的人
link |
54:46.000
ok
link |
54:48.000
那這張圖呢就是說
link |
54:50.000
它其實是大部分都在
link |
54:52.000
neglect
link |
54:54.000
跟我 phone name
link |
54:56.000
跟我 query 的 phone name 是
link |
54:58.000
同一個人的 friend
link |
55:00.000
link |
55:02.000
那這張圖是相反的操作
link |
55:04.000
那下面這一排呢
link |
55:06.000
就是一些 vertical attention
link |
55:08.000
就是說
link |
55:10.000
它可能就
link |
55:12.000
就是發現說
link |
55:14.000
不管我的 query phone name 是什麼
link |
55:16.000
它也都 attain 在 silence
link |
55:18.000
或是它都不 attain 在 silence
link |
55:20.000
或是說它 attain 在一些
link |
55:22.000
其他的 phone name
link |
55:24.000
或是不 attain 在一些 phone name
link |
55:26.000
好那
link |
55:28.000
就是很明顯就是
link |
55:30.000
在 vertical attention 這邊呢
link |
55:32.000
就是這一種
link |
55:34.000
這樣子的行為特別明顯
link |
55:36.000
所以我們就去
link |
55:38.000
試圖去確認說
link |
55:40.000
是不是當我的 attention 呢
link |
55:42.000
它變得開始出現這種
link |
55:44.000
直線的樣子的時候呢
link |
55:46.000
它是不是
link |
55:48.000
真的就都是在認
link |
55:50.000
認特定的 phone name 這樣
link |
55:52.000
或是不認特定的 phone name
link |
55:54.000
還是說它有在
link |
55:56.000
認一些奇怪的特別的東西
link |
55:58.000
link |
56:00.000
所以呢
link |
56:02.000
我們就去
link |
56:04.000
定一個值
link |
56:06.000
ceh 這是叫 concentration
link |
56:08.000
那 concentration 呢
link |
56:10.000
其實就只是把上面這個
link |
56:12.000
這張 phone name relation map 呢
link |
56:14.000
沿著
link |
56:16.000
沿著 query 的方向
link |
56:18.000
做平均
link |
56:20.000
對就是說
link |
56:22.000
如果我這個 phone name relation map
link |
56:24.000
它真的存在這個直線的話
link |
56:26.000
那我這樣
link |
56:28.000
做一個平均的話呢
link |
56:30.000
那也應該要在
link |
56:32.000
它比較亮的這幾條直線呢
link |
56:34.000
的那幾個 phone name 比方說
link |
56:36.000
這邊是 ceh 或 d
link |
56:38.000
平均之後呢 ceh 或 d
link |
56:40.000
它的 concentration 的值應該要
link |
56:42.000
正數然後要蠻大的
link |
56:44.000
那如果是 neglect 的話呢
link |
56:46.000
比方說像這個
link |
56:48.000
那它平均起來呢
link |
56:50.000
它應該就要在 silence 上面呢
link |
56:52.000
它的 concentration 是負的
link |
56:54.000
ok 就這樣
link |
56:56.000
link |
56:58.000
所以呢
link |
57:00.000
我們就去看說
link |
57:02.000
如果當我的 attention map
link |
57:04.000
它從原本
link |
57:06.000
比方說 attention map
link |
57:08.000
它原本很 global 是這樣
link |
57:10.000
那它一旦開始變得
link |
57:12.000
這種有這種直線的樣子呢
link |
57:14.000
我們
link |
57:16.000
怎麼 characterize 從這樣子
link |
57:18.000
變成這樣就是用
link |
57:20.000
最一開始定義的那個 verticality
link |
57:22.000
就是把每一個
link |
57:24.000
query 的 attention distribution 平均之後
link |
57:26.000
再算 entropy 的就是那個公式
link |
57:28.000
那反正就是
link |
57:30.000
這個大 V verticality 呢
link |
57:32.000
越大的話就代表它
link |
57:34.000
越有這樣子
link |
57:36.000
出現直線的趨勢
link |
57:38.000
那是不是這樣直接出現這樣的趨勢呢
link |
57:40.000
它真的這樣子的圖呢
link |
57:42.000
這樣子的 head 呢
link |
57:44.000
它的 phone name relation map 呢
link |
57:46.000
是不是真的都
link |
57:48.000
會出現這樣子
link |
57:50.000
特別就 focus 在某個 phone name
link |
57:52.000
這樣子的關係這樣
link |
57:54.000
所以橫軸
link |
57:56.000
這邊我們畫出來就是說
link |
57:58.000
橫軸是 verticality 是說
link |
58:00.000
這個 head
link |
58:02.000
某一個 head
link |
58:04.000
它產生的 attention map 是不是
link |
58:06.000
都很多直線
link |
58:08.000
那縱軸呢
link |
58:10.000
這邊是 0
link |
58:12.000
縱軸呢就是往上呢
link |
58:14.000
就代表它
link |
58:16.000
這個 phone name relation map
link |
58:18.000
它這個平均下來的
link |
58:20.000
concentration 的值越正
link |
58:22.000
link |
58:24.000
如果是往下的話
link |
58:26.000
就代表它越負
link |
58:28.000
越上就代表它越 focus 在某個 phone name
link |
58:30.000
而且是不管 query 是什麼
link |
58:32.000
那越往下呢
link |
58:34.000
就代表它越 neglect 特定 phone name
link |
58:36.000
然後也是不管 query 是什麼
link |
58:38.000
所以這張圖
link |
58:40.000
想要講的意思就是說
link |
58:42.000
的確就是這邊有一個還蠻
link |
58:44.000
蠻明確的趨勢
link |
58:46.000
也就是說當我這個
link |
58:48.000
attention map 開始出現一些直線呢
link |
58:50.000
它真的就是要嘛
link |
58:52.000
focus 在特定的 phone name
link |
58:54.000
或是 neglect 特定的 phone name
link |
58:56.000
link |
58:58.000
所以我們就是
link |
59:00.000
大概給大家看一下
link |
59:02.000
這邊的 1 還有 2
link |
59:04.000
這個 1 跟這個 2
link |
59:06.000
就是
link |
59:08.000
就是這一張
link |
59:10.000
跟這一張
link |
59:12.000
然後
link |
59:14.000
這個 3 跟這個 4
link |
59:16.000
就是
link |
59:18.000
這一張跟這一張
link |
59:20.000
link |
59:22.000
所以我們最後呢
link |
59:24.000
就是
link |
59:26.000
好我們前面就是
link |
59:28.000
大概知道說 block diagonal attention
link |
59:30.000
link |
59:32.000
它跟 phone name 的 interval 有關
link |
59:34.000
然後 vertical attention 呢
link |
59:36.000
它是在整個
link |
59:38.000
altrance 的 level 下
link |
59:40.000
就是不管 query 是什麼
link |
59:42.000
或者是有出現哪些 phone name
link |
59:44.000
然後我們 head 就是要去抓哪個 phone name
link |
59:46.000
那我們就來看看
link |
59:48.000
它這兩種
link |
59:50.000
不同的操作
link |
59:52.000
這兩種
link |
59:54.000
不同的 operation
link |
59:56.000
對於我最後的 representation
link |
59:58.000
有怎樣的影響
link |
01:00:00.000
所以
link |
01:00:02.000
我們用的
link |
01:00:04.000
做法就是說
link |
01:00:06.000
比方越 diagonal 的 attention
link |
01:00:08.000
我們可以給它一個值
link |
01:00:10.000
就是
link |
01:00:12.000
diagonality
link |
01:00:14.000
我所有的 head 呢
link |
01:00:16.000
都有一個大 d 的值
link |
01:00:18.000
那我就去
link |
01:00:20.000
從高排到低
link |
01:00:22.000
越高的大 d 值的 head
link |
01:00:24.000
就是它
link |
01:00:26.000
就比方說這個
link |
01:00:28.000
這個就是有最高的大 d 值的 head
link |
01:00:30.000
好那我就優先把它
link |
01:00:32.000
我就是
link |
01:00:34.000
做一個分數的排名之後呢
link |
01:00:36.000
我就從越大的值開始把它
link |
01:00:38.000
它把一個 head print 掉
link |
01:00:40.000
就是說我直接把它的 output 全部設成
link |
01:00:42.000
就把那個 head 的 output
link |
01:00:44.000
全部設成 0
link |
01:00:46.000
然後直接 inference
link |
01:00:48.000
然後看最後的那個 representation
link |
01:00:50.000
我們把那個 representation 呢
link |
01:00:52.000
拿去做兩個 downstream task
link |
01:00:54.000
一個是 phone name classification
link |
01:00:56.000
一個是 speaker recognition
link |
01:00:58.000
然後看說這樣子被修改過
link |
01:01:00.000
被操作過的 representation 呢
link |
01:01:02.000
它在這兩個 task 上面的表現呢
link |
01:01:04.000
有什麼樣的
link |
01:01:06.000
差異
link |
01:01:08.000
所以呢我們就分成三種
link |
01:01:10.000
我們先講三種
link |
01:01:12.000
就是三個不同的
link |
01:01:14.000
pruning 的過程
link |
01:01:16.000
比方說我從最 global 的那些
link |
01:01:18.000
head 開始 print
link |
01:01:20.000
或是說我從那些
link |
01:01:22.000
有很明顯的直線的
link |
01:01:24.000
attention 來開始 print
link |
01:01:26.000
然後或是說我從那些
link |
01:01:28.000
特別
link |
01:01:30.000
diagonal 的 attention
link |
01:01:32.000
的 head 開始 print
link |
01:01:34.000
就是一旦被設成 0 之後
link |
01:01:36.000
它接著就一直都是 0
link |
01:01:38.000
它是 cumulative
link |
01:01:42.000
那在
link |
01:01:44.000
phone 上面呢
link |
01:01:46.000
我們就發現說其實只有
link |
01:01:48.000
只有 diagonal 的 attention
link |
01:01:50.000
跟這個
link |
01:01:52.000
phone name
link |
01:01:54.000
information 比較相關
link |
01:01:56.000
link |
01:01:58.000
不管是 global 的 attention
link |
01:02:00.000
還是 vertical 的 attention
link |
01:02:02.000
效果其實甚至都
link |
01:02:04.000
還變好了
link |
01:02:06.000
原本這個 0 就是完全沒有
link |
01:02:08.000
print 然後這邊是 print 了24 個 head
link |
01:02:10.000
就是根據那個
link |
01:02:12.000
大 G 大 V 大 D
link |
01:02:14.000
那三個 matrix 去排列我的 head
link |
01:02:16.000
然後 print 到 48 個
link |
01:02:18.000
之後的結果
link |
01:02:20.000
你會發現我才剛
link |
01:02:22.000
print 24 個 vertical head
link |
01:02:24.000
效果就變好了
link |
01:02:26.000
或是說我 print 到 72 個
link |
01:02:28.000
global head 藍色的條件
link |
01:02:30.000
效果也變好
link |
01:02:32.000
不管是 vertical 還是 global 都變好
link |
01:02:34.000
那這件事情就
link |
01:02:36.000
還蠻奇妙的就是說
link |
01:02:38.000
我們剛剛
link |
01:02:40.000
得到的結論是說這種
link |
01:02:42.000
vertical head 呢
link |
01:02:44.000
它就是
link |
01:02:46.000
有點像在採樣我整個
link |
01:02:48.000
裡面呢
link |
01:02:50.000
我這個 head 就是要採樣
link |
01:02:52.000
這個 phone name
link |
01:02:54.000
所以我不管你 query 是什麼
link |
01:02:56.000
我就是要把你的 query
link |
01:02:58.000
是什麼我經過 attention
link |
01:03:00.000
我就是要把 alterance 裡面
link |
01:03:02.000
有 OY 的那個位置的 frame
link |
01:03:04.000
把它加進來我現在
link |
01:03:06.000
query 的這個 time step
link |
01:03:08.000
所以或許就是
link |
01:03:10.000
這樣子的動作呢
link |
01:03:12.000
造成說
link |
01:03:14.000
這樣子的 head 它其實對於
link |
01:03:16.000
phone name classification 是有害的
link |
01:03:20.000
畢竟
link |
01:03:22.000
比方說我的 query phone name 可能原本是
link |
01:03:24.000
Q 然後你硬要加上
link |
01:03:26.000
一個 OY
link |
01:03:28.000
那最後在 classification 的時候呢
link |
01:03:30.000
可能就會有些混淆
link |
01:03:32.000
那這樣 vertical attention 到底在幹嘛呢
link |
01:03:34.000
我們在這個
link |
01:03:36.000
speaker classification
link |
01:03:38.000
speaker recognition 的 test 就可以發現
link |
01:03:40.000
其實我
link |
01:03:42.000
一 print 掉這個
link |
01:03:44.000
vertical head 呢
link |
01:03:46.000
它其實就馬上掉下來
link |
01:03:48.000
就發現說
link |
01:03:50.000
這樣子的這種 vertical head 呢
link |
01:03:52.000
它其實跟
link |
01:03:54.000
speaker identity 其實是比較相關的
link |
01:03:56.000
ok 那它可能就是在
link |
01:03:58.000
learn 就是
link |
01:04:00.000
特定的一些 frame 或是說
link |
01:04:02.000
它不去 learn
link |
01:04:04.000
它不去它特別的
link |
01:04:06.000
去 neglect 一些
link |
01:04:08.000
沒有用的資訊
link |
01:04:10.000
然後去讓它更
link |
01:04:12.000
容易的去形成這個
link |
01:04:14.000
speaker 的 identity
link |
01:04:16.000
link |
01:04:18.000
link |
01:04:20.000
link |
01:04:22.000
link |
01:04:28.000
link |
01:04:34.000
link |
01:04:36.000
我在想要不要講這個
link |
01:04:42.000
link |
01:04:44.000
那基本上就是說
link |
01:04:46.000
我們現在用三個不同
link |
01:04:48.000
metric 找出三種不同的 head
link |
01:04:50.000
然後去 print 它
link |
01:04:52.000
然後去看說它對我最後的 representation 有什麼樣的影響
link |
01:04:54.000
link |
01:04:56.000
其實還有一個更簡單的
link |
01:04:58.000
metric 就是 weight
link |
01:05:00.000
那這個 weight 呢
link |
01:05:02.000
它意思就是說
link |
01:05:04.000
我這個 attention head 呢
link |
01:05:06.000
它如果每次的
link |
01:05:08.000
出來的 attention distribution 的
link |
01:05:10.000
最大的那個 attention weight
link |
01:05:12.000
對 它每次出來都有
link |
01:05:14.000
很大的 attention weight 的話呢
link |
01:05:16.000
這樣子的 head 它非常的重要
link |
01:05:18.000
link |
01:05:20.000
所以我這邊就有一條
link |
01:05:22.000
weight 的 pruning curve 就是說
link |
01:05:24.000
越重要就是
link |
01:05:26.000
那我就把它反過來
link |
01:05:28.000
排序就是說
link |
01:05:30.000
每次出來的 attention weight 呢
link |
01:05:32.000
最大的那個值如果永遠
link |
01:05:34.000
一直都很小的話 那我就優先
link |
01:05:36.000
從這種 head 開始 prune
link |
01:05:38.000
ok 然後就發現說
link |
01:05:40.000
其實它跟
link |
01:05:42.000
就是這個
link |
01:05:44.000
的曲線其實還蠻接近的
link |
01:05:46.000
但是呢
link |
01:05:48.000
他們在這個 speaker recognition
link |
01:05:50.000
的 tag 上面就是有一個還蠻明確的
link |
01:05:52.000
差異 所以就發現說
link |
01:05:54.000
欸 雖然
link |
01:05:56.000
有一些 head 呢
link |
01:05:58.000
link |
01:06:02.000
link |
01:06:04.000
link |
01:06:08.000
link |
01:06:10.000
link |
01:06:12.000
那我們就去看說
link |
01:06:14.000
就是這兩種 globalness
link |
01:06:16.000
還有 weight 的這兩種 pruning 的
link |
01:06:18.000
的流程呢 它
link |
01:06:20.000
呃 主要的差異點
link |
01:06:22.000
是什麼 那我們就是
link |
01:06:24.000
就是
link |
01:06:26.000
直接就是去畫說
link |
01:06:28.000
這個每個 head 的排名
link |
01:06:30.000
所以對於 globalness 來說呢
link |
01:06:32.000
這個每一個點
link |
01:06:34.000
都是一個 head 那這個
link |
01:06:36.000
比方說這個 head 呢
link |
01:06:38.000
這個 globalness 它排在
link |
01:06:40.000
可能第五十的位置
link |
01:06:42.000
然後在
link |
01:06:44.000
weight 這個
link |
01:06:46.000
它排在
link |
01:06:48.000
第六十名這樣
link |
01:06:50.000
所以意思就是說 它對於
link |
01:06:52.000
weight 來說呢 這個 head
link |
01:06:54.000
weight 覺得它比較重要
link |
01:06:56.000
可是這個 head 對於 globalness 來說呢
link |
01:06:58.000
它覺得這個 head 比較不重要
link |
01:07:00.000
ok 那
link |
01:07:02.000
我們從這邊的圖呢
link |
01:07:04.000
我們可以看得出來 欸
link |
01:07:06.000
最一開始 prune 二十四個
link |
01:07:08.000
head 的時候呢 就出現一個明確的
link |
01:07:10.000
差異 所以我們就去看說
link |
01:07:12.000
如果 呃 要 prune
link |
01:07:14.000
前面二十四個 head 呢
link |
01:07:16.000
那到底是哪些 head
link |
01:07:18.000
被 prune 掉了 它們
link |
01:07:20.000
就是這兩種
link |
01:07:22.000
pruning 的方法呢 它們主要的
link |
01:07:24.000
差異在哪裡
link |
01:07:26.000
所以 如果是
link |
01:07:28.000
要 prune
link |
01:07:30.000
這個
link |
01:07:32.000
根據 globalness 來 prune 二十四個 head
link |
01:07:34.000
的話呢 它會 prune 掉
link |
01:07:36.000
綠色跟
link |
01:07:38.000
藍色這些 head
link |
01:07:40.000
那如果
link |
01:07:42.000
是要根據 weight 來 prune
link |
01:07:44.000
head 的話呢 它會 prune 掉
link |
01:07:46.000
綠色跟紅色這些 head
link |
01:07:48.000
好 那
link |
01:07:50.000
所以我們這樣就可以走出來說 欸其實
link |
01:07:52.000
主要這兩個 metric 它們
link |
01:07:54.000
差異就是差在這個
link |
01:07:56.000
紅色 還有這個
link |
01:07:58.000
藍色 這兩種 head
link |
01:08:00.000
那我們就
link |
01:08:02.000
link |
01:08:04.000
這些 head 去把它用
link |
01:08:06.000
我們前面剛剛介紹的這個
link |
01:08:08.000
map 去給它畫一下
link |
01:08:10.000
就發現 欸 紅色的這個 map 呢
link |
01:08:12.000
基本上這三個點 其實都
link |
01:08:14.000
長這個樣子
link |
01:08:16.000
就是說 它們都去 neglect
link |
01:08:18.000
就它們都特別的
link |
01:08:20.000
不去看 某一些 frame
link |
01:08:22.000
然後發現 欸 這個 frame 呢
link |
01:08:24.000
是 silence 它覺得
link |
01:08:26.000
這個 silence 這個資訊呢 對於
link |
01:08:28.000
形成 speaker 的資訊
link |
01:08:30.000
一點幫助都沒有
link |
01:08:32.000
還有其實還有 neglect 那種
link |
01:08:34.000
sh 就是 噓 這種音的
link |
01:08:36.000
它就代表說
link |
01:08:38.000
欸 這種 vertical head 呢
link |
01:08:40.000
它會去忽略一些對於
link |
01:08:42.000
形成 speaker identity 沒有
link |
01:08:44.000
幫助的 head 而且
link |
01:08:46.000
這種 沒有幫助的一些
link |
01:08:48.000
的 frame
link |
01:08:50.000
然後這種 head 呢
link |
01:08:52.000
把它 prune 掉
link |
01:08:54.000
對於這個 speaker identity 的
link |
01:08:56.000
效果會有直接的
link |
01:08:58.000
影響
link |
01:09:00.000
對 那
link |
01:09:02.000
就是講到現在大概就是
link |
01:09:04.000
我們目前就是
link |
01:09:06.000
小總結就是說
link |
01:09:08.000
我們現在把 self-attention
link |
01:09:10.000
用 reconstruction loss 來 train
link |
01:09:12.000
那就發現說 欸
link |
01:09:14.000
有三種
link |
01:09:16.000
attention 有 diagonal
link |
01:09:18.000
還有 vertical 還有 global
link |
01:09:20.000
的 attention 那我們發現說
link |
01:09:22.000
欸 這個
link |
01:09:24.000
diagonal attention 呢 它
link |
01:09:26.000
對於這個 phonetic 的
link |
01:09:28.000
information 是 它是唯一有影響的
link |
01:09:30.000
就是 vertical 還有 global
link |
01:09:32.000
對這個 phonetic information 都沒有影響
link |
01:09:34.000
好 然後 diagonal 呢
link |
01:09:36.000
它 呃 它有
link |
01:09:38.000
意識到我們在 pre-training 的時候的
link |
01:09:40.000
masking length 然後呢
link |
01:09:42.000
它也有意識到這個 phoneme 的
link |
01:09:44.000
interval 然後呢
link |
01:09:46.000
這個 vertical 的 attention 呢
link |
01:09:48.000
它跟我們這個 speaker identity 特別的重要
link |
01:09:50.000
然後呢 它有
link |
01:09:52.000
focus 在某些 frame 還有它
link |
01:09:54.000
neglect 某些 frame 對
link |
01:09:56.000
那就是 對
link |
01:09:58.000
這兩種就都很重要 並不是說
link |
01:10:00.000
link |
01:10:02.000
並不是說只有 focus 這種就是有
link |
01:10:04.000
很高的 attention weight 很重要
link |
01:10:06.000
就是 neglect 這種
link |
01:10:08.000
儘管我這個 attention distribution 裡面
link |
01:10:10.000
不會出現一些
link |
01:10:12.000
很高的 attention weight 但它的
link |
01:10:14.000
operation 這件 它的這個 operation
link |
01:10:16.000
其實還是很重要
link |
01:10:18.000
那最後就是 global 的 attention 呢
link |
01:10:20.000
就是目前我們還在 working on
link |
01:10:22.000
好 那我們就講到這邊
link |
01:10:24.000
不知道大家有沒有什麼問題呢