1 BERT簡介
BERT是2018年google 提出來的預訓練的語言模型,并且它打破很多NLP領域的任務記錄,其提出在nlp的領域具有重要意義。預訓練的(pre-train)的語言模型通過無監(jiān)督的學習掌握了很多自然語言的一些語法或者語義知識,之后在做下游的nlp任務時就會顯得比較容易。
BERT模型采用的是12層或者24層的雙向的Transformer的Encoder作為特征提取器。在nlp領域,特征提取能力方面的排序大致是Transformer>RNN>CNN。遮蓋詞的預測任務(mask word prediction)和下一個句子預測任務(next sentence prediction),這兩個頗具難度的預訓練任務,讓模型在預訓練階段就對自然語言有了比較深入的學習和認知,而這些知識對下游的nlp任務有著巨大的幫助。當然,想要模型通過預訓練掌握知識,我們需要花費大量的語料,大量的計算資源和大量的時間。但是訓練一遍就可以一直使用,這種一勞永逸的工作,依然很值得去做一做。BERT在做下游的有監(jiān)督nlp任務時就像一個做了充足預習的學生去上課,那效果肯定事半功倍。
之前的word2vec,glove等Word Embedding技術也是通過無監(jiān)督的訓練讓模型預先掌握了一些基礎的語言知識,但是Word Embedding技術無論從預訓練的模型復雜度(可以理解成學習的能力),以及無監(jiān)督學習的任務難度都無法和BERT相比。
2 BERT的項目實戰(zhàn)
BERT-BiLSMT-CRF-NER 使用谷歌的BERT模型在BLSTM-CRF模型上進行預訓練用于中文命名實體識別的Tensorflow代碼
擴展參考:ChineseNER(RNN)--Recurrent neural networks for Chinese named entity recognition in TensorFlow
bert-Chinese-classification-taskbert 中文分類實踐
pytorch-pretrained-BERT Google官方推薦的PyTorch BERB版本實現(xiàn),可加載Google預訓練的模型
3 總結
BERT 就像圖像領域的Imagenet,通過高難度的預訓練任務,以及強網(wǎng)絡模型去預先學習到領域相關的知識,然后去做下游任務。 想較于一些比較于直接使用Naive的模型去做深度學習任務,BERT就像班里贏在起跑線上的孩子,肯定比其他孩子要強出一大截。現(xiàn)在是不是感受到BERT的威力了,嘗試用起來吧。
4 參考
張俊林博士的解讀, 知乎專欄:從Word Embedding到Bert模型—自然語言處理中的預訓練技術發(fā)展史