BERT模型:自然語言處理最新裡程碑完整詳解!

2021-01-13 讀芯術

全文共7055字,預計學習時長14分鐘

BERT全稱是來自變換器的雙向編碼器表徵量(Bidirectional Encoder Representations from Transformers),它是Google於2018年末開發並發布的一種新型語言模型。與BERT模型相似的預訓練語言模型例如問答、命名實體識別、自然語言推理、文本分類等在許多自然語言處理任務中發揮著重要作用。

BERT是一種基於微調的多層雙向變換器編碼器。首先介紹下該變換器的架構,這一點尤為重要。

什麼是變換器(Transformer)?

2017年,谷歌發表了一篇題為《你所需要的是注意力》的論文,該論文提出一種基於注意力的結構,以處理與序列模型相關的問題,例如機器翻譯。傳統的神經機器翻譯大多使用循環神經網絡(RNN)或卷積神經網絡(CNN)作為編碼-解碼的模型庫。然而,谷歌這一基於注意力的變換器模型摒棄傳統的RNN和CNN公式。該模型高度並行運行,因此在提高翻譯性能的同時,其訓練速度也非常快。

進一步闡述變換器模型前,我們先對注意力做個介紹。

什麼是注意力(Attention)?

注意力機制可看作模糊記憶的一種形式。記憶由模型的隱藏狀態組成,模型選擇從記憶中檢索內容。深入了解注意力之前,先簡要回顧Seq2Seq模型。傳統的機器翻譯主要基於Seq2Seq模型。該模型分為編碼層和解碼層,並由RNN或RNN變體(LSTM、GRU等)組成。編碼矢量是從模型的編碼部分產生的最終隱藏狀態。該向量旨在封裝所有輸入元素的信息,以幫助解碼器進行準確的預測。其用於充當模型解碼器部分的初始隱藏狀態。

Seq2Seq模型的主要瓶頸是需要將源序列的全部內容壓縮為固定大小的矢量。如果文本稍長,則很容易丟失文本的某些信息。為解決這個問題,注意力應運而生。注意機制通過使解碼器回顧源序列隱藏狀態,然後將其加權平均值作為附加輸入提供給解碼器來緩解該問題。使用注意力,顧名思義,模型在解碼階段選擇最適合當前節點的上下文作為輸入內容。

注意力與傳統的Seq2Seq模型有兩個主要區別。

第一,編碼器向解碼器提供更多數據,並且編碼器會向解碼器提供所有節點的隱藏狀態,而不僅僅是編碼器的最後節點的隱藏狀態。

第二,解碼器不直接將所有編碼器提供的隱藏狀態作為輸入,而是採用選擇機制來選擇與當前位置最匹配的隱藏狀態。為此,它嘗試通過計算每個隱藏狀態的得分值並對得分進行softmax計算來確定哪個隱藏狀態與當前節點相關性最高,這使得隱藏狀態的更高相關性具有更大的分數值,不太相關的隱藏狀態具有較小的分數值。然後它將每個隱藏狀態與其softmax得分相乘,從而放大分數高的隱藏狀態,淹沒分數低的隱藏狀態。該評分練習在解碼器側的每個迭代時間完成。

現在,將注意機制用可視化予以表現,研究注意流程如何進行:

1.注意解碼器RNN接收<END>令牌的嵌入和初始解碼器隱藏狀態。

2.RNN處理其輸入,產生一個輸出和一個新的隱藏狀態向量(h4),並丟棄輸入。

3.注意步驟:使用編碼器隱藏狀態和h4向量來計算該迭代時間的語境向量(C4)。

4.將h4和C4連成一個向量。

5.將這個向量傳遞給前饋神經網絡(一個與模型共同訓練的網絡)。

6.前饋神經網絡的輸出即該迭代時間的輸出字。

7.重複下一個迭代時間的步驟

回到變換器

變換器模型使用編碼器-解碼器(encoder-decoder)架構。在谷歌發表的論文中,編碼層和解碼層都由6個編碼器堆疊而成。每個編碼器和解碼器的內部結構如下:

