目次
本記事では、自然言語処理の手法の一つである「BERT」を使い単純な二値分類問題を行った例を紹介したいと思います。
BERTとは
BERT[Bidirectional Encoder Representations from Transformers (Transformerによる双方向エンコーダ表現)]とは、Googleのチームが2018年10月当時に「GLUE」等の自然言語処理ベンチマークにて最高性能をマークした汎用的に扱える深層学習を利用した自然言語モデルになります。
このモデルの特徴としては、以下の点が挙げられます。
- 汎用的モデル
BERT以前の深層学習を利用したモデルでは、タスク毎に学習用の文章を大量に用意して1からモデルを作成してきましたが、BERTでは「事前学習済みモデル」に対して再学習(ファインチューニング)を行うことで様々なタスクに対しこれまでのモデルよりも比較的少量の文章量で各タスク向けに学習が可能です。 - 同綴異義語への対応が可能
BERTは、contextualモデル(文脈を考慮したモデル)でありWord2VecやGloVeのようなcontext-freeモデル(文脈を無視したモデル)より多くの表現を持つことができます。
例えば、「work」という単語に対し「easy work(簡単な仕事)」でも「the work of a famous sculptor(有名な彫刻家の作品)」でも、context-freeモデルは、「work」という単語に対し一意の表現しか持たない為、「仕事」と「作品」の違いが区別できません。
しかし、BERTは文脈(contextual)モデルかつ双方向(Bidirectional)であるため「仕事」の意味である「work」に対しては、「I have a lot of easy … to do this evening.」という前後の文章を利用して「work」を表現し、「作品」の意味である「work」は、「I will be buying the … of a famous sculptor.」という前後の文章を利用して「bank」を表現する為、両者の区別が可能になります。
Watsonとは
IBMが開発したAIサービス群の総称です。
特に自然言語処理に対しては非常に強く、自然言語処理関係のサービスだけでも9つあります。
今回は、文章分類問題ということなので文章分類に特化した「Natural Language Classifier」というサービスを利用しました。
CoLA(The Corpus of Linguistic Acceptability)とは
今回使用するCoLAとは、GLUEと呼ばれる自然言語処理ベンチマークタスクの一つであり、文章の自然さを評価するためのタスクです。
基本的には、2値分類であり入力された文章に対して、「自然である」「自然でない」を判定します。
具体的なデータとしては、下記のようになっています。
0:自然な文章ではない
1:自然な文章である
0 He is the happiest that that he has ever been is believed.
1 He is the happiest that it is believed that he has ever been.
0 The hardest that that it has snowed here is believed was last January 12th.
1 The hardest that it is believed that it has ever snowed here was last January 12th.
比較検証
学習時間の関係上、CoLAデータセットをそのまま使うのではなく、下記のように分けました。
- 教師データ:6841件(6841文)
- テストデータ:1710件(1710文)
教師データすべてを学習させてテストデータをすべて分類させたときの結果が以下のようになりました。
BERT | Watson NLC | |
正解率 | 73.68% | 62.63% |
単純な正解率を比較するとBERTのほうが約11%差をつけて優位となりました。
実装や環境整備の手間等も考えると一概にBERTが良いとは言えませんが、現行のサービスとして動いているものに対してのこの差は、優秀と言わざるを得ません。
まとめ
今回は、CoLAを使ったBERTとWatson NLCの比較検証を行いました。
結果としては、BERTの圧勝となりTransformerの威力を体験する結果となりました。
また、BERTには今回行った「文章分類問題」以外にも「固有表現抽出(NER)」や「質疑応答問題(SQuAD)」にも対応している為、これらのタスクも紹介できたらと思います。