BERT對于NLP而言無疑是向前邁出的重要一步。諸如主題檢測和情感分析之類的業務活動將更易于創建和執行,結果也將更加準確。但是如何找到BERT的,該模型是如何工作的呢?為什么這么強大?最后但并非最不重要的一點是,它可以為業務帶來什么好處,以及決定將其集成到 sandsiv +客戶體驗平臺中的呢。這些問題很難,我為自己設定了一個目標。向既沒有編程知識又沒有人工智能背景的人們講解。挑戰很大,會盡力而為。
今天早上,我想起了學習葡萄牙語的新語言。我喜歡這種語言的聲音,我對自己說,讓我們學習吧。我想到的第一件事是要用葡萄牙語翻譯成葡萄牙語,以建立第一個基本詞匯。
之所以很有趣,是因為某些單詞聽起來很像意大利語,在意大利語的背景下,我試圖將事物理解為同義詞和自主語,以使其看起來比它們的真實氣味更香。因此,我試圖理解單詞之間關系的語義或含義。
實際上,我使用一種我熟知的語言-我的母語-然后關聯了這些新的葡萄牙語術語并慢慢學習了這種新語言。由于深度的機器學習和計算能力的顯著提高,在計算領域已經完成了類似的過程。
計算機只知道一種語言,數學,因此如果要“教”機器對人類語言的解釋,則必須參考。
重要的是要記住,深度學習解決的任何問題都是數學問題。例如,借助卷積神經網絡,計算機可以“看到”。該CNN接收數學矩陣形式的圖像,然后應用線性代數規則。在諸如主題檢測,情感分析等任務中也是如此。
如果有人為您提供對語言敏感的NLP解決方案,但問題出在數學上,而不是語言上,知道它可能已經存在了四代,甚至更糟: 關鍵字搜索解決方案。
在計算機世界中, 向量嵌入程序已解決了將一個未知單詞轉化為嘗試學習的已知語言的問題。諸如FasText,Word2Vec和GloVe之類的算法正是這樣做的:將任何語言的單詞轉換為計算機可以通過線性代數“理解”的數學矢量。再一次,這是一個數學問題,而不是語言問題。
我學習葡萄牙語的下一步是翻譯小句子。我仔細聽了每個葡萄牙語單詞,將其翻譯成意大利語。每個新單詞的線性運算與我的翻譯工作相吻合。在計算機世界中,相同的操作是通過稱為Encoder和Decoder的算法完成的。
該系統依次“收聽”“單詞”,將其轉換為新的指令,包括語言到語言的轉換以及“理解”的計算模型。
當然,這使我可以將葡萄牙語中的小句子翻譯成意大利語,但是當句子變長甚至變成完整的文檔時,此時逐詞系統已無法很好地工作。我必須提高專心致志的能力,并試圖更好地理解葡萄牙語中每個新單詞的呈現背景,當然,這與我的意大利語知識相關。
這比我以前使用的逐字方法多了一步。即使在計算世界中,下一步就是在Encoder-Decoder模型中添加所謂的 “注意力機制” ,該機制使計算機可以更加關注上下文中的單詞。實際上嘗試應用線性過程中缺少的那些語義規則。
盡管關注的程度有所提高,但該方法始終是順序的,并且清楚地表明了其局限性。就我而言,每一個來自葡萄牙語的新單詞,我都會嘗試用意大利語閱讀它,這引起了很多關注,但是我不得不說,由于語言的某些歧義,我很難正確地解釋它們。在計算機上,模型很難理解復雜的語義規則的情況也是如此。
我不得不說,我從葡萄牙語到意大利語的翻譯水平已大大提高,盡管有一些錯誤,但我可以翻譯比以前使用的方法更長的句子。但是,在這一點上,我需要更多,我想更快,更精確。我想更好地理解上下文。我想減少歧義。我需要某種并行過程以及上下文知識,最后,我需要了解長期依賴關系。
我的計算過程與我的需求完全相同,這就是 變形金剛的 用武之地。
讓我們舉個例子,讓我們看看這兩個句子:
· 我去銀行開了一個帳戶。
· 該船已接近銀行。
完全相同的單詞“ bank”在兩種情況下都有兩種含義會發生變化。您需要從整體上看這句話,以了解其語法和語義。 語言模型的ELMo嵌入會 查看整個句子,以了解語法,語義和上下文,以提高NLP任務的準確性。
為了更好地學習葡萄牙語,我的下一步是閱讀大量書籍,收聽葡萄牙語電視節目,觀看葡萄牙語電影等。我試圖顯著提高自己的詞匯量,了解該語言及其依賴性。
我的電腦做同樣的事情。例如,它已經用葡萄牙語“閱讀并記住”了所有Wikipedia,從技術上講,它做了所謂的“ 轉移學習”。這樣,當我的計算機必須以葡萄牙語執行任何語言操作時,就不再從頭開始,而是以該語言創建了相當廣泛的知識。
從大量單詞中“學習”到對語言有很強的初步理解的模型稱為 生成預訓練變壓器。該模型僅使用Transformer的解碼器部分。它使用從閱讀中學到的知識,例如Wikipedia,并從左到右“閱讀”單詞。
當您學習語言的不同方面時,您會意識到,接觸多種文本對于應用遷移學習非常有用。開始閱讀書籍以建立強大的詞匯量和對該語言的理解。當句子中的某些單詞被掩蓋或隱藏時,請依靠您對語言的了解,從左到右和從右到左閱讀整個句子。
現在,您可以更準確地預測被屏蔽的單詞。這就像填補空白。您還可以預測兩個句子何時相關。這是一個簡單的BERT代表來自變壓器的雙向編碼器表示(BERT)是瀏覽器公司開發的NLP預訓練技術。它的工作可以從首字母縮略詞一目了然:變壓器編碼器的雙向表示。
你困惑嗎?不用擔心,我也是。我只會嘗試從實際的角度解釋BERT的真正優勢。
在我們之前看到的所有事情中,BERT是一個巨大的進步。它收集了以前模型的所有功能,從詞嵌入到轉換器,以及它們實現的所有優點。但這帶來了其他非常有趣的實踐創新:
BERT是雙向的,它不只是從左到右的“讀取”,而是相反的。這使它可以更好地“理解”上下文中的單詞。不僅對于歧義詞,而且對于相關詞,例如:M登上了舞臺。他玩得很開心!BERT理解“他”是指M,這對解決語言問題來說不是一件小事。BERT在訓練時不僅會“閱讀”,而且會隱藏15%的單詞并嘗試“猜測”它們。
通過這種方式,他嘗試創建超越“閱讀”范圍的知識,但可以幫助BERT根據先前的上下文來預測單詞,甚至可以根據先前的上下文來預測句子。例如,在自動問答系統或聊天機器人中,這并不是一件小事。BERT提供了幾種通用模型,這些模型可以“上載”,然后進行微調以適應特定情況,而無需海量數據進行微調。
對于那些已經嘗試通過標記數據來訓練NLP模型的人來說,這不是一件小事。
我從事自然語言處理已經有好幾年了-真實的東西,而不是我的競爭對手因文本挖掘而失去的關鍵字搜索-我對BERT印象深刻。讓我給您一個小的實際例子。我建立了一個情感模型,根據這樣構成的數據集,最終精度為F1 89%:
· 1270快樂
· 154淡然
· 26生氣
· 11無聊
· 3沮喪
所有這一切都是可能的,因為通過使用Transfer Learning和BERT提供的通用模型,即使是很小的情況也可以進行微調。實際上,就像您可以在大腦中加載一個模型一樣,該模型總結了通過閱讀所有葡萄牙語獲得的Wikipedia所獲得的語言知識,然后對要解決的特定情況進行了一些微調NLP的飛躍!
我忘記了,BERT顯然提供了許多用于遷移學習的模型。它顯然提供了多種語言。例如,基于BERT的多語言案例模型可使用104種不同的語言“閱讀文本”,并且每種語言都可以使用自己的小型數據集進行完善。
BERT很快將在我們的sandisv +解決方案中可用 ,并且我們的客戶將能夠利用這項偉大的創新帶來的主題檢測和情感分析帶來的所有這些好處。想了解更多關于自然語言處理的信息,請繼續關注中培偉業。