編碼器由兩層組成,一個自注意層和一個前饋神經網絡。自我關注不僅有助於當前節點關注當前單詞,還能助其獲取上下文的語義。解碼器還包含編碼器提到的雙層網絡,但在兩層中間還有一個注意層,以幫助當前節點獲得需要注意的關鍵內容。

以下是變換器架構的詳細結構:

接下來逐個分析其組成部分。

自注意(Self-Attention)

自注意是變換器將其他相關單詞的「理解」轉換為所處理的單詞的一種方式。

首先,自注意計算三個新的向量。在論文中,向量的維度是512維。將這三個向量分別稱為Query,Key和Value。這三個向量通過字嵌入向量與隨機初始化矩陣(論文中的維數為(64,512))相乘而產生的,並在反向傳播過程中不斷更新。

接下來,計算自注意的分數值,在某個位置編碼單詞時,它能決定在所輸入句子其餘部分投入的注意力。該分數值可通過Query和Key向量計算得出。然後用所得結果除以一個常數。本文中,該常數為8,這個值通常是上述矩陣第一維的平方根,即64的平方根8。然後對所有得分進行softmax計算。結果表示每個單詞與當前位置單詞的相關性。當然,當前詞的相關性肯定會很大。最後一步是將Value向量與softmax所得結果相乘並求和。結果是當前節點處的自注意值。

這種通過查詢和密鑰之間的相似度,來確定值的權重分布的方法,被稱為縮放的點積注意。

多頭注意

本論文中更精闢的部分是增加了另一種自注意機制,稱為「多頭」注意,它不僅僅初始化一組Q,K,V矩陣。相反,初始化多個組,且變換器使用8個組,因此最終結果是8個矩陣。

前饋神經網絡不能接受8個矩陣,因此需要一種方法將其減少為1個。為此,首先將8個矩陣連接在一起得到一個大矩陣,然後將這個組合矩陣與一個隨機初始化矩陣相乘得到最後的矩陣。整個流程如下圖所示。

變換器的多頭注意有三種使用方式:

1.在「編碼-解碼注意」層中,查詢來自先前的解碼器層,存儲器鍵和值來自編碼器的輸出。這使解碼器中的每個位置都參與輸入序列中的所有位置。並模擬出序列到序列模型中典型的編碼-解碼注意機制。

2.編碼器包含自注意層。在自注意層中,所有鍵、所有值和查詢都來自相同的位置,在這種情況下,它們來自於編碼器中前一層的輸出。編碼器中的每個位置都可以處理編碼器前一層中的所有位置。

3.與其相似的是,解碼器中的自注意層令解碼器中的每個位置參與到解碼器中的所有位置,直到並包括該位置。在此需要預防解碼器中的向左信息流,以此保持自回歸屬性。通過掩蔽(設置為-∞)softmax中與非法連接相對應的所有值來實現縮放點積注意。這將在解碼器部分更加詳細地探討,在此僅討論掩蔽(Masking)。

位置編碼

到目前為止,還沒有辦法解釋變換器模型中輸入序列中的單詞順序。為了解決此問題,變換器在編碼器和解碼器層的輸入端增加了一個額外的矢量位置編碼。其維度與嵌入維度相同。此位置編碼的值將添加到嵌入層的值中,並作為輸入發送到下一層。位置編碼選項有很多,包括學習和修復。

殘餘連接和層規範化

在編碼器和解碼器中,在兩個子層的周圍都採用殘餘連接,然後進行層規範化。跳過連接或殘餘連接用於允許梯度直接流過網絡,而不通過非線性激活功能。非線性激活函數本質上是非線性的,導致梯度爆炸或消失(取決於權重)。從概念上說,跳過連接形成一條「總線」,它在網絡中流動,反過來,梯度也可以沿著它向後流動。規範化有助於解決內部協變量偏移的問題。內部協變量偏移是指在神經網絡內發生的協變量偏移,即從(例如)第2層到第3層。這是因為當網絡學習且權重被更新時,網絡中特定層的輸出分布會發生變化。這迫使較高層適應該漂移,這減慢了學習速度。在對神經網絡中的輸入進行歸一化後,不必擔心輸入特徵的規模差別很大。要了解層規範化,將其與批規範化進行對比非常有用。一小批包含具有相同數量功能的多個示例。小批是矩陣 - 如果每個輸入是多維的,則為張量 - 其中一個軸對應批,另一個軸或多個軸對應特徵尺寸。批規範化規範批維度中的輸入要素。層規範化的關鍵特性是它可以對要素之間的輸入進行標準化。在批規範化中,統計信息在批處理中計算,並且對於批中的每個示例都是相同的。相反,在層規範化中,統計數據是跨每個特徵計算的,並且與其他示例無關。

