back to index

[DLHLP 2020] Overview of NLP Tasks


link |
00:00.720
好,到目前為止呢
link |
00:02.720
我們講了很多跟語音有關的任務
link |
00:06.720
那接下來呢
link |
00:08.720
我們要進入跟文字有關的任務
link |
00:12.220
這一門課裡面呢
link |
00:13.720
我們要講的模型就是六個
link |
00:16.720
那我們已經講過這四個模型
link |
00:19.720
那剩下右邊右下角這兩個還沒有講過
link |
00:23.720
那這兩個模型
link |
00:25.220
一個是輸入一段文字
link |
00:27.220
輸出一段文字
link |
00:28.720
另外一個是輸入一段文字
link |
00:30.720
輸出這段文字
link |
00:32.720
屬於什麼樣的類別
link |
00:35.720
那右邊這兩個紅框框裡面的模型
link |
00:38.720
好,這就是大家一般所熟知的
link |
00:41.720
NLP相關的任務
link |
00:44.720
不過我開學的時候就有跟大家講過說
link |
00:48.720
這個NLP這個詞彙
link |
00:50.720
其實它的用法有點模糊
link |
00:53.720
因為按照字面上的解釋
link |
00:56.720
Natural Language指的就是
link |
00:58.720
我們人與人之間溝通所用的語言
link |
01:01.720
而Natural Language它可以是文字的
link |
01:04.720
也可以是語音的
link |
01:06.720
所以語音相關的技術
link |
01:08.720
其實也應該算是
link |
01:10.720
Natural Language Processing的一環
link |
01:12.720
但不知道為什麼
link |
01:13.720
一般我們在講Natural Language Processing的時候
link |
01:16.720
指的都是文字處理相關的技術
link |
01:19.720
那很多人在講Natural Language Processing的時候
link |
01:22.720
除了文字處理相關的技術以外
link |
01:25.720
還可以加上語音辨識
link |
01:28.720
不過這就有點奇怪
link |
01:29.720
到底Natural Language Processing的定義是什麼
link |
01:31.720
如果說Natural Language Processing的定義是
link |
01:33.720
如果你的模型輸入是文字
link |
01:35.720
就叫NLP的話
link |
01:36.720
那你為什麼要把語音加進來
link |
01:39.720
為什麼你不把TTS加進來
link |
01:41.720
TTS也是輸入文字啊
link |
01:43.720
那如果你說Natural Language Processing
link |
01:45.720
就是完全沒有語音
link |
01:46.720
就叫Natural Language Processing的話
link |
01:48.720
那為什麼要把語音辨識加進來
link |
01:50.720
所以這個Natural Language Processing
link |
01:52.720
這個詞彙的用法
link |
01:54.720
在每個人的心理其實都不太一樣
link |
01:57.720
所以有一個人跟你說
link |
01:58.720
他在研究Natural Language Processing的時候
link |
02:01.720
你最好就是直接問清楚說
link |
02:03.720
他做的是什麼樣的研究
link |
02:05.720
那每個人心理想像的Natural Language Processing
link |
02:08.720
其實都不太一樣
link |
02:10.720
那有人可能會說Natural Language Processing
link |
02:12.720
就是要understanding
link |
02:14.720
要有理解才叫做Natural Language Processing
link |
02:17.720
但是像我們才剛講完TTS
link |
02:20.720
TTS裡面也會用到BERT的model啊
link |
02:23.720
也會用到文法的結構啊
link |
02:25.720
那機器也是要理解一個句子
link |
02:27.720
才能夠知道要怎麼把它念出來啊
link |
02:29.720
所以TTS裡面也有用到understanding啊
link |
02:32.720
但是我很少聽到有人把TTS
link |
02:34.720
算作是Natural Language Processing的一環
link |
02:36.720
所以總之這個詞彙
link |
02:38.720
每個人心理的用法都不太一樣啦
link |
02:41.720
那你聽到有人在講NLP這個詞彙的時候
link |
02:44.720
你自己多加留意他們指的是什麼東西
link |
02:47.720
好總之我們現在要講的
link |
02:49.720
就是輸入一段文字輸出一段文字
link |
02:52.720
輸入一段文字輸出一個類別
link |
02:54.720
這樣子的模型
link |
02:56.720
好那因為Natural Language Processing的
link |
02:58.720
這個應用非常非常的廣泛
link |
03:01.720
所以你在文件上會看到
link |
03:02.720
讓人目不暇給的應用
link |
03:04.720
滿坑滿谷的應用
link |
03:05.720
非常複雜的而變化多端的模型
link |
03:09.720
那雖然模型是如此的變化多端
link |
03:13.720
但是總歸起來來說
link |
03:15.720
其實不拖以下幾個變化
link |
03:18.720
首先如果你今天考慮的啊
link |
03:20.720
是輸入一段文字輸出的是類別的話
link |
03:25.720
那這種模型大概有兩種
link |
03:28.720
一種是輸入一段文字只輸出一個類別
link |
03:33.720
這個類別代表這整段文字所屬的類別
link |
03:37.720
另外一種狀況是輸入一段文字
link |
03:40.720
這一段文字裡面的每一個Token
link |
03:44.720
那至於Token的單位是什麼
link |
03:46.720
我們在一開學在講語音辨識的時候
link |
03:49.720
就講說Token的單位
link |
03:50.720
可以有很多不同的單位
link |
03:52.720
它可以指的是字母
link |
03:53.720
也可以指的是Subword的Unit
link |
03:56.720
也可以指的是詞彙
link |
03:58.720
那每個人的用法都不一樣
link |
03:59.720
總之今天給你一段文字
link |
04:02.720
裡面的每一個Token
link |
04:04.720
我們都需要給它一個類別
link |
04:06.720
我們想要知道這段文字裡面
link |
04:08.720
每一個Token屬於什麼樣的類別
link |
04:12.720
而當你今天在處理這種輸入一段文字
link |
04:14.720
輸出一個類別模型的時候
link |
04:16.720
不外乎就是這兩種問題
link |
04:20.720
而這兩種問題今天
link |
04:22.720
我們之後很快就會講到BERT
link |
04:25.720
如果你熟悉BERT的話
link |
04:26.720
其實就是用BERT來解啦
link |
04:29.720
或者是用BERT的一些進階的版本
link |
04:32.720
就可以解這樣子的模型
link |
04:34.720
那在過去還沒有BERT的時候
link |
04:35.720
怎麼做呢
link |
04:36.720
那也可以想見說
link |
04:37.720
上面就是一個LSTM
link |
04:39.720
然後最後一個Time Step的資訊讀出來
link |
04:42.720
那就通過幾個Transform就變成Class
link |
04:45.720
那下面就是一個LSTM
link |
04:47.720
這個LSTM每個Time Step
link |
04:49.720
都會輸出一些東西
link |
04:50.720
通過Transform就變成Class
link |
04:53.720
所以雖然這種INPUT文字
link |
04:56.720
OUTPUT Class的這種模型
link |
04:58.720
有各式各樣的應用
link |
05:00.720
但是都不拖這兩種類型
link |
05:02.720
而這兩種類型
link |
05:03.720
今天你就是用BERT
link |
05:05.720
或者是它的各種進階的版本
link |
05:07.720
來直接給它解下去就好了
link |
05:10.720
那另外一種狀況呢
link |
05:12.720
是輸入一段文字
link |
05:13.720
輸出一段文字
link |
05:15.720
那如果輸入一段文字
link |
05:16.720
輸出一段文字很直覺的
link |
05:18.720
你就會想說我要採用
link |
05:19.720
Sequence to Sequence的Model
link |
05:21.720
那Sequence to Sequence Model
link |
05:23.720
這個大家都已經很熟悉了
link |
05:24.720
我們就不用再講了
link |
05:25.720
它就是有一個Encoder
link |
05:27.720
有一個Decoder
link |
05:28.720
那有時候你還會需要做Attention
link |
05:31.720
那在這種輸入一段文字
link |
05:33.720
輸出一段文字的任務裡面
link |
05:35.720
很多時候呢
link |
05:36.720
我們會希望這個Attention
link |
05:39.720
有Copy的Mechanism
link |
05:42.720
它有Copy的能力
link |
05:43.720
Decoder的輸出
link |
05:44.720
不需要完全是
link |
05:46.720
它自己產生出來的結果
link |
05:48.720
Decoder可以有一些狀況
link |
05:50.720
是直接從Encoder的輸入
link |
05:52.720
直接Copy一些詞彙
link |
05:54.720
作為它的輸出
link |
05:55.720
那至於這個實際上要怎麼做
link |
05:57.720
我們之後再講
link |
05:58.720
那我只是要講說
link |
05:59.720
假設你今天遇到的是
link |
06:01.720
輸入文字輸出文字的問題
link |
06:03.720
那就是Sequence to Sequence Model
link |
06:06.720
那接下來你要考慮的是
link |
06:07.720
需不需要加上Copy的Mechanism
link |
06:11.720
剛才講的是有關輸出的部分
link |
06:15.720
那如果是輸入的部分呢
link |
06:17.720
如果輸入的部分是一個Sequence
link |
06:20.720
那沒有問題
link |
06:21.720
你就用一個Encoder
link |
06:22.720
把這個Sequence讀過去
link |
06:24.720
就結束了
link |
06:25.720
那如果輸入的部分
link |
06:27.720
是多個Sequence的話怎麼辦呢
link |
06:29.720
如果輸入的是不只一個Sentence
link |
06:33.720
而是多個Sentence的話怎麼辦呢
link |
06:36.720
那有大概兩種可能的解法
link |
06:39.720
一個解法是
link |
06:40.720
我們把這兩個Sequence
link |
06:42.720
分別用一個Model去做Encode
link |
06:45.720
然後把Encode的結果
link |
06:46.720
再丟給另外一個負責做整合的Network
link |
06:49.720
再得到最終的輸出
link |
06:51.720
看你最終要輸出Class
link |
06:52.720
還是最終要輸出文字都可以
link |
06:54.720
那有時候呢
link |
06:56.720
我們也會在這兩個Model之間
link |
06:58.720
加上Attention
link |
07:00.720
也許你覺得說
link |
07:01.720
在Encode左邊這個句子的時候
link |
07:03.720
應該要知道右邊那個句子是什麼
link |
07:05.720
才能夠Encode得好
link |
07:06.720
在Encode右邊這個句子的時候
link |
07:08.720
應該要知道左邊這個句子的內容是什麼
link |
07:10.720
才能夠Encode得好
link |
07:11.720
那我們就需要在這兩個句子中間
link |
07:14.720
加上Attention
link |
07:17.720
那另外一個想法
link |
07:19.720
近年來比較流行的做法
link |
07:21.720
是直接把兩個句子接起來
link |
07:24.720
然後中間加一個特別的Token
link |
07:26.720
這個特別的Token
link |
07:27.720
告訴我們說這是兩個不同的句子
link |
07:29.720
然後把兩個句子接起來
link |
07:31.720
中間加上特別的Token
link |
07:32.720
變成一個比較長的句子
link |
07:34.720
變成一個比較長的Sequence
link |
07:36.720
直接丟到一個Encoder裡面
link |
07:38.720
就結束了
link |
07:39.720
那接下來再看說
link |
07:40.720
你要拿這個Encoder的結果
link |
07:41.720
來做什麼樣的事情
link |
07:44.720
所以其實
link |
07:46.720
雖然NLP的任務千變萬化
link |
07:50.720
但是其實依據模型的輸入輸出
link |
07:53.720
可以分成幾個大類
link |
07:55.720
依據模型的輸入
link |
07:56.720
你可以分成只有一個Sequence當作輸入
link |
07:59.720
還有多個Sequence作為輸入
link |
08:01.720
依據模型的輸出
link |
08:02.720
NLP的任務有的是要輸出一個Class
link |
08:05.720
有的是每一個輸入的Token
link |
08:07.720
都要給它一個Class
link |
08:08.720
有的是直接Copy輸入的資訊作為輸出
link |
08:12.720
有的是輸出一個General的Sequence
link |
08:15.720
當然還有一些例外
link |
08:17.720
那以下呢
link |
08:19.720
我們就是要把這些NLP的任務
link |
08:22.720
都很快的跟大家講過一遍
link |
08:25.720
告訴你說這些任務是什麼
link |
08:27.720
根據輸入和輸出的不同
link |
08:30.720
你可以大致分為八類
link |
08:33.720
那以下我們就是把各種NLP的任務
link |
08:36.720
很快的跟大家講過一遍
link |
08:39.720
讓你知道說
link |
08:40.720
這些NLP的任務分別是屬於哪一個類別
link |
08:46.720
第一個基礎的NLP的應用
link |
08:48.720
叫做Parallel Speech
link |
08:51.720
PoS的Tagging
link |
08:53.720
那PoS的Tagging做的事情就是說
link |
08:55.720
給Machine一個句子
link |
08:57.720
句子裡面有很多詞彙
link |
08:58.720
機器要自動幫我們標記出
link |
09:01.720
每一個詞彙的詞性是什麼
link |
09:04.720
它自動幫我們標記出
link |
09:05.720
每一個詞彙是動詞啊
link |
09:07.720
還是形容詞啊
link |
09:08.720
還是名詞啊等等
link |
09:11.720
這件事情為什麼重要呢
link |
09:14.720
舉例來說
link |
09:15.720
你今天給機器看一個句子
link |
09:17.720
John saw the soul
link |
09:19.720
John看了一個看
link |
09:21.720
這邊出現了兩個看
link |
09:22.720
不知道是什麼意思
link |
09:24.720
但是假如說
link |
09:26.720
我們可以把這樣子的句子
link |
09:28.720
丟到一個PoS Tagging的模型裡面
link |
09:30.720
PoS Tagging的模型告訴我們說
link |
09:32.720
第一個soul其實是動詞
link |
09:35.720
第二個soul其實就名詞
link |
09:37.720
那我們知道說
link |
09:38.720
soul當作名詞的時候呢
link |
09:39.720
它不是看
link |
09:40.720
它指的是句子
link |
09:42.720
它指的是句子
link |
09:43.720
這個句子不是sentence那個句子
link |
09:45.720
是可以拿來鋸東西的句子
link |
09:47.720
還可以鋸木頭的句子
link |
09:49.720
所以今天soul當動詞用
link |
09:52.720
跟soul當名詞用的時候
link |
09:54.720
雖然是同一個詞彙
link |
09:55.720
但是它們的含義是非常不同的
link |
09:58.720
所以如果我們可以把這個句子
link |
10:00.720
丟到一個PoS Tagging的模型
link |
10:02.720
先告訴我們PoS Tagging的資訊
link |
10:04.720
再把這個PoS Tagging的資訊
link |
10:06.720
跟這些文字把它綁在一起
link |
10:08.720
再丟到其他的downstream的task
link |
10:11.720
其他NLP的任務更複雜
link |
10:13.720
任務比如說摘要啊
link |
10:14.720
比如說翻譯等等
link |
10:15.720
你就可以做得更好
link |
10:17.720
如果你直接把文字
link |
10:19.720
輸入downstream的task
link |
10:20.720
那可能不見得好
link |
10:22.720
因為也許你的模型
link |
10:23.720
沒有足夠的能力分辨說
link |
10:25.720
這兩個soul是不一樣的意思
link |
10:27.720
但是如果你先做一下PoS Tagging
link |
10:29.720
那你就可以讓downstream的模型
link |
10:31.720
更清楚知道說
link |
10:32.720
這兩個soul是不一樣的
link |
10:33.720
希望在其他接下來的任務
link |
10:35.720
可以做得更好
link |
10:37.720
當然不過近年來啊
link |
10:39.720
這個downstream task用的模型
link |
10:41.720
也越來越強
link |
10:42.720
它可能是BERT
link |
10:43.720
BERT裡面可能本身
link |
10:44.720
就已經有PoS Tagging的能力
link |
10:46.720
那是不是真的需要
link |
10:48.720
把一個句子先做PoS Tagging
link |
10:50.720
再丟到接下來的任務裡面去
link |
10:52.720
變成一個可以討論的問題
link |
10:55.720
不一定是需要的
link |
10:56.720
假設你downstream的模型夠強
link |
10:58.720
它自動就可以做PoS Tag
link |
11:00.720
它的模型裡面
link |
11:01.720
自動就有PoS Tagging的能力
link |
11:02.720
那你不見得需要
link |
11:04.720
先做一個PoS Tagging
link |
11:06.720
來作為前處理
link |
11:08.720
那像PoS Tagging這種問題啊
link |
11:10.720
就是input一個sequence
link |
11:12.720
然後接下來這個sequence
link |
11:14.720
裡面的每一個token
link |
11:16.720
你都要output一個class
link |
11:18.720
那這是我們剛才
link |
11:20.720
在講模型的時候講過的
link |
11:22.720
其中一個類別
link |
11:24.720
好 這是PoS Tag
link |
11:26.720
好 第二個呢
link |
11:27.720
是word segmentation
link |
11:28.720
這個也是前處理呢
link |
11:30.720
常常需要使用到的一個技術
link |
11:32.720
尤其是中文
link |
11:33.720
我們往往會需要
link |
11:35.720
做word segmentation這件事
link |
11:37.720
那word segmentation
link |
11:39.720
是什麼意思呢
link |
11:40.720
如果是英文的話
link |
11:42.720
你完全就不需要word segmentation
link |
11:44.720
因為英文的詞彙和詞彙之間
link |
11:46.720
有空白作為分隔
link |
11:48.720
但是中文不是
link |
11:49.720
中文的詞彙和詞彙之間
link |
11:52.720
沒有空白作為分隔
link |
11:54.720
舉例來說
link |
11:55.720
台灣大學簡稱台大
link |
11:57.720
那台灣大學是一個詞彙
link |
11:59.720
簡稱是一個詞彙
link |
12:00.720
台大是一個詞彙
link |
12:01.720
但是如果直接給你這個句子
link |
12:03.720
詞彙和詞彙之間的邊界
link |
12:05.720
並沒有明顯的在句子裡面
link |
12:07.720
被直接的寫出來
link |
12:10.720
而且這個word segmentation
link |
12:11.720
有時候是會有這個ambiguity的
link |
12:15.720
就到底什麼樣的句子
link |
12:18.720
什麼樣的這個字呢
link |
12:20.720
拼起來是一個詞彙
link |
12:21.720
它是有爭議的
link |
12:22.720
比如台灣大學
link |
12:23.720
到底應該算是
link |
12:24.720
台灣跟大學兩個詞彙
link |
12:25.720
還是台灣大學一個詞彙
link |
12:27.720
不知道
link |
12:28.720
你可以有各種不同的處理方法
link |
12:31.720
那因為word segmentation
link |
12:32.720
對中文而言
link |
12:33.720
找出word和word之間的邊界
link |
12:36.720
它也不是一個非常簡單的問題
link |
12:38.720
所以你其實也可以用model來做
link |
12:41.720
就是訓練一個模型
link |
12:43.720
這個模型呢
link |
12:44.720
可能就是把這個句子裡面的
link |
12:46.720
把這個句子裡面的字呢
link |
12:48.720
一個一個字讀進去
link |
12:50.720
然後接下來呢
link |
12:51.720
它就做一個binary的classification
link |
12:54.720
每一個字呢
link |
12:55.720
它都要決定yes或no
link |
12:57.720
這個yes no代表什麼意思呢
link |
12:59.720
yes就代表說
link |
13:01.720
這邊是一個詞彙的boundary
link |
13:04.720
這邊是一個詞彙的邊界
link |
13:07.720
n就代表說
link |
13:08.720
這邊不是一個詞彙的邊界
link |
13:10.720
那在這個例子裡面
link |
13:11.720
學這邊output的yes
link |
13:13.720
稱這邊output的yes
link |
13:15.720
打這邊output的yes
link |
13:16.720
就讓我們知道說
link |
13:17.720
這個數的句子裡面
link |
13:18.720
有三個詞彙
link |
13:20.720
它們邊界分別在學跟稱跟打
link |
13:24.720
好 那你就先用這樣子的技術呢
link |
13:26.720
做preprocessing
link |
13:27.720
你就知道詞彙的邊界在哪裡
link |
13:29.720
你就把屬於同一個詞彙的這些字呢
link |
13:31.720
把它組合起來
link |
13:32.720
接下來
link |
13:33.720
在接下來的任務裡面
link |
13:34.720
在downstream的task裡面
link |
13:36.720
你可能就會以詞彙
link |
13:38.720
來當作你的處理的單位
link |
13:41.720
而不是用字來當作處理的單位
link |
13:44.720
但是今天這件事情
link |
13:46.720
是不是真的有必要
link |
13:48.720
what segmentation在中文
link |
13:49.720
是不是真的有必要
link |
13:50.720
也是一個可以討論的問題
link |
13:52.720
因為之後我們講到BERT的時候
link |
13:54.720
大家就會知道說
link |
13:55.720
其實像BERT這種模型
link |
13:56.720
它已經不是
link |
13:57.720
它在處理中文的時候
link |
13:59.720
它已經不是以詞彙作為單位
link |
14:02.720
BERT這種模型在處理中文的時候
link |
14:04.720
它其實就是以字作為單位
link |
14:07.720
所以它很有可能在這個模型裡面
link |
14:10.720
已經自動學到了段詞這件事情
link |
14:12.720
那到底需不需要先做段詞
link |
14:15.720
再把段詞的結果
link |
14:16.720
丟到downstream的模型
link |
14:18.720
就變成一個值得討論的問題
link |
14:21.720
也許對BERT而言
link |
14:23.720
先做段詞就變成不是絕對必要
link |
14:25.720
因為BERT的模型裡面
link |
14:27.720
可能也有學到段詞這件事情
link |
14:30.720
那這是what segmentation
link |
14:32.720
那它就是輸入一個sequence
link |
14:34.720
輸出就是這個sequence裡面的
link |
14:38.720
每一個token都要給它一個class
link |
14:40.720
這也是我們在這門課的開頭
link |
14:43.720
跟大家講過的模型的其中一個
link |
14:48.720
那這個段詞非常非常重要
link |
14:50.720
尤其是對中文而言
link |
14:52.720
這邊就舉一個例子
link |
14:53.720
這個例子是來自於笑傲江湖
link |
14:56.720
就有一次陶骨六仙
link |
14:58.720
就進到一個廟裡面
link |
14:59.720
就是看那個牌位
link |
15:01.720
寫的是陽公在心之神
link |
15:04.720
那其中一個人就說
link |
15:05.720
這邊顯然供奉的是陽在心
link |
15:09.720
那陶幹仙就會說
link |
15:10.720
怎麼會是陽在心呢
link |
15:12.720
這邊明明是陽公在
link |
15:14.720
不是陽在心
link |
15:16.720
陽公在
link |
15:18.720
陽公在真的是一個好名字
link |
15:20.720
好名字
link |
15:21.720
而另外一個人就問說
link |
15:23.720
那心之神是什麼意思呢
link |
15:26.720
陶幹仙就說
link |
15:27.720
信就是高興的意思
link |
15:29.720
信之神就是精神很高興的意思
link |
15:32.720
陽公在這個信仰的小子
link |
15:34.720
死後有人供奉他
link |
15:35.720
他的精神當然很高興囉
link |
15:38.720
然後其他人就說
link |
15:39.720
嗯 很是很是
link |
15:41.720
就是告訴我們
link |
15:42.720
在中文裡面
link |
15:43.720
知道這個詞彙的boundary在哪裡
link |
15:46.720
對語意的理解
link |
15:47.720
是非常重要的一件事情
link |
15:52.720
好那還有一個
link |
15:53.720
常常被拿來當作前處理
link |
15:55.720
其他任務的
link |
15:57.720
前處理的NLP的任務
link |
15:59.720
叫做Parsing
link |
16:01.720
那Parsing又分成兩種
link |
16:03.720
一個是Constituency的Parsing
link |
16:05.720
跟Dependency的Parsing
link |
16:07.720
那不管是哪一種Parsing
link |
16:10.720
都是給一個句子
link |
16:12.720
產生一個樹狀的結構
link |
16:14.720
給一個句子
link |
16:15.720
產生一個樹狀的結構
link |
16:18.720
那這個Parsing這個任務
link |
16:19.720
產生樹狀這個結構的任務
link |
16:21.720
好像不在我們剛才講過的
link |
16:23.720
種種模型的類別裡面
link |
16:26.720
那因為Parsing
link |
16:28.720
他做的事情有點不一樣
link |
16:29.720
不是我們剛才講的
link |
16:31.720
種種類別中的其中一個
link |
16:32.720
所以我們會把
link |
16:33.720
怎麼產生樹這件事情
link |
16:35.720
另外拿出來講
link |
16:38.720
因為我們這門課就是
link |
16:40.720
以這個技術為導向
link |
16:42.720
那Parsing他不在
link |
16:44.720
我們剛才講的
link |
16:45.720
種種的模型裡面
link |
16:47.720
所以我們會把Parsing
link |
16:49.720
另外拿出來講
link |
16:51.720
那Parsing的用途通常就是
link |
16:52.720
Parsing的這個結果
link |
16:54.720
也會被拿來
link |
16:55.720
在接下來的任務裡面被使用
link |
16:57.720
他會被當作一種
link |
16:58.720
額外的feature
link |
16:59.720
他會被當作一種
link |
17:00.720
額外的輸入
link |
17:01.720
在接下來的任務裡面
link |
17:03.720
被使用到
link |
17:05.720
那Burt有沒有學到Parsing呢
link |
17:07.720
會不會今天其實也
link |
17:09.720
不見得需要做Parsing呢
link |
17:11.720
這也是另外一個
link |
17:12.720
值得討論的問題
link |
17:14.720
其實在我們的作業裡面
link |
17:15.720
就會有一個
link |
17:16.720
是從Burt裡面讀取
link |
17:18.720
Parsing資訊的任務
link |
17:20.720
你可以自己體會一下
link |
17:22.720
看你覺得說Burt
link |
17:23.720
到底有沒有
link |
17:24.720
learn到Parsing這件事
link |
17:27.720
那還有一個
link |
17:28.720
常常被當作前處理的任務呢
link |
17:30.720
叫做Coreference Resolution
link |
17:34.720
那Coreference Resolution呢
link |
17:36.720
他的中文叫做
link |
17:38.720
指代消解啦
link |
17:40.720
那不管是中文跟英文
link |
17:42.720
可能都不是
link |
17:43.720
如果你沒有做NLP任務的話
link |
17:44.720
可能都不是
link |
17:45.720
你常常會聽到的詞彙
link |
17:47.720
那這個Coreference Resolution
link |
17:49.720
是什麼意思呢
link |
17:50.720
他做的事情呢
link |
17:51.720
就是他要找出一篇文章裡面
link |
17:55.720
哪些詞彙
link |
17:57.720
指的是同樣的entity
link |
18:01.720
指的是同樣的東西
link |
18:03.720
尤其是我們會特別在意的是
link |
18:05.720
某一個代名詞he she it
link |
18:08.720
他指的是什麼樣的東西
link |
18:10.720
那這邊呢
link |
18:11.720
就舉一個具體的例子
link |
18:13.720
給機器呢
link |
18:14.720
讀一篇文章
link |
18:15.720
這篇文章裡面講的是說
link |
18:17.720
有一個叫Paul Allen的人
link |
18:19.720
他1953年生
link |
18:21.720
然後他後來呢
link |
18:22.720
去念這個Layside School
link |
18:25.720
然後呢
link |
18:26.720
他在那邊認識了Bill Gates
link |
18:28.720
然後他們兩個呢
link |
18:29.720
一起做了一些一些事情
link |
18:32.720
那如果你把這篇文章
link |
18:33.720
拿去做紙袋消解的話
link |
18:35.720
那紙袋消解Coreference Resolution
link |
18:37.720
要做到的事情是什麼呢
link |
18:39.720
他就要知道說
link |
18:40.720
這裡面哪些詞彙指的
link |
18:42.720
其實是同樣的東西
link |
18:44.720
指的是同一個人
link |
18:45.720
指的是同一個entity
link |
18:48.720
舉例來說
link |
18:49.720
這邊的Paul Allen
link |
18:51.720
跟這邊的he
link |
18:52.720
跟這邊的he
link |
18:53.720
跟這邊的Paul
link |
18:54.720
他們指的就是同一個人
link |
18:58.720
或者說
link |
18:59.720
這邊的Layside School
link |
19:01.720
跟Layer High School
link |
19:03.720
Layside指的
link |
19:04.720
其實是同一間學校
link |
19:08.720
或者是這邊的Bill Gates
link |
19:10.720
跟這邊的Bill
link |
19:11.720
其實是同一個人
link |
19:12.720
那Coreference Resolution
link |
19:14.720
甚至要做到說
link |
19:15.720
他知道說
link |
19:16.720
Paul and Bill
link |
19:18.720
這個群體
link |
19:19.720
這兩個合起來
link |
19:20.720
就是這邊的Layer
link |
19:22.720
跟這邊的Layer
link |
19:23.720
這個是紙袋消解
link |
19:26.720
那我們往往也會把
link |
19:27.720
紙袋消解的結果
link |
19:29.720
當作額外的feature
link |
19:30.720
把紙袋消解的結果
link |
19:32.720
先做出紙袋
link |
19:33.720
把一篇文章先做紙袋消解
link |
19:35.720
先做Coreference Resolution以後
link |
19:37.720
再當作其他NLP任務的輸入
link |
19:40.720
所以紙袋消解
link |
19:41.720
也是一個常用的
link |
19:42.720
前處理的方法
link |
19:46.720
這個東西要怎麼做呢
link |
19:48.720
它好像也不屬於
link |
19:50.720
我們剛才講的
link |
19:51.720
種種模型之一
link |
19:53.720
所以我們也把
link |
19:54.720
Coreference Resolution拉出來
link |
19:56.720
另外講
link |
19:57.720
講說如果用Deep Learning的技術
link |
19:59.720
Coreference Resolution
link |
20:00.720
是怎麼處理的
link |
20:02.720
接下來是摘要
link |
20:04.720
摘要又分成兩種
link |
20:07.720
在過去
link |
20:08.720
比較常做的是
link |
20:09.720
Extractive Summarization
link |
20:12.720
Extractive Summarization
link |
20:13.720
意思是說
link |
20:14.720
給機器開一篇文章
link |
20:16.720
這個文章裡面
link |
20:17.720
有很多很多的句子
link |
20:19.720
機器要做的事情
link |
20:20.720
是從這些文章裡面
link |
20:21.720
挑選出一些
link |
20:22.720
它覺得重要的句子
link |
20:23.720
把這些句子拼起來
link |
20:25.720
就變成摘要
link |
20:27.720
你可能會覺得說
link |
20:28.720
用這種方法
link |
20:29.720
可以產生出好的摘要嗎
link |
20:33.720
當然不行嘛
link |
20:34.720
用這種方法
link |
20:35.720
你其實很難產生好的摘要
link |
20:37.720
不過我們過去覺得說
link |
20:38.720
機器的能力
link |
20:39.720
可能也就到這邊
link |
20:40.720
所以只要求機器
link |
20:41.720
做Extractive Summary
link |
20:43.720
不叫機器做更複雜的任務
link |
20:46.720
其實你想國小的時候
link |
20:48.720
在寫那個課文的摘要的時候
link |
20:50.720
其實你也很多時候
link |
20:51.720
都是直接從文章裡面
link |
20:52.720
就抄一些句子出來
link |
20:54.720
就當作課文的摘要
link |
20:55.720
雖然老師都說
link |
20:56.720
我們不要這麼做
link |
20:57.720
不過很多時候
link |
20:58.720
我們都是直接把課文裡面
link |
20:59.720
抄一些句子出來
link |
21:00.720
就當作這個課文的摘要
link |
21:02.720
所以機器跟人的能力
link |
21:03.720
其實也是差不多的
link |
21:04.720
很多時候
link |
21:05.720
你其實也很難真的把摘要做好
link |
21:07.720
所以過去我們覺得說
link |
21:08.720
也許做到Extractive Summarization
link |
21:11.720
就夠了
link |
21:12.720
那Extractive Summarization
link |
21:14.720
大概是怎麼做呢
link |
21:16.720
最簡單的看來
link |
21:18.720
它其實就是一個
link |
21:19.720
Binary Classification的問題
link |
21:21.720
你就把一個一個一個的句子
link |
21:23.720
丟到一個Binary的Classifier
link |
21:25.720
這Binary Classifier它要做的事情
link |
21:27.720
就是決定說
link |
21:28.720
這個句子
link |
21:29.720
它是要放到摘要裡面的
link |
21:31.720
還是不要放到摘要裡面的
link |
21:34.720
那訓練一個Binary的Classification
link |
21:36.720
Extractive Summarization的事情
link |
21:38.720
這個任務呢
link |
21:39.720
就做完了
link |
21:40.720
不過這個最後的任務
link |
21:42.720
不會給你得到最好的結果
link |
21:44.720
你也可以想見說
link |
21:45.720
一篇文章裡面
link |
21:46.720
可能有兩個句子都很重要
link |
21:48.720
但他們內容很像
link |
21:49.720
你選了其中一個句子
link |
21:51.720
你就不該選另外一個句子
link |
21:53.720
所以如果把所有的句子
link |
21:55.720
分開來考慮
link |
21:56.720
是不夠的
link |
21:57.720
每一個句子
link |
21:58.720
分開來各自去
link |
21:59.720
做Binary的Classification
link |
22:01.720
決定說
link |
22:02.720
它是摘要還是不是摘要
link |
22:04.720
是不夠的
link |
22:05.720
所以如果有了
link |
22:06.720
Deep Learning的技術
link |
22:07.720
也許你會想要
link |
22:08.720
做的一個Solution是
link |
22:09.720
把這整篇文章讀進去
link |
22:12.720
然後接下來呢
link |
22:13.720
先讓你用一個
link |
22:15.720
Bidirectional的STM
link |
22:17.720
或今天你可能會選擇Transformer
link |
22:19.720
把整篇文章讀進去
link |
22:20.720
然後接下來呢
link |
22:21.720
讓機器去決定說
link |
22:23.720
這邊的每一個句子
link |
22:24.720
它應該被放到摘要裡面
link |
22:26.720
還是沒有被放到摘要裡面
link |
22:28.720
機器應該是
link |
22:29.720
讀了整篇文章以後
link |
22:30.720
才決定說
link |
22:31.720
一個句子要不要
link |
22:32.720
被放到摘要裡面
link |
22:34.720
那現在這種
link |
22:35.720
Extracted Summarization的任務
link |
22:36.720
可以看成是
link |
22:37.720
Input一個Sequence
link |
22:38.720
接下來Sequence裡面的
link |
22:39.720
每一個單位
link |
22:40.720
每一個Token
link |
22:41.720
都要給它一個Class
link |
22:42.720
不過我們這邊的Token
link |
22:43.720
指的不是一個詞彙
link |
22:45.720
而是指的是一個句子
link |
22:47.720
你可能會把這邊的
link |
22:48.720
每一個句子
link |
22:49.720
都用Sentence Embedding
link |
22:50.720
來表示它
link |
22:51.720
然後把Sentence
link |
22:52.720
把一堆Sentence Embedding
link |
22:53.720
讀進去以後
link |
22:54.720
決定說每一個Sentence Embedding
link |
22:55.720
它應該是
link |
22:56.720
放在摘要裡面
link |
22:57.720
還是不應該放在摘要裡面
link |
23:00.720
好 但近年來
link |
23:01.720
隨著Sequence to Sequence
link |
23:02.720
Model的風行
link |
23:03.720
人們已經開始知道
link |
23:05.720
怎麼做Attractive Summarization
link |
23:08.720
所以Attractive Summarization的意思就是說
link |
23:10.720
不要從文章裡面
link |
23:12.720
直接挑句子出來
link |
23:13.720
組成摘要
link |
23:14.720
機器要用自己的話
link |
23:16.720
來寫摘要
link |
23:17.720
怎麼樣讓機器
link |
23:18.720
讀一篇文章
link |
23:19.720
用自己的話來寫摘要呢
link |
23:21.720
那這其實就是一個
link |
23:22.720
Sequence to Sequence Learning的問題
link |
23:24.720
你其實就是
link |
23:25.720
讓機器讀一篇文章
link |
23:27.720
Sequence to Sequence Model
link |
23:28.720
讀一篇文章
link |
23:29.720
機器把文章丟進去以後
link |
23:31.720
再吐出一段簡短的摘要
link |
23:33.720
它是輸入一個Long的Sequence
link |
23:36.720
輸出一個Short的Sequence
link |
23:38.720
所以這也是
link |
23:39.720
輸入一個Sequence
link |
23:40.720
輸出一個Sequence的問題
link |
23:42.720
你直接Train一個
link |
23:43.720
Sequence to Sequence Model
link |
23:44.720
就有機會
link |
23:45.720
來解這樣子的問題
link |
23:47.720
那不過在摘要裡面
link |
23:50.720
輸出的這個短的句子
link |
23:52.720
往往跟輸入的長的句子
link |
23:54.720
它們會有很多共用的詞彙
link |
23:57.720
你可以想像說
link |
23:58.720
你把這個長的文章裡面的
link |
24:00.720
一些內容抽取出來
link |
24:01.720
再把這些內容稍作修改
link |
24:04.720
稍作精簡
link |
24:05.720
可能就是不錯的摘要了
link |
24:08.720
所以呢
link |
24:09.720
今天如果你是用一個
link |
24:11.720
Sequence to Sequence Model
link |
24:12.720
來解Attractive Summarization的問題
link |
24:14.720
那也許你需要
link |
24:16.720
讓你的Sequence to Sequence Model
link |
24:18.720
有Copy的能力
link |
24:19.720
那很多人會採取
link |
24:21.720
類似Pointer Network的架構
link |
24:23.720
讓這個Model有能力
link |
24:24.720
從原來的文章裡面
link |
24:25.720
直接拷貝一些詞彙出來
link |
24:28.720
直接把輸入的
link |
24:30.720
這個輸入的文章裡面的
link |
24:31.720
一些詞彙
link |
24:32.720
直接拷貝出來
link |
24:33.720
放到輸出的摘要裡面
link |
24:36.720
那這個呢
link |
24:37.720
是Attractive Summarization
link |
24:39.720
它是Sequence to Sequence Model
link |
24:40.720
也沒有超出我們前面講的
link |
24:42.720
種種的模型
link |
24:44.720
好 再來還有摘要
link |
24:46.720
摘要就是
link |
24:47.720
舉例來說
link |
24:48.720
輸入一段英文
link |
24:49.720
輸出一段中文
link |
24:50.720
這就是摘要
link |
24:51.720
那這顯然就是一個
link |
24:53.720
Sequence to Sequence Model
link |
24:55.720
這也沒有超出我們
link |
24:56.720
在這份投影片一開始
link |
24:58.720
所跟大家講的模型
link |
25:00.720
那一般在講
link |
25:01.720
這個Machine Translation的時候
link |
25:03.720
大家想的往往是
link |
25:04.720
輸入一段文字
link |
25:06.720
輸出另外一段文字
link |
25:08.720
但是今天我們甚至可以做到
link |
25:10.720
輸入一段語音
link |
25:12.720
然後直接輸出文字
link |
25:15.720
你輸入一段
link |
25:16.720
假設你要英文翻中文
link |
25:18.720
你可能直接給機器聽
link |
25:20.720
How are you的聲音訊號
link |
25:22.720
機器直接輸出
link |
25:23.720
就是你好嗎
link |
25:25.720
那為什麼要這麼做呢
link |
25:27.720
若是英文你可能
link |
25:28.720
不一定有必要這麼做
link |
25:29.720
但是很多語言
link |
25:30.720
其實是連文字都沒有
link |
25:32.720
若那些語言沒有文字
link |
25:34.720
你根本不可能
link |
25:35.720
做文字對文字的翻譯
link |
25:37.720
你只能做語音對文字的翻譯
link |
25:40.720
甚至假設你兩種翻譯的語言
link |
25:43.720
你今天輸入跟輸出的語言
link |
25:44.720
其實都沒有文字
link |
25:46.720
那甚至有機會可以做
link |
25:48.720
語音對語音的翻譯
link |
25:51.720
輸入How are you的聲音訊號
link |
25:53.720
機器直接吐出一段聲音訊號
link |
25:55.720
說你好嗎
link |
25:56.720
它也不吐出文字
link |
25:57.720
因為也許我們今天輸出的語言
link |
25:58.720
是沒有文字的
link |
25:59.720
它也不吐出文字
link |
26:00.720
它直接就吐一段聲音訊號出來
link |
26:03.720
像這樣子輸入語音
link |
26:04.720
輸出語音的模型
link |
26:06.720
也是在文獻上是存在的
link |
26:08.720
也是有人在進行嘗試的
link |
26:12.720
好那對Machine Translation來說
link |
26:14.720
一個很關鍵的問題
link |
26:15.720
就是Unsupervised Learning
link |
26:18.720
怎麼說呢
link |
26:19.720
因為世界上的語言有非常多
link |
26:22.720
我們在開學的時候就說
link |
26:23.720
世界上有七千種語言
link |
26:27.720
那今天如果要做翻譯的話
link |
26:29.720
有多少語言和語言間的Pair呢
link |
26:32.720
有七千的平方
link |
26:35.720
但是假設我們今天
link |
26:36.720
在做Machine Translation
link |
26:37.720
我們一定要兩種語言成對的資料
link |
26:39.720
都收集齊
link |
26:40.720
我們才能做Machine Translation的話
link |
26:42.720
我們要收集七千的平方的Corpus
link |
26:46.720
七千個平方種
link |
26:48.720
不同Language Pair的Training Data
link |
26:51.720
我們才有辦法進行訓練
link |
26:53.720
才有辦法把所有的語言
link |
26:55.720
都可以互相做翻譯
link |
26:57.720
那這顯然是不切實際的
link |
27:00.720
所以在Machine Translation的領域
link |
27:02.720
很早就有人開始思考說
link |
27:03.720
我們有沒有機會做到
link |
27:05.720
Unsupervised Machine Translation
link |
27:07.720
有沒有辦法讓機器說
link |
27:09.720
看了一大堆英文的句子
link |
27:11.720
再看了一大堆中文的句子
link |
27:13.720
但是沒有給它中文跟英文
link |
27:15.720
之間的對應關係
link |
27:16.720
機器就自動學會
link |
27:17.720
把英文轉成中文
link |
27:19.720
把中文轉成英文
link |
27:21.720
這件事情今天是有機會的
link |
27:24.720
那之後我們會講
link |
27:25.720
這樣子的Unsupervised Learning
link |
27:27.720
是怎麼做的
link |
27:29.720
那Machine Translation
link |
27:30.720
就是Input Sequence
link |
27:31.720
Output一個Sequence
link |
27:32.720
那不出我們之前所講的
link |
27:34.720
各種模型的範疇
link |
27:38.720
好了 還有Grammar Error Correction
link |
27:41.720
Grammar Error Correction是什麼呢
link |
27:43.720
讓機器幫你改錯字
link |
27:45.720
舉例來說你寫了一個
link |
27:46.720
很爛的英文的句子
link |
27:47.720
I are good
link |
27:48.720
這個顯然是有錯的
link |
27:50.720
你把這個I are good
link |
27:51.720
丟到一個Model裡面
link |
27:52.720
它就直接輸出I am good
link |
27:55.720
那像這樣子
link |
27:56.720
這個Error Correction的Model
link |
27:58.720
要怎麼訓練呢
link |
27:59.720
在還沒有Deep Learning的時候
link |
28:00.720
你可能會覺得
link |
28:01.720
嗯 有點困難
link |
28:03.720
怎麼做 不知道
link |
28:04.720
但今天你就
link |
28:06.720
Sequence to Sequence
link |
28:07.720
Learn下去就結束了
link |
28:09.720
其實這還是算滿主流的方法的
link |
28:11.720
Sequence to Sequence
link |
28:12.720
直接Input一個Sequence
link |
28:14.720
Output一個Sequence
link |
28:15.720
直接Input有錯的句子
link |
28:17.720
Output沒有錯的句子
link |
28:18.720
你就做到文法的檢查了
link |
28:21.720
那當然今天Input的Sequence
link |
28:22.720
跟Output的Sequence
link |
28:23.720
它們有非常非常多詞彙是重複的
link |
28:25.720
所以這邊你可能也會想要
link |
28:27.720
用一些Copy的Mechanism
link |
28:30.720
讓Model可以自動
link |
28:31.720
把一些沒有錯的詞彙
link |
28:32.720
就直接從輸入的地方
link |
28:33.720
拷貝到輸出的地方
link |
28:36.720
那其實這種
link |
28:37.720
Grammar Error Correction的問題
link |
28:38.720
還可以再更進一步簡化
link |
28:41.720
有人進一步簡化說
link |
28:42.720
這個問題可以看作是
link |
28:44.720
Input一個Sequence
link |
28:45.720
然後Sequence裡面的
link |
28:47.720
每一個Token
link |
28:48.720
都給它一個Class的問題
link |
28:51.720
給它什麼樣的Class呢
link |
28:53.720
舉例來說
link |
28:54.720
你今天要把
link |
28:55.720
Bold can have wrong race
link |
28:57.720
這個句子
link |
28:58.720
改成
link |
28:59.720
Bold could have wrong the race
link |
29:02.720
這個句子
link |
29:03.720
你其實只需要做兩件事
link |
29:04.720
一件事是
link |
29:05.720
把can改成could
link |
29:07.720
一件事是
link |
29:08.720
在wrong後面插一個詞彙
link |
29:09.720
叫做the
link |
29:10.720
其他東西都不要動
link |
29:11.720
其實你就可以把
link |
29:12.720
這一個句子
link |
29:13.720
改成這一個句子了
link |
29:16.720
那所以其實用一個
link |
29:17.720
Sequence to Sequence Model
link |
29:18.720
來解Grammar Error Correction
link |
29:20.720
其實也許是殺雞用了牛刀
link |
29:22.720
所以有人就想說
link |
29:23.720
這個問題能不能
link |
29:24.720
更簡化一點呢
link |
29:25.720
我們就是讓機器去預測說
link |
29:27.720
這邊每一個詞彙
link |
29:28.720
我們要怎麼做
link |
29:30.720
就每一個詞彙
link |
29:31.720
它有三個可能的operation
link |
29:33.720
你可以保留這個詞彙
link |
29:35.720
你可以把這個詞彙
link |
29:37.720
置換成另外一個詞彙
link |
29:38.720
你可以把這個詞彙
link |
29:39.720
後面再加一個詞彙
link |
29:41.720
R代表置換
link |
29:42.720
那只要置換哪一個詞彙
link |
29:43.720
你可以用另外一個classifier
link |
29:45.720
跑出來
link |
29:46.720
那A代表append
link |
29:47.720
代表說你要插入一個詞彙
link |
29:48.720
只要插入哪一個詞彙
link |
29:49.720
你可以用一個classifier
link |
29:50.720
跑出來
link |
29:51.720
所以今天你其實也可以
link |
29:53.720
把Grammar Error Correction
link |
29:54.720
看做是
link |
29:55.720
input一個token sequence
link |
29:56.720
input一個sequence
link |
29:57.720
output就是
link |
29:58.720
每一個token
link |
29:59.720
都要有一個類別
link |
30:00.720
這樣子的問題
link |
30:01.720
不過更general而言
link |
30:02.720
它是一個sequence-to-sequence
link |
30:03.720
learning的problem
link |
30:06.720
好那還有很多很多NLP的任務
link |
30:08.720
比如說sentiment classification
link |
30:10.720
sentiment classification
link |
30:11.720
就是讓機器看一段文字
link |
30:13.720
然後它告訴你說這段文字
link |
30:15.720
它覺得是正面的還是負面的
link |
30:18.720
那像這樣的問題
link |
30:19.720
顯然就是input一個sequence
link |
30:22.720
output一個class的問題
link |
30:24.720
那sentiment classification
link |
30:26.720
通常拿來用來
link |
30:27.720
比如說在網路上自動的
link |
30:30.720
讓這個賣家
link |
30:33.720
可以知道他的商品的評價
link |
30:35.720
或者是電影公司
link |
30:37.720
上映了一部電影以後
link |
30:38.720
他想要知道說
link |
30:39.720
在網路的評價上面
link |
30:40.720
在網路上的評價怎麼樣
link |
30:41.720
也許他可以用sentiment classification的技術
link |
30:43.720
來讀一下網友的留言
link |
30:45.720
然後就可以知道說
link |
30:46.720
這個句子
link |
30:47.720
這個電影的評價
link |
30:48.720
是正面的還是負面的
link |
30:50.720
舉例來說有人說
link |
30:51.720
幹青之拳還蠻有趣的
link |
30:53.720
是正面的
link |
30:54.720
說幹青之拳 槽點很多
link |
30:56.720
是負面的
link |
30:57.720
但是有時候句子會蠻複雜的
link |
30:59.720
它這個句子裡面
link |
31:00.720
可以有正面的詞彙
link |
31:01.720
也有負面的詞彙
link |
31:02.720
但是這些正面和負面的詞彙
link |
31:04.720
用不同的順序湊起來
link |
31:05.720
它的意思就不太一樣
link |
31:07.720
舉例來說
link |
31:08.720
如果我說幹青之拳
link |
31:10.720
雖然槽點很多
link |
31:11.720
但是它蠻有趣的
link |
31:13.720
我看這個裡面那個荊棘真
link |
31:15.720
他都是用念能力在戰鬥啊
link |
31:17.720
我看到戰鬥的時候
link |
31:18.720
他的身體會發光啊
link |
31:19.720
我用明看的時候
link |
31:20.720
都看到氣覆蓋他身體上啊
link |
31:22.720
他顯然是個職業獵人啊
link |
31:24.720
他用念能力在戰鬥啊
link |
31:26.720
所以我覺得還蠻有趣的
link |
31:28.720
那這句話就是正面的
link |
31:30.720
但是如果我們把
link |
31:31.720
這個詞彙的順序對調
link |
31:33.720
改成說雖然蠻有趣的
link |
31:35.720
但是槽點很多
link |
31:37.720
這荊棘真都是職業獵人啦
link |
31:39.720
還比什麼空手道啊
link |
31:40.720
怎麼不去天空鬥技場啊
link |
31:42.720
柯南他到底還有沒有人要推理啊
link |
31:44.720
那這個就是負面的句子
link |
31:47.720
那這個是Sentiment Classification
link |
31:50.720
輸脫我們剛才講過的模型
link |
31:52.720
有一個任務呢
link |
31:54.720
叫做立場偵測
link |
31:56.720
立場偵測要做的事情是什麼呢
link |
31:58.720
立場偵測通常是這樣
link |
32:00.720
給機器看一則
link |
32:02.720
Po文啊
link |
32:03.720
Facebook或Twitter上的Po文
link |
32:05.720
比如說一個Po文說
link |
32:06.720
這個李洪一世的型男
link |
32:08.720
然後呢這個Po文下面呢
link |
32:10.720
就會有人回覆啦
link |
32:12.720
有人回覆說
link |
32:13.720
他只是個死臭酸宅
link |
32:15.720
接下來機器要做的事情
link |
32:17.720
是偵測說這個回覆
link |
32:19.720
對這則Po文的立場是什麼
link |
32:22.720
比如說在這個例子裡面
link |
32:23.720
這個回覆他的立場就是
link |
32:25.720
Deny就反對
link |
32:27.720
那通常這個回覆的立場啊
link |
32:29.720
可以分成四類啦
link |
32:30.720
就是Support、Deny、Query跟Comment
link |
32:34.720
那有人把這四種
link |
32:36.720
這個Reply的類型啊
link |
32:39.720
縮寫成SDQC
link |
32:42.720
那像這種Stance Detection的問題
link |
32:44.720
當然沒有非常的容易
link |
32:45.720
你要非常深的這個
link |
32:47.720
理解的能力才能夠真的解這種問題
link |
32:49.720
但是從Model的角度來看
link |
32:51.720
他就是輸入兩個Sequence
link |
32:54.720
輸出是你是SDQC的四個類別裡面
link |
32:58.720
四個Class裡面的哪一個
link |
33:00.720
就這樣 就結束了
link |
33:02.720
那像這樣Stance Detection的Model
link |
33:04.720
常常被用在Variety的Prediction裡面
link |
33:07.720
什麼是Variety的Prediction呢
link |
33:12.720
Variety的Prediction應該可以
link |
33:14.720
翻譯成事實偵測
link |
33:16.720
那通常他要做的事情
link |
33:18.720
就是讓機器看一篇文章
link |
33:20.720
比如說看一則Twitter
link |
33:21.720
然後決定說
link |
33:22.720
這個Twitter的內容
link |
33:24.720
是真的還是假的
link |
33:26.720
比如說昨天晚上謠傳說
link |
33:28.720
這個金正恩病危
link |
33:30.720
這個事情到底是真的還是假的呢
link |
33:32.720
我到今天早上其實也還不知道
link |
33:34.720
那這時候我們就需要這種
link |
33:36.720
Variety Prediction的Model
link |
33:38.720
告訴我們說
link |
33:39.720
這則新聞是真的還是假的
link |
33:42.720
那像這種Variety Prediction的
link |
33:45.720
這種任務有辦法用Machine Learning做嗎
link |
33:47.720
是有辦法用Machine Learning做的
link |
33:49.720
相關的文獻其實還不少
link |
33:52.720
那可以想像說
link |
33:53.720
如果用Machine Learning做
link |
33:54.720
怎麼做呢
link |
33:55.720
你就是有一個Model
link |
33:56.720
那C則Twitter上的文章進去
link |
33:59.720
然後輸出
link |
34:00.720
就是Binary的Classification
link |
34:02.720
True或False
link |
34:03.720
所以從Model的角度來看
link |
34:04.720
沒有很複雜
link |
34:05.720
就是是一段文字
link |
34:06.720
or就是這段文字
link |
34:08.720
是真的還是假的
link |
34:10.720
當然如果只是從文章本身
link |
34:12.720
往往連人都沒有辦法判斷
link |
34:14.720
它是真的還是假的
link |
34:15.720
假新聞就是很像真的
link |
34:17.720
人都看不出來是真的還是假的
link |
34:19.720
所以它才能夠變成假新聞嗎
link |
34:22.720
才能騙過人
link |
34:23.720
所以有的人就會說
link |
34:26.720
那也許應該要把這個Poll文的
link |
34:28.720
這些回應
link |
34:30.720
把這些回應
link |
34:32.720
也當作是模型輸入的一部分
link |
34:35.720
因為過去的分析有發現說
link |
34:37.720
如果一則Poll文的回應
link |
34:39.720
第一時間都是否認
link |
34:42.720
那往往這個Poll文
link |
34:44.720
它就是一個假的消息
link |
34:46.720
所以你可以把這個Reply
link |
34:48.720
跟它的Stance Detection
link |
34:49.720
你可以先把這些回文
link |
34:51.720
這些Response
link |
34:53.720
先做立場偵測
link |
34:55.720
得到他們的立場
link |
34:56.720
再把立場偵測的結果
link |
34:57.720
也輸進這個模型
link |
34:58.720
可以幫助模型判斷說
link |
34:59.720
這個Poll文是不是真的
link |
35:01.720
你還可以給模型看
link |
35:03.720
Wikipedia裡面的資料
link |
35:05.720
你把跟這個Poll文的內容
link |
35:06.720
有關的Wikipedia的文章
link |
35:08.720
拿出來給這個Model來讀
link |
35:10.720
然後看看這個Model
link |
35:12.720
能不能根據Wikipedia
link |
35:13.720
提供的資訊
link |
35:14.720
告訴我們說
link |
35:15.720
這個Poll文是真的還是假的
link |
35:17.720
那所以這整個問題
link |
35:18.720
整體來說
link |
35:19.720
它就是一個
link |
35:20.720
Input好幾個Sequence
link |
35:22.720
Output一個Class的問題
link |
35:24.720
就模型來說
link |
35:25.720
沒有超出我們
link |
35:27.720
今天在這門課一開始
link |
35:29.720
跟大家講的種種的模型
link |
35:32.720
當然用這樣的模型
link |
35:34.720
能不能夠真的解Variety
link |
35:36.720
Prediction的Problem
link |
35:38.720
它還有非常長一段距離
link |
35:40.720
但是確實很多人
link |
35:41.720
在朝這個方向努力
link |
35:45.720
還有一個任務
link |
35:46.720
是Natural Language的Inference
link |
35:49.720
縮寫是NLI
link |
35:51.720
那Natural Language Inference
link |
35:53.720
在做什麼呢
link |
35:54.720
在Natural Language Inference
link |
35:55.720
這樣的任務裡面
link |
35:56.720
首先你會先給機器一個Premise
link |
36:00.720
Premise就是一個前提
link |
36:02.720
舉例來說
link |
36:03.720
這邊的Premise是說
link |
36:05.720
有一個人他騎著一匹馬
link |
36:07.720
然後跳過了一架飛機
link |
36:10.720
接下來呢
link |
36:11.720
你會有一個Hypothesis
link |
36:13.720
這個Hypothesis是說
link |
36:15.720
今天從這一個Premise
link |
36:18.720
有沒有辦法推得這個Hypothesis
link |
36:23.720
這個就是NLI的任務
link |
36:24.720
NLI的任務要做的事情就是
link |
36:26.720
從這個前提
link |
36:27.720
有沒有辦法推得這個假設
link |
36:31.720
那怎麼讓機器做到NLI呢
link |
36:33.720
那NLI聽起來好像是一個
link |
36:34.720
很難的任務
link |
36:35.720
好像要知道解很多邏輯的問題
link |
36:37.720
才能夠做NLI
link |
36:39.720
不過今天往往就是
link |
36:41.720
有個模型
link |
36:42.720
這個模型是兩個句子
link |
36:44.720
然後它的輸出呢
link |
36:45.720
就是三個類別
link |
36:46.720
輸入兩個句子
link |
36:48.720
決定三個類別
link |
36:49.720
這三個類別分別是
link |
36:51.720
這個矛盾
link |
36:52.720
蘊涵
link |
36:53.720
或者是中立
link |
36:55.720
那像這一個例子
link |
36:57.720
就是矛盾
link |
36:58.720
因為從這個前提
link |
36:59.720
不可能推到這個結論
link |
37:01.720
推到這個假設
link |
37:02.720
這個假設是
link |
37:03.720
這個人正在一個Diner
link |
37:05.720
Diner就是
link |
37:07.720
可以翻成小吃店吧
link |
37:09.720
這個人呢
link |
37:10.720
正在一個餐廳裡面吃飯
link |
37:12.720
這個人因為這個前提已經說
link |
37:14.720
他是在馬上了
link |
37:15.720
然後又跳過一架飛機
link |
37:16.720
所以他不太可能
link |
37:17.720
在餐廳裡面吃飯
link |
37:19.720
所以輸入這個Premise
link |
37:20.720
跟這個Hypothesis
link |
37:22.720
那Model輸出呢
link |
37:23.720
就應該是矛盾
link |
37:25.720
那如果你今天的假設是
link |
37:27.720
這個人呢
link |
37:28.720
在戶外
link |
37:29.720
在一匹馬上
link |
37:30.720
從這個敘述
link |
37:32.720
很有機會可以
link |
37:33.720
推得這一個結論
link |
37:35.720
因為這個人確實在馬上
link |
37:36.720
而且他跳過一架飛機
link |
37:37.720
所以他確實是在馬上
link |
37:38.720
他也確實很有可能
link |
37:40.720
是在戶外
link |
37:41.720
那輸入這樣子的前提
link |
37:43.720
跟這樣子的假設
link |
37:44.720
那Model應該就要輸出
link |
37:46.720
Intelment
link |
37:47.720
這個叫做蘊涵
link |
37:48.720
代表說從這個前提
link |
37:49.720
可以推得這個假設
link |
37:51.720
那或者是今天的假設是
link |
37:53.720
這個人呢
link |
37:54.720
正在訓練他的馬
link |
37:55.720
要參加一個比賽
link |
37:56.720
那這個人到底
link |
37:57.720
要跳過飛機的目的是什麼呢
link |
37:59.720
他其實也許
link |
38:00.720
不一定在訓練他的馬
link |
38:01.720
他就爽
link |
38:02.720
他就想跳過這個飛機
link |
38:03.720
你不要管他在幹嘛
link |
38:05.720
他不見得是想要參加比賽
link |
38:07.720
那所以從這個前提
link |
38:08.720
不見得可以推到這個假設
link |
38:10.720
那像這樣子的狀況呢
link |
38:12.720
就叫做Neutral
link |
38:13.720
就代表中性
link |
38:15.720
那雖然NLI
link |
38:16.720
顯然是一個
link |
38:17.720
非常困難的問題
link |
38:18.720
但是
link |
38:19.720
如果就模型的角度來看
link |
38:21.720
你也就是Input
link |
38:22.720
兩個Sequence
link |
38:23.720
Output
link |
38:24.720
一個Class
link |
38:25.720
就結束了
link |
38:26.720
你就是要決定說
link |
38:27.720
這兩個Sequence
link |
38:28.720
這兩個Sentence
link |
38:29.720
屬於這三個Class的哪一個
link |
38:31.720
就結束了
link |
38:34.720
好那搜尋引擎
link |
38:36.720
搜尋引擎這個
link |
38:37.720
大家應該都非常的熟悉啦
link |
38:38.720
就是你輸入一個
link |
38:40.720
你的問題
link |
38:41.720
然後或者是
link |
38:42.720
輸入一些關鍵詞彙
link |
38:43.720
那今天Google呢
link |
38:44.720
就會吐一串文章給你
link |
38:46.720
其實BERT這個Model啊
link |
38:48.720
據說已經被用在
link |
38:50.720
Google的搜尋系統裡面了
link |
38:52.720
Google特別寫一個
link |
38:53.720
Blog的文章呢
link |
38:54.720
來告訴大家這一件事情
link |
38:57.720
那像這種搜尋呢
link |
38:58.720
如果你要用
link |
38:59.720
Machine Learning的技術來解
link |
39:01.720
大概會像是什麼樣呢
link |
39:03.720
你就是需要一個模型
link |
39:05.720
這個模型呢
link |
39:06.720
把你在這個
link |
39:08.720
搜尋的這個欄位
link |
39:10.720
所輸入的句子
link |
39:11.720
或者是關鍵字讀進去
link |
39:12.720
然後把一篇文章讀進去
link |
39:14.720
然後輸出就是
link |
39:15.720
這篇文章跟這個問題
link |
39:17.720
有沒有關係
link |
39:18.720
link |
39:19.720
那它就排序排在前面一點
link |
39:21.720
沒有
link |
39:22.720
排序就排在後面一點
link |
39:23.720
那搜尋引擎
link |
39:24.720
是一個非常複雜的問題啦
link |
39:26.720
就模型而言
link |
39:27.720
我們可以說
link |
39:28.720
它是input兩個sequence
link |
39:29.720
output一個class
link |
39:30.720
不過搜尋引擎
link |
39:31.720
當然還有很多很多
link |
39:32.720
其他的問題
link |
39:33.720
就不是我們這一門課呢
link |
39:35.720
可以討論的
link |
39:37.720
那Google有說
link |
39:38.720
他們有把Bert呢
link |
39:39.720
用在搜尋引擎上啦
link |
39:41.720
那在還沒有用Bert的時候
link |
39:43.720
你輸入這個問題
link |
39:45.720
這個問題是
link |
39:46.720
due
link |
39:47.720
asphyetition
link |
39:48.720
asphyetition是什麼呢
link |
39:50.720
我本來不知道
link |
39:51.720
那我查了一下
link |
39:52.720
我連它中文翻譯是什麼
link |
39:53.720
都搞不清楚
link |
39:54.720
有點像是
link |
39:55.720
幫你護膚的人吧
link |
39:56.720
就是幫你做美容的人
link |
39:58.720
就這個職業的人
link |
40:00.720
他是不是在工作的時候
link |
40:02.720
需要常常站著呢
link |
40:04.720
那在沒有用Bert之前啦
link |
40:06.720
Google return的第一篇文章
link |
40:08.720
是這一篇文章
link |
40:09.720
那這篇文章裡面
link |
40:10.720
有提到一個詞彙叫做
link |
40:12.720
stand alone
link |
40:13.720
提到獨立這個詞彙
link |
40:15.720
那stand alone的stand
link |
40:17.720
正好跟這個stand是一樣的
link |
40:19.720
雖然意思是不一樣的
link |
40:20.720
但是可能原來的系統
link |
40:21.720
覺得說有同樣的詞彙
link |
40:22.720
就把它搜尋出來
link |
40:24.720
但是Bert它厲害的地方就是
link |
40:26.720
同樣的詞彙
link |
40:27.720
Bert知道它的意思
link |
40:28.720
是不一樣的
link |
40:30.720
所以有了Bert以後呢
link |
40:31.720
這個搜尋的結果
link |
40:33.720
就變得更好了
link |
40:34.720
機器知道說這個stand呢
link |
40:36.720
指的是站立
link |
40:37.720
而跟stand alone
link |
40:38.720
沒有什麼太多的關係
link |
40:40.720
那這個呢
link |
40:41.720
是搜尋引擎
link |
40:45.720
好了
link |
40:46.720
用這些技術呢
link |
40:48.720
也可以做question answering
link |
40:50.720
也可以做QA
link |
40:51.720
這邊放個魔鏡啦
link |
40:52.720
因為魔鏡就是一個
link |
40:54.720
最早的QA系統
link |
40:55.720
對不對
link |
40:56.720
你可以問它一個問題
link |
40:57.720
誰是世界上最漂亮的女人
link |
40:58.720
它就會給你一個答案
link |
41:01.720
那在過去啊
link |
41:02.720
在這種end-to-end的deep model
link |
41:04.720
還不風行的時候
link |
41:05.720
這種QA的系統呢
link |
41:07.720
通常長得是這個樣子的
link |
41:08.720
你就畫一個圖
link |
41:10.720
這個圖裡面呢
link |
41:11.720
有很多很多的
link |
41:12.720
各式各樣的module
link |
41:14.720
那每一個module呢
link |
41:15.720
其實也通常是用
link |
41:17.720
machine learning的技術做的
link |
41:19.720
可能是用一些比較簡單的
link |
41:21.720
SVM
link |
41:22.720
或者是比較簡單的
link |
41:23.720
network的架構來做的
link |
41:25.720
那通常會有哪一些的module呢
link |
41:27.720
一個問題進來
link |
41:28.720
你會先對問題呢
link |
41:30.720
做一些processing
link |
41:32.720
先對問題做一些處理
link |
41:33.720
然後根據處理完的問題
link |
41:35.720
比如說你的處理可能是
link |
41:36.720
把問題裡面關鍵字找出來
link |
41:38.720
然後根據你處理完的結果
link |
41:40.720
你會去找出一篇文章
link |
41:42.720
你有個資料庫
link |
41:43.720
裡面有很多很多的文章
link |
41:44.720
然後把這些文章呢
link |
41:45.720
拿出來
link |
41:47.720
然後根據這些
link |
41:48.720
拿出來的文章裡面呢
link |
41:49.720
你要挑出說
link |
41:50.720
這篇文章裡面
link |
41:51.720
可能哪一個詞彙是最重要的
link |
41:53.720
那過去在沒有
link |
41:54.720
很好的技術之前
link |
41:55.720
有時候甚至會用
link |
41:56.720
非常簡單的方法
link |
41:57.720
就看這些文章裡面
link |
42:00.720
哪一個詞彙出現最多次
link |
42:02.720
或者是哪一個詞彙
link |
42:03.720
出現在問題的關鍵字裡面
link |
42:05.720
旁邊跟問題的關鍵字
link |
42:07.720
一起出現的這個頻率最高
link |
42:09.720
就把那個詞彙抽出來
link |
42:10.720
當作是答案
link |
42:12.720
那抽出來
link |
42:13.720
這樣抽出來的答案
link |
42:13.720
不見得是對的
link |
42:14.720
所以會做一個
link |
42:15.720
answer type的detection
link |
42:16.720
我們要決定說
link |
42:17.720
問這個問題
link |
42:18.720
那回答的要是什麼樣的答案
link |
42:20.720
比如說它叫數字嗎
link |
42:22.720
是人名嗎
link |
42:23.720
透過這個資訊
link |
42:24.720
我們可以從
link |
42:25.720
answer的candidate裡面呢
link |
42:27.720
挑出一個更好的answer
link |
42:30.720
那這是過去
link |
42:31.720
在end-to-end model
link |
42:32.720
還不風行的時候
link |
42:34.720
這個常常使用的solution
link |
42:37.720
那其實就算是Watson
link |
42:39.720
我不知道大家知不知道Watson
link |
42:41.720
Watson就是
link |
42:42.720
IBM開發的一個
link |
42:44.720
這個QA的系統
link |
42:46.720
然後他去參加了這個
link |
42:47.720
美國版的百萬大挑戰
link |
42:49.720
然後就痛電了人類
link |
42:51.720
在AlphaGo之前
link |
42:52.720
他就痛電了人類
link |
42:54.720
痛電
link |
42:55.720
那個時候就流行痛電人類了
link |
42:58.720
那就算是Watson
link |
43:00.720
其實他就最大的架構看起來
link |
43:03.720
跟我們上面這個常見的
link |
43:05.720
QA model的架構
link |
43:06.720
其實也沒有那麼大的差別
link |
43:09.720
一個問題進來
link |
43:10.720
他會做question的pre-processing
link |
43:13.720
那但是像Watson
link |
43:14.720
他做question的pre-processing
link |
43:15.720
就做得非常非常的複雜
link |
43:18.720
比如說一般
link |
43:19.720
如果你自己做問題的時候
link |
43:21.720
比如說一般自己
link |
43:22.720
問題進來會先做一個
link |
43:23.720
問題的分類
link |
43:24.720
決定說這個問題
link |
43:25.720
你的答案要是
link |
43:26.720
人事實地物的哪一種
link |
43:28.720
通常你可能分個
link |
43:29.720
六七個類別
link |
43:30.720
分個十幾個類別
link |
43:31.720
你可能就覺得說
link |
43:32.720
欸不錯了
link |
43:33.720
我記得Watson
link |
43:34.720
一個問題進來的時候
link |
43:35.720
他是會分成
link |
43:36.720
2500個類別的其中一個
link |
43:39.720
所以可見
link |
43:40.720
他做的這個複雜的程度
link |
43:42.720
是遠比一般的QA model
link |
43:44.720
要複雜很多
link |
43:45.720
這邊看到說
link |
43:46.720
他這個question的pre-processing裡面
link |
43:48.720
有非常非常多的module
link |
43:51.720
做完question的pre-processing以後
link |
43:53.720
一樣可以根據pre-processing的結果
link |
43:55.720
從資料庫的文章裡面
link |
43:57.720
去得到一些答案
link |
43:59.720
那Watson除了這一堆文章以外
link |
44:01.720
他還有一個
link |
44:02.720
有系統的
link |
44:04.720
有結構的資料庫
link |
44:06.720
他也可以從有結構的資料庫裡面
link |
44:07.720
得到一些答案
link |
44:08.720
所以他得到了很多很多的
link |
44:10.720
candidate的answer
link |
44:12.720
然後再從candidate的answer裡面
link |
44:14.720
用一些其他的方法
link |
44:16.720
去對這一些answer做排序
link |
44:18.720
那可能會對這些answer
link |
44:20.720
估一個confidence的分數
link |
44:23.720
看說根據我們所得到的
link |
44:25.720
種種種種的evidence
link |
44:27.720
種種種種的證據
link |
44:28.720
種種種種從資料庫
link |
44:30.720
不管他是沒結構的
link |
44:31.720
還是有結構的資料庫裡面
link |
44:33.720
得到的資料
link |
44:34.720
這一個answer
link |
44:35.720
他的是正確的confidence有多大
link |
44:37.720
然後做一些排序
link |
44:39.720
可能用machine learning的方法
link |
44:40.720
做一些排序
link |
44:41.720
每一個answer呢
link |
44:42.720
都會抽上百個不同的feature
link |
44:44.720
然後認一個
link |
44:45.720
你看這邊寫
link |
44:46.720
logistic regression
link |
44:48.720
他這個是我們在
link |
44:49.720
machine learning的課的開頭
link |
44:51.720
就有教過的東西
link |
44:52.720
認個logistic regression
link |
44:53.720
去決定說要怎麼排這些answer
link |
44:55.720
然後最後呢
link |
44:56.720
得到最終的答案
link |
44:58.720
所以Watson
link |
44:59.720
雖然非常強
link |
45:00.720
痛電人類
link |
45:01.720
但是其實他並不是
link |
45:03.720
今天我們所看到那種
link |
45:05.720
MQM的model
link |
45:06.720
他仍然是有很多模組組成的
link |
45:08.720
只是他內部有
link |
45:09.720
非常非常多的模組
link |
45:10.720
拼湊起來
link |
45:11.720
就發揮了不可思議的能力
link |
45:14.720
那但是今天
link |
45:15.720
如果你想要做question answering
link |
45:17.720
你的solution
link |
45:18.720
往往是長這個樣子
link |
45:20.720
你有一個QA的model
link |
45:22.720
這個QA的model
link |
45:23.720
吃一個question
link |
45:25.720
吃一個問題
link |
45:26.720
跟吃你的資料的來源
link |
45:28.720
他可能是有結構的資料庫
link |
45:30.720
他可能是
link |
45:31.720
沒有結構的一堆文章
link |
45:33.720
然後就吐出答案
link |
45:35.720
所以他是input兩個sequence
link |
45:37.720
output一個sequence的問題
link |
45:39.720
也不拖我們今天
link |
45:41.720
在這門課的開頭
link |
45:42.720
跟大家講的模型的種種分類
link |
45:47.720
好那這個knowledge的source
link |
45:48.720
哪裡來呢
link |
45:49.720
假設他是
link |
45:50.720
他假設他是unstructured document
link |
45:52.720
那這些文章哪裡來呢
link |
45:54.720
他可以是從search engine來的
link |
45:57.720
你可能就把這個問題
link |
45:59.720
丟到search engine上
link |
46:00.720
看search engine
link |
46:01.720
回傳什麼樣的資料
link |
46:03.720
把這些資料收集起來
link |
46:04.720
就當作你的QA model的node source
link |
46:07.720
那因為今天
link |
46:08.720
我們往往希望QA model
link |
46:10.720
不只是看一個有結構的資料庫
link |
46:12.720
而是有能力去閱讀
link |
46:14.720
沒有結構的文章
link |
46:15.720
比如說一些網頁
link |
46:17.720
所以像這樣子的任務
link |
46:18.720
今天我們又把它叫做
link |
46:20.720
reading comprehension
link |
46:22.720
把它叫做閱讀理解測驗
link |
46:25.720
接下來要閱讀文章
link |
46:26.720
然後給他問題
link |
46:28.720
接下來他可以得到答案
link |
46:30.720
那你可能會問說
link |
46:31.720
也許今天搜尋引擎不是完美的
link |
46:34.720
搜尋引擎回傳的文章網頁裡面
link |
46:36.720
可能很多網頁都是無關的
link |
46:38.720
跟這個問題無關的
link |
46:39.720
那怎麼辦
link |
46:40.720
你的QA model要自己決定說
link |
46:42.720
哪些文章是需要的
link |
46:45.720
哪些文章是不需要的
link |
46:47.720
反正這個QA model
link |
46:48.720
往往就是吃十幾篇文章進來
link |
46:51.720
再吃一個問題進來
link |
46:52.720
那不重要的文章
link |
46:54.720
沒有跟問題沒有關係的文章
link |
46:56.720
反正QA model自己會學到
link |
46:57.720
要無視它
link |
46:58.720
然後最後就產生一個answer
link |
47:00.720
所以它是input好幾個sequence
link |
47:02.720
output一個sequence的問題
link |
47:05.720
不過要直接讓QA model
link |
47:07.720
吐出一個答案
link |
47:08.720
今天還有非常長的一段路要走
link |
47:11.720
今天在reading comprehension
link |
47:13.720
主流的研究
link |
47:14.720
其實並沒有真的讓機器做到
link |
47:17.720
吐出一個完整的答案
link |
47:20.720
通常我們比較常做的
link |
47:22.720
是extractive的QA
link |
47:24.720
也就是說答案
link |
47:26.720
其實就已經出現在文章裡面了
link |
47:29.720
舉例來說
link |
47:30.720
這邊有一篇文章
link |
47:32.720
這邊有一個問題
link |
47:33.720
這個問題的正確答案是gravity
link |
47:35.720
我們會假設說gravity這個詞彙
link |
47:38.720
在文章裡面是有提到的
link |
47:40.720
我們假設within the cloud這個答案
link |
47:42.720
是在文章裡面有提到的
link |
47:45.720
當然它仍然可以被看作是
link |
47:47.720
input好幾個sequence
link |
47:49.720
output一個sequence的問題
link |
47:51.720
不過因為這一篇
link |
47:52.720
這個答案已經出現在文章裡面了
link |
47:54.720
所以你就可以簡化你的模型
link |
47:56.720
怎麼樣的簡化呢
link |
47:57.720
你甚至可以簡化到這個地步
link |
48:00.720
那我們剛才在講summary的時候
link |
48:02.720
在講這個gravity correction的時候
link |
48:05.720
我們都說我們會需要copy
link |
48:06.720
那extractive的QA
link |
48:08.720
它是強制copy
link |
48:10.720
copy非常多
link |
48:12.720
它怎麼copy非常多呢
link |
48:13.720
這種QA的model
link |
48:14.720
你就給它問題
link |
48:15.720
給它文章
link |
48:16.720
它直接輸出兩個數字
link |
48:18.720
什麼意思呢
link |
48:19.720
怎麼叫直接輸出兩個數字呢
link |
48:21.720
如果今天正確答案gravity
link |
48:23.720
在第17個word
link |
48:25.720
你希望你的模型就吐出
link |
48:27.720
17跟17這兩個數字
link |
48:29.720
就告訴我們說正確答案
link |
48:31.720
就是從第17個word
link |
48:33.720
到第17個word就是gravity
link |
48:35.720
或者是假設正確答案
link |
48:36.720
是within the cloud
link |
48:37.720
它是第77到第79個詞彙
link |
48:40.720
你就希望你的model
link |
48:41.720
吃了這個問題
link |
48:42.720
吃了這個文章
link |
48:43.720
直接吐出兩個數字
link |
48:44.720
分別是77跟79
link |
48:46.720
然後就告訴我們說
link |
48:48.720
今天正確答案
link |
48:49.720
就是落在第77到第79個word
link |
48:52.720
但無論如何
link |
48:53.720
它也不透過我們所講過的模型
link |
48:55.720
input一堆sequence
link |
48:56.720
output一個sequence
link |
48:57.720
只是這邊需要用到一個
link |
48:58.720
非常強的copy的mechanism
link |
49:02.720
那還有dialogue還有對話
link |
49:05.720
那對話今天又分成兩種
link |
49:08.720
一種叫做chatting
link |
49:09.720
一種叫做text-oriented
link |
49:12.720
那chatting是什麼呢
link |
49:13.720
chatting就是尬聊
link |
49:17.720
網路上其實有
link |
49:18.720
你可以找到蠻多這種
link |
49:19.720
可以跟你尬聊的模型
link |
49:21.720
比如說clever bar
link |
49:23.720
就是一個蠻好的例子
link |
49:24.720
那我昨天晚上呢
link |
49:25.720
特地跟clever bar聊了一下
link |
49:27.720
他聊起來大概感覺是這個樣子
link |
49:29.720
我就問他說
link |
49:30.720
你叫什麼名字
link |
49:32.720
他就給我一串
link |
49:33.720
我看不懂的詞彙
link |
49:34.720
所以我就很困惑
link |
49:35.720
所以我再問一次
link |
49:36.720
你叫什麼名字
link |
49:37.720
他就說
link |
49:38.720
他叫做Lee
link |
49:39.720
然後就問他說
link |
49:40.720
你是不是Lee
link |
49:41.720
他說不是
link |
49:42.720
我是Mara
link |
49:43.720
然後就問他說
link |
49:44.720
你是不是Mara
link |
49:45.720
他說不是
link |
49:46.720
我不知道他在說什麼
link |
49:47.720
那Mara是什麼
link |
49:48.720
我本來以為Mara
link |
49:49.720
就是個普通的名字
link |
49:50.720
後來我查了一下
link |
49:51.720
喔Mara
link |
49:52.720
還不是普通人呢
link |
49:53.720
Mara是誰呢
link |
49:54.720
Mara就是波尋
link |
49:56.720
就是第六天魔王
link |
49:57.720
就是織田信長
link |
50:00.720
然後我就問他說
link |
50:02.720
那你到底是誰
link |
50:03.720
他是織田信長
link |
50:05.720
他是第六天魔王
link |
50:06.720
他到底是誰
link |
50:07.720
他就說
link |
50:08.720
I just say your name
link |
50:09.720
You don't need to know my name
link |
50:11.720
他說
link |
50:12.720
那他好像知道我的名字
link |
50:13.720
我不需要知道他的名字
link |
50:15.720
那我就說你知道我的名字嗎
link |
50:17.720
link |
50:18.720
他說我不知道啊
link |
50:19.720
這就是為什麼
link |
50:20.720
為什麼我在問你
link |
50:22.720
那我就問他說
link |
50:23.720
你可以告訴我的名字嗎
link |
50:24.720
他說他已經告訴我了
link |
50:25.720
我就說那你是Mara嗎
link |
50:27.720
他就不知道為什麼
link |
50:28.720
突然跟我道歉了
link |
50:29.720
不知道在做什麼
link |
50:30.720
那我就問
link |
50:31.720
問他說你為什麼要道歉
link |
50:33.720
他說因為他不記得我的名字
link |
50:35.720
那我說那
link |
50:37.720
那你不記得我的名字
link |
50:38.720
但你記得自己的名字嗎
link |
50:40.720
他說Yes I do
link |
50:42.720
那我說那你的名字是什麼呢
link |
50:43.720
他說再一次
link |
50:44.720
我不能告訴你啊
link |
50:46.720
不過我覺得他還蠻聰明的
link |
50:47.720
因為他知道我之前問過他的名字了
link |
50:49.720
所以我覺得這點倒是設計的蠻聰明的
link |
50:51.720
他說不能告訴我他的名字
link |
50:53.720
然後
link |
50:54.720
我就說你剛才說你是Mara
link |
50:56.720
他就突然不知道為什麼
link |
50:57.720
換了話題
link |
50:58.720
他說我是個小男孩
link |
51:00.720
我說你是個小男孩嗎
link |
51:01.720
他說是
link |
51:02.720
我說那你是個女孩嗎
link |
51:03.720
他說不是
link |
51:04.720
那你是嗎
link |
51:05.720
我覺得這邊蠻聰明的
link |
51:06.720
他知道他是男孩
link |
51:07.720
然後不是女孩
link |
51:08.720
好那我說
link |
51:10.720
那你幾歲
link |
51:11.720
你是小男孩
link |
51:12.720
那你幾歲呢
link |
51:13.720
他突然說他兩千歲了
link |
51:14.720
不知道怎麼回事
link |
51:15.720
他兩千歲了
link |
51:16.720
埃及有個神秘女王也是兩千歲了
link |
51:18.720
我說埃及怎麼這麼老
link |
51:19.720
他說不
link |
51:20.720
他很年輕
link |
51:21.720
我就問他說
link |
51:22.720
那你到底幾歲了呢
link |
51:23.720
他說為什麼你要一直問這個問題
link |
51:25.720
他很聰明的
link |
51:26.720
他知道我問過這個問題
link |
51:27.720
這個設計的蠻精巧
link |
51:29.720
真的還蠻厲害
link |
51:30.720
他說
link |
51:31.720
因為
link |
51:32.720
我說因為我想知道啊
link |
51:33.720
他說
link |
51:34.720
如果我不想告訴你呢
link |
51:35.720
我說那就不要告訴我啊
link |
51:37.720
然後就突然說
link |
51:38.720
我的名字呢
link |
51:39.720
是Blue Monday
link |
51:40.720
我的名字是
link |
51:41.720
憂鬱星期一
link |
51:42.720
我又不知道他在做什麼這樣子
link |
51:44.720
這個CleverBar
link |
51:45.720
聊起來的感覺就是這樣
link |
51:46.720
不過這個設計的算是蠻聰明的
link |
51:48.720
我覺得他都知道說
link |
51:49.720
你之前講過的話
link |
51:50.720
他有在記錄說
link |
51:51.720
你之前講過的話
link |
51:52.720
是什麼
link |
51:54.720
好那CleverBar
link |
51:55.720
其實應該不是Sequence to Sequence
link |
51:57.720
就我所知
link |
51:58.720
他應該是IR Base的這個Chatbot
link |
52:00.720
那不過今天在做Chatbot的
link |
52:02.720
在做這種chatting的時候
link |
52:03.720
很多時候你會採用
link |
52:04.720
Sequence to Sequence的Solution
link |
52:06.720
也就是說
link |
52:07.720
你訓練一個模型
link |
52:08.720
有人跟這個模型說一句話
link |
52:10.720
然後你就有一個
link |
52:11.720
Sequence to Sequence的Model
link |
52:13.720
把這個句子讀進去
link |
52:14.720
然後得到一個回應的句子
link |
52:16.720
這個回應的句子
link |
52:17.720
就是機器的回應
link |
52:18.720
但是如果你沒有看
link |
52:20.720
之前已經講過的句子
link |
52:23.720
你就是一個Sequence to Sequence的Model
link |
52:24.720
是一個句子
link |
52:25.720
output一個句子
link |
52:26.720
這樣不行
link |
52:27.720
為什麼
link |
52:28.720
因為搞不好這個機器
link |
52:29.720
在說Hi之前
link |
52:31.720
這個人之所以說Hello
link |
52:32.720
是因為機器已經先說了Hi
link |
52:34.720
人在說Hello
link |
52:35.720
機器如果看到Hello
link |
52:36.720
又說Hi的話
link |
52:37.720
那就很Creepy啊
link |
52:38.720
就跟Leonard第一次
link |
52:40.720
遇到那個Penny一樣啊
link |
52:42.720
人家就會覺得你是個怪狼啊
link |
52:44.720
就會覺得這個模型很爛啊
link |
52:45.720
所以你的模型需要
link |
52:47.720
記得他之前講過的話
link |
52:49.720
也需要記得
link |
52:50.720
之前人說過的話
link |
52:52.720
所以你這個模型
link |
52:53.720
可能是把之前的
link |
52:54.720
對話的結果
link |
52:55.720
他是好幾個句子
link |
52:56.720
通通都丟進去
link |
52:57.720
再得到輸出的結果
link |
52:59.720
那我們看到像剛才CleverBar
link |
53:01.720
很明顯的
link |
53:02.720
他就有做到這件事情
link |
53:04.720
雖然他可能不是
link |
53:05.720
Sequence to Sequence的Model
link |
53:06.720
不過他很顯然的
link |
53:07.720
是有看過去對話的紀錄
link |
53:09.720
來得到新的回覆
link |
53:13.720
那像今天這種ChatBar啊
link |
53:15.720
我們不只是希望他
link |
53:17.720
輸入過去的對話的紀錄
link |
53:19.720
輸入過去的一問一答的紀錄
link |
53:21.720
就輸出新的回覆
link |
53:23.720
而我們希望他的回覆
link |
53:24.720
是更豐富的
link |
53:25.720
比如說我們可能會希望
link |
53:27.720
可以操控ChatBar的Personality
link |
53:29.720
也許每個人喜歡聊天的對象
link |
53:32.720
都是不太一樣的
link |
53:34.720
有的人喜歡你的聊天對象
link |
53:35.720
比較積極一點
link |
53:36.720
主動問你問題
link |
53:37.720
有的人也許
link |
53:38.720
希望你的聊天對象
link |
53:39.720
不要老是問你問題
link |
53:40.720
每個人喜歡的聊天對象
link |
53:42.720
都是不一樣的
link |
53:43.720
我們也許可以Control
link |
53:44.720
ChatBar的Personality
link |
53:46.720
讓他的回答更豐富一點
link |
53:49.720
可以適合不同個性的人
link |
53:51.720
或者是你也許會希望
link |
53:52.720
你的ChatBar有同理心
link |
53:55.720
有同理心
link |
53:56.720
舉例來說
link |
53:57.720
你不希望你的ChatBar
link |
53:58.720
你跟他講說
link |
53:59.720
我是一個死臭酸宅的時候
link |
54:01.720
他的回覆是
link |
54:02.720
我覺得也是
link |
54:03.720
太賭手了
link |
54:04.720
怎麼可以這樣呢
link |
54:05.720
你說我是一個死臭酸宅的時候
link |
54:06.720
那個ChatBar應該回答說
link |
54:07.720
我覺得你也沒那麼胖
link |
54:09.720
他需要有些同理心
link |
54:11.720
他就講一些話
link |
54:12.720
讓人覺得心情好一點
link |
54:14.720
或者是你希望你的ChatBar
link |
54:15.720
是一個博學多聞的朋友
link |
54:17.720
你可能會讓他在
link |
54:18.720
回答你的答覆的時候
link |
54:20.720
他同時可以連到一個
link |
54:21.720
Knowledge Base
link |
54:22.720
所以他知道很多的知識
link |
54:24.720
他在回答問題的時候
link |
54:25.720
他不是只能講一些
link |
54:26.720
日常的對話
link |
54:27.720
他可以告訴你一些
link |
54:29.720
你不知道的資訊
link |
54:32.720
那這個呢
link |
54:33.720
是ChatBar的部分
link |
54:36.720
那接下來呢
link |
54:38.720
我們要講任務導向的Dialogue
link |
54:42.720
Text Oriented的Dialogue
link |
54:44.720
那任務導向的Dialogue
link |
54:46.720
是什麼呢
link |
54:47.720
就我們期待說
link |
54:48.720
今天的對話
link |
54:49.720
是為了要幫人完成某件事
link |
54:52.720
今天Dialogue跟人對話
link |
54:54.720
並不只是要尬聊
link |
54:55.720
而是要透過這個對話
link |
54:58.720
知道一些資訊
link |
54:59.720
幫助人類完成某些工作
link |
55:02.720
那Text Oriented Dialogue
link |
55:03.720
比較常見的應用
link |
55:05.720
可能就是用在
link |
55:06.720
舉例來說
link |
55:07.720
幫你訂票啊
link |
55:09.720
幫你訂餐廳啊
link |
55:11.720
幫你訂旅館啊
link |
55:13.720
等等
link |
55:14.720
那以下就是一個
link |
55:15.720
很Typical的
link |
55:16.720
Text Oriented Dialogue的例子
link |
55:18.720
這是從科技大擂台的
link |
55:20.720
簡章範例裡面
link |
55:21.720
剪下來的
link |
55:22.720
那舉例來說
link |
55:23.720
使用者說
link |
55:24.720
我現在要訂房
link |
55:26.720
然後你希望機器呢
link |
55:27.720
就可以自動回覆
link |
55:28.720
使用者的需求
link |
55:29.720
那機器就說
link |
55:30.720
我要怎麼稱呼你
link |
55:31.720
那個使用者說
link |
55:33.720
我姓林
link |
55:34.720
然後機器說林小姐您好
link |
55:36.720
那你預計何時入住
link |
55:38.720
那這個例子比較神奇的地方
link |
55:39.720
是機器知道說
link |
55:40.720
這個姓林的人
link |
55:42.720
是林小姐
link |
55:43.720
而不是林先生
link |
55:44.720
也許是因為
link |
55:45.720
機器是有聽語音的
link |
55:47.720
它從聲音訊號裡面
link |
55:49.720
可以判斷說
link |
55:50.720
這是一個女性
link |
55:51.720
所以叫她林小姐
link |
55:53.720
那這個使用者就說
link |
55:55.720
那我要9月9號入住
link |
55:57.720
然後機器就問說
link |
55:58.720
那你要住幾個晚上
link |
55:59.720
人就說兩個晚上
link |
56:01.720
機器就問說
link |
56:02.720
要有幾個人入住
link |
56:05.720
他說五位
link |
56:06.720
然後訂什麼房型
link |
56:07.720
然後人說豪華套房
link |
56:09.720
豪華客房等等
link |
56:11.720
那這個就是一個經典的
link |
56:13.720
text oriented dialogue的例子
link |
56:15.720
那像這樣子的問題
link |
56:17.720
要怎麼解呢
link |
56:19.720
如果是最general的來想
link |
56:22.720
那這個問題其實跟chatbot
link |
56:25.720
好像也很像
link |
56:26.720
我們其實需要的
link |
56:28.720
也就是一個sequence to sequence model
link |
56:31.720
我們需要一個model
link |
56:32.720
把過去已經有的對話
link |
56:35.720
過去人跟機器
link |
56:37.720
已經一來一往
link |
56:38.720
講好幾回的對話
link |
56:39.720
通通都輸到一個模型裡面去
link |
56:42.720
然後這個模型
link |
56:43.720
它就吐出一個sequence
link |
56:45.720
當作現在機器的回覆
link |
56:48.720
那這樣子的模型
link |
56:50.720
從表面上看來
link |
56:51.720
確實有機會可以解
link |
56:53.720
text oriented dialogue
link |
56:55.720
這樣子的問題
link |
56:57.720
不過呢
link |
56:58.720
一般而言
link |
56:59.720
我們會把這個巨大的模型
link |
57:01.720
再把它細分
link |
57:03.720
因為往往要train
link |
57:04.720
一個end to end的模型
link |
57:05.720
然後又期待
link |
57:06.720
它能夠正確的做出答覆
link |
57:08.720
是沒有那麼容易的
link |
57:10.720
如果可以的話
link |
57:11.720
也許會把大的模型
link |
57:13.720
拆成比較小的模組
link |
57:15.720
然後分開訓練
link |
57:17.720
那在text oriented dialogue裡面
link |
57:20.720
常見的切法
link |
57:21.720
常見的把大的end to end的model
link |
57:24.720
分成小的model
link |
57:26.720
分開訓練的這個分法
link |
57:28.720
是這個樣子
link |
57:30.720
首先呢
link |
57:31.720
你可能會獨立出一個
link |
57:32.720
叫做natural language generation
link |
57:34.720
NLG的model
link |
57:37.720
那這個NLG的model
link |
57:38.720
是做什麼的呢
link |
57:39.720
首先因為今天是要
link |
57:41.720
text oriented dialogue
link |
57:43.720
比如說就是訂房訂餐廳
link |
57:45.720
所以機器要講的話是有限的
link |
57:48.720
它不是尬聊
link |
57:49.720
不是要講什麼話都可以的
link |
57:51.720
機器要講的東西是有限的
link |
57:54.720
所以也許你一開始
link |
57:55.720
就可以事先定好
link |
57:57.720
機器可以採取的行為有什麼
link |
57:59.720
那這個東西叫做action
link |
58:02.720
你就先定好說
link |
58:03.720
有哪些action
link |
58:04.720
是機器可以採取的
link |
58:06.720
它可以打招呼
link |
58:07.720
它可以問入住的日期
link |
58:09.720
它可以問退房的日期等等
link |
58:11.720
那因為今天不是要尬聊
link |
58:13.720
不是要聊什麼都可以
link |
58:14.720
機器要講的話是有限的
link |
58:16.720
所以可以先把
link |
58:17.720
機器可以做的事情
link |
58:19.720
先把它定下來
link |
58:22.720
那定下這些action以後
link |
58:24.720
接下來你只需要有一個模型
link |
58:26.720
它也許是持過去的對話
link |
58:28.720
過去一來一往的對話紀錄
link |
58:31.720
然後接下來就輸出
link |
58:33.720
要採取哪一個action
link |
58:35.720
接下來把要採取的action
link |
58:37.720
丟到一個NLG的model
link |
58:39.720
然後希望這個NLG的model
link |
58:41.720
把這個要採取的action
link |
58:43.720
變成一串文字
link |
58:45.720
那如果你今天實際上
link |
58:46.720
機器要可以採取的action
link |
58:48.720
還蠻有限的10種20種
link |
58:50.720
那你甚至用寫規則的方法
link |
58:52.720
就可以解這個問題了
link |
58:54.720
你只要寫好規則說
link |
58:56.720
這個NLG的model看到
link |
58:58.720
要詢問訂房人數
link |
59:00.720
輸出就是請問訂房人數
link |
59:02.720
總共幾位就結束了
link |
59:04.720
那如果你的action非常非常複雜
link |
59:06.720
也許你也沒有辦法
link |
59:07.720
憑著人的力量
link |
59:09.720
把所有可能的說
link |
59:11.720
機器可以說的話
link |
59:12.720
通通都寫出來
link |
59:13.720
這個時候你可能
link |
59:14.720
也會想用deep learning的技術
link |
59:16.720
比如說你train一個LSTM
link |
59:18.720
這個LSTM吃一個action
link |
59:20.720
它的輸出就是一個完整的句子
link |
59:23.720
也就是機器給人的回覆
link |
59:26.720
所以NLG的model
link |
59:27.720
往往會被獨立出來
link |
59:30.720
那接下來啊
link |
59:32.720
你可以把這個model猜得更細
link |
59:35.720
也許也沒有必要直接吃
link |
59:37.720
一整段對話的記錄
link |
59:39.720
就輸出一個action
link |
59:41.720
你可以把這個model
link |
59:42.720
通常再細分成兩個模組
link |
59:45.720
一個是policy
link |
59:47.720
一個是state tracker
link |
59:49.720
那什麼是state tracker呢
link |
59:51.720
什麼是state呢
link |
59:53.720
state在這邊的意思啊
link |
59:54.720
如果用白話來講就是
link |
59:56.720
這一個對話到目前為止
link |
59:59.720
總共發生了什麼樣的事情
link |
01:00:01.720
它等於是對
link |
01:00:02.720
過去人跟機器
link |
01:00:04.720
一來一往的這個對話記錄
link |
01:00:06.720
做一個總結
link |
01:00:08.720
做一個摘要
link |
01:00:10.720
那因為呢
link |
01:00:12.720
今天我們做的是text oriented dialogue
link |
01:00:15.720
不是尬聊
link |
01:00:16.720
所以今天機器
link |
01:00:17.720
真的需要關注的事情
link |
01:00:19.720
是有限的
link |
01:00:20.720
機器只需要關注
link |
01:00:21.720
跟任務有關的事情
link |
01:00:24.720
舉例來說
link |
01:00:25.720
今天是訂房
link |
01:00:26.720
那也許機器只需要
link |
01:00:28.720
關注跟訂房有關的資訊
link |
01:00:30.720
它只需要記得說
link |
01:00:32.720
今天這個客戶
link |
01:00:34.720
在說要訂房的時候
link |
01:00:36.720
他到底要訂什麼樣的房間
link |
01:00:37.720
什麼時候入住
link |
01:00:38.720
什麼時候退房
link |
01:00:39.720
他的聯絡電話號碼是多少
link |
01:00:41.720
等等就夠了
link |
01:00:42.720
今天也許客戶說
link |
01:00:43.720
我要去高雄玩
link |
01:00:44.720
所以我要訂個旅館
link |
01:00:45.720
那他去高雄玩這件事不重要
link |
01:00:48.720
我們只需要把
link |
01:00:49.720
跟這個任務有關係的資訊
link |
01:00:52.720
儲存起來就好了
link |
01:00:53.720
那state做的就是這樣一件事情
link |
01:00:55.720
它做的就是摘要
link |
01:00:57.720
把不重要的東西濾掉
link |
01:00:59.720
只包含重要的資訊
link |
01:01:01.720
那什麼事件是重要的
link |
01:01:03.720
這個也許你在設計
link |
01:01:04.720
你的系統的時候
link |
01:01:05.720
就會事先訂好
link |
01:01:06.720
你已經知道說
link |
01:01:07.720
我們現在要做的是
link |
01:01:08.720
一個訂房的系統
link |
01:01:09.720
那你就事先訂好說
link |
01:01:11.720
我們只關心對話中
link |
01:01:12.720
有沒有提到聯絡人
link |
01:01:14.720
有沒有提到入住人數
link |
01:01:15.720
聯絡電話房型
link |
01:01:16.720
入住日期跟退房日期
link |
01:01:18.720
其他這個人跟機器
link |
01:01:20.720
說什麼就不重要
link |
01:01:21.720
反正又不是要閒聊
link |
01:01:22.720
你說什麼都無視你就好
link |
01:01:24.720
我們只在意這些
link |
01:01:25.720
Task Oriented
link |
01:01:26.720
跟任務有關的部分
link |
01:01:28.720
到目前為止
link |
01:01:30.720
機器說
link |
01:01:31.720
到目前為止
link |
01:01:32.720
在人跟機器的對話裡面
link |
01:01:34.720
這些重要的資訊
link |
01:01:35.720
會被總結儲存在
link |
01:01:37.720
一個叫做state的東西裡面
link |
01:01:40.720
而state trigger要做的事情就是
link |
01:01:42.720
讀完這一段對話
link |
01:01:44.720
把現在的state
link |
01:01:46.720
把它抽取出來
link |
01:01:48.720
舉例來說在這個對話裡面
link |
01:01:49.720
機器已經知道說
link |
01:01:50.720
入住的日期是9月9號
link |
01:01:54.720
那因為入住日期9月9號
link |
01:01:56.720
使用者又說他要住兩晚
link |
01:01:58.720
所以退房日期就是9月11號
link |
01:02:00.720
那機器怎麼知道說
link |
01:02:02.720
在這個對話裡面
link |
01:02:03.720
其實人並沒有明確提到
link |
01:02:05.720
退房日期是9月11號
link |
01:02:07.720
但機器state trigger
link |
01:02:09.720
怎麼自動知道是9月11號呢
link |
01:02:11.720
那就要看你的模型夠不夠聰明
link |
01:02:13.720
能不能夠判斷說
link |
01:02:14.720
9月9號晚上入住
link |
01:02:16.720
如果要住兩晚
link |
01:02:17.720
那退房日期就是9月11號
link |
01:02:20.720
而那state trigger要做的事情
link |
01:02:22.720
有點像是摘要
link |
01:02:24.720
就是把跟任務有關的事情
link |
01:02:26.720
把它萃取儲存在state裡面
link |
01:02:30.720
那知道現在state是什麼以後
link |
01:02:32.720
你會有一個policy
link |
01:02:34.720
policy做的事情就是
link |
01:02:36.720
根據這個state
link |
01:02:38.720
決定說現在要做什麼樣的事情
link |
01:02:43.720
那在這個例子裡面
link |
01:02:44.720
這是一個比較單純的例子
link |
01:02:46.720
也許你的policy
link |
01:02:47.720
可以是寫規則來決定的
link |
01:02:50.720
你的policy可以是
link |
01:02:52.720
看看這個state裡面
link |
01:02:54.720
有哪些重要的資訊
link |
01:02:56.720
還是不知道的
link |
01:02:57.720
比如說入住人數還不知道
link |
01:03:00.720
那你的policy就是問一下
link |
01:03:02.720
現在的人數是多少
link |
01:03:04.720
要住住的人數有幾個人
link |
01:03:06.720
就結束了
link |
01:03:07.720
那對於更複雜的問題
link |
01:03:08.720
也許policy也可以直接用learn
link |
01:03:12.720
那policy它就是輸入一個state
link |
01:03:15.720
你可以想成
link |
01:03:16.720
就是輸入一個sequence
link |
01:03:18.720
輸入一堆資訊
link |
01:03:19.720
就是現在要採取哪些action
link |
01:03:22.720
那如果action的數目是有限的
link |
01:03:24.720
那policy其實就是一個
link |
01:03:27.720
分類的問題而已
link |
01:03:29.720
只是這個分類的問題
link |
01:03:30.720
往往你沒有標註資料
link |
01:03:32.720
你往往沒有資料去標說
link |
01:03:34.720
現在看到這些資訊
link |
01:03:36.720
應該要採取什麼樣的policy
link |
01:03:39.720
那很多時候
link |
01:03:40.720
如果你沒有辦法寫規則的話
link |
01:03:42.720
也許你覺得問題太複雜
link |
01:03:43.720
沒辦法寫規則的話
link |
01:03:45.720
也許你的policy
link |
01:03:46.720
可以用reinforcement learning的方法
link |
01:03:48.720
把它認出來
link |
01:03:49.720
那不管你有什麼樣的方法
link |
01:03:50.720
得到你的policy
link |
01:03:52.720
policy本質上
link |
01:03:53.720
其實就是一個分類的問題
link |
01:03:55.720
就你聽到policy可能覺得
link |
01:03:56.720
哇好難喔
link |
01:03:57.720
這policy就是跟reinforcement learning有關
link |
01:04:00.720
聽起來就高大上
link |
01:04:01.720
但是其實它就是個分類的問題
link |
01:04:04.720
就是輸入一個state
link |
01:04:05.720
輸出是我們到底要採取哪一個action
link |
01:04:09.720
而state tracker
link |
01:04:10.720
你可以想成它是一個
link |
01:04:12.720
輸入好多個sequence
link |
01:04:14.720
輸出就是一個sequence
link |
01:04:16.720
這樣子的問題
link |
01:04:18.720
好我們現在講了policy
link |
01:04:20.720
講了state tracker
link |
01:04:22.720
那有了state tracker
link |
01:04:24.720
有了policy
link |
01:04:25.720
policy輸出action
link |
01:04:26.720
再丟給NLG
link |
01:04:27.720
然後就可以輸出回應
link |
01:04:30.720
那今天state tracker
link |
01:04:32.720
是蠻有機會直接
link |
01:04:34.720
end-to-end硬學的
link |
01:04:36.720
就是在文獻上
link |
01:04:37.720
已經有不少文獻是硬學state tracker
link |
01:04:41.720
那但在更過去
link |
01:04:43.720
在deep learning
link |
01:04:44.720
end-to-end硬training
link |
01:04:45.720
那還不像今天這麼風行的時候
link |
01:04:47.720
這個很多時候state tracker
link |
01:04:49.720
不是直接吃對話的文字
link |
01:04:53.720
而是這些文字
link |
01:04:54.720
會先做NLU
link |
01:04:57.720
所以先做Natural Language Understanding
link |
01:05:00.720
把Natural Language Understanding的結果
link |
01:05:02.720
再丟給state tracker
link |
01:05:04.720
讓state tracker決定
link |
01:05:06.720
現在的state是什麼
link |
01:05:08.720
那什麼是NLU呢
link |
01:05:10.720
什麼是Natural Language Understanding呢
link |
01:05:13.720
NLU在對話裡面
link |
01:05:15.720
通常指了兩個模組
link |
01:05:17.720
一個是intent classification
link |
01:05:20.720
也就是給你一個句子
link |
01:05:21.720
然後你決定說
link |
01:05:22.720
機器要自己決定說
link |
01:05:24.720
這個句子它在幹嘛
link |
01:05:27.720
這個對話裡面的某一個句子
link |
01:05:28.720
它在幹嘛
link |
01:05:29.720
它是要提供資訊嗎
link |
01:05:31.720
還是它是想要詢問問題等等
link |
01:05:34.720
那intent classification
link |
01:05:35.720
會把它這個分類以後的結果
link |
01:05:38.720
再丟給state tracker
link |
01:05:39.720
然後看state tracker
link |
01:05:40.720
根據這個分類的結果
link |
01:05:41.720
接下來要做什麼樣的事情
link |
01:05:43.720
由state tracker來決定
link |
01:05:45.720
那像這種intent classification
link |
01:05:47.720
確實可能非常的重要
link |
01:05:48.720
舉例來說
link |
01:05:49.720
這個句子裡面有提到9月9日
link |
01:05:52.720
一個句子裡面有提到9月9日
link |
01:05:55.720
那如果這個句子是要提供資訊
link |
01:05:57.720
比如說9月9日入住
link |
01:05:58.720
那這個9月9日就是重要的
link |
01:06:00.720
那假如這個句子是在詢問問題
link |
01:06:04.720
舉例來說
link |
01:06:05.720
這個客人問你的機器說
link |
01:06:08.720
9月9日還有沒有空房間
link |
01:06:12.720
那9月9日可能就不是入住的日期
link |
01:06:15.720
他只是詢問
link |
01:06:16.720
客人先詢問9月9日有沒有空房間
link |
01:06:19.720
如果沒有他就會選別的日子
link |
01:06:22.720
那這個是intent classification
link |
01:06:24.720
它就是一個單純的分類問題
link |
01:06:26.720
給機器一個sequence
link |
01:06:27.720
那機器要決定這個sequence
link |
01:06:28.720
屬於哪一個class
link |
01:06:31.720
那還有一個東西叫做slot filling
link |
01:06:34.720
slot filling是說
link |
01:06:35.720
你會先訂好一些slot
link |
01:06:37.720
每一個slot其實就是
link |
01:06:38.720
某一項我們覺得應該要被偵測出來
link |
01:06:43.720
在這個對這個text oriented dialog
link |
01:06:46.720
對這個任務有關係的資訊
link |
01:06:49.720
比如說入住日
link |
01:06:50.720
比如說退房日
link |
01:06:52.720
接下來給機器一個句子
link |
01:06:54.720
它要決定說這個句子裡面
link |
01:06:56.720
哪些token屬於入住日
link |
01:06:58.720
哪些token屬於退房日
link |
01:07:01.720
哪些token不屬於任何的slot
link |
01:07:04.720
那你再把這個得到的結果
link |
01:07:07.720
把這個slot filling的結果
link |
01:07:09.720
丟給你的state tracker
link |
01:07:10.720
看看state tracker根據這些slot filling的結果
link |
01:07:12.720
要怎麼產生state
link |
01:07:14.720
那這個slot filling的問題
link |
01:07:16.720
其實跟我們前面講到的POS tagging
link |
01:07:19.720
其實就沒有什麼不同
link |
01:07:20.720
它就是input一個sequence
link |
01:07:22.720
然後output呢
link |
01:07:23.720
就是這個sequence裡面每一個token
link |
01:07:26.720
你都要偵測出它的類別
link |
01:07:28.720
都要偵測出它是屬於哪一個slot
link |
01:07:31.720
那在Machine Learning 9門課
link |
01:07:32.720
我們在講RNN的時候呢
link |
01:07:34.720
也是用slot filling來給大家作為例子
link |
01:07:38.720
那講到這邊你可能就會想到說
link |
01:07:40.720
如果slot filling做得好
link |
01:07:42.720
那其實state tracker也沒有那麼複雜
link |
01:07:45.720
就是就寫個規則
link |
01:07:47.720
你就寫個規則說
link |
01:07:48.720
把所有slot filling的結果
link |
01:07:51.720
根據slot filling的結果
link |
01:07:52.720
你可以知道入住日嘛
link |
01:07:54.720
可以知道退房日
link |
01:07:55.720
把所有slot filling的結果收集起來
link |
01:07:57.720
就是我的state啦
link |
01:07:59.720
對 你確實可以這麼做
link |
01:08:01.720
早年很多對話系統都是這麼做的
link |
01:08:03.720
不過如果只是這麼做的話
link |
01:08:05.720
可能就沒有辦法處理
link |
01:08:07.720
像我剛才講的
link |
01:08:08.720
使用者說他要待兩晚
link |
01:08:09.720
那機器自動知道退房日
link |
01:08:11.720
就是9月11號這樣子的問題
link |
01:08:15.720
好 那所以
link |
01:08:16.720
整個text oriented的dialog
link |
01:08:19.720
它往往設計成這個樣子
link |
01:08:21.720
你當然可以end to end的run它
link |
01:08:23.720
把現在使用者說的句子讀進來
link |
01:08:26.720
把過去對話紀錄通通讀進來
link |
01:08:28.720
然後直接輸出系統的output
link |
01:08:30.720
那它就是input多個sequence
link |
01:08:32.720
output一個sequence的問題
link |
01:08:34.720
但是往往會把這整個
link |
01:08:36.720
比較困難的大問題呢
link |
01:08:38.720
拆成比較小的模組
link |
01:08:40.720
比如說你有NLG的模組
link |
01:08:43.720
你有policy的模組
link |
01:08:45.720
你有state tracker的模組
link |
01:08:47.720
而state tracker的模組裡面
link |
01:08:49.720
還有NLU的模組
link |
01:08:51.720
不過今天很多時候
link |
01:08:52.720
state tracker是真的可以end to end
link |
01:08:54.720
硬做的
link |
01:08:55.720
你先做好label說
link |
01:08:57.720
現在每一則對話
link |
01:08:59.720
每一則對話的紀錄
link |
01:09:01.720
應該抽出什麼樣的state
link |
01:09:02.720
然後end to end的end train
link |
01:09:04.720
其實今天是真的有機會這麼做的
link |
01:09:08.720
好 那如果說
link |
01:09:09.720
你今天是要語音輸入
link |
01:09:11.720
那你可能會再加一個語音辨識
link |
01:09:13.720
如果你要語音合成
link |
01:09:15.720
你可能會再加一個TTS
link |
01:09:17.720
這就是一個對話的系統
link |
01:09:21.720
好 講到這邊
link |
01:09:22.720
大家有問題要問嗎
link |
01:09:26.720
好 如果沒有的話呢
link |
01:09:27.720
我們就繼續看下一個題目
link |
01:09:32.720
還有什麼跟NLP有關的題目呢
link |
01:09:34.720
最後一個跟大家分享的
link |
01:09:35.720
比較大的主題
link |
01:09:37.720
叫做knowledge graph
link |
01:09:39.720
那什麼是knowledge graph呢
link |
01:09:41.720
我們知道一個graph
link |
01:09:43.720
一個圖
link |
01:09:44.720
它就是由node跟edge所組成的
link |
01:09:48.720
在knowledge graph裡面呢
link |
01:09:50.720
每一個node就是一個entity
link |
01:09:53.720
那entity中文的翻譯
link |
01:09:56.720
我是覺得可以翻成東西這樣
link |
01:09:59.720
很多時候是翻成實體啦
link |
01:10:00.720
不過實體你也不知道是什麼意思
link |
01:10:02.720
所以我覺得可以翻成東西
link |
01:10:04.720
就是一個東西
link |
01:10:05.720
那這個東西可以是任何東西
link |
01:10:08.720
它可以是人
link |
01:10:09.720
可以是地
link |
01:10:11.720
甚至是時間往往也可以
link |
01:10:13.720
它就是個東西
link |
01:10:14.720
舉例來說
link |
01:10:15.720
在哈利波特裡面
link |
01:10:17.720
榮恩是個東西
link |
01:10:18.720
妙麗是個東西
link |
01:10:20.720
霍格華茲是個東西
link |
01:10:21.720
它們都是entity
link |
01:10:23.720
然後knowledge graph裡面呢
link |
01:10:26.720
它的node就是entity
link |
01:10:28.720
它的edge就是entity跟entity之間的關係
link |
01:10:32.720
舉例來說
link |
01:10:33.720
榮恩是霍格華茲的學生
link |
01:10:35.720
然後妙麗是霍格華茲的學生
link |
01:10:37.720
然後榮恩跟妙麗
link |
01:10:38.720
後來不知道怎麼回事
link |
01:10:39.720
居然結婚了
link |
01:10:40.720
他們互相之間是夫妻的關係等等
link |
01:10:43.720
這個就是knowledge graph上面的edge
link |
01:10:47.720
那knowledge graph相關的研究
link |
01:10:49.720
其實有兩個面向
link |
01:10:51.720
一個面向是
link |
01:10:52.720
給你的model一個knowledge graph
link |
01:10:54.720
那它怎麼用它
link |
01:10:56.720
它怎麼把knowledge graph裡面的資訊
link |
01:10:58.720
用來處理現在它關心的問題
link |
01:11:01.720
比如說摘要
link |
01:11:02.720
比如說對話
link |
01:11:03.720
比如說QA等等
link |
01:11:05.720
那這邊你可以想見說
link |
01:11:07.720
它是個graph
link |
01:11:08.720
也許你需要用到一些graph neural network的東西
link |
01:11:11.720
那如果你不知道什麼是graph neural network的話呢
link |
01:11:14.720
可以看一下這學期機器學習上課的課程
link |
01:11:17.720
那助教有講
link |
01:11:18.720
什麼是這個graph based model
link |
01:11:22.720
那另外一個面向的
link |
01:11:24.720
另外一個方向的研究是
link |
01:11:26.720
能不能夠從大量的文字中
link |
01:11:30.720
抽取出knowledge graph
link |
01:11:32.720
機器能不能夠讀完整本哈利波特以後
link |
01:11:35.720
自動產生
link |
01:11:36.720
它知道裡面有什麼樣的entity
link |
01:11:38.720
這些entity有什麼樣的關係
link |
01:11:41.720
或者是更進一步
link |
01:11:42.720
機器能不能夠在網路上不斷的閱讀文章
link |
01:11:45.720
爬了大量文章以後
link |
01:11:46.720
知道說這個世界上有什麼樣的資訊
link |
01:11:50.720
這個世界上有什麼樣的entity
link |
01:11:52.720
這些entity之間有什麼樣的關係
link |
01:11:55.720
那這個問題其實非常的複雜
link |
01:11:57.720
但總歸來講
link |
01:11:59.720
我們用最最簡單的方法來講
link |
01:12:02.720
也許就分成兩個步驟吧
link |
01:12:04.720
一個步驟就是
link |
01:12:05.720
從你的這個大量的文件裡面抽出entity
link |
01:12:12.720
然後再從大量的文件裡面找出entity
link |
01:12:16.720
跟entity之間的關係
link |
01:12:19.720
那這個當然以下的說明
link |
01:12:21.720
其實是一個非常非常simplified的講法啦
link |
01:12:26.720
這是一個非常非常simplified的講法
link |
01:12:28.720
過度簡化了knowledge graph
link |
01:12:31.720
產生knowledge graph這個問題
link |
01:12:33.720
那不過因為之後呢
link |
01:12:34.720
應該還會講到
link |
01:12:35.720
怎麼產生knowledge graph這件事
link |
01:12:37.720
所以我就想說在這邊就不要講太多
link |
01:12:39.720
我們就講一點點就好
link |
01:12:41.720
留更多呢在之後的課程再講
link |
01:12:45.720
好第一個是
link |
01:12:46.720
怎麼把node也就是entity抽出來
link |
01:12:49.720
那你會做一件事情叫做
link |
01:12:51.720
Name Entity Recognition
link |
01:12:53.720
它的縮寫是NER
link |
01:12:56.720
Name Entity Recognition
link |
01:12:57.720
就是要把一個句子裡面的Name Entity
link |
01:13:00.720
都抽取出來
link |
01:13:02.720
但什麼是Name Entity呢
link |
01:13:04.720
其實Name Entity這個詞彙
link |
01:13:06.720
並沒有非常嚴謹的定義
link |
01:13:09.720
通常其實它的意思就是
link |
01:13:11.720
你關心的東西
link |
01:13:13.720
你關心的entity
link |
01:13:14.720
就是Name Entity
link |
01:13:16.720
至於你關心什麼樣的Name Entity
link |
01:13:18.720
也許隨著你的應用的不同
link |
01:13:20.720
隨著領域的不同而有所差異
link |
01:13:23.720
那一般Name Entity啊
link |
01:13:24.720
往往包含幾項
link |
01:13:25.720
就人民啊
link |
01:13:26.720
組織的名字啊
link |
01:13:28.720
地名啊等等
link |
01:13:29.720
但是
link |
01:13:33.720
這並不是完整的Name Entity的定義
link |
01:13:36.720
Name Entity到底是什麼
link |
01:13:37.720
這取決於你現在的application是什麼
link |
01:13:41.720
舉例來說
link |
01:13:42.720
你也許想讓機器讀了大量
link |
01:13:45.720
跟醫學相關的文件
link |
01:13:47.720
然後自動知道說
link |
01:13:48.720
有什麼藥物可以
link |
01:13:51.720
可以治療新冠肺炎
link |
01:13:53.720
那這些藥物的名字
link |
01:13:56.720
就是你的Name Entity
link |
01:13:57.720
因為你現在關心有什麼樣
link |
01:13:59.720
世界上有什麼樣的藥物
link |
01:14:01.720
所以今天這個Name Entity的定義
link |
01:14:05.720
其實取決於你的應用
link |
01:14:08.720
好那在這個例子裡面
link |
01:14:09.720
假設你在意的就是
link |
01:14:10.720
人民組織名跟地名的話
link |
01:14:12.720
那Name Entity的Recognition
link |
01:14:14.720
NER可能就標示出
link |
01:14:16.720
哈利波特是個人名
link |
01:14:18.720
霍格華茲是個組織的名字
link |
01:14:20.720
然後Private Drive
link |
01:14:23.720
這個是這個水蠟樹街啊
link |
01:14:25.720
水蠟樹街呢
link |
01:14:27.720
是個地名
link |
01:14:29.720
好那這個問題怎麼做呢
link |
01:14:31.720
其實這個問題跟我們剛才看到的
link |
01:14:33.720
PoS Tagging跟Slot Filling
link |
01:14:35.720
沒有太大的差異
link |
01:14:37.720
就是Input一個Sequence
link |
01:14:38.720
然後你的機器就是
link |
01:14:39.720
要給Sequence裡面的每一個Token
link |
01:14:42.720
下給它一個Class
link |
01:14:44.720
給它一個Label
link |
01:14:45.720
機器就是要決定說
link |
01:14:46.720
這個Sequence裡面的每一個Token
link |
01:14:48.720
分別屬於哪一個Class
link |
01:14:50.720
這就是NER要做的事情
link |
01:14:53.720
但是實際上只有NER
link |
01:14:55.720
並沒有辦法解決
link |
01:14:57.720
抽取Entity這件事情
link |
01:15:00.720
那舉例來說
link |
01:15:01.720
有很多東西它的名字其實不一樣
link |
01:15:04.720
但他們指的可能是同樣的東西
link |
01:15:08.720
舉例來說
link |
01:15:09.720
這個卑鄙原之助
link |
01:15:11.720
跟惡魔貓男跟浪漫Duke
link |
01:15:14.720
他們是同一個人啦
link |
01:15:16.720
然後這個卑鄙原之助的右手
link |
01:15:19.720
是人民的髮捶啦
link |
01:15:21.720
所以你知道說
link |
01:15:22.720
惡魔貓男右手
link |
01:15:23.720
也是人民的髮捶啦
link |
01:15:25.720
就他舉起來
link |
01:15:26.720
不是你說要放下就放下
link |
01:15:28.720
不是他說要放下就放下
link |
01:15:29.720
不是我說要放下就放下
link |
01:15:31.720
他不捶老高牆
link |
01:15:32.720
他不放下
link |
01:15:33.720
所以很多東西
link |
01:15:34.720
它的名字是不一樣的
link |
01:15:36.720
但它其實指的是同樣的東西
link |
01:15:38.720
或者有可能遇到說
link |
01:15:39.720
名字是一樣的
link |
01:15:41.720
但指的是不一樣的東西
link |
01:15:43.720
那怎麼解這個問題
link |
01:15:44.720
這個問題叫做Entity的Linking
link |
01:15:46.720
或者是Entity的Resolution
link |
01:15:49.720
就是怎麼把名字不一樣的Entity
link |
01:15:51.720
把它Link起來
link |
01:15:52.720
這個叫做Entity的Linking
link |
01:15:54.720
那這個呢
link |
01:15:55.720
我們之後再講
link |
01:15:56.720
總之怎麼抽取Entity
link |
01:15:58.720
其實是有非常多相關的研究的
link |
01:16:02.720
然後再來啊
link |
01:16:04.720
要抽Relation
link |
01:16:06.720
那機器要讀一篇文章以後
link |
01:16:07.720
知道說兩個Entity之間的Relation是什麼
link |
01:16:11.720
那假設你已經標出說
link |
01:16:13.720
這一段話裡面有三個Entity
link |
01:16:15.720
接下來機器就是要偵測出
link |
01:16:17.720
這三個Entity兩兩之間
link |
01:16:20.720
有什麼樣的Relation
link |
01:16:23.720
那你可能有一個
link |
01:16:24.720
Relation Extraction的Model
link |
01:16:26.720
這Relation Extraction的Model
link |
01:16:28.720
就持一個句子
link |
01:16:30.720
然後你現在告訴他說
link |
01:16:31.720
你在意的是什麼
link |
01:16:32.720
你在意的是Harry Potter
link |
01:16:34.720
跟霍格華茲之間的關係
link |
01:16:37.720
那通常往往你不見得
link |
01:16:39.720
只會丟一個句子啦
link |
01:16:40.720
你可能會把
link |
01:16:41.720
所有你收集到的文章裡面
link |
01:16:43.720
有提到霍格華茲
link |
01:16:45.720
有提到哈利波特的
link |
01:16:47.720
一堆句子通通都丟到
link |
01:16:49.720
Relation Extraction裡面去
link |
01:16:50.720
然後告訴他說
link |
01:16:51.720
你關心的是哪兩個Entity
link |
01:16:53.720
然後請他抽出說
link |
01:16:55.720
跟這兩個Entity之間
link |
01:16:57.720
有什麼樣的關係
link |
01:16:59.720
那如果你今天呢
link |
01:17:00.720
你的Relation Extraction的Model
link |
01:17:02.720
他可以抽的Entity是有限的
link |
01:17:04.720
你事先訂好說
link |
01:17:05.720
他可以抽的
link |
01:17:06.720
就是這一百種不同的Relation
link |
01:17:09.720
就假設你現在先把
link |
01:17:10.720
所有可能的Relation都窮取出來
link |
01:17:13.720
然後你的Relation Extraction
link |
01:17:15.720
就從這些有限的Relation裡面
link |
01:17:17.720
挑出一個當作答案
link |
01:17:19.720
那其實Relation Extraction
link |
01:17:21.720
可以看做是一個分類的問題
link |
01:17:24.720
它就是輸入一大堆資訊
link |
01:17:26.720
輸出就是你所關心的
link |
01:17:28.720
兩個Entity它之間的Relation
link |
01:17:30.720
那雖然這是個很複雜的問題
link |
01:17:32.720
但是它從Machine Learning的角度來看
link |
01:17:35.720
它是一個分類的問題
link |
01:17:38.720
那今天這舉的一個例子
link |
01:17:40.720
是一個非常簡單的例子
link |
01:17:41.720
你可能覺得說
link |
01:17:42.720
這個例子很簡單啊
link |
01:17:44.720
你就看這個也不見得
link |
01:17:46.720
需要用到什麼特別厲害的技術
link |
01:17:49.720
你就看說這兩個Entity之間
link |
01:17:51.720
有什麼樣的文字
link |
01:17:52.720
也許就是答案
link |
01:17:54.720
但是這一招往往不見得管用
link |
01:17:57.720
因為如果你今天的規則是
link |
01:17:59.720
兩個Entity之間的句子就是答案
link |
01:18:02.720
那如果你今天輸入是
link |
01:18:06.720
霍格華茲跟水蠟樹街的時候
link |
01:18:08.720
那你應該就是輸出Leapfrog
link |
01:18:10.720
那如果過去啊
link |
01:18:12.720
在還沒有比較厲害的技術之前
link |
01:18:14.720
就是你用做Relation Extraction
link |
01:18:16.720
你給機器這個句子
link |
01:18:17.720
它可能真的會抽出說
link |
01:18:18.720
霍格華茲就是住在水蠟樹街上
link |
01:18:22.720
但是你今天期待說
link |
01:18:24.720
你的Relation Extraction的Model
link |
01:18:26.720
它是比較厲害的
link |
01:18:27.720
它可以知道說
link |
01:18:29.720
霍格華茲跟水蠟樹街
link |
01:18:30.720
在這個句子裡面的關係是什麼呢
link |
01:18:32.720
就是沒什麼關係這樣
link |
01:18:34.720
Relation Extraction往往還會有一個class
link |
01:18:36.720
叫做沒有關係
link |
01:18:38.720
叫做沒發生任何事情
link |
01:18:42.720
那這個呢
link |
01:18:43.720
是Relation Extraction的部分
link |
01:18:46.720
當然這邊也是一個非常非常簡化的說法
link |
01:18:49.720
那這個部分呢
link |
01:18:50.720
其實也有很多相關的研究
link |
01:18:54.720
那過去啊
link |
01:18:56.720
往往是一個NLP的任務
link |
01:18:59.720
就設計一個模型
link |
01:19:01.720
那這樣聽起來好像不是非常的Intelligent
link |
01:19:05.720
我們不知道說機器到底
link |
01:19:07.720
In general而言
link |
01:19:08.720
了解人類的語言到什麼樣的程度
link |
01:19:11.720
所以近年來就有一些標準
link |
01:19:15.720
一些競賽
link |
01:19:16.720
他做的事情是想要評估機器
link |
01:19:19.720
整體而言
link |
01:19:20.720
了解人類語言的能力
link |
01:19:23.720
那一個知名的例子呢
link |
01:19:24.720
叫做GLUE
link |
01:19:26.720
GLUE就是澆水的意思
link |
01:19:28.720
它是General Language Understanding Evaluation的所行
link |
01:19:33.720
那GLUE它產生的緣由就是
link |
01:19:36.720
過去都是每一個任務分開做
link |
01:19:39.720
每一個任務都有一個模型
link |
01:19:41.720
那GLUE呢 集合了很多主辦方覺得重要的
link |
01:19:47.720
跟了解人類語言
link |
01:19:49.720
跟理解人類語言有關的任務
link |
01:19:51.720
然後希望你可以用一個模型
link |
01:19:54.720
去評估這些任務
link |
01:19:55.720
去解這些任務
link |
01:19:56.720
然後看看你可以得到什麼樣的結果
link |
01:20:00.720
那在GLUE裡面呢
link |
01:20:03.720
這個任務分成三大類
link |
01:20:06.720
分成三大類
link |
01:20:07.720
我這邊用三個不同的顏色來表示
link |
01:20:09.720
那前兩個啦
link |
01:20:11.720
第一個是Linguistic Acceptability
link |
01:20:13.720
就給機器開一個句子
link |
01:20:14.720
它要決定說這個句子有沒有文法錯誤
link |
01:20:17.720
第二個是Sentimental Classification
link |
01:20:19.720
那像這兩個任務啊
link |
01:20:21.720
都是給機器開一個句子
link |
01:20:22.720
它要決定那一個句子的類別
link |
01:20:25.720
接下來有這個Paraphrase的Corpus
link |
01:20:29.720
跟Quora的Question Pair
link |
01:20:32.720
跟Semantic Textual Similarity
link |
01:20:34.720
這三個任務都是給機器兩個句子
link |
01:20:38.720
讓機器判斷說這兩個句子的意思
link |
01:20:40.720
是不是一樣的
link |
01:20:41.720
這兩個句子表面上詞彙可能用的不同
link |
01:20:44.720
但也許是一樣的意思
link |
01:20:45.720
機器必須要能夠把它偵測出來
link |
01:20:48.720
所以這個綠色的這三個任務
link |
01:20:50.720
都是讓機器輸入兩個句子
link |
01:20:52.720
輸出就是這兩個句子的意思像或者是不像
link |
01:20:56.720
所以它們都是給多個sequence
link |
01:20:59.720
輸出一個class的問題
link |
01:21:01.720
那剩下這四個啊
link |
01:21:03.720
都是Natural Language Inference NLI相關的問題
link |
01:21:07.720
那NLI我們之前已經講過了
link |
01:21:09.720
就是給機器兩個句子
link |
01:21:11.720
一個是前提
link |
01:21:13.720
一個是假設
link |
01:21:15.720
接下來機器要輸出就是
link |
01:21:17.720
根據這個前提這個假設
link |
01:21:19.720
是不是合乎邏輯的
link |
01:21:22.720
它是矛盾的嗎
link |
01:21:24.720
還是蘊涵的
link |
01:21:25.720
還是無法判斷
link |
01:21:27.720
所以這個也是給機器多個句子
link |
01:21:30.720
多個sequence
link |
01:21:31.720
output一個class的問題
link |
01:21:33.720
那這些Corpus都是英文的啦
link |
01:21:36.720
但其實也有中文版的Groo就是了
link |
01:21:40.720
不過Groo啊
link |
01:21:42.720
因為它這邊的問題你會發現說
link |
01:21:44.720
它其實並沒有涵括
link |
01:21:46.720
我剛才講的NLP的所有的類型的問題
link |
01:21:49.720
它這邊所有的問題
link |
01:21:51.720
所有的這個任務
link |
01:21:52.720
它們的輸出都只是一個類別而已
link |
01:21:55.720
那也許這樣子的問題不夠困難
link |
01:21:57.720
所以Groo呢
link |
01:21:58.720
現在算是已經被破台了
link |
01:22:00.720
有了Bert跟他的好朋友們以後呢
link |
01:22:03.720
Machine在Groo上面的performance
link |
01:22:06.720
基本上已經逼近
link |
01:22:08.720
甚至可以說是
link |
01:22:09.720
稍微超越人類的performance了
link |
01:22:11.720
所以因為Groo有點不夠困難
link |
01:22:14.720
所以後來就有了SuperGroo
link |
01:22:16.720
就是超級的膠水
link |
01:22:18.720
找了一些更難的任務
link |
01:22:20.720
把一些更難的任務集合起來
link |
01:22:22.720
然後來評估機器理解人類語言的能力
link |
01:22:26.720
那SuperGroo裡面呢
link |
01:22:28.720
有八個任務
link |
01:22:29.720
那這邊我們就不一一細看啦
link |
01:22:31.720
那這些任務基本上
link |
01:22:33.720
都是跟Q&A比較有關係的
link |
01:22:38.720
舉例來說
link |
01:22:39.720
第一個這個部落Q
link |
01:22:41.720
就是給機器讀一篇文章
link |
01:22:43.720
問一個問題
link |
01:22:44.720
然後機器呢
link |
01:22:45.720
要回答yes或no
link |
01:22:47.720
它都是yes no的問題
link |
01:22:49.720
那像這樣子的model
link |
01:22:51.720
就是吃兩個sequence
link |
01:22:53.720
output就是class
link |
01:22:55.720
那這個也是沒有超出我們講的
link |
01:22:57.720
NLP有的這個任務的分類
link |
01:23:00.720
或者是說
link |
01:23:02.720
你給機器一個敘述
link |
01:23:04.720
然後問它說是什麼樣的原因
link |
01:23:06.720
造成這件事的發生
link |
01:23:08.720
然後給兩個選項
link |
01:23:09.720
那機器要吐出哪一個選項才是正確的
link |
01:23:12.720
那這其實也是一個分類的問題
link |
01:23:14.720
機器就是把這些所有的句子
link |
01:23:16.720
通通讀進來
link |
01:23:17.720
輸出就是哪一個選項才是正確的
link |
01:23:21.720
它其實
link |
01:23:22.720
當然這些問題實際上非常的困難
link |
01:23:24.720
但是從machine learning
link |
01:23:25.720
從model的角度來看
link |
01:23:26.720
從你的這個NLP任務的輸入輸出來看
link |
01:23:29.720
它其實就是一個分類的問題
link |
01:23:32.720
這邊是
link |
01:23:34.720
這個super glue剩下的四個任務
link |
01:23:36.720
比如說有一個是填空題的任務
link |
01:23:38.720
給你一個敘述
link |
01:23:40.720
給你一個問題
link |
01:23:41.720
但它不是一般問人的那種問題
link |
01:23:43.720
而是說這個敘述裡面
link |
01:23:44.720
有一個地方是被鏤空的
link |
01:23:46.720
要機器把鏤空的地方填進去
link |
01:23:50.720
那其實這也是一個分類的問題
link |
01:23:53.720
或者是說
link |
01:23:54.720
比如說
link |
01:23:58.720
給機器兩個句子
link |
01:23:59.720
這兩個句子裡面都有同樣的詞彙
link |
01:24:02.720
但他們意思不太一樣
link |
01:24:03.720
機器能不能夠知道說
link |
01:24:04.720
這兩個詞彙到底算是意思一樣的
link |
01:24:07.720
還是不一樣
link |
01:24:08.720
或是給機器一個句子
link |
01:24:10.720
然後特別標出一個名詞跟一個代名詞
link |
01:24:15.720
然後問機器說
link |
01:24:16.720
這個名詞跟這個代名詞
link |
01:24:18.720
這個path是跟這個he
link |
01:24:20.720
他們指的是不是一樣的東西
link |
01:24:22.720
這個是一個co-reference的問題
link |
01:24:24.720
不過把co-reference的問題再做簡化
link |
01:24:27.720
簡化成機器只要讀一個句子
link |
01:24:29.720
然後輸出是yes no就好了
link |
01:24:32.720
它也是一個分類的問題
link |
01:24:35.720
這個是super group
link |
01:24:38.720
還有一個比賽叫做D卡NLP
link |
01:24:43.720
它現在是Salesforce在maintain
link |
01:24:45.720
D卡NLP是什麼呢
link |
01:24:47.720
這個D卡NLP的D卡
link |
01:24:49.720
來自decaphone這個詞彙
link |
01:24:53.720
decaphone是什麼呢
link |
01:24:55.720
decaphone它就是十項全能的比賽
link |
01:24:59.720
在D卡NLP裡面有十個NLP的任務
link |
01:25:03.720
然後期待說你能夠用同一個模型
link |
01:25:06.720
來解這十個任務
link |
01:25:08.720
那我剛好說過在NLP的領域過去
link |
01:25:10.720
就是一個任務一個模型
link |
01:25:12.720
那到底機器理解人類的語言的能力到哪裡
link |
01:25:15.720
你不知道機器只是會做一件事
link |
01:25:18.720
也許它並不是真的
link |
01:25:20.720
in general的整體而言了解人類的語言
link |
01:25:23.720
那像D卡NLP還有剛才講的group
link |
01:25:26.720
super group這樣的任務
link |
01:25:27.720
就是要general的測驗機器
link |
01:25:30.720
理解人類語言的能力
link |
01:25:32.720
那D卡NLP裡面有十個任務
link |
01:25:35.720
那這些任務裡面有一些
link |
01:25:36.720
就比剛才講的更加困難
link |
01:25:38.720
因為我們剛才講的任務裡面呢
link |
01:25:39.720
都是分類的問題
link |
01:25:42.720
就像輸出可以是多個sequence
link |
01:25:44.720
輸入可以是多個sequence
link |
01:25:45.720
但輸出呢基本上都是分類的問題
link |
01:25:48.720
在D卡NLP裡面
link |
01:25:49.720
很多任務是像摘要啊
link |
01:25:51.720
是像翻譯啊
link |
01:25:52.720
是需要輸出一個完整的句子的
link |
01:25:55.720
那像這些不同的任務
link |
01:25:57.720
怎麼用同一個模型來解呢
link |
01:26:01.720
那在D卡NLP的原始論文裡面
link |
01:26:03.720
有一個非常有趣的想法就是
link |
01:26:06.720
所有這些不同的任務
link |
01:26:08.720
其實都是question answering的問題
link |
01:26:12.720
那麼到question answering
link |
01:26:13.720
就是給一篇文章
link |
01:26:15.720
給一個問題
link |
01:26:16.720
輸出一個答案
link |
01:26:18.720
那怎麼把各式各樣不同的NLP的任務
link |
01:26:21.720
都看成question answering的問題呢
link |
01:26:24.720
舉例來說如果是翻譯
link |
01:26:26.720
就是給機器一個句子
link |
01:26:28.720
然後給它一篇文章
link |
01:26:30.720
然後現在的問題就是
link |
01:26:32.720
這篇文章它的德文翻譯是什麼
link |
01:26:36.720
然後機器就輸出德文翻譯
link |
01:26:39.720
如果今天是摘要
link |
01:26:40.720
就給機器一篇文章
link |
01:26:41.720
那你的問題就是
link |
01:26:42.720
這篇文章的摘要是什麼
link |
01:26:44.720
機器就輸出摘要
link |
01:26:46.720
如果今天是MLI的問題
link |
01:26:48.720
就給機器一個前提
link |
01:26:50.720
然後給它一個假設當中的問題
link |
01:26:52.720
然後問它說
link |
01:26:53.720
這個假設是蘊含的中立的
link |
01:26:55.720
還是矛盾的關係
link |
01:26:57.720
那這個也是一個像是QA的問題
link |
01:27:01.720
或者是
link |
01:27:02.720
如果你要叫機器做sentiment classification
link |
01:27:04.720
偵測一個句子是正面的還是負面的
link |
01:27:06.720
就給它一篇文章
link |
01:27:08.720
那你的問題是
link |
01:27:09.720
這個句子是正面的還是負面的
link |
01:27:11.720
把它正面
link |
01:27:12.720
這是一個
link |
01:27:13.720
這樣機器就可以做到sentiment classification
link |
01:27:15.720
再把它當作一個QA的問題來看待
link |
01:27:18.720
所以Dcard NLP裡面雖然有十個任務
link |
01:27:20.720
但這十個任務都可以看作QA的問題
link |
01:27:23.720
所以是有機會用同一個模型
link |
01:27:25.720
就解所有的問題
link |
01:27:29.720
這個表裡面NLP的任務
link |
01:27:31.720
我們都已經很快的跟大家提到了
link |
01:27:34.720
輸入一個sequence
link |
01:27:35.720
輸出一個class的有
link |
01:27:37.720
sentiment classification
link |
01:27:39.720
detection, veracity prediction
link |
01:27:41.720
interclassification, dialogue policy
link |
01:27:44.720
輸入多個sequence輸出一個class的有
link |
01:27:47.720
NLI, search engine, relation extraction
link |
01:27:51.720
輸入一個sequence
link |
01:27:53.720
然後給sequence每個token都上個類別的
link |
01:27:56.720
有POS tagging, word segmentation
link |
01:27:58.720
extracted summarization, slot feeding, NEI
link |
01:28:01.720
那extracted QA呢
link |
01:28:03.720
是輸入多個sequence
link |
01:28:04.720
然後要從input的sequence裡面呢
link |
01:28:07.720
拷貝資訊出來
link |
01:28:09.720
那輸入一個sequence
link |
01:28:11.720
輸出一個sequence的有
link |
01:28:13.720
extracted summarization, translation
link |
01:28:15.720
grammar correction, NLG
link |
01:28:18.720
輸入多個sequence輸出一個sequence的有
link |
01:28:22.720
general QA, check bar, state tracker
link |
01:28:26.720
test oriented dialogue
link |
01:28:29.720
當然還有一些例外
link |
01:28:31.720
所以NLP的技術雖然千變萬化
link |
01:28:34.720
但是你只要能夠知道
link |
01:28:36.720
每一種類型的任務要怎麼解
link |
01:28:39.720
你就可以解各式各樣的任務了