搜出來的文本:從文本生成到搜索採樣

©PaperWeekly 原創 · 作者|蘇劍林

單位|追一科技

研究方向|NLP、神經網絡

最近,筆者入了一個新坑:基於離散優化的思想做一些文本生成任務。簡單來說,就是把我們要生成文本的目標量化地寫下來,構建一個分佈,然後搜索這個分佈的最大值點或者從這個分佈中進行採樣,這個過程通常不需要標籤數據的訓練。

由於語言是離散的,因此梯度下降之類的連續函數優化方法不可用,並且由於這個分佈通常沒有容易採樣的形式,直接採樣也不可行,因此需要一些特別設計的採樣算法,比如拒絕採樣(Rejection Sampling)、MCMC(Markov Chain Monte Carlo)、MH 採樣(Metropolis-Hastings Sampling)、吉布斯採樣(Gibbs Sampling),等等。

有些讀者可能會覺得有些眼熟,似乎回到了讓人頭大的學習 LDA(Latent Dirichlet Allocation)的那些年?沒錯,上述採樣算法其實也是理解 LDA 模型的必備基礎。本文我們就來回顧這些形形色色的採樣算法,它們將會出現在後面要介紹的豐富的文本生成應用中。

明確目標

很多時候,我們需要根據一些特定的信息 來生成目標文本 ,用數學的話說就是條件語言模型 ,不過我們無法得到足夠多的語料對 去直接監督訓練一個條件語言模型,而是隻能訓練一個無條件的語言模型 ,但我們又可以人爲地設計一個指標來定量描述 和 之間的聯繫。

那麼在這種情況下,如何根據無條件的語言模型 和 之間的聯繫來做有條件的文本生成,便成爲了我們的研究對象。我們可以稱之爲“受限文本生成(Constrained Text Generation)”

舉例來說,用關鍵詞造句,那麼 就是關鍵詞的集合,我們可以定義示性函數:

繼而定義:

保證了生成句子的流暢性, 保證了生成句子包含所要求的關鍵詞,那麼問題就可以變成最大化操作 或採樣操作 。當然,這裏的 還不是概率分佈,要完成歸一化後纔是真正的概率分佈:

但分母通常是難以顯式計算出來的。那也就是說,我們對待採樣分佈也只瞭解到它正比於某個函數 ,而不知道精確的分佈表達式。

類似的例子並不少,比如說文本摘要。什麼是文本摘要呢?其實就是用更少的文字 儘可能表達出跟原文 一樣的意思,這時候我們可以定義:

這裏的 是某個文本相似度函數,而 是長度的示性函數,即 的長度在某個範圍(可能依賴於 )內,它就爲 1,否則爲 0。此時我們同樣得到了一個未歸一化的概率分佈 ,需要最大化它或者從它裏邊採樣。

很明顯,這個目標就意味着我們要得到一段跟原文語義儘可能相似的、長度滿足一定約束的文字,這不就是摘要的存在意義嗎?所以,這套思路的核心出發點就在於:我們要把自己要生成的目標定量地捋清楚,然後再去執行下一步操作。

困難分析

所以,拋開前面的背景不說,現在我們面臨的問題就是有一個分佈 ,我們只知道 ,即:

中的分母我們無法顯式計算出來。在本系列文章中, 代表文本,即一個離散元素的序列,但後面的推論同樣也適用於 是連續型向量的場景。現在我們要搜索最大位置 或進行採樣 ,後面我們將會看到,搜索最大值其實也可以看成是採樣的特例,因此我們主要關心採樣方式。

前面說了,之所以需要設計一些特別的算法來完成採樣,是因爲直接從 中採樣是困難的,而我們需要理解採樣的困難所在,才能真正理解後面所設計的採樣算法的關鍵之處。困難在哪?

如果 的候選值空間不大,哪怕有 100 萬個候選值,我們都可以把每個 都算出來,然後按照普通的類別採樣來進行。然而,一般 的候選值空間遠遠不止 100 萬,假如 有 10 個分量,每個分量有 1 萬個選擇(對應於候選字數目),那麼總的排列就有 種了,不可能事先算好每一種排列的概率然後依概率採樣。

那怎麼辦呢?所謂“不積硅步,無以至千里”,那就只能一步步來了,也就是說,我沒法直接實現 選 1,那我做 10 次“ 選 1”可以嗎?這就對應着所謂的“自迴歸生成”:

這樣我們就可以先從 採樣一個 ,然後從 中採樣一個 ,依此遞歸了。但是,自迴歸生成只是對應於無條件的語言模型或者是有監督訓練的 Seq2Seq 模型,而如果希望像前面舉的例子那樣,往無條件語言模型的生成過程中加點約束,那麼對應出來的模型就不再是自迴歸的了,也就無法按照這樣的遞歸採樣了。

所以,我們就不得不需要後面介紹的各種採樣算法了,它也是“一步步來”的思想,但所使用的分佈形式更加廣泛一些。

