RのWeb制作

Webサービス制作のための技術情報を。データ分析(Python、機械学習コンペ他)や自作野球ゲームMeisyoのこと中心。

Python データサイエンス

自然言語処理×教師なし学習での温故知新 PythonでBERT-MaskedLM実装

投稿日:2022年2月25日 更新日:

はじめに

自然言語処理(BERT、GPT-3)および画像認識(ViT)等で以前のState of The Artモデルを超える精度を発揮したTransformer(元論文:Attention Is All You Need)を元にしたモデルたちが存在します。

その中で、BERT: Pre-training of Deep Bidirectional Transformers for Language Understandingという、2022年現在では自然言語処理ベーシックとなった手法が存在します。

ベーシックになった一端として、MaskedLMと呼ばれる学習方法があると私は考えました。

なぜMaskedLMが重要なのか

大規模なデータセットから、モデルを用いて表現学習する際に、教師ラベルを付与する必要がなくても問題がないことを示したからです。

例えば、Deep Learningが注目されるきっかけとなったImageNet Large Scale Visual Recognition Challenge(ILSVRC)は、画像に物体のラベルを1:1で付与したデータセットImageNetを利用しています。

そこで問題となるのは、教師ラベルを付ける工数やその整合性です。

工数は、AIアノテーションの意味とは?タグ付け自動化ツール17選を比較のような製品群ランキングが出てくるように喫緊の課題とされています。
整合性については、現実問題、データ量があまりにも多すぎて検証しようがない状況ですが、近年、AIの専門誌ではないテック系メディアのWiredにAIの基盤となるデータに「ラベル付けの間違い」が蔓延、その影響の深刻度が掲載されるような状態です。

そのように、ラベルを付与する手間や正しさが分からないまま教師あり学習を行うとノイズが含まれる結果となり、ノイズなしのデータと比べてどうしても精度が落ちる(A Chat with Andrew on MLOps: From Model-centric to Data-centric AI)ということが分かっています。

その点、教師なし学習で表現学習ができるMaskedLMは、もともとのデータ(文章)が膨大なメンテナンスコストをかけて整備され続けてきたもの(例:Wikipedia)であれば、ノイズはほぼ含まれていないであろうと考えられます。以前は、教師なし学習でそのような大規模な学習は不可能でした。

そのため、MaskedLMは画期的であろうと私は考えました。しかも、画像処理より難易度の高いと考えられている自然言語処理て、事前の表現学習が可能となりました。

もちろん、画像処理においても、現在ではさまざまな教師なし学習(例:Contrastive Learningの2大手法SimCLR・MoCo、それぞれの進化 (画像の表現学習2020夏特集2))が提案されていることは忘れてはならないかと思います。それは、MaskedLMが提案された後です。

では、実装したコードを示します。

MaskedLMの実装

R2002/NLP_MaskedLM
・Pytorchでの実装です。
・利用される場合はrequirements.txtをpipでインストールしてください。
・学習用テキストは太宰治「走れメロス」を利用しています。

学習方法は、マスクしたトークンを周辺のトークンから推測します。
トークンとは、与えられた文を形態素解析し、1つ1つの意味(チャンク)に分けられた後の語のことを示します。

例えば、文をメロスは激怒したとすると、

形態素解析後にメロス/は/激怒/したのように分けられます。

そのうち、メロス、は、激怒、したというそれぞれの語をトークンと呼びます。

MaskedLMは、そのトークンをランダムにマスクし、下記のようなデータを生成します。

説明変数:
メロス は [MASK] した

目的変数:
激怒

そのため、教師データが必要ありません。学習用データを自分自身から作ることができます。

そのため、膨大でかつ品質が担保されたデータがあれば、人に比肩するような精度を持つモデルが作れた理由の一端として、私はMaskedLMが非常に重要なのではないかと考えています。

※正確な説明はBERTによる自然言語処理入門 ―Transformersを使った実践プログラミング―など専門書をご覧ください。

さいごに

今回はBERTでのMaskedLMの学習方法となぜ重要なのかを確認しました。

BERTの提案は2019年ですので、2022年まででまた大きく技術が進歩したと考えています。

ただ、MaskedLMをはじめとした学習方法が持ち込んだ問題点としては、膨大なデータがあれば、良いモデルは学習できる・・・が学習できる環境は整っているのだろうか?ということです。巨大な計算リソースがなければ大本となるモデルは作れない、つまり、大企業や潤沢な研究資金・資材が得られない環境であれば、新しいことができなくなるのではないかということです。その分、転移学習などで利用は簡単になりましたが・・・。

今回、GitHubで示したコードの条件下(CPU利用)でも、走れメロスのみで30分近くの学習時間がかかりました。計算資源がディープラーニングの制約にのような記事も散見されます。

研究の流れとして、精度がある程度満たされれば計算速度が追及され、計算速度が要求以上になれば精度を求める・・・のような揺り戻しは来ると思います。

機械学習系のコンサルタントとして、今後もBERTを追っていきたいと思います。

以上、れいでした。

おまけ

MaskedLMの手法改善

私が思うに、MaskedLMの改善手法として下記がありそうだなと考えていました。
1・Mask割合を変動させる
2・復元抽出を行って再度Maskしなおす
今回は、(1)が論文において実証されたようです。

-Python, データサイエンス

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

[Python]グリッドサーチを軽量化し、チューニングしたパラメータも反映する機構を作る

パラメータチューニング方法であるグリッドサーチ、 確かに自動で実行してくれて、すごく便利なのですが問題点があります。 めっちゃ時間がかかる もし、下記のパラメータ設定のモノを全てグリッドサーチしようと …

Pandasに行を追加する時はappendを使わず、コレを使おう

はじめに 筆者は仕事柄Pythonのコードレビューをすることが多いのですが、まれにPandasに行を追加する最適な方法で相談されることがあるので、今回書きました。 まず言えることは、Pandasの標準 …

Jupyter Notebook「7ブロック」でかんたん複数動画のフレームの切り出し(Movie To Image)

はじめに 機械学習のために、動画から画像のデータセットを取り出す必要がありました。 動画 → 画像の変換には多くのフリーソフトはありますが、 今回使おうとした「MOV」ファイルが読み込めるまともなフリ …

ゲームデータで学ぶSQL(初級編)

近年のデータサイエンスブームをきっかけに「SQLを学びたい」と思った方へ。 そう思ったところで、壁になってくるのは実データの入手です。 私は職業としてデータサイエンス関連の業務に従事していますが、キレ …

【教材紹介】Python ゼロからはじめるプログラミング

概要 「プログラミング、興味はあるけどどう始めたらいいのかわからない。」というあなた!まずは、丁寧な説明と図、問題集までついたこの1冊(無料PDFあり)で入門してみませんか? 内容を確認しましたが、こ …