【Beam Search】波束搜尋的直觀解釋
原題:An intuitive explanation of Beam Search
原文:HTML
作者:Renu Khandelwal
在本文中,將詳細介紹神經機器翻譯是如何使用序列到序列(sequence to sequence)演算法來為目標語言找到句子中最相關的單詞的。
What is Beam search?
為了理解波束搜尋(Beam search),我們將以序列到序列的神經機器翻譯為例來說明。
序列到序列模型使用具有長短時記憶(LSTM)或門控迴圈單元(GRU)的編碼器和解碼器框架作為基本塊。
編碼器(Encoder)對映源序列(source sequence),對源資訊進行編碼,並將其傳遞給解碼器。解碼器將來自編碼器的編碼資料作為輸入,同時將字串起始符 <START>
作為初始輸入,以產生輸出序列。
這個源序列(源語句)是印地語的一個句子,目標序列是用英語生成的。希望為翻譯選擇最合適、最有可能與印地語句子意思相匹配的單詞。
如何為目標序列選擇最佳和最有可能的單詞?
一個簡單的方法是用目標語言建立詞彙庫,比如10000個單詞,然後根據源序列,得到10000個目標單詞的概率。源語句在目標語言中可能有多種可能的翻譯。
應該隨機選擇任何翻譯嗎?
我們的目標是選出最好最有可能翻譯的詞,所以我們根據源句選擇概率最大的目標詞。
應該只挑一個最好的翻譯嗎?
貪婪搜尋(Greedy Search)演算法為每個時間步長選擇一個最佳候選作為輸入序列。只選擇一個最佳候選可能適合當前的時間步,但當我們構建完整的句子時,它可能是一個次優選擇。
波束搜尋(Beam Search)演算法基於條件概率在每個時間步長為輸入序列選擇多個備選方案。多個備選方案的數量取決於一個稱為波束寬度(Beam Width)的引數 B B B。在每個時間步,波束搜尋選擇 B B B 個具有最高概率的最佳備選方案作為該時間步最可能的選擇。
讓我們舉個例子來理解這一點。
我們將選擇 beam width=3;英語詞彙有10000個。
第一步:給定輸入句子,找出概率最高的前3個單詞。最可能的單詞數量基於波束寬度。
- 將編碼後的輸入句子輸入到解碼器;解碼器將對詞彙表中的所有10000個單詞應用softmax函式。
- 從10000個概率得分中,選出概率最高的前3個單詞。
- 考慮翻譯單詞的3個最可能的選擇,因為波束寬度設定為3。如果波束寬度設定為10,則選擇概率最高的前10個單詞。
- 把最重要的三個字:I,My,We 儲存在記憶體中。
Step 1:Find three words with the highest probability based on the input sentence
貪婪搜尋總是隻考慮一個最好的選擇。
第二步:根據條件概率找到第一個和第二個單詞的三個最佳配對。
Step 2: Find the top 3 pair of words for the first and second word of the translated sentence
- 將第一步中選擇的前三個單詞(I, My, We)作為第二步的輸入。
- 將softmax函式應用於詞彙表中的所有10000個單詞,為第二個單詞找到三個最佳選項(上圖中為:am,parent,will)。在這樣做的同時,我們將使用條件概率找出最有可能形成一對的第一個和第二個單詞的組合。
- 為了找到第一個和第二個單詞的3個最佳對,我們首先取第一個單詞
“I”
,對詞彙表中的所有10000個單詞應用softmax函式。對第一個單詞中的候選“My”
和“We”
做同樣的操作。 - 以上操作需要與執行30000個不同的組合,選出第一個和第二個單詞的前3個詞對。結果為:
“I am”
,“My parents”
,“I will”
。 - 刪除第一個單詞
“We”
,因為沒有找到任何帶有“We”
的詞對,而第一個單詞和第二個單詞的條件概率很高。 - 在每一步,都例項化(instantiate)編碼器-解碼器網路的三個副本,以評估這些部分語句片段和輸出。網路的副本數與波束寬度的大小相同。
第三步:根據輸入的句子和選擇的第一個和第二個單詞,找出第一個、第二個和第三個單詞的三個最佳配對。
Step 3: find the most likely choice of the first three words in the translated sentence
- 連同輸入句子和上一步得出的前3個第一和第二個單片語成的單詞對:
“I am”
、“My parents”
和“I will”
,找到條件概率最高的第三個單片語成的單詞對。 - 以上操作需要再次執行30000個組合來選擇第一個、第二個和第三個單詞的最佳和最可能的組合,並例項化seq2seq、編碼器-解碼器模型的三個副本。
- 前2個第一、第二和第三個單片語成的單詞對是:
“I am visiting”
、“I will visit”
和“l am going”
。 - 刪除
“My parents”
組合,因為我們在前三個單片語成的單詞對中沒有找到與之相關的單詞對。
繼續這個過程,選出3個概率最高的句子。這3個句子的長度可以不同,也可以相同。
Three output sentences with the highest conditional probabilities and different lengths
我們最終選擇解碼器的輸出作為概率最高的句子。
波束寬度(beam width)的值越高,翻譯效果會越好嗎?
較高的光束寬度將提供更好的翻譯結果,但會使用大量的記憶體和計算能力。
當波束寬度為3,詞彙表為10000時,需要在每個時間步評估30000種組合,建立3個編碼器-解碼器例項,最大句子長度為9。建立編碼器-解碼器的多個副本並在每個時間步計算30000個單詞的條件概率需要大量記憶體和計算能力。
較低的波束寬度將導致較差的翻譯結果,但卻減少了記憶體佔用和運算資源。
Conclusion
波束搜尋是序列到序列(sequence to sequence)深度自然語言處理演算法中最流行的搜尋策略,如神經機器翻譯、影像字幕、聊天機器人等。
波束搜尋使用條件概率,基於波束寬度考慮多個最佳選項,優於次優的貪婪搜尋演算法。
References
相關文章
- tpextbuilder- Search 搜尋UI
- HTML input search搜尋域HTML
- Beam Search快速理解及程式碼解析
- 最佳路徑搜尋(二):啟發式搜尋(代價一致搜尋(Dijkstra search),貪心搜尋,A*搜尋)
- PDF Search for Macpdf檔案搜尋工具Mac
- PDF Search for Mac(pdf檔案搜尋工具)Mac
- PDF檔案搜尋工具PDF Search for MacMac
- PDF文件搜尋工具:PDF Search Mac版Mac
- 二分搜尋樹(Binary Search Tree)
- pdf檔案搜尋工具:PDF Search MacMac
- item_search - 按關鍵字搜尋商品
- 谷歌上線資料搜尋引擎 Dataset Search谷歌
- 談談對搜尋技術Elastic Search&Lucene的理解AST
- CSU 1562 Fun House(直線搜尋)
- 【知識點】深度優先搜尋 Depth First Search
- 深度優先搜尋 (Depth First Search 簡稱:DFS)
- WordPress模板層次16:搜尋模板search.phpPHP
- 二叉搜尋樹(Binary Search Tree)(Java實現)Java
- win10藍芽一直搜尋怎麼處理_win10藍芽一直在搜尋解決方法Win10藍芽
- 小白的深度優先搜尋(Depth First Search)學習日記(Python)Python
- 96-Unique Binary Search Trees 二叉搜尋樹的數量
- PDF Search for Mac(pdf檔案搜尋工具)13.6啟用版Mac
- 二分搜尋樹系列之[查詢(Search)-包含(Contain)]AI
- 二分搜尋樹系列之「查詢(Search)-包含(Contain)」AI
- 1688關鍵字搜尋新品資料API介面(item_search_new-按關鍵字搜尋新品API
- MacOS的Safari搜尋欄無法搜尋怎麼解決?Mac
- 解讀論文《Agglomerative clustering of a search engine query log》,以解決搜尋推薦相關問題
- 47_初識搜尋引擎_search api的基礎語法介紹API
- 關於 SAP 產品 UI 的搜尋引擎優化 SEO - Search Engine OptimizationUI優化
- iOS-CocoaPods之pod search xxxxx 別人搜尋不到自己寫的框架iOS框架
- 解決 PbootCMS 搜尋未搜尋到任何資料的問題boot
- 蘋果電腦上pdf檔案搜尋工具——PDF Search for Mac蘋果Mac
- PDF Search for Mac(PDF文件搜尋工具) v10.12啟用版Mac
- 實測4大AI搜尋:ChatGPT Search頻翻車,Perplexity仍是「王者」AIChatGPT
- 教你用Elastic Search:執行第一條Hello World搜尋命令AST
- 如何在Java中實現二叉搜尋樹( binary search tree)?Java
- WordpressCMS主題開發10-新增搜尋框功能search.phpPHP
- DFT波束形成