將殘餘連接和層規範化放在一起

解碼器

回看變換器體系結構圖,可以看到解碼器部分與編碼器部分相似,但底部有一個掩蓋的多頭注意。Mask表示屏蔽某些值的掩碼,以便在更新參數時它們不起作用。變換器模型中有兩種掩碼—填充掩碼和序列掩碼。填充掩碼用於所有縮放的點積注意,序列掩碼僅用於解碼器的自注意。

填充掩碼解決了輸入序列具有可變長度的問題。具體來說,在較短的序列後填0。但是如果輸入序列太長,則會截取左側的內容,並直接丟棄多餘的內容。因為這些填充的位置實際上沒有意義,注意機制不應該集中在這些位置,所以需要做一些處理。具體方法是在這些位置的值上加一個非常大的負數(負無窮大),這樣這些位置的概率在softmax計算之後將接近0!填充掩碼實際上是一個張量,每個值都是一個布爾值,false值指想要處理的值。

A序列掩碼旨在確保解碼器無法查看將來的信息。也就是說,對於序列,在time_step t,解碼輸出應該僅取決於t之前的輸出,而不取決於t之後的輸出。這針對於變換器架構,因為沒有RNN,可以按順序輸入序列。在此,一起輸入所有內容,如果沒有掩碼,多頭注意將考慮每個位置的整個解碼器輸入序列。通過生成上三角矩陣來實現這一點,上三角形的值全為零,並將該矩陣應用於每個序列。

對於解碼器的自注意,在此使用縮放的點積注意,並且添加填充掩碼和序列掩碼作為attn_mask。在其他情況下,attn_mask等於填充掩碼。

另一個細節是解碼器輸入將向右移動一個位置。這樣做的一個原因是不希望模型在訓練期間學習如何複製解碼器輸入,但還是想要了解給定編碼器序列和模型已經看到的特定解碼器序列,從而預測下一個單詞/字符。如果不移位解碼器序列,模型則簡單地學習「複製」解碼器輸入,因為位置 i 的目標字/字符將是解碼器輸入中的字/字符 i 。因此,通過將解碼器輸入移位一個位置,模型需要預測僅在解碼器序列中看到單詞/字符 1, …, i-1 的位置 i 的目標字/字符。這可以防止模型學習複製/粘貼任務。用句子開頭令牌填充解碼器輸入的第一個位置,由於右移,該位置將是空的。類似地,將一個句末標記附加到解碼器輸入序列以標記該序列的結尾,並且它還附加到目標輸出語句。

輸出層

在完全執行解碼器層後,為將得到的矢量映射到來自詞彙表的單詞,在結尾添加完全連接層和softmax層。

線性層是一個簡單的完全連接的神經網絡,它將解碼器堆棧產生的矢量投影到一個更大的矢量中,稱為logits矢量。假設模型知道從訓練數據集中學到的10,000個獨特的英語單詞(模型的「輸出詞彙表」) 這將使logits矢量10,000個細胞變寬 - 每個單元對應於一個唯一單詞的得分。這就是對於線性層後的模型輸出的解釋。然後,softmax層將這些分數轉換為概率(所有正數,所有加起來都為1.0)。選擇具有最高概率的單元,並將與其相關聯的單詞作為該迭代時長的輸出。

回到BERT模型

