日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

bert 中文 代码 谷歌_如何用最强模型BERT做NLP迁移学习?

發布時間:2023/12/10 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 bert 中文 代码 谷歌_如何用最强模型BERT做NLP迁移学习? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者 | 臺灣大學網紅教授李宏毅的三名愛徒

來源 |?井森堡,不定期更新機器學習技術文并附上質量佳且可讀性高的代碼。

編輯 | Jane

谷歌此前發布的NLP模型BERT,在知乎、Reddit上都引起了轟動。其模型效果極好,BERT論文的作者在論文里做的幾個實驗數據集都被轟平了。要做那幾個數據集的人可以洗洗睡啦,直接被明明白白地安排了一波。

坊間流傳 BERT 之于自然語言處理有如 ResNet 之于計算機視覺。谷歌還是谷歌呀,厲害!以后做 NLP 的實驗就簡單多了,可以先用 BERT 抽特征,再接幾層客制化的神經網絡后續實驗,可以把 BERT 看作是類似于 word to vector 那樣的工具。有人在知乎上整理了跑一次BERT的成本:

https://www.zhihu.com/question/298203515/answer/509470502

For?TPU?pods:4?TPUs?*?~$2/h?(preemptible)?*?24?h/day?*?4?days?=?$768?(base?model)16?TPUs?=?~$3k?(large?model)
For?TPU:16?tpus?*?$8/hr?*?24?h/day?*?4?days?=?12k64?tpus?*?$8/hr?*?24?h/day?*?4?days?=?50k
For?GPU:"BERT-Large?is?24-layer,?1024-hidden?and?was?trained?for?40?epochs?over?a?3.3?billion?word?corpus.?So?maybe?1?year?to?train?on?8?P100s??"

這還只是跑一次的時間,試想一下谷歌在調參、試不同神經網絡結構時該需要多少時間與運算資源,太可怕了。

不禁讓人感慨,深度學習已經變為大公司之間的軍備競賽,也只有谷歌這樣的大公司才能做出這么偉大的模型,那是不是意味著我們普通人就沒機會了呢?喜大普奔的是谷歌已經把訓練好的模型公布出來,和大家分享他們的成果。我們可以運用大公司提前訓練好的模型做遷移學習,用于客制化的應用。

本文想通過一個實際案例來檢驗一下提前訓練好的 BERT 模型的威力,在已經訓練好的 BERT 模型上再連幾層神經網絡做遷移學習。我們用的數據來源是 Kaggle 上的一個豆瓣影評分析數據集,目標是訓練出一個模型,輸入給模型一條影評的文字,模型能正確輸出這條影評所對應的評分。

數據集

這個豆瓣電影短評數據集里面一共有28部電影,總共200多萬筆影評,每筆影評有對應的文字以及用戶給電影的評分(最高5分,最低1分)。下面是一些簡單的范例:

https://www.kaggle.com/utmhikari/doubanmovieshortcomments/

前處理的時候,我們先把每條影評的標點符號去掉,然后用 Jieba 斷詞,Jieba 是一個很方便的中文斷詞函數庫,安裝也很方面直接用 PIP 安裝就好。

最后把數據切為 training,testing 和 validation set 三部分,下表是三個 set 的一些簡單統計量:

模型結構

第一步,我們先用“Jieba”將影評斷詞,再把每個詞用一個 one-hot vector 表示。

第二步,再把每條影評對應的 one-hot vector 丟到如下圖的 BERT 模型抽出特征。

第三步,再把抽出的特征丟進我們客制化設計的神經網絡,最后輸出網絡的預測。網絡的預測是 1-5 分,我們分別做了回歸和分類兩個實驗。分類的輸出結果是 1-5 分 5 類當中的某一類,回歸輸出結果是介于 1-5 之間的一個數值。我們會用到如下圖所示的 Bengio 在 2017 年提出的自注意力模型做一些語義分析。

第四步,定義損失函數,固定 BERT 的參數不變,再用梯度下降法更新我們客制化設計的網絡。

PS:由于 BERT 和 self-attention 模型結構較為復雜,而且本文的目的是探討如何用 BERT 做遷移學習,所以我們不會贅述模型結構,我們會在文末附上論文鏈接,感興趣的小伙伴可以去看看。

實驗結果

BERT 分類

  • 分類準確率:61%

  • 混淆矩陣:

