這幾年,基於預訓練語言模型的對話生成以及成為NLP研究領域中的熱門話題。BERT、ELMo、GPT等模型層出不窮,3月24日,開課吧《Hello,World公開課》邀請清華大學計算機系博士後鄭老師,讓他為我們詳解基於預訓練語言模型的對話生成。話不多說,趕快搬好小板凳來看吧!
什麼是對話系統
說起NLP和對話系統,圖靈測試是繞不開的話題,所謂的圖靈測試是指測試者與被測試者(一個人和一臺機器)隔開的情況下,透過一些裝置(如鍵盤)向被測試者隨意提問。進行多次測試後,如果機器讓平均每個參與者做出超過30%的誤判,那麼這臺機器就通過了測試,並被認為具有人類智慧。
隨著圖靈提出了這個著名測試,各大公司為了透過這個測試,紛紛推出了自家的智慧對話系統來挑戰圖靈測試,這裡面就有我們熟悉的產品,比如蘋果Siri,微軟小冰等。
在上面所有的明星對話系統如果按領域來分,按照回覆生成方式分類可以分為檢索式對話系統、生成式對話系統、檢索式 + 生成式對話系統三種。
所謂檢索式對話系統就是在語音庫中檢索遍歷出和問題最相近的語句並回復。這類系統核心難點是文字匹配模型,如何找出與它語音最相近的回答,這種模型不是我們這次關注的重點。
接下來我們來看看生成式對話系統,這類系統的目標是透過機率統計的問題,建立關於對話回覆的機率分佈,在給定問句的情況下,捕捉生成答句的機率。
預訓練語言模型
在瞭解了對話系統的基本概念後,再來看看預訓練語言模型,從字面意思看預訓練語言模型可以分為預訓練和語言模型兩個部分,這是兩個獨立的技術體系。
語言模型
語言模型的意思是判斷給定句子( w=w1,w2,…,wn )的出現機率的模型。機率大的句子往往是更貼近正確的答案。但這就帶來了一個問題,如何來計算這個機率,最簡單的想法是我們遍歷中文語義庫中所有的句子,再遍歷這個句子出來的次數,做個除法後就會得到一個機率。但是我們都知道,這種笨方法在工程上是行不通的。
那麼有沒有什麼改進辦法?在這裡就又要用到機率論與數理統計的知識了,一句話出現的機率可以被分解成條件機率乘積的形式。利用條件機率性質上面的公式可以寫成下圖乘積的形式。
這在一定程度上將問題做了簡化,對於等式右邊的條件機率乘積,我們就可以用神經網路來做擬合,比如前饋神經網路,迴圈神經網路RNN,到現在的Transformer模型等等,技術的演進給我們帶來了更好的擬合效果。
Transformer模型
預訓練
介紹完語言模型,我們再來看看什麼是預訓練,預訓練是屬於遷移學習中的一種技術,也就是說我們在一個任務中先預訓練這個神經網路的引數,再在另一個任務中微調這個神經網路的引數,就會得到非常好的效果。
常用的預訓練模型有ELMo、BERT、GPT等等,以ELMo為例,它是以Lstm模型為基礎從左到右和從右到左分佈訓練,這樣會得到非常好的初始化引數
基於預訓練語言模型的對話生成
在瞭解語言模型和預訓練技術後,接下來就簡單了,我們只需透過預訓練技術來初始化語言模型
就可以了,還記得之前我們說過的語言模型的公式麼,生成式對話模型就是在此基礎上加上了X這個條件
生成式對話模型:
有了這個,就可以使用神經網路的技術來擬合條件機率的各個乘積項,比如前饋神經網路,RNN、Transformer等。
下圖就是就是一個預訓練語言模型,前面我們有說到,比起語言模型,生成式對話模型是增加了X這個條件項,如果我們增加更多的條件下,比如下圖所示的style,persona等資訊,這個模型訓練出來的結果會更強大
講師介紹
鄭老師,清華大學計算機系博士後,從事對話系統相關研究,在AAAI,EMNLP,IEEE/ACM TASLP等國際頂級會議與期刊上發表論文數篇。