BERT模型基於變換器架構。它是一種具有雙向深度的神經網絡模型。BERT模型的關鍵技術創新是將變換器的雙向培訓應用於語言建模。這與先前從左到右查看文本序列或從左到右和從右到左組合訓練的努力嘗試形成對比。BERT模型採用了一種名為掩蔽語言模型(Masked Language Modeling)的新技術(將在後文看到),它允許在從前不可能使用的模型中進行雙向訓練。在其vanilla form中,變換器包括兩個獨立的機制——讀取文本輸入的編碼器和產生任務預測的解碼器。由於BERT模型的目標是生成語言模型,因此只需要編碼器機制。

谷歌最初發布了兩個版本,如下圖所示。這裡L表示變壓器的層數,H表示輸出的維數,A表示多頭注意的數量。在這兩個版本中,前饋大小都設置為4層。

BERTBASE: L=12, H=768, A=12, Total Parameters=110M

BERTLARGE: L=24, H=1024, A=16, Total Parameters=340M

使用BERT模型有兩個階段:預訓練和微調。在預訓練期間,模型在不同的預訓練任務上訓練未標記的數據。對於微調,首先使用預訓練參數初始化BERT模型,並使用來自下遊任務的標記數據對所有參數進行微調。每個下遊任務都有單獨的微調模型,即使它們使用相同的預訓練參數進行初始化。BERT模型的一個顯著特點是它跨越不同任務的統一架構。預訓練架構與最終下遊架構之間的差異很小。在微調期間,所有參數都經過微調。

BERT模型預訓練過程

BERT模型預訓練階段包括兩個無監督預測任務:掩蔽語言模型和下一句預測。

掩蔽語言模型(MLM)——由於BERT模型的雙向功能(雙向性)及其使用的多層自關注機制的效果,為了訓練深度雙向表示,一些百分比(論文中為15%)輸入令牌的輸入被簡單地隨機掩蓋,然後預測那些被屏蔽的令牌。對應於掩模標記的最終隱藏向量被饋送到詞彙表上的輸出softmax,如在標準學習模型LM中。與從左到右的語言模型預訓練不同,MLM目標允許表示融合的左側和右側的上下文,這使得可以預先訓練深度雙向變換器。雖然這允許獲得雙向預訓練模型,但缺點是預訓練和微調之間存在不匹配,因為在微調期間不出現[MASK]標記。為了緩解這種情況,作者並不總是用實際的[MASK]標記替換「蒙面」單詞。訓練數據生成器隨機選擇15%的令牌位置進行預測。如果選擇了第i個令牌,則將其替換為(1)[MASK]標記80%的時間(2)隨機標記10%的時間(3)未更改的第i個標記10%時間。BERT模型損失函數僅考慮掩蔽值的預測並忽略非掩蔽字的預測。因此,模型比定向模型收斂得慢,這一特徵被其增加的情境感知所抵消。

下一句預測(NSP)。為了訓練理解句子關係以及單詞之間的語義關係的模型,BERT模型還預先訓練二進位化的下一句預測任務,該任務可以從任何文本語料庫中輕易生成。為A和B選擇一些句子,其中50%的數據B是A的下一個句子,剩餘的50%的數據B是在語料庫中隨機選擇的,然後學習相關性。添加這種預訓練的目的是許多自然語言處理任務(如QA和NLI)需要理解兩個句子之間的關係,以便預訓練模型能夠更好地適應這些任務。

為了幫助模型區分訓練中的兩個句子,輸入在進入模型之前按以下方式處理:

1.在第一個句子的開頭插入[CLS]標記,並在每個句子的末尾插入[SEP]標記。

2.在每個標記中添加表示句子A或句子B的句子嵌入。句子嵌入在概念上類似於詞彙量為2的標記嵌入。

3.向每個標記添加位置嵌入以指示其在序列中的位置。位置嵌入的概念和實現已在變換器論文中給出。

要預測第二個句子是否確實與第一個句子連接,需執行以下步驟:

1.整個輸入序列經過變換器模型。

2.使用簡單的分類層(權重和偏差的學習矩陣)將[CLS]標記的輸出轉換為2×1型的矢量。

3.使用softmax計算IsNextSequence的概率。

在訓練BERT模型時,MLM和NSP是被同時訓練的,目標是最小化兩種策略的組合損失函數。

