はじめに
当社の自然言語処理チームにてBERTが話題になっています。Googleが発表したpre-trainedの、文脈を考慮する汎用言語表現モデルとのことで調査する前から期待大でした。
BERTとはいったいどんなものなのか、役に立つのかを2回に分けてお伝えいたします。
- 第一回(この記事):BERTとは
- 第二回:実際に使用した検証結果報告
論文:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
github:google-research/bert
BERTとは
今求められているAI
BERTとは何か、の前にBERTのようなものが求められる背景からご説明します。
AIのモデル(アーキテクチャ)は、用途によって大きく二つに分けられます。一つは解決できる問題が限られるが高い精度が期待できる「特化型」、もう一つは一度モデルを作ってしまえば広く応用できる「汎用型」です。
図1のように、特化型モデルではタスクごとに独自のモデルが必要です。しかし、図2のように、汎用型モデルでは全タスクに対して共通のモデルを活用して特徴を抽出できるため、簡単なモデルを作るだけで様々なタスクに対応できます。
近年のディープラーニングの流行により、AIのモデル作成に必要な計算コストは急速に増大してきました。そのため、作成するモデルの数が少なくて済む「汎用型」のモデルが欲しい、という要求は日々強まっています。自然言語処理において「汎用型」の実現のためには抽象的な「言葉の意味」や「文脈」といった情報を利用可能にする必要がありました。
「汎用型」までの道のり
自然言語処理における汎用型としては、2013年にGoogleの研究チームから発表されたWord2Vecという手法があります。この手法はニューラルネットワークを利用することで「言葉の意味」を抽出できるようにし、自然言語処理の世界にブレークスルーをもたらしました。しかしこの方法も、要求を十分に満たしているとは言えませんでした。Word2Vecはその名の通り、Wordつまり単語に対する手法であったため、例えば「冷たい」等の文脈によって意味が変わる単語に弱かったからです。また、単語の意味解釈のみを行うため、単語の意味を越えたニュアンスのような抽象的な情報を解釈することができていませんでした。
この抽象情報の抽出という課題に対して効果を発揮した方法がTransformerです。TransformerはAttentionというアーキテクチャを用いることで、解釈するときにどの単語を参照すべきかという抽象的な「注意」情報を利用可能にしました。これによりWord2Vecを用いたときのスコアを大幅に更新しましたが、Transformerには文脈情報が欠けていました。
弱点を克服したAI「BERT」
そこで登場したのがBERTです。BERTは基本的なアーキテクチャにTransformerを採用しています。さらに、学習の方法を工夫することで文章全体の情報を参照し、文脈を考慮した出力を可能にしているのです。公開されている論文によれば、実に11種類のベンチマークタスクで、従来の最高スコアを超えています。これは、高い汎用性をBERTが持っているということを示していると考えられます。
更に、精度以外にも嬉しいことがいくつかあります。まず、ディープラーニングに付きまとう「データの量を確保しなければいけない」という問題の軽減です。Google社が膨大なデータと計算リソースを用いて学習済みの(pre-trained)モデルが公開されているためです。さらに、「学習に時間がかかる」という問題も軽減できます。本来ゼロから複雑なモデルを学習させなければいけないところ、pre-trainedモデルを元に上図2のようにシンプルなモデルを加えて学習をさせることで、少ない学習時間でも高いスコアを得ることが期待できます!
まとめ
今回は簡単にですが、BERTの紹介をいたしました。自然言語処理におけるいくつもの問題を解決してくれる可能性を一緒に感じて頂けているでしょうか。
現在BERTを実務内容を含むいくつかの課題に適用・検証しています。検証が完了し次第、検証内容と結果を次の記事で報告いたします。是非そちらもご覧ください!
執筆者プロフィール
-
入社して半年間ロボコン活動に専念。少しのJavaエンジニア期間を経てデータ分析や機械学習、Deep Learningをテーマに勤労しております。
昔取った杵柄を摩耗させつつ新たな支えを求めて試行錯誤中。
この執筆者の最新記事
- Pick UP!2020.10.30Python/Kerasで学習させたモデルをJavaで動かすだけじゃ速くならなかった
- ITコラム2020.08.04DL4Jを使うためにEclipseでMaven使おうとして困ったら
- AI2019.11.29AIの検証・開発を行うときに必要なハードウェア条件とは?
- AI2019.08.05Google Colaboratoryの無料GPU環境を使ってみた