back to index
[DLHLP 2020] Deep Learning for Human Language Processing (Course Overview)

link |
好,那這一門課呢,是深度學習與人類語言處理。
link |
英文呢,我就翻成Deep Learning for Human Language Processing。
link |
這一門課要學的是,我們知道說人有人類的語言。
link |
那一般而言,你要讓機器跟人互動,你需要用程式語言來操控機器。
link |
機器只認程式語言,它聽不懂我們人類所熟悉的語言。
link |
而這門課要講的事情是,我們能不能讓機器跟人用人類所熟悉的語言自然的進行溝通。
link |
也就是說,當人說一句話的時候,我們能不能讓機器聽得懂?
link |
當我們寫一段文字的時候,機器能不能看得懂?
link |
反過來說,機器能不能寫出人看得懂的句子,機器能不能夠說出人聽得懂的話?
link |
而這一切讓人類和機器能夠用人類所熟悉的語言溝通的技術,背後用的是深度學習的技術。
link |
那講到這邊,有同學就會問說,這一門課為什麼會叫做人類語言處理呢?
link |
相較於人類語言處理,也許有另外一個你更常聽過的相關詞彙叫做自然語言處理。
link |
英文是natural language processing,常常縮寫成NLP。
link |
所以相較於human language processing,也許natural language processing,NLP是你更熟悉的詞彙。
link |
那什麼是natural language呢?什麼是自然語言呢?
link |
自然語言就是人類在自然而然的情境下發展出來互相溝通的語言,就叫自然語言。舉例來說,中文、英文就是自然語言。
link |
自然語言是相對於另外一種人造的語言而言的,自然語言的相反就是人造的語言。
link |
什麼是人造的語言?比如說程式語言、Python、Java,它們是人造的語言。
link |
而人類的自然語言其實有兩種可能的型態,一種是寫的,它以文字的狀態呈現,另外一種是說的,它以語音的狀態呈現。
link |
所以這門課既然講的是人和機器如何用自然語言來溝通,這門課當然也可以叫做深度學習與自然語言處理。
link |
但是這門課為什麼不叫做深度學習與自然語言處理呢?
link |
它的理由是這樣子的。如果你看一般的自然語言處理相關的課程,比如說一個課程裡面有冠上自然語言處理這個名字的話,通常它都是比較專注在文字上而比較少講跟語音有關的東西。
link |
如果有一本教科書講說這是自然語言處理的教科書,有一門課說這是自然語言處理相關的課程,通常文字跟語音的比例大概是九比一,語音大概會只佔這門課十分之一的內容。
link |
但是在這門課裡面,語音和文字的比例是一樣重的,它是一比一。
link |
所以為了凸顯這門課不只是只有講文字,我們也花很多時間講你其實平常沒有那麼容易可以吸收到的語音相關的知識,所以我給這門課一個比較不一樣的名字,叫做深度學習與人類語言處理。
link |
就希望說,你聽到這個比較奇怪的名字,你就問說,啊,什麼是人類語言處理?我就可以跟你解釋說,自然語言處理雖然也包含語音的部分,不過一般自然語言處理的課是比較專注於文字上、比較少講語音的東西。
link |
我們這門課會花一半的時間講語音的東西,所以這門課跟你一般在網絡上、在其他地方可以找到的自然語言處理相關的課程內容其實是不太一樣的。
link |
那為什麼我們會需要花一半的時間講語音這個東西呢?有人就會說,語音的相關課程沒有那麼常見,是不是代表說語音就不太重要呢?
link |
多數人聽到語音的時候,第一個想到的就是語音辨識。語音辨識,語音辨識,我手機裡就有一個沒有什麼稀奇的,隨便路邊抓一個人都知道語音辨識是什麼。
link |
一般自然語言處理的課,如果他要講語音的話,他也一定只會講語音辨識。比如說,你看一下這個Stanford的NLP的課,他們有花一節課講語音辨識,這是他們唯一提到語音的部分。
link |
或者是你看Dan Jurewski寫的NLP的教科書,他裡面有一章叫做語音辨識,這是他唯一提到語音相關的部分。
link |
但是上完這一門課以後,你絕對不會說語音只有語音辨識,除了語音辨識以外,語音是一個非常廣闊的研究領域,還有很多很多其他的技術是值得我們來學習的。
link |
所以我們需要有一門課來告訴大家,除了語音辨識以外,當然語音辨識是語音非常重要的一塊,等一下我們就會講語音辨識相關的東西,但是除了語音辨識以外,語音還有什麼其他重要的研究課題。
link |
語音在人類語言處理裡面一定是一個非常重要的領域,為什麼?因為很多語言連文字都沒有,很多語言你想做文字處理,根本就沒有文字,你怎麼做文字處理呢?
link |
根據人類民族網,就是一個對人類語言做統計的網站,統計的結果,世界上只有56%的語言是有文字的,也就是說大約將近一半的語言是沒有文字的。
link |
而且這些所謂有文字的語言,我們其實並不知道它的文字使用有多麼的廣泛,有多少人真的在使用這些語言的文字。
link |
舉例來說閩南語,很多人會說閩南語、台語,但是沒有文字。你這樣講,很多人就會生氣了,閩南語、台語是有文字的好嗎?而且還是不止一種書寫的系統,而是一種版本的文字。
link |
所以你不會說它沒有文字,你會說它是有文字的。但是這個文字,不是每個說閩南語的人都會使用,所以說56%的語言有文字這件事情,其實是高估了文字被使用的程度。
link |
很多語言雖然有文字,但是多數人其實都不會使用這種無語言的文字書寫系統,因為可能這種無文字的書寫系統是刻意被創造出來的,多數人根本就不會這種文字書寫系統。
link |
所以很多語言,機器要了解這些語言,沒有辦法透過文字,因為這些語言是沒有文字的,所以我們必須要會語音的技術,才有辦法讓機器理解這些語言。
link |
所以語音在人類語言裡面是沒有辦法被忽視的一塊,所以這門課裡面我們會有一半的時間講語音這個技術。
link |
人類的語言有多麼複雜呢?我們先來看語音的部分。
link |
我們知道語音通常是用多少KHz的Sampling Rate來表示你的語音。舉例來說,你的聲音是16KHz的Sampling Rate,意味著說這段聲音訊號裡面在一秒鐘的時間內就有16K16000個Sampling Rate。
link |
也就是說,這一秒鐘的聲音訊號需要16000個Real Number、16000個數字才能夠表示。
link |
所以語音當然是非常的複雜,因為想想看,一秒鐘的聲音訊號裡面就有16000個點。
link |
所以就好像說古希臘的哲學家赫拉克利特說,人沒有辦法插進同一條河兩次,因為這條河已經不是同一條河,這個人也已經不是同一個人。
link |
語音也是一樣,沒有人可以說同一段話兩次。有人說,我怎麼會沒有辦法說同一段話兩次?我可以跟天線寶寶一樣說你好你好說兩次啊。
link |
可是你每一次說的你好聲音訊號都不會是一樣的。那這邊是我說了四次你好以後所錄下來的聲音訊號,你會發現說同樣是說你好,同一個人說你好,每次說的聲音訊號都是略有不同的。
link |
所以聲音訊號的可能性非常非常大,你根本不可能講同一段聲音訊號兩次。
link |
這個是語音的部分。如果講文字的部分,文字也非常非常地複雜。
link |
文字怎麼個複雜法呢?以下這個資訊是來自《語言本能》這本書的作者是斯蒂芬·平克,是平克寫的,如果沒記錯的話,應該是1994年出版的。
link |
在這本書裏面,為了要佐證說人類的語言有多麽複雜,所以平克舉了這樣子的一個例子。
link |
他說,大家知道金氏世界紀錄最長的句子有多長嗎?他說,金氏世界紀錄最長的句子有1289個字,這是出自一本叫做《Epsilon》的書。《Epsilon》好像是《聖經》裏面的一個人名,我不知道說為什麼《聖經》裏面的人名要被重複兩次。
link |
總之,它是一本小說,它是Volkner寫的。這本小說裏面有一個句子長達1289個字,是平克在寫《語言本能》這本書的時候當時的金氏世界紀錄。
link |
不過這本書畢竟是三十年寫的,那我就查了一下,近年最長的英文句子,有記錄的最長的英文句子有多長呢?
link |
原本小說裏面有一個13955個詞彙那麼多的句子,這個是2014年所出的一本小說,所以平克當然不知道這本小說的存在。
link |
所以這個1200多個詞彙已經不是金氏世界紀錄,金氏世界紀錄最長的句子應該是13955個字。
link |
在《語言本能》這本書裏面,平克也說,其實探討世界上最長的句子的記錄是沒有意義的。為什麼?他說,它可以在一秒鐘之內就破了世界紀錄。
link |
怎麼破這個世界紀錄呢?它可以直接創造一個句子,這個句子就是Volkner寫到,然後把那個1200多個字的句子直接引在後面,它就有1289個詞彙加兩個詞彙了,它就直接締造金氏世界紀錄了。
link |
它必須要克制把這個紀錄送到金氏世界紀錄委員會的這個沖動。但是他說,這個紀錄一點都沒有意義,因為在下一秒鐘又會有人破這個世界紀錄。
link |
因為有人可能說,平克說Volkner寫到,然後再引用那個1000多個詞彙的句子,然後馬上又再破金氏世界紀錄了。
link |
在下一秒鐘又會有人說,誰在意平克說Volkner寫到,後面再引用那個1000多個詞彙的句子,然後又再破金氏世界紀錄了。
link |
所以看到什麼樣的句子是世界上最長的句子,其實是沒什麼意義的,因為你永遠可以輕易地創造更長的句子。
link |
在《語言本人》這本書裡面,舉這個例子是要想要告訴你說,人類的句子可以有多麼地複雜。你永遠可以創造更長的句子出來,探討什麼是最長的句子根本就沒有意義,因為句子是可以有無窮無盡的長度的。
link |
所以舉這些例子,只是想要告訴你說,人類的語言可以是非常非常複雜的。
link |
我們今天既然要積極去理解這些語言,我們今天既然要積極去使用這些語言,當然這是一個非常困難的問題,非常具有挑戰性的問題。
link |
就像很多人會說,人類語言處理是人工智慧的設備,即使如果能夠解人類語言處理的問題,能夠使用人類的語言,那它需要一定程度的智慧才有辦法做到。
link |
這一門課要講的是什麼呢?雖然人類語言處理是如此的複雜,但其實整門課要講的東西可以濃縮在一張投影片裡面。
link |
怎麼濃縮在一張投影片裡面呢?在人類語言處理裡面,我們要學習的模型就是六種,沒有再更多了就是六種。
link |
哪六種呢?我們需要一個模型,它的輸入是語音,輸出是文字,這個顯然就是語音辨識。
link |
我們需要一個模型,它的輸入是文字,它的輸出是語音,這個顯然就是語音合成。
link |
我們需要一個模型,它的輸入是語音,輸出是語音,什麼時候我們會需要用到這個,我們等一下會講。
link |
我們需要一個模型,輸入是語音,輸出是這段語音屬於哪一個類別,這個的應用我們等一下會講。
link |
我們需要一個模型,它的輸入是文字,輸出是文字,我們需要一個模型,它的輸入是文字,輸出是這段文字屬於哪一個類別,然後就結束了。
link |
這一門課,所有要講的東西就在這裡了。這張投影片,如果你知道這些模型要怎麼做的話,你差不多現在就可以回去了。
link |
但是這張投影片裡面的模型要怎麼做呢?很多人聽到這邊可能就知道說,那我真的就是可以回去了。
link |
這張投影片裡面的模型怎麼做的呢?它就是deep neural。我多一個deep neural,比如說end-to-end neural,一個sequence-to-sequence的model,
link |
印券一發,然後就結束了。我們都知道說,遇到問題,用deep learning,印券一發,就結束了。所以你知道怎麼用deep learning,印券一發,
link |
剛才講的那六個模型都不是問題,你現在真的就可以回去了。不知道什麼是印券一發呢?我試著解釋一下什麼是印券一發。
link |
印券一發是一個非常神奇的東西,它是一種信念,它是一種夢想,它是一種浪漫,它是人類最原始的衝動,它是更古以來人類的目標。
link |
所以它沒有辦法輕易用一句話跟你說明什麼叫做印券一發。如果硬要解釋的話,我覺得印券一發這件事包含了三個要件。
link |
第一個要件就是,一個問題拿來,不要想太多,直接用deep learning勸下去,但光是勸下去還不夠。
link |
你還要旁邊有一個人在你勸之前有很不屑的表情,說這個應該勸不起來吧,然後還要有人在勸完以後說,哇靠,這樣居然也勸得起來。
link |
組合這三個要件,就可以稱之為印券一發。你可以看一下左上角的印券一發的故事。
link |
所以今天確實很多時候我們遇到的問題就是印券一發,就跟一拳超人一樣。遇到什麼樣的怪人,通通都是一拳。
link |
比較弱的怪人就是普通的一拳,比較強的波羅斯就是認真的一拳,但通通都是一拳。
link |
所以剛才那六個模型,你都可以兜個deep learning的network,然後收集資料,勸下去就結束了。
link |
所以我們可以說,沒有印券一發無法解決的問題,如果有的話,那就只是你的訓練資料跟GPU不夠多而已。
link |
多收訓練資料、多收GPU、印券一發,好像就可以解決所有的問題。
link |
真的是這個樣子嗎?這門課我們要講的是,在大家都知道印券一發以後,尤其是2014年的年底,有了sequence-to-sequence model。
link |
這樣sequence-to-sequence model好像可以解決大多數人類語言相關的問題,但有這樣可以讓我們印券一發的模型過後,人類語言處理的下一步要何去何從?
link |
在大家都知道印券一發以後,是解決了所有跟人類語言處理相關的問題,還是有了更多的問題,還是有很多問題仍然尚待解決。
link |
所以這門課要講的內容跟你在其他人類語言處理相關的課程,數位語音處理、自然語言處理聽到的可能不太一樣,我們只講最新的研究發展。
link |
我們會focus在近三年來,在人類語言處理相關技術上面,有了印券一發的技術以後,接下來還有什麼樣的進展?
link |
在這邊很簡略地帶大家看過這邊這六個模型。
link |
第一個模型,輸入語音輸出文字,這個就是語音辨識。語音辨識一點都不稀奇,你的手機就可以做語音辨識。
link |
傳統的語音辨識模型當然非常非常的複雜,裡面包含了很多不同的component,包含了很多的模組,你必須要把每一個模組都學通,都做好,統統組起來以後,你才能夠做一個語音辨識的模型。
link |
所以一個模組包括一個聲學模型、一個語言模型、一個詞典,你還需要知道怎麼做好的acoustic feature。
link |
這些東西在這門課裡面,這樣子的系統你不會看到。今天在做語音辨識,你確實可以直接使用end-to-end的技術,直接一個neural network傳下去,就是一個語音辨識系統了。
link |
有的人可能會覺得不可思議,語音辨識這麼複雜的問題,把聲音訊號轉成文字這麼複雜的問題,真的可以用一個neural、一個類神經網路就做到嗎?是可以的,而且它已經在你的日常生活中了。
link |
Pixel 4它在離線時使用的語音辨識,就是一個全深度學習的語音辨識系統。比如說,這個語音辨識系統,它沒有很多很多的模組,它就是一個類神經網路,裝在你的Pixel 4裡面,它可以做語音辨識。
link |
用這樣end-to-end的、用一個neural network就做語音辨識有什麼好處呢?過去傳統的語音辨識系統有很多很多的模組,當然這些模組今天往往也都換成深度學習的模組,但是把這麼多模組集合起來,往往你的model、你的系統會非常的大。
link |
如果你今天只用一個neural network,其他什麼都不用,只用一個neural network,輸入就是聲音訊號,輸出直接就是文字,那你可以把這個模型壓得很小,在Pixel 4裡面,就我所知那個模型的大小就是80MB,所以它可以被塞進你的手機裡面。
link |
這邊我想要跟大家強調的一個點就是,你可能以為放在Pixel 4裡面的語音辨識系統、語音辨識的網路就是你所熟知的sequence-to-sequence的model,答案是不是,它不是你知道的那一個用attention的sequence-to-sequence的model。
link |
為了配合語音的特性,在做語音辨識的時候,做語音的人發明了其他類型的sequence-to-sequence的model來解語音的問題,所以這個其實是非常值得跟大家來分享,在語音上的sequence-to-sequence的model到底跟一般用在其他領域,比如說translation,反正你會在文件上讀到的那個sequence-to-sequence的model有什麼樣的不同。
link |
這個是語音辨識,語音辨識我們常常縮寫成ASR,就是Automatic Speech Recognition,當我說ASR的時候,我指的就是語音辨識。
link |
第二個模型,輸入文字輸出語音,這個是什麼?這個就是語音合成,就是Google小姐。
link |
今天語音合成可以怎麼做呢?一樣就是訓練一個neural network,然後輸入是文字,輸出是聲音訊號,然後就沒有然後了,就結束了。
link |
訓練一個network,輸入文字,然後直接就輸出聲音訊號,你就可以做一個語音合成的系統了。
link |
用這種方法做出來的語音合成系統,它合出來的聲音好不好呢?它合出來的聲音非常好。有一個很知名的做語音合成的學者叫做Kokuda,他在去年的Interspeech,Interspeech就是語音領域的top conference,我知道大家比較熟悉語相的領域,所以知道說語相top conference,CVPR,Interspeech就是語音領域的CVPR。
link |
Kokuda在他的Keynote裡面,他有這樣一張圖,他說,1980年代的時候,流行一句非常知名的句子,他講的是跟語音辨識有關的,就是Battery Genetics說,每次我開除了一個語言學家的時候,我的語音辨識系統就變好了。
link |
這句話有很多個不同的版本,因為它是1980年代發生的事,所以大家已經搞不清楚說,當年Genetics實際上講的是什麼,它在什麼情境下說出這句話,而且它已經過世了,所以也沒有辦法求證。
link |
但是Kokuda說,他第一次聽到用這種Neural Network合出來的語音的時候,他的感想是,有一天大家一定會說,把做語音的學者統統趕出去以後,語音合成的performance就變好了。
link |
因為今天用Neural Network的方法合出來的聲音太驚人了,Kokuda覺得說,這太強了吧,還讓不讓人好好做研究啊,不要做研究了,把做研究的人統統趕出去,反正語音合成的問題好像已經被解決了。
link |
與今天直接用深度學習的技術,直接輸入一段文字輸出聲音,真的可以做到非常好的結果。但是,如果完全用深度學習的技術,直接用Neural Network做語音合成,它有一些意想不到的問題。
link |
什麼樣的問題呢?我這邊拿了一個真正完全就是end-to-end語音合成的系統來demo一下它的結果。舉例來說,我輸入一段文字,這段文字是高雄發大財,GP說什麼呢?
link |
這邊教授的聲音有點小,希望大家聽得清楚。GP合成出來的聲音是這樣子的。你聽起來可能有個回音,但那個不是GP的回音,那個是系統的回音,你把自己的腦中的回音去掉。
link |
所以聽到說它合成出來是蠻好的,或者是我叫它發財念四次,它聽起來像是這樣子的。而且你會發現說它是有異樣頓挫的,它不是把發財很機械式的做成四次。
link |
它是異樣頓挫的,所以說這個異樣頓挫哪來的?我不知道。它論出來就是這樣子好嗎?它自己學到了好嗎?
link |
你就給它一段文字,它自己就輸出這段聲音,它輸出來就是這個樣子。這邊完全沒有做什麼其他的怪怪的東西,也沒有什麼訊號處理的東西,就是一個neural network輸出文字,輸出就直接是語音了。
link |
它突然念不出發了,它突然發不出發了。為什麼會這樣?不知道。論出來的model就是會這個樣子。
link |
所以今天用neural network論出來的model,神奇的地方就是,它多數時候是好的,我要找這個壞掉的例子其實也不太容易,也是找了好幾個小時了,但是它有一定的機率它會壞掉啊,那怎麼辦?有沒有辦法解這個問題?
link |
而這樣的問題確實在真實的系統上也是曾經發生過的。其實今天的Google小姐,還有就我所知的iPhone某個世代以後的版本,用的語音合成都已經是用深度學習的技術來做語音合成了。
link |
但是Google小姐曾經發生以下的問題,Google小姐曾經有破音過,但這個是2018年2月發生的事情,Google已經fix這個問題了,所以現在沒有辦法直接用Google小姐demo給你看,只能找網絡上當時網友放的影片。Google小姐破音是這個樣子。
link |
很神奇,一個單字的時候會破音,但給它好幾個單字放在一起的時候,它們的單字居然就不會破音了。為什麼?不知道啊,是deep learning認出來,就是這樣子。
link |
雖然說TTS用deep learning的技術結果非常驚人,但是仍然有一些問題是尚待科學的。第三個模型是輸入一段聲音訊號,輸出一段聲音訊號。
link |
什麼時候我們會需要輸入一段聲音訊號、輸出一段聲音訊號呢?舉例來說,你可能會用這樣的技術來做speech separation。什麼是speech separation呢?
link |
有一個詞彙叫做cocktail party effect,我們翻成雞尾酒會效應。雞尾酒會效應是什麼呢?雞尾酒會效應是說,今天在一個雞尾酒會,好多個人都在說話。但是人類有一種神奇的能力是,你可以專心在你想要聽的內容。
link |
同時好幾個人在說話,那這些人的聲音的音量也許都是差不多的,但是人類能夠選擇性的注意在你想要聽的內容上,選擇性的注意在某個人你想關注的對象的聲音上。
link |
機器能不能夠做到類似的事情呢?今天機器確實有機會做類似的事情。今天soul separation用了deep learning的技術以後,也取得了一定程度的進展。
link |
兩個人同時說話,聽起來像是這樣。兩個人同時說話,不知道在說什麼,因為兩個人都是女生,聽起來聲音很像,其實還頗難分開的。但是機器它可以把這兩個人的聲音分開,它可以只聽愚者一的聲音,它聽到的聲音像是這樣,只是一個人的聲音。
link |
另外一個人的聲音聽起來像是這樣。這邊你可能會想說,要做到這件事情,也許需要比較深的訊號處理的技術,其實沒有。
link |
這邊就是硬勸一發,連fueler transform都沒有用上,直接硬勸一發,就有可能達到上面這個結果。除了這個speech separation以外,剛才講的輸入一個語音,輸出一段語音,還有什麼其他的應用呢?
link |
它可以拿來做voice conversion。什麼是voice conversion呢?也許在座的同學不是每個人都聽過voice conversion這個詞彙,但你一定看過它的應用,這個東西就是柯南的臨界變聲器。
link |
輸入一段聲音,把它轉成另外一個人的聲音,這個模型也是吃一段語音,輸出一段語音。
link |
如果你今天要硬勸一發做一個voice conversion的model的話,也許最簡單的想法就是,假設你要把A的聲音轉成B的聲音,那你就把A跟B都找來。
link |
你要求A跟B唸一模一樣的句子,A說How are you,B也說How are you,A說Good morning,B也說Good morning,這樣A跟B都唸一樣的句子,唸個幾百、一千句,希望機器就可以硬勸一發,然後自動學到怎麼把A的聲音轉成B的聲音。
link |
但是對voice conversion這個技術來說,這樣做顯然是不切實際的。舉例來說,假設我要把我的聲音轉成心源結液的聲音,我得先把心源結液找來。
link |
就算我退一半步說,我真的把心源結液找來好了,它也不會說中文,所以它沒有辦法跟我唸一模一樣的句子。
link |
所以怎麼辦呢?我們需要一些直接用never硬勸一發以外的技術,我們期待機器有沒有可能在只聽過A的聲音、只聽過B的聲音、A跟B不一定要唸一樣的句子,甚至不需要說同樣的語言,機器都有機會把A的聲音轉成B的聲音。
link |
以下是一個真正的demo。這邊就讓機器聽兩人的聲音,而且這邊做的是one-shot learning,但是我會講說這種one-shot learning的技術是怎麼做的。
link |
所謂one-shot在這邊的意思是說,這兩人的聲音,機器各自聽過一句。沒有再多了,每個人的聲音就各自聽到一句,機器聽到的聲音是這樣子的,與者A的聲音是這樣子的。
link |
我說,"Do you want to study a Ph.D.?"就是你想不想念國班。因為在台大都沒有什麼人想念國班了,所以老師就要不斷地說這一句話。但是如果我說,問你要不要念博士的話,大家都不想要念博士。
link |
如果把我的聲音轉成心緣結義的聲音,心緣結義的聲音聽起來像是這個樣子。他說的是日文,有一點小聲,但是他說的是日文。機器在聽過一句我的聲音、聽過一句心緣結義的聲音以後,它可以試圖把我的聲音轉成心緣結義的聲音。聽起來大概像是這個樣子。
link |
因為我也沒有聽過心緣結義說英文,所以我不好跟你comment說這個話像不像。反正心緣結義叫你念博班,然後跟我簽下去就是了。
link |
你也可以把心緣結義的聲音轉成我的聲音,就是用我的聲音念一句日文,聽起來像是這個樣子。我也不知道我自己在說什麼了,聽起來像是一句日文就是了。
link |
接下來我們要講輸入一段聲音,然後判斷這段聲音屬於哪一個類別。判斷這段聲音屬於哪一個類別,它也有非常廣泛的應用。
link |
舉兩個例子,第一個例子是語者辨認,你給機器聽一段聲音,要求它辨認出這段聲音是哪一個人講的。另外一個例子是keyword spotting,就是從一個句子裡面檢測出這個句子裡面有沒有某一個關鍵的詞彙。
link |
這種keyword spotting的技術,最常用的一個應用就是把它用在喚醒詞上面。你知道,今天這些語音助理,比如說Alessa、Google Home、Siri,它們都有某一個喚醒詞。
link |
比如Alessa,你要叫它的名字,它才會醒過來。Google Home,你要說OK Google,Siri,你要說Hey Siri,它才會醒過來。但是它今天,它如果要使用這樣子的喚醒詞的技術,它必須不斷的在聽你的聲音。
link |
那要一直聽環境中的聲音,這顯然是非常耗費資源的。所以如果你要做keyword spotting的技術,不只要求準確率,還必須要求你的模型必須要夠小,它必須要夠省電。
link |
所以除了硬確率發,得到很高的正確率以外,如果你想做keyword spotting的技術,如何省電,如何壓縮模型,是不可忽略的一項技術。
link |
講到這邊,我就想講一個喚醒詞的故事。這個故事是這個樣子的。在2017年的1月,在德州有一個小女孩,這個小女孩對她的Alessa說,Alessa,你可不可以跟我玩娃娃屋?
link |
然後Alessa就說好啊,然後她家就收到了一個很高額的帳單,就買了一個娃娃屋。而這件事情並不是終結。這件事情上了一個新聞,然後主播說,我喜歡那個說Alessa給我買娃娃屋的小女孩,
link |
然後就啟動了世界各地的Alessa,他們都要去買娃娃屋了。但是這件事情還沒有結束。漢堡王看到了這個事情以後,想了一個神奇的廣告。在我看來,這根本是八旗等級的想法。
link |
漢堡王想要廣告他的華寶。華寶以前那個活大友就買一送一了,然後漢堡王是怎麼廣告他的華寶的?他是這樣廣告的。
link |
主持人:"OK Google, what is the Whopper Burger?"
link |
主持人:"在這個廣告上架之前,他這句話被改成,華寶是用100%純牛肉做的,改了人叫做Fermentional123。據說這個Burger King的Marketing Chief,他的IG帳號就是Fermentional123。
link |
但是就在這個廣告上架之後,大家都意識到了,Google Home念的就是Wikipedia,Wikipedia馬上被隨便亂改了。你可以看一下,那一陣子的Wikipedia,在數分鐘之內被連改了數次。
link |
有人說華寶是用100%的小孩做的,有人說華寶是用老鼠肉、用你的指甲剪下來的屑屑做的,有各種各式各樣的亂改。後來我發現,有一個人把它改回正常的了,但在後面偷酸,華寶改了很多次以後還是贏不過大麥克,有各種各樣的偷酸,然後就瞬間被改了數次。
link |
不過後來Google試圖阻止這件事。他們怎麼阻止這件事呢?因為這則廣告播出會是在同一個時段,所以Google Home會在同一個時間湧入大量一樣的Request。
link |
所以如果今天在同一個時間湧入一樣的Request,他們就會把那個Request關起來,就沒有辦法讓Burger King使用這個技術來進行廣告。不過這件事就顯示說,今天這個語音助理是多麼的普及,甚至普及到漢堡王可以用個奇招來進行廣告。
link |
接下來我們要講說,當今天我們要考慮的模型要輸入的是文字的時候,我們有什麼樣的技術來處理文字?
link |
講到處理文字,當然大家可能比較常想到的是word embedding。不過這門課我們就不講word embedding了,因為word embedding是大家都知道的東西。在文字處理的領域,在NLP的領域,出現了一個巨人,就是Bert跟他的好朋友。
link |
這個巨人一腳踢破了瑪麗亞之牆,就是過去很多NLP的被動地牆。Bert的技術發展得非常非常快。Bert有一個前身,有一個祖先,叫做Elmo,他是18年3月的時候發表的,Bert他是在18年10月的時候發表的。
link |
不管是Elmo還是Bert,他們都是芝麻街的人物,我就想問這些人是有多喜歡芝麻街?後面的人想要提類似的模型,都也要用芝麻街的人物湊梗才行。
link |
所以馬上就出現了兩個Ernie,他們統統都是Bert的好朋友。Ernie就是Bert的好朋友,馬上就出現兩個Ernie,完全不一樣的東西。
link |
因為看他們的Paper的話,他們的名字湊成Ernie,也真的是非常牽強,感覺就是硬湊的,就是硬湊一個Ernie出來。然後還有GPDQ,他是19年2月的時候發表的。
link |
我就想問說,為什麼你不選一個含那個芝麻街角色的名字,為什麼你是別的東西?後來4月的時候有了Ernie,6月的時候有了Axel,7月的時候有了Bert。各式各樣的模型,如雨後春水般不斷地出現。
link |
而這些模型都越來越巨大,一開始Elmo有94個million的參數,後來Bert有340個million的參數,那個時候大家覺得說,哇,Bert好大啊,他是一個大巨人啊。
link |
但是跟GPDQ比起來,他其實也只是小小的而已,GPDQ的參數大概是Bert的五倍,GPDQ可以交換Bert的材質。
link |
但是相較於後來更大的模型,GPDQ只是這樣子而已。後來有Megatron,他有8個billion的參數,有T5有11個billion的參數,還有Turing、NLG有17個billion的參數。
link |
因為他是Turing,所以就放一個Turing的照片,這麼大。他可以把GPDQ玩弄在手掌心。T5是Google出的,不過我不知道T5有什麼樣具體的形象。不過福特汽車有一款是T5,所以就放了一個T5的汽車,他可以把GPDQ輾過去。
link |
好,那剛才講的是輸入文字的時候,我們可以做什麼樣的事情,有什麼樣的技術。那當輸出文字的時候,今天有什麼樣的技術是我們需要關注的呢?
link |
那很多人可能都知道說,如果今天要輸出文字,你可能就用一個RNN,然後把文字一個一個的按照順序輸出出來。舉例來說,如果你想說I have a dream,第一個產生出來的詞彙是I,然後接下來產生have,再來產生of,再來產生dream,這樣子的model叫做automatically regressive的model。
link |
你用RNN,一般傳統的RNN,我們在機器學習那一門課有講過的RNN,你就可以做到這件事情。但是今天在NLP的領域,有了另外一個新的潮流,就是automatically regressive的model。
link |
你為什麼今天產生一個句子的時候一定要按照順序由左而右的生成呢?我們有沒有別的更好的生成的順序呢?比如說,先生成這個句子裡面最關鍵的詞彙,比如說先把dream寫下來,這樣會不會比較好呢?
link |
再說,有了一個夢想以後,是誰有夢想呢?是我有夢想。那我跟夢想之間的關係是什麼呢?是有。那我有幾個夢想呢?我有一個夢想。那這樣的順序來產生一個句子,會不會比按照順序由左而右生成還要更好呢?這是automatically regressive的model想要探討的問題。
link |
我們會在課堂裡面先跟大家講這方面的技術。我們剛才已經講了,如果今天輸入是文字的時候要怎麼處理?如果輸出是文字的時候要怎麼處理?
link |
湊起來,你就知道輸入輸出同時是文字的時候,你要怎麼處理。而輸入輸出同時是文字,有非常非常多的運用。舉例來說,如果你輸入是一種語言,輸出是另外一種語言,那你就可以做翻譯。
link |
如果你的輸入是一篇長篇大論的文章,輸出是簡短的摘要,那你就可以讓機器自動學會把文章進行摘要,你可以讓機器自動學會做summarization。
link |
你可以讓機器輸入一個句子,輸出針對這個句子的回應,那你就可以做一個checkbox,你就可以做聊天機器人。
link |
你讓你的機器輸入一篇文章,還有一個問題,輸出是這個問題的答案,那你就可以讓機器做question answering,所以輸入文字輸出文字,它有非常非常廣泛的應用,你可以想到它可以用在很多的地方。
link |
而多數NLP的問題,有一些你根本不覺得它可以看作是輸入一段文字、輸出一段文字的問題,其實你都有可能把它轉化成輸入一段文字、輸出一段文字。
link |
舉例來說,我們看文法剖析這件事情。文法剖析這件事情就是要讓機器讀一段文字,比如說John Hasselhoff,然後產生一顆文法的剖析術。這直覺上不太像是一個輸入一段文字、輸出一段文字的問題。
link |
但是,你可以把一個文法剖析術看作是一串文字,你可以把文法剖析術用一串文字來表示,那你就把文法剖析這個問題變成輸入文字、輸出文字的問題。
link |
接下來,就用處理輸入文字、輸出文字的方法,比如說sequence to sequence model,硬券下去,你也可以做synthetic parsing,你也可以做文法剖析這件事情。
link |
好,那輸入文字、輸出文字這樣子的模型應用非常非常的廣,所以如果我們是以應用為單位來跟大家做介紹,一個一個應用介紹的話,你馬上就會覺得非常無聊。
link |
過去不同的領域當然有不同的技術,但今天如果你看這個translation、summarization、缺bar、question、answer,你會發現說用的模型大同小異,通常就是sequence to sequence加些attention,看來看去都是差不多的東西,所以一個一個應用介紹你會覺得相當無聊。
link |
所以在這門課裡面,我們就是focus在question、answer這件事。雖然我們可能不會花太多時間講翻譯、摘要或者是缺bar,但是一法通貫法通,他們用的模型都是差不多的,都是輸入一段文字、輸出一段文字。
link |
如果你知道question、answer怎麼做,你可以直接套用到其他應用上。到目前為止,我們就把所有這六個模型都很簡短的看過了一次。除了介紹這六個模型以外,我們還會講一些其他的技術。
link |
舉例來說,我們會講meta-learning。什麼是meta-learning呢?meta-learning就是能讓機器學習如何學習。怎麼叫做學習如何學習呢?
link |
我們知道說,今天的學習的演算法是人設計出來的。人的智慧有限,所以人設計出來的演算法,他的能力也有一定的限制。我們有沒有可能讓機器自己設計出學習的演算法,去解更複雜的問題呢?
link |
尤其是像人類語言處理相關的問題,非常複雜、去練資料又少,我們有沒有可能讓機器想出更好的演算法,在人類語言處理相關的應用上做得更好呢?
link |
meta-learning想要做的事情就是,讓機器現在很多的任務上進行學習,但他學習的目標不是進行這些任務,而是歸納出更好的學習方法,變成一個更厲害的學習者。
link |
為了讓新的任務進來,因為現在你的機器已經是更厲害的學習者了,也許他可以用更少的資料,在更短的時間內就學會這個任務。
link |
而這樣的技術,我們在機器學習那一門課已經講過,但是如果把它用在人類語言處理相關的技術,用在語音、用在文字上,它會是什麼樣子呢?
link |
舉例來說,把這樣的技術用在語音電視上,那可能就是讓機器先去學習一些其他語言的語音電視,它先學習Bengali、Tagalog、Zulu這些語言的語音電視,它先在這些語言上找出學習語音電視比較好的演算法以後,期待今天要學一個新的語言,它可以學得更快更好。
link |
我們這一門課會看到meta learning在英文字上的應用。我們知道在影像上常常會有人做image style transfer,你只要給機器兩堆圖像,它可以把兩堆圖像的風格互轉。
link |
Voice conversion也非常像是風格轉換的任務,你可以把兩個人不同的語音當作兩種不同的風格,用Voice conversion技術在兩種不同風格的語音間互轉。
link |
但是除此之外,這樣的技術能不能夠被用在文字上呢?舉例來說,我們可不可以把長的文章視為一種風格,短的摘要視為另外一種寫作的風格,然後套用風格轉換的技術,我們就可以讓機器自動學會怎麼做文件摘要。
link |
或者是我們把每一種語言都視為一種寫作的風格,英文視為一種書寫的風格,中文視為一種書寫的風格,然後給機器一堆英文跟一堆中文,但是不告訴它英文跟中文之間的關係,它有沒有可能就自動學會做翻譯呢?
link |
或者甚至是如果給機器一堆語音、一堆文字,把語音當作一種風格、文字當作一種風格,沒有告訴機器語音跟文字之間的關係,它有沒有可能就自動學會做語音辨識呢?
link |
這個是我們在課堂上會跟大家講的一個問題,能不能夠讓機器在閱讀一些文章以後,它抽取出從這些文章裡面學到的知識,然後它能不能夠把這些學到的知識放到模型裡面。
link |
我們今天常常說,機器學習學出來的模型,它缺少knowledge,它缺少它們。我們能不能讓機器在閱讀大量文章以後,學到knowledge,再把這些knowledge放到一堆把它學出來的模型裡面。這個是我們在課堂上會講的一件事情。
link |
我們也會講adversarial attack,adversarial attack在影像上非常非常強烈。大家都知道說,你今天給它圖片,上面加上人根本就看不出來的小小的擾動,就讓影像辨識的系統整個崩壞掉。
link |
影像可以被攻擊,同時語音、文字也是有可能被攻擊的。舉例來說,你打電話去銀行的時候,那些客戶往往會有語者驗證的系統來驗證打電話進來的是不是客戶本人。
link |
今天因為有voice conversion的技術,所以語者驗證的系統並不是安全的,有可能用聲音變造的技術來騙過語者驗證的系統。為了要預防聲音變造的技術,有了一個新的技術叫做anti-smoothing。
link |
anti-smoothing做的事情是,作為一個系統,這個系統去偵測說,一段聲音訊號有沒有被騙到,一段聲音訊號是不是語音轉換的結果,一段聲音訊號是不是語音合成的結果,一段聲音訊號是不是錄音的結果。
link |
但是我們發現說,這種anti-smoothing的系統其實也是非常容易被攻擊的,我們可以輕易地把一段合成出來的聲音訊號加上非常微小的雜訊,甚至是人根本聽不出來的,但是可以把anti-smoothing的系統騙過去,所以這個是騙過語者驗證的系統。
link |
那你也有可能騙過語音辨識的系統,你可以在一段聲音訊號裡面加上一點點的雜訊,這段聲音訊號裡面聽起來可能只是音樂,那你加上了雜訊以後,Alessa聽起來就是把後門打開,這顯然在未來會是一個非常嚴重的自然問題。
link |
上面舉的是語音的例子,那在NLP的文字上也有同樣的問題。舉例來說,我們今天可以用NLP的技術讓機器自動閱讀一篇文章以後,問它問題,它可以得到正確的答案。
link |
舉例來說,我們今天可以用NLP的技術讓機器自動閱讀一篇文章以後,問它問題,它可以得到正確的答案。 但是你今天可以輕易地騙過機器,你只要在文章裡面都加上,"Why? How? Because to kill American people.",接下來不管問它什麼問題,它的回答都是,"To kill American people.",整個都壞掉了。
link |
今天文字處理上也是有可能被攻擊的。最後,我們知道說在影像上,我們有一系列experimental AI的技術,今天在做影像辨識的時候,機器不只可以看到一張圖片辨識出這張圖片是什麼樣的類別,它還有機會告訴你辨識出這個類別的理由。
link |
在文字上,我們能不能夠做到一樣的事情? 在文字語音上,我們能不能做到一樣的事情? 舉例來說,假設你今天問機器一個問題,機器得到正確的答案,它能不能夠順便告訴你它得到正確答案的理由呢? 我們會看看experimental AI在人類語言處理上面的應用。