標記化—BERT模型不會將單詞視作標記。相反,它會看WordPieces。這意味著一個單詞可以分解為多個子單詞。這種標記化在處理詞彙單詞時是有益的,它可以幫助更好地表示複雜的單詞。

BERT模型的輸入

BERT的輸入可以是單詞序列中的單個句子或句子對(例如,[問題,答案])。對於給定的單詞,其輸入表示可以由三部分嵌入求和組成。嵌入的可視化表示如下所示:

標記嵌入表示單詞向量。第一個字是CLS標誌,可用於後續分類任務。對於非分類任務,可以忽略CLS標誌。段嵌入用於區分兩個句子,因為預訓練不僅是語言模型,而且還是具有兩個句子作為輸入的分類任務。位置嵌入編碼字順序。

用於下遊自然語言處理任務的BERT模型微調

對於每個下遊自然語言處理任務,只需將特定於任務的輸入和輸出插入BERT模型,並對端到端的所有參數進行微調。在輸入處,來自預訓練的句子A和句子B可類比於釋義中的句子對,蘊涵中的假設前提對,問題回答中的問題通道對等。在輸出處,標記表示被饋送到用於標記級別任務的輸出層,例如序列標記或問題回答,並且[CLS]表示被饋送到輸出層以進行分類,例如蘊涵或情緒分析。與預訓練相比,微調相對便宜。

BERT模型可用於各種語言任務,而只需在核心模型中添加一個小層:

1.通過在[CLS]標記的變換器輸出上添加分類層,類似於下一句分類,進行情感分析等分類任務。

2.在問題回答任務(例如SQUAD v1.1)中,軟體會收到有關文本序列的問題,並且需要在序列中標記答案。使用BERT模型,可以通過學習標記答案開始和結束的兩個額外向量來訓練Q&A模型。

3.在命名實體識別(NER)中,軟體接收文本序列,並且需要標記文本中出現的各種類型的實體(人員,組織,日期等)。使用BERT模型,可以通過將每個標記的輸出向量饋送到預測NER標籤的分類層來訓練NER模型。

BERT模型用於特徵提取

微調法不是使用BERT模型的唯一方法。可以使用預先訓練的BERT模型創建語境化詞嵌入。然後,可以將這些嵌入提供給現有的模型——該過程本文展示了產生結果,在命名實體識別等任務上微調BERT模型並不遠。

哪個向量最適合作為上下文嵌入呢?這要視任務而定。本文共考察了六種可選方法(與得分為96.4的微調模型相比):

留言 點讚 關注

我們一起分享AI學習與發展的乾貨

編譯組:胡昕彤、董宇陽

相關連結:

https://towardsdatascience.com/breaking-bert-down-430461f60efb

如需轉載,請後臺留言,遵守轉載規範

推薦文章閱讀

