Deep Learning 101, Taiwan’s pioneering and highest deep learning meetup, launched on 2016/11/11 @ 83F, Taipei 101
AI是一條孤獨且充滿惶恐及未知的旅程,花俏絢麗的收費課程或活動絕非通往成功的捷徑。
衷心感謝當時來自不同單位的AI同好參與者實名分享的寶貴經驗;如欲移除資訊還請告知。
由 TonTon Huang Ph.D. 發起,及其當時任職公司(台灣雪豹科技)無償贊助場地及茶水點心。
YouTube | Facebook | 回 GitHub Pages | 網站 | Hugging Face Space
2020/05/29, Ian & Hsiang, NLP Landing & Machine Reading Comprehension
NLP Landing & Machine Reading Comprehension
2020/05/29 Ian & Hsiang
這次分享會的核心圍繞在自然語言處理技術及其在實際應用中的部署與挑戰 [1]。對於新手來說,理解 NLP 是讓電腦「理解」和「處理」人類語言的技術,是入門的第一步 [2]。演講中展示了團隊開發的多種 NLP 應用,這讓初學者能對這個領域的廣度有一個初步認識 [1, 3]。
首先,講者大力推薦申請國網中心 (National Center for High-performance Computing, NCHC) 的 GPU 資源,並稱其「太佛心了」 [1, 4]。這項資源提供了配備 32GB 記憶體的 Tesla V100 GPU 以及將近 360GB 的主機記憶體,對於需要大量運算的研究或專案來說非常充裕 [1, 4-6]。對於想進行深度學習模型訓練的新手而言,取得足夠的計算資源是至關重要的前提,因此了解如何申請這類學術或國家資源是一個實用關鍵點 [4-6]。申請時需要寫一個好的理由,例如用於訓練語音識別模型來追蹤人員位置等 [1, 4-6]。
團隊透過一個網頁 demo 平台展示了多種已完成的 NLP 應用 [1, 3]。這個平台(nlp.twm.org:8383,影片中提到,實際可訪問性需驗證)提供了一個直觀的入口,讓新手可以實際操作體驗 NLP 的能力 [1, 7-9]。展示的應用包括:
演講中提到,這些應用可以串聯起來形成完整的 NLP 流程,例如將會議記錄通過 ASR 轉為文字後,再利用文本分類、NER、MRC 等技術進行處理和問答 [1]。
機器閱讀理解 (Machine Reading Comprehension, MRC) 是本次分享會的重點之一 [1]。
MRC 的核心概念是:根據使用者提出的問題,從給定的文章中「抽出」正確的答案 [1, 3, 5, 6, 11]。對於新手來說,一個關鍵重點是,MRC 模型的答案必須存在於原始文章中,而且必須是連續的一個文字「span」(區間),不能是文章中斷開的片段拼湊而成 [1, 3, 5, 6, 11]。
MRC 的應用場景廣泛,例如將會議記錄轉為文字後進行問答,或從大量文章中快速尋找特定問題的答案,無需手動翻查 [1, 3, 5]。這種自動化的問答方式極大地提高了從文本中獲取資訊的效率 [5]。
在將 MRC 應用於大量文本資料時,會遇到幾個前處理的挑戰 [1, 10]。
演講深入探討了幾種重要的 MRC 模型及其背後的技術 [1, 14]。
QANet
在 Google 的 BERT 模型出現之前,QANet 是廣泛使用且效果較好的模型之一,它與 BERT 同一年(2017 年)問世,但時間上稍早 [1, 7, 11, 14]。QANet 的設計借鑒了較早的 Bidirectional Attention Flow (BiDAF) 模型,但將 BiDAF 中用於序列處理的 LSTM 層替換為堆疊的 Convolution (卷積) 和 Self-Attention (自注意力機制) 層組成的 Encoder Block [1, 2, 11, 14]。QANet 也是第一個將 Self-Attention 用於閱讀理解的模型 [1, 7, 11, 14, 15]。對於新手,理解模型如何從文章中提取資訊是關鍵,而 QANet 展示了卷積網絡(捕捉局部特徵)和注意力機制(捕捉長距離依賴)的結合應用 [2, 14]。
Attention 機制
QANet 和許多現代 NLP 模型都依賴於 Attention 機制 [1, 2, 14]。演講中重點介紹了兩種:
演講中還提到了一個 2020 年的研究,探討了 Self-Attention 的計算方式是否一定需要 Query 與 Key 的複雜點積 [1, 14, 15, 17]。研究者嘗試使用其他方法(如 Decomposable Attention 或直接使用可訓練的 Table)來取代部分計算,發現這些替代方法在某些任務上的效果甚至更好 [1, 14, 17]。這引發了一個思考:雖然原始 Self-Attention 可能在多數任務上表現綜合最佳,但在特定應用場景下,其複雜性不一定是必須的,甚至可能存在更適合的計算方式 [1, 14, 17]。這對於新手來說,提示了即使是看似基礎的核心機制,也仍然是研究和探索的領域 [1, 14, 17]。
Position Encoding (位置編碼)
由於 Self-Attention 機制在計算時是並行的,它本身不包含詞語的序列順序資訊 [1, 14, 18]。為了讓模型能夠區分「蘋果比香蕉好吃」和「香蕉比蘋果好吃」這樣順序不同但詞語相同的句子,需要額外引入位置資訊,這就是 Position Encoding 的作用 [1, 2, 11, 14, 18]。Transformer 和 QANet 使用公式來計算 Position Encoding [1, 14, 18]。然而,這種公式計算的位置編碼通常假設了單向的 Attention (如在 Decoder 部分或 QANet Encoder 中對未來詞 Masking 的情況) [17, 18]。BERT 由於使用了雙向 Attention(前後詞都參與計算),無法直接使用這種公式,因此改用了可訓練的 Position Embedding [1, 14, 18]。對於新手,理解為什麼需要位置編碼以及不同模型處理順序資訊的方式,是理解基於 Attention 模型的重要環節 [1, 14, 18]。
團隊基於 QANet 的改進模型
由於硬體限制(單張泰坦 X P 顯卡無法跑多個 Multi-Head),團隊對 QANet 進行了改進 [1, 14, 18, 19]。主要改動包括:將 Self-Attention 從 Multi-Head 改為 Single Head [1, 14, 18]。為了彌補 Single Head 可能帶來的資訊不足,他們將 Context-Query Attention (CQ Attention) 的計算步驟重複了兩次 [1, 14, 18]。第一次計算的結果與 Encoding 前的結果通過 Highway Network 疊加 [1, 14, 18]。
這項改進在中文數據上取得了不錯的效果 [1, 14, 18]。相比標準 QANet,團隊模型的訓練時間顯著縮短(在單張泰坦 X P 上僅需約 4 小時),且效果略優 [1, 7, 14, 18]。這證明了即使在資源有限的情況下,通過對現有模型架構進行有針對性的調整,也能達到良好的性能 [1, 14, 18]。此外,通過加入翻譯後的英文 MRC 數據作為額外訓練資料,效果還可以再提升 2-3% [1, 7, 14, 18]。演講者推測,重複疊加 CQ Attention 是為了彌補單頭 Self-Attention 的不足 [1, 14, 18]。這種改動的思路對於新手來說很有啟發,它展示了在實際研究和應用中,常常需要根據實際情況(如計算資源)對模型進行調整和實驗 [1, 14, 18]。
BERT 模型在 MRC 中的應用
BERT (Bidirectional Encoder Representations from Transformers) 模型自 2018 年發布以來對 NLP 領域產生了巨大影響 [1, 15]。它基於 Transformer 的 Encoder 部分,並採用雙向 Attention [2, 19]。演講中提到,BERT 的出現幾乎「通殺」了許多 NLP 任務,尤其是在文本分類等下游任務上表現出色 [1, 3, 6, 8]。
在 MRC 任務中,BERT 的應用方式通常是將問題 (Question) 和文章 (Context/Passage) 拼接起來,中間用一個特殊的 `[SEP]` token 分隔 [1, 2, 20-22]。BERT 模型處理這個拼接後的序列,然後輸出兩個關鍵資訊:文章中答案「開始位置」和「結束位置」的機率分數 [1, 20-22]。模型會選擇機率最高的一個連續區間作為答案 [1, 20]。這與 QANet 等模型通過 Attention 機制輸出答案的 Span 是一致的 [1, 20]。對於新手,理解 BERT 如何通過預訓練和 Fine-tuning 來適應各種下游任務(包括 MRC)是掌握當前主流 NLP 技術的關鍵 [1, 20]。
演講中大力推薦了 Hugging Face 的 Transformers 開源工具庫,稱其速度快且易於使用 [1, 19, 20]。這個工具庫支援 PyTorch 和 TensorFlow 2.0 等主流深度學習框架 [1, 7, 19-21]。對於新手,Hugging Face 提供了一個便捷的平台,可以輕鬆獲取和使用大量預訓練的 NLP 模型,包括 BERT, GPT, GPT-2 以及社群貢獻的數千種模型 [1, 19-21]。
Transformers 套件提供了多種下游任務 (Downstream Tasks) 的接口和範例,使得在特定任務上使用預訓練模型進行 Fine-tuning 或推論變得簡單 [1, 20-22]。提到的接口包括:
ForPreTraining
: 結合 Masked Language Modeling (MLM) 和 Next Sentence Prediction (NSP),是 BERT 原始的預訓練任務 [2, 20, 21]。Masked LM
: 填補文本中被隨機 Mask 掉的詞 [2, 20, 21]。演講者提到在中文糾錯中的嘗試,發現可能存在過度修正的問題(例如將「父親」錯修正為「父子」) [1, 7, 20, 21]。Next Sentence Prediction
: 判斷給定的兩句話是否是上下句關係 [2, 20, 21]。ForSequenceClassification
: 用於文本分類任務,對整個序列進行分類 [2, 20, 21]。ForMultipleChoice
: 用於多選任務 [2, 20, 21]。ForTokenClassification
: 用於對序列中的每個 token 進行分類,最常用的就是命名實體識別 (NER) [1, 2, 20-22]。然而,演講者特別指出,使用這個接口進行 NER 等任務時,需要額外的前處理步驟,例如處理特殊的控制字元或確保輸入長度符合模型要求 [1, 20, 22]。這是因為 BERT 的 Tokenizer (分詞器) 處理後的結果可能與原始文本在長度或字元上有所差異 [1, 20, 22]。對於新手,了解即使使用現成的工具包,前處理步驟仍然是不可或缺且需要注意細節的部分 [1, 20, 22]。ForQuestionAnswering
: 用於機器閱讀理解 (MRC) 任務 [2, 20-22]。這就是前面提到的將問題和文章拼接後輸入模型,模型輸出答案開始和結束位置機率的接口 [1, 20-22]。總之,Hugging Face Transformers 是一個非常強大的工具,極大地降低了使用和研究基於 Transformer 的 NLP 模型的門檻,對於入門和深入 NLP 研究都非常有幫助 [1, 19-21]。
在處理中文文本時,分詞 (Word Segmentation) 是很多 NLP 任務的基礎前處理步驟 [1, 20]。演講中額外討論了團隊對不同中文分詞工具的比較經驗 [1, 20, 22]。他們曾比較過中研院 (CKIP) 的斷詞工具、結巴 (Jieba) 以及其他知名工具 [1, 20, 22]。
比較結果顯示,在中研院的斷詞工具在處理繁體中文,特別是專有名詞(如人名、地名)時,效果通常是最好的 [1, 7, 20, 22]。即使將繁體轉簡體再用結巴斷詞,效果也不如直接使用中研院的工具 [22]。這對於處理中文 NLP 的研究者和開發者來說,是一個實用的經驗參考 [1, 20, 22]。對於新手,了解不同的分詞工具及其在特定語言和任務上的表現差異,是進行中文 NLP 專案時需要考慮的重要因素 [1, 20, 22]。
從整場分享會的內容來看,結合了理論概念、模型架構、實際應用展示、工具使用技巧以及研究經驗分享,對於理解 NLP 領域的實際工作流程和挑戰非常有參考價值,特別是透過講者和研究夥伴的視角,提供了一些寶貴的實務經驗和見解 [1, 23]。對於新手來說,這是一個很好的機會,可以從實際案例中學習 NLP 的基礎知識和應用技巧 [1, 23]。