重要採樣

在《從採樣看優化:可導優化與不可導優化的統一視角》[1] 、《如何劃分一個跟測試集更接近的驗證集?》[2] 等文章裏,我們介紹過“重要性採樣”的概念,即如果我們想估計期望 ,但是 又不是易於採樣的分佈,那麼我們可以找一個跟 相近的、易於採樣的分佈 ,然後根據下述變換:

轉化爲從 採樣來算 的期望了,也就是用 對每個樣本進行加權,所以它被稱爲“重要性採樣(Importance Sampling)”。如果只知道 ,那麼重要性採樣也是可以進行的,這是因爲:

所以:

這樣一來,我們發現上式只依賴於 的相對值,不依賴於它的絕對值,所以把 換成跟它成正比的 也是可以的,最終簡化成:

拒絕採樣

上一節的重要性採樣實現了將複雜分佈期望轉化爲簡單分佈期望,但這還不是我們的真正目的,我們要實現的是把樣本從分佈 中採樣出來,而不是估算它的某個期望。思想依然跟重要性採樣一樣,引入易於採樣的分佈 ,然後從中隨機地篩掉某些樣本,使得剩下的樣本服從分佈 。

具體來說,假設有函數 ,我們按照如下流程進行採樣(即“拒絕採樣”):

從 採樣一個樣本 ,從 中採樣一個隨機數 ,若 則接受該樣本,否則拒絕並重新按照此流程採樣。

那麼,此時採樣出來的 真正的概率分佈是什麼呢?其實也不難,由於樣本 被保留下來的概率是 ,因此它的相對概率就是 ,我們只需要將它重新歸一化:

就得到拒絕採樣對應的真正的概率分佈了,從這個形式也可以看出,將接受率乘以一個 0 到 1 之間的數,理論上拒絕採樣對應的分佈是不變的。

這個過程啓示我們,拒絕採樣可以讓我們實現從正比於 的分佈中採樣,那麼根據 ,我們可以讓 作爲接受概率,來進行從 出發的拒絕採樣,結果就相當於從 採樣了。

當然,還沒那麼簡單,根據概率的歸一化性質,除非 恆等於 ,否則 不可能一直都在 內。但這不要緊,只要 有上界,那麼我們就可以選擇一個足夠大的常數 M,使得 ,此時以 爲接受概率即可,剛纔我們說了,乘以一個常數不會影響拒絕採樣對應的分佈。換句話說,也就是這個過程同樣不依賴於完全精確的 ,可以將 換成跟它成正比的 。

關於接受率 ,儘管理論上只要求它 就行了,但實際上還是以 爲好,這是因爲過小的接受率會導致拒絕太多(幾乎來一個拒絕一個),採樣效率太低,生成一個合理的樣本的成本過大了。

類似地,儘管理論上對 的要求只是易於採樣並且 有上界,但實際上 與 仍然是越相近越好,否則依然可能造成接受率過低而導致採樣成本大到難以接受。所以,儘管拒絕採樣看上去提供了一種幾乎能從任意分佈 中進行採樣的方案,但實際應用時近似分佈 的設計依然是一個不小的難題。

本文小結

從本文開始,我們開了個新坑,試圖從離散優化的角度來完成某些文本生成任務(受限文本生成)。它通過確定一個定量的評估目標,然後通過最大化這個目標或者從中採樣就可以得到我們想要的輸出,而不需要標籤數據監督訓練新模型。

在這個過程中,所要用到的工具是一些主要是採樣算法,本文先介紹了其中很基本的重要性採樣和拒絕採樣,後面將會繼續完善該系列文章,敬請大家期待。

參考文獻

[1] https://kexue.fm/archives/7521

[2] https://kexue.fm/archives/7805

更多閱讀

#投 稿 通 道#

 讓你的論文被更多人看到 

如何才能讓更多的優質內容以更短路徑到達讀者羣體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。

總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成爲一座橋樑,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。 

PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學習心得技術乾貨。我們的目的只有一個,讓知識真正流動起來。

???? 來稿標準:

• 稿件確係個人原創作品,來稿需註明作者個人信息(姓名+學校/工作單位+學歷/職位+研究方向) 

• 如果文章並非首發,請在投稿時提醒並附上所有已發佈鏈接 

• PaperWeekly 默認每篇文章都是首發,均會添加“原創”標誌

???? 投稿郵箱:

• 投稿郵箱:[email protected] 

• 所有文章配圖,請單獨在附件中發送 

• 請留下即時聯繫方式(微信或手機),以便我們在編輯發佈時和作者溝通

????

現在,在「知乎」也能找到我們了

進入知乎首頁搜索「PaperWeekly」

點擊「關注」訂閱我們的專欄吧

關於PaperWeekly

PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公衆號後臺點擊「交流羣」,小助手將把你帶入 PaperWeekly 的交流羣裏。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章