以第 1 行第二列的 0.13 為例:意思是真實標簽是第一類,被分類為第二類的占總的第一類的個數的比例是 0.13。可以看到 1 分,5 分的大部分例子都能分類正確。大部分分類不正確的情況是被分到相鄰的等級了,例如真實標簽是 2 分的被分類為 3 分或是真實標簽是 3 分的被分類為 2 分。這種情況是合理的,針對某一條特定的影評,就算是人去預測,也很難斬釘截鐵地判定為是 2 分還是 3 分,所以也難怪機器分不出來。

我們對評價標準做了一點修改,將誤判為相鄰評分的例子判別為正確,結果如下:

  • 分類準確率:94.6%

  • 混淆矩陣:

BERT 回歸

同樣的架構,我們修改了一下最后一層的輸出,讓模型預測相應影評的評分,輸出一個實數值,重新訓練了模型。如果是分類的實驗,1 分與 5 分這兩個類別用數值表示的話都是一個 one-hot 的類別,體現在損失函數里沒有差別,模型不會對二者區別對待。如果是回歸的實驗,模型的輸出是一個實數值,實數值具有連續性,1 分和 5 分二者分數的高低能在實數上得到體現。

下面來看看實驗結果:

  • 分類準確率:95.3%

  • 混淆矩陣:

  • 真實評分的分布:

  • 模型預測評分的分布:

我們也對 BERT 出來的特征向量做了 TSNE 降維,可視化結果如下:

根據右上角的圖例,不同的顏色代表不同的評分,比如紫色代表五分。每一個點都是一筆影評的高維特征降維后在二維平面上的體現。可以明顯看出,不同評分的影評被歸在了不同的群里。相近的評分,比如 5 分和 4 分、4 分與 3 分會有一些重疊部分。

  • 自注意力機制的一些可視化結果:

引入自注意力機制的模型在預測一句影評對應的評分的時候,能夠先通過注意力機制抓取一句話中的重要部分,給重要部分很多的比重。上述幾個例子就能看出來,再模型給一條影評 5 分的時候,會給“爆”、“動人”這樣的字眼予以高亮。在給 2 分的時候,會給“一般”這樣的字眼予以高亮。

案例分析

接下來我們針對瘋狂動物城這部電影,做一些可視化分析,來呈現訓練好之后的模型的效果。

  • 分類準確率:72.63%

  • 混淆矩陣:

將誤判為相鄰評分的例子判別為正確的結果如下:

  • 分類準確率:98.56%

  • 混淆矩陣:

  • 真實評分的分布:

  • 模型預測評分的分布:

  • TSNE 降維后可視化結果:

  • 自注意力機制可視化結果:

針對瘋狂動物城這部電影,我們做了 TF-IDF 的詞頻分析。

  • 詞頻前三十的詞:

  • 不同評分的高頻詞:

第一行的 1-5 是評分,下面的詞后面的數字代表的是這個詞的出現個數。

最后,用一張詞云歡快地結束案例分析:

結論

  • 本文用了目前自然語言界最強的模型BERT做遷移學習,效果看起來還挺 okay 的。

  • BERT 模型可以很好地抽出文字的特征,用于后續的實驗。如果小伙伴們有比較好的運算資源,可以把 BERT 當作是一個類似于 word to vector 的工具。

  • 自注意力機制不光能提高模型的效能,同時引入此機制能大大加強模型的可解釋性。

參考內容:

  • https://www.zhihu.com/question/298203515/answer/509470502

  • https://arxiv.org/abs/1810.04805

  • https://arxiv.org/abs/1703.03130

  • Github:https://github.com/Chung-I/Douban-Sentiment-Analysis

(本文為AI科技大本營轉載文章,轉載請聯系作者。)

推薦閱讀:

AI被“橫掃”反噬?

如何幫新手程序員快速分析 Error?

ProgPow:以太坊上浮世繪

名下企業比老板劉強東還多,京東“最強女助理”張雱什么來頭?

互聯網巨頭的春晚江湖

一萬多條拼車數據,看春運遷移大軍

30個讓程序員崩潰的瞬間,笑死我了

程序員給銀行植入病毒,分 1300 次盜取 718 萬,被判 10 年半!

總結

以上是生活随笔為你收集整理的bert 中文 代码 谷歌_如何用最强模型BERT做NLP迁移学习?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。