Explainable Seq2Seq
by distribution observation
Target
利用latent的distribution來解釋seq2seq+ctl signal是怎麼實現的。
What Information does Encoder Save?
= what did encoder learn?
文字頻道: 可以點選其中一個頻道開啟文字對話
語音頻道: 可以點選其中一個頻道開啟語音通話
TA正在直播畫面,可以將屬標移過去觀看正在直播甚麼。
將直播畫面展開。
靜音自己麥克風 / 關閉別人聲音 / 設定
Experiment - final latent
Encoder
All
Sentences
Latent
result
colored with ctl signal position
Result
control target = 2
control target = 1
control target = 3
control target = 4
control target = 9
control target = 5
Detached
1. ctl pos = 1的distribution是獨立的。
2. ctl pos > 1的distribution會隨其值平移
will explain later.
(其實2和3也很遠)
Experiment - time & latent
Enc
GRU
All
Sentence
<SOS>
我
Latent
Latent
result
Enc
GRU
Latent
...
<EOS>
Enc
GRU
<5>
Enc
GRU
你
Enc
GRU
- 看到EOS為止。
Result
time=1
time=2
time=3
time=14
1. 吃到第一/二個字的distribution是特別獨立的。 2. encoder知道現在是第幾個時間點。 > 接下來觀察的點一定要用同個時間,否則他們會就因為時間不宜樣而分群。
Why first 2 words are imp?
除了主詞比較容易重複,
貌似seq2seq學到了一些奇怪的東西。(合唱/男/女)
input的前兩個字(獨立部份) | output |
---|---|
南无 | 南无观音菩萨音会 |
可是 | 就是我我们的 |
合唱 | 合唱一首歌曲不是的一首歌 |
合离 | 合我我我不你我相相爱 |
一转 | 一个人都不不断 |
谁来 | 谁是我的是一个人 |
她们 | 她的的的的的的的的的她已经了 |
男我 | 男我爱你爱你永远永远 |
一个 | 一一的的的的宏 |
Experiment - fixed time
Ex: 假如文本目前有
<SOS> | 嗨 | <EOS> | <1> | 乾 | <PAD> | <PAD> | <PAD> | <PAD> | <PAD> |
---|---|---|---|---|---|---|---|---|---|
<SOS> | 哈 |
囉 |
你 |
好 |
嘛 |
<EOS> |
<1> | 不 | <PAD> |
<SOS> | 你 | 是 | 不 | 是 | 很 | 電 | <EOS> | <2> | 否 |
<SOS> | 你 | 知 | 道 | 我 | 是 | 誰 | 勒 | <EOS> | <5> |
<SOS> | 啦 | 啦 | 啦 | 啦 | 啦 | 啦 | 啦 | 啦 | <EOS> |
1. 抓某個時間點的latent
2. 砍掉吃過EOS的
Result
-
Encoder吃到<EOS>會有強烈的反應(distribution跳轉)
- Encoder可能知道接下來要吃的是ctl signal。
Experiment - fixed time 2
Ex: 假如文本目前有
<SOS> | 嗨 | <EOS> | <1> | 乾 | <PAD> | <PAD> | <PAD> | <PAD> | <PAD> |
---|---|---|---|---|---|---|---|---|---|
<SOS> | 哈 |
囉 |
你 |
好 |
嘛 |
<EOS> |
<1> | 不 | <PAD> |
<SOS> | 你 | 是 | 不 | 是 | 很 | 電 | <EOS> | <2> | 否 |
<SOS> | 你 | 知 | 道 | 我 | 是 | 誰 | 勒 | <EOS> | <5> |
<SOS> | 啦 | 啦 | 啦 | 啦 | 啦 | 啦 | 啦 | 啦 | <EOS> |
1. 抓某個時間點的latent
2. 砍掉吃過ctl的
Result
-
Encoder吃到<ctl>會再次跳轉, 並且會依照ctl有不同的反應(同一開始的結論)
Is <PAD> important?
因為有batch的原因,因此短句後面通常都會有大量的<PAD>,這個<PAD>會造成什麼影響?
# of <PAD> & Accuracy
* Thanks to SDML_BetrayerLaBetrayer
Recap
吃到ctl
- 大多neuron都會再吃<PAD>的時候進行調整。
- 還沒調整完就拿去decode會因為distribution不一樣導致acc變低。
Experiment - fixed time 3
Ex: 假如文本目前有
<SOS> | 嗨 | <EOS> | <1> | 乾 | <PAD> | <PAD> | <PAD> | <PAD> | <PAD> |
---|---|---|---|---|---|---|---|---|---|
<SOS> | 哈 |
囉 |
你 |
好 |
嘛 |
<EOS> |
<1> | 不 | <PAD> |
<SOS> | 你 | 是 | 不 | 是 | 很 | 電 | <EOS> | <2> | 否 |
<SOS> | 你 | 知 | 道 | 我 | 是 | 誰 | 勒 | <EOS> | <5> |
<SOS> | 啦 | 啦 | 啦 | 啦 | 啦 | 啦 | 啦 | 啦 | <EOS> |
1. 抓某個時間點的latent
2. 吃<eos>以後的
Result
PHASE III
吃到ctl pos
(越深表示
指定位置越後面)
吃了7個<PAD>
trg = 1
吃了7個<PAD>
trg = 9
吃完指定字
trg = 9
吃完指定字
trg = 1
PHASE IV
透過PAD去校正
吃越多的<PAD>
吃越多的<PAD>
吃了7個<PAD>
trg = 2
- 在一開始有提到trg=1和2與其他人是獨立的。
- 吃越多<PAD>會越穩定並集中到右側。(右側較多聚集。)
越大的trg
Conclusion in Encoder
- Encoder 的會知道現在當下是第幾個時間點。
(rnn 自己會有一套 position encoding)。 - trg = 1為special case。
- Encoder的四個流程。
- Phase I: 還沒吃到<EOS>前,匯集整句資訊。
- Phase II: 吃到<EOS>的當下,估計可能是做總結或是準備要吃到control signal。
- Phase III: 吃到control position,這表示ctl pos對這個任務是很重要的,並且可以依照pos分群。
- Phase IV: 透過<PAD>去做調整,調到一個穩定態後變成完整的資訊。
Exchange Phase II & III
先吃ctl再吃<EOS>,例如:<SOS> 若 願 意 逗 留 1 寒 <EOS>
- 如果test不照流程,(不告訴encoder該吃signal了),就會降低acc,並且ctl會混亂。
How does Decoder Process the Latent?
= what did decoder learn?
Experiment - time & latent
Dec
GRU
Encoder's
Latent
<SOS>
你
Latent
Latent
result
Dec
GRU
Latent
...
<EOS>
Dec
GRU
Dec
GRU
Dec
GRU
好
電
Latent
Result - 1
1. 吃到第一個字的distribution是特別獨立的。(解釋過了。) 2. decoder知道現在是第幾個時間點。(同encoder) > 同encoder,接下來觀察的點一定要用同個時間,否則他們會就因為時間不宜樣而分群。
3. 看起來還有兩群? (左上和右下)
Time = 1
Time = 11
Result - 2
-
Decoder在time=ctl pos的時候 會跳到另一個distribution,這表示decoder得知這個時間點是很重要的。
Time = Ctl pos
Time != Ctl pos
Experiment - fixed time
Ex: 假如輸出是
<SOS> | 嗨 |
<EOS> | <EOS> | <EOS> | <EOS> | <EOS> | <EOS> | <EOS> | <EOS> |
---|---|---|---|---|---|---|---|---|---|
<SOS> | 哈 |
囉 |
你 |
好 |
嘛 |
<EOS> |
<EOS> | <EOS> | <EOS> |
<SOS> | 你 | 是 | 不 | 是 | 很 | 電 | <EOS> | <EOS> | <EOS> |
<SOS> | 你 | 知 | 道 | 我 | 是 | 誰 | 勒 | <EOS> | <EOS> |
<SOS> | 啦 | 啦 | 啦 | 啦 | 啦 | 啦 | 啦 | 啦 | <EOS> |
抓某個時間點的latent
Distribution @ T=4
已經超過指定位置
剛好正在指定位置
下一個字是指定位置
下兩個字是指定位置
指定位置在三個位置之後(越深表示越近)
1. 在準備要輸出指定位置,distribution會跳轉(表示有行為表現)。
2. 在指定位置還在很遠的時候,latent有countdown的行為。
3. 在countdown = 2以內,latent會再跳轉兩次。
4. 在輸出完指定位置後,又會再跳轉一次。
Other T
T=2
T=6
T=8
T=12
Phase I:
距離target還很遙遠。顏色越深表示越近。
Phase II:
距離target還差一個字或兩個字
Phase III:
T = target。
Phase IV:
已經輸出完target。
不管什麼T都會有4階Phase,唯獨T越大countdown的行為區分越小
> 因此太長的句子中間都會是垃圾句。
Special Case - T = 1
T = 1時並沒有countdown的階段,所以會直接出從at trg開始。
因此trg = 1對於seq2seq是特例,所以encoder的latent是trg = 1時會有獨立行為。
Example in Phase
Phase I:
距離target還很遙遠。顏色越深表示越近。
Phase II + III:
距離target還差一個字或兩個字之類 + 指定字
Phase IV:
已經輸出完target。
我是我的我的的
我你的你的我的我的的
我要的你的的的的的的的
我的的你的的
我是我的是你的
我是我的的
是一个
不可以
不听到
是太多
在大北
不以为
在眼前
不说过
的搜索
握着握着的火种的种种彩虹
你的声音
啦啦啦啦
变得很美
为我的爱
愈愈愈愈愈
虹灯火阑珊
世界无与伦比
你心中燃烧
远不是我的
我不是你的
渐渐渐渐渐渐远
无无无无无无无无
Conclusion in Decoder
- Decoder 的會知道現在當下是第幾個時間點。(同Enc)
- Decoder的四個流程。
- Phase I: 距離指定字3以上 - Decoder會Countdown並大概率輸出垃圾字。
- Phase II: 距離指定字2以內,並對指定字做前序接龍。
- Phase III: 輸出Control字。
- Phase IV: 對之前的文字做詞語接龍。
Why Phase I sucks?
- 可能是Latent的capacity不足以去做逆向接龍?(因為必須保有control signal的資訊)
- 但是逆向接龍可以接約1~2個。
- NSP的開始不好預測? (因為第一個是主詞,幾乎什麼都能接,所以就直接接P最高的"的")。
Normal Improve
Phase I
Target: 設計一個新的model讓結果看起來不要這麼疊字。
Bidirectional Decoder?
長度必須固定,否則反向會因為不知道怎麼倒數就會做不出來。
Bidirectional Decoder'?
Dec
GRU
Encoder's
Latent
<SOS>
你
Dec
GRU
...
<EOS>
Dec
GRU
Dec
GRU
Dec
GRU
好
電
Dec
GRU
Dec
GRU
Dec
GRU
Dec
GRU
Dec
GRU
...
<EOS>
電
好
你
<SOS>
Magic Improve
Phase I
Target:
用現有的model做出一個可能比較合理的句子
Work Flow
Input:
<SOS> 你 眼 中 的 温 柔 是 否 一 切 都 为 我 <EOS> 10 唱
Output: 我的的的的我的的歌唱
Input - 2:
<SOS> 你 眼 中 的 温 柔 是 否 一 切 都 为 我 <EOS> 9 歌
Output: 我的我的我我我的
Input - 3:
<SOS> 你 眼 中 的 温 柔 是 否 一 切 都 为 我 <EOS> 8 的
Output: 我的你的我我的的歌
...
Iterative Inverse Cat
我不我的我我不后悔 >我不是我还是我最后悔
我一天一天一天的的黑 >这样的爱爱着你的的黑
我你你的我我我的的心 >你是你就是你给你的心
我是我的是我是你我的 >不要再见见你不是我的
我是我的的的的的方式 >你是我就是我的地方式
我是我的我的我的海洋 >我不是我就是我的海洋
我的的的的的你的会滑落 >我不是我还是你不会滑落
我的的的的我的的歌唱 >让我的爱你让我的歌唱 (example)
我们的个人人都不异议 >一个一个一个的人异议
我你的你的泪水流流淌 >可是我是我的眼泪流淌
我是你的我我我是为什么 >你是我就是我不会为什么
我在你的在你的的身边 >我不是我还是你的身边
我在在在我的在在哪里 >我在乎我站站在哪哪里
Naive
Inverse Cat
Q&A
Seq2Seq
By Arvin Liu
Seq2Seq
Explain Seq2Seq with control signal (what position needs to be what)
- 1,196