相關焦點

  • 中文最佳,哈工大訊飛聯合發布全詞覆蓋中文BERT預訓練模型
    基於 Transformers 的雙向編碼表示(BERT)在多個自然語言處理任務中取得了廣泛的性能提升。在預訓練語言模型時,需要對語料進行 mask 操作,使模型在看不見 token 的情況下對 mask 的詞語進行預測。然而,基於單個 token 的 mask 方法訓練中文語料,可能忽略了中文分詞的作用。
  • 教你用BERT進行多標籤文本分類
    大數據文摘出品來源:medium編譯:李雷、睡不著的iris、Aileen過去的一年,深度神經網絡的應用開啟了自然語言處理的新時代。預訓練模型在研究領域的應用已經令許多NLP項目的最新成果產生了巨大的飛躍,例如文本分類,自然語言推理和問答。
  • TFX 最新博文:如何使用 TensorFlow 生態系統實現快速高效的 BERT...
    通過與 TensorFlow 團隊合作,並使用他們的最新成果,Concur 實驗室最終實現了一致、簡單、快速的 BERT 模型推斷,可以在幾毫秒內實現從原始文本的分類預測。那麼,各種 TensorFlow 庫和組件如何幫助研究人員達到這個裡程碑?作為 SAP Concur 實驗室的高級機器學習工程師,Hannes Hapke 寫了一篇博文分享了他們的做法。
  • 洞察|一文帶你全面了解自然語言處理發展史上的8大裡程碑
    自然語言處理(Natural Language Processing,NLP)已經慢慢演變為計算機科學領域與人工智慧領域中的一個重要方向,高效地用自然語言與計算機進行通信,被視為解決人工智慧完備(AI-complete)的核心問題之一,其中存在著一系列挑戰。
  • 科普自然語言處理
    它研究能實現人與計算機之間用自然語言進行有效通信的各種理論和方法。自然語言處理是一門融語言學、計算機科學、數學於一體的科學。因此,這一領域的研究將涉及自然語言,即人們日常使用的語言,所以它與語言學的研究有著密切的聯繫,但又有重要的區別。自然語言處理並不是一般地研究自然語言,而在於研製能有效地實現自然語言通信的計算機系統,特別是其中的軟體系統。因而它是計算機科學的一部分。
  • 乾貨| BERT fine-tune 終極實踐教程
    不過所幸的是谷歌滿足了Issues#2裡各國開發者的請求,針對大部分語言都公布了BERT的預訓練模型。因此在我們可以比較方便地在自己的數據集上進行fine-tune。下載預訓練模型對於中文而言,google公布了一個參數較小的BERT預訓練模型。
  • 深度解讀谷歌SyntaxNet:全新TensorFlow自然語言處理模型
    本文中,Hobbibal深度解讀了谷歌的自然語言處理模型。上周,谷歌開源了其基於人工智慧系統Tensorflow的自然語言解析模型分析庫SyntaxNet。在過去的兩年時間裡,谷歌研究人員利用這個分析庫發布了一系列神經網絡分析模型。自從SyntaxNet發布以來,筆者就一直關注它,當然也一直也期待這個軟體能夠開源。
  • NVIDIA解決方案架構師深度解析大規模參數語言模型Megatron-BERT
    首先介紹一下自然語言處理常見的應用方向,第一類是序列標註,比如命名實體的識別、語義標註、詞性標註,循環智能也是用了序列標註。第二類是分類任務,如文本分類和情感分析,這個方向目前在量化金融領域,尤其是對衝基金上應用性很強,尤其是情感分析。
  • 谷歌搜索:幾乎所有的英文搜索都用上BERT了
    BERT 是谷歌開源的一款自然語言處理預訓練模型,一經推出就刷新了 11 項 NLP 任務的 SOTA 記錄,登頂 GLUE 基準排行榜。具體到搜尋引擎來說,BERT 可以幫助搜尋引擎更好地理解 web 頁面上的內容,從而提高搜索結果的相關性。BERT 模型中創新性的 架構是一大亮點。
  • 詞向量詳解:從word2vec、glove、ELMo到BERT
    目前,詞向量(又叫詞嵌入)已經成為NLP領域各種任務的必備一步,而且隨著bert elmo,gpt等預訓練模型的發展,詞向量演變為知識表示方法,但其本質思想不變。學習各種詞向量訓練原理可以很好地掌握NLP各種方法。生成詞向量的方法有很多種,本文重點介紹word2vec,glove和bert。
  • 實踐入門NLP:基於深度學習的自然語言處理
    特別是最近兩年,基於深度學習的自然語言處理逐漸取得了一定進展,在人機對話、問答系統、語言翻譯等方向的應用也一直是自然語言處理中的熱門話題,而這些應用的實現,基本依賴於底層技術和模型的進步,再加上自然語言處理領域也算是一個多學科交叉的行業,自然語言處理的未來發展對於很多相關學科和方向都具有深遠的影響力。
  • 大神教程乾貨:使用BERT的多類別情感分析!(附代碼)
    BERT概述BERT是用於通用「語言理解」 的深度雙向表示模型,可從左至右和從右至左學習信息。選項是CoLA:語言可接受性語料庫是一個二進位的單句分類任務,即ColaProcessor類。目的是預測英語句子在語言上是否「可以接受」MNLI:多體類自然語言推理是一項大規模的,眾包的蘊含分類任務。給定一對句子,目標是預測第二個句子相對於第一個句子是包含,矛盾還是中立的MRPC:Microsoft研究釋義語料庫由自動從在線新聞源中提取的句子對組成。
  • 重磅發布 | 牛津大學Deep NLP深度自然語言處理課程17年最新(漢化視頻)
    大數據文摘作品,轉載要求見文末大數據文摘重磅推出牛津大學深度學習與自然語言處理課程(Deep NLP)漢化視頻!牛津大學Deep NLP是一門關於自然語言處理(NLP)的高階課程。課程由牛津大學和谷歌DeepMind(AlphaGo的開發機構)聯合開設,是牛津大學計算機系2017年春季學期最新課程。
  • 中國的自然語言處理領域的人工智慧公司
    原來,它應用了最新的人工智慧自然語言處理技術。什麼是自然語言處理?自然語言處理的英文是Natural Language Processing,一般被簡寫為NLP,它實際上包括了三個方面:語音識別、自然語言理解與語音合成(有一些人把語音識別作為自然語言處理之外的技術,在本文中,我們將語音識別也包含在自然語言處理的技術範疇之內)。
  • 谷歌最強NLP模型BERT,為何炫酷又強大?騰訊程式設計師給你從頭講起
    雖然知道了 bert能解決這個問題,我們更好奇的是"Ϊʲô":為什麼 bert 的表現能這麼好?這裡面有沒有可解釋的部分呢?因為 Multi-head-attention 是 bert 的主要組成部分,所以我們從"頭"入手,希望弄清楚各個 head 對 bert 模型有什麼作用。為了研究某個 head 對模型的影響,我們需要比較有這個 head 和沒有這個 head 模型的前後表現。
  • 自然語言處理深度學習的7個應用
    自然語言中仍有許多具有挑戰性的問題需要解決。然而,深度學習方法在一些特定的語言問題上取得了最新的成果。這不僅僅是深度學習模型在基準問題上的表現,基準問題也是最有趣的;事實上,一個單一的模型可以學習詞義和執行語言任務,從而消除了對專業手工製作方法渠道的需要。在這篇文章中,你會發現7個有趣的自然語言處理任務,也會了解深度學習方法取得的一些進展。
  • 自然語言處理 NLP 發展簡史
    於是在 1966 年,美國國家研究委員會(NRC)和自動語言處理諮詢委員會(ALPAC)停止了對自然語言處理和機器翻譯相關項目的資金支持, AI 和 NLP 的發展因此陷入停滯。此時,許多學者認為人工智慧和自然語言處理的研究進入了死胡同。人類早期結合語言學與統計學對 AI/NLP 的初步探索以失敗告終。
  • 自然語言處理的最佳實踐
    雷鋒網 AI 開發者按,近年來,自然語言處理(NLP)在質量和可用性方面快速增長,這有助於推動人工智慧解決方案的實際落地。在過去的幾年裡,研究人員一直在將新的深度學習方法應用於 NLP。數據科學家開始從傳統的方法轉向最先進的(SOTA)深度神經網絡(DNN)算法,這種算法使用的語言模型經過了大文本語料庫的預訓練。
  • 如何可視化BERT?你需要先理解神經網絡的語言、樹和幾何性質
    BERT 是當前最佳的自然語言處理模型之一,也因此極其複雜。Google AI 的 People + AI Research(PAIR)團隊近日發布的論文《Visualizing and Measuring the Geometry of BERT》提出了一種可視化和度量 BERT 的幾何性質的方法,可幫助我們理解 BERT 等神經網絡語言模型表徵信息的方式。
  • ...微軟&哈工大最新提出 CodeBERT 模型,支持自然-編程雙語處理
    ,據作者介紹,這也是目前已知的第一個大型 NL-PL(自然語言-程式語言)預訓練模型。該預訓練模型能夠處理NL-PL 的普遍問題,例如用自然語言搜索代碼、自動生成代碼等。 所謂自然語言代碼搜索,所要解決的問題是,如何通過自然語言query查找到所需的代碼塊,這和我們常用的搜尋引擎(通過自然語言query來查找所需網頁)類似。