Pay money To my Life

Spend time for myself, and you... "Knowledge was the only way to remember that your past is true"

BERT応用勉強会に参加しました

はじめに

BERT(Bidirectional Encoder Representations from Transformers、「バート」と発音)は、Googleが2018年に提案した、TransformerのEncoderを使用しているモデルであり、NLP自然言語処理において単語の分散表現を生成する手法としては現在最も使用されている、勢いのあるモデルです。BERTについては、他の記事を参照してください。下に貼っておきます。

qiita.com

そのBERTモデルの応用をテーマにした勉強会が開催されました。コロナの影響もあり、オンライン(YouTubeでのライブ配信、clusterでの参加)で開催された。Connpassを下に貼っておきます。

nlpaper-challenge.connpass.com

配信されたYouTubeはこちら。

https://youtu.be/6QFmYVTAxK4

Twitterは、ハッシュタグ #xpaperchallenge twitter.com

BERT応用勉強会

タイムテーブル

時間 内容 発表者
19:00~19:10 nlpaper.challengeの紹介 yamamoto
19:10~19:30 LT1: 医療言語処理へのBERTの応用 ―BioBERT, ClinicalBERT, そして― Yuta Nakamura
19:30~19:50 LT2: Multilingual BERTの二言語領域適応に基づく対訳文同定 siida
19:50~20:10 LT3: BERTのMulti Modalタスクへの活用 ymym3412
20:10~20:30 LT4: BERTをブラウザで動かすには ―MobileBERTとTensorFlow.js― Shion Honda
20:30~20:50 LT5: テキスト生成の評価 × BERT cfiken

nlpaper.challengeの紹介

  • 2019年から活動開始
  • cvpaper.challengeのnlpバージョン
  • 論文のサーベイだけでなく、国際会議での発表まで目標にしている

LT1: 医療言語処理へのBERTの応用 ―BioBERT, ClinicalBERT, そして―

  • 医療の言語処理をやっている人が少ない、、
  • 2014.09...Attension Mechanism(RNN/LSTM)が主流2017Transformer,2018BERT after BERT
  • 医療業界においては、技術自体はすでにafter BERT
  • Biomedical NLPにもBERTは浸透してきている、しかしより現場に近い研究への流入は始まったばかり(実際の医療現場にある文書を対象にしているのはいまだにロジスティック回帰だったり、古典的なものが主流)
  • 診療記録に対してのDL手法としては、まだまだRNN/LSTMが主流
  • 今現在として、少しずつBERTの論文が出始めた(ようやくBERTが現場に流れ始めた)
  • 医療ドメインに特化したBERTが登場してきている
  • BioBERT...BERTをさらに医学論文で学習させたもの
  • CriticalBERT...ICU診療機構(MIMIC-Ⅲ)で学習(実際のカルテ)
  • EhrBERT...BioBERTから実際のカルテを学習させたもの
  • BioBERTで病名正規化(病名表記揺れの正規化)の精度向上(MetaMap f1=0.572 -> 0.886 (SOTA))
  • FigSumというモデル(論文中のキャプションと図も読み込ませたもの)もある
  • ClinicalBERT...診療記録の文書分類AUC0.67, i2b2も大きく改善
  • 含意関係認識...MedNLI(xとyという二つの症状の含意関係をY/Nで)
  • BeHRtという、BERTを言語でないものに使用しようというモデルが生まれている
  • 診断に使用する場合、トークン列を[SEP]で区切るのではなく年齢等を[SEP]で区切る、診断の一部を[MASK]にして復元させる学習をすることで、数ヶ月後に患者の診断がどうなるかということを予測する
  • TAPERという、患者さんの入院記録そのものをモデル化するやつも
  • 言語でーた:診療記録、非言語データ:ICDコード、薬剤コード、処置コード、それぞれをベクトル化し和をとる -> 非言語データを入れることで精度が向上したをいう研究成果も
  • ここまでの新しいBERTモデルらは英語のもの
  • 東京大学医療AI開発講座から、日本語診療記録に特化したBERTモデルが公開された(ようやく出てきた)
  • 臨床現場との距離はまだ遠いのが現状、だけどこれから発展していくだろう(日本語版も発展していってほしい)
  • (質疑応答: FineTuningはどうしているの?)BioBERTとかは基本的には学習データが変わっただけでそれ以外は変わっていない、だけど最近は診断コードや患者さんの情報など、非言語情報や文書情報でないものも取り込まれるようになってきている
  • (質疑応答: 実際にこういった技術はすぐに医師が使えるのか?BERTが医療現場で使われていないハードルは何?)NLP自体がすぐに医療に役に立つ、というところにまできていない現状(2つの医学的記述が含意関係にあると分かった(ClinicalBERTx診療記録)として、そこから何ができるか?エビデンスとして十分なのか?という部分で、数字に役立ちましたとわかりやすい形で出るまでは広く受け入れられないだろう

LT2: Multilingual BERTの二言語領域適応に基づく対訳文同定

  • NLP2020で発表したものと同じ
  • BERT [Devlin+, NAACL -2019]はGoogle検索に2019/10/25に導入された
  • 機械翻訳の対訳文をBERTを使って収集しようというもの(日英の対訳を大量に収集する手法としてBERTを使いましょうというもの)
  • LASERの登場により対訳文収集へのNN活用が進んだ、BERTを使ってやってみよう
  • 特許データをもとに収集
  • LASERだと図(Fig)とかの対応は取れるが、図番号の対応までは取れない
  • Masked Language Model (MLM)Fine Tuningに約20万の文章を使用
  • 文対応手法により、文対応スコアが0.05以上のものを訓練用に使用
  • 英文、和文の対応が1対1でないことも多い
  • 二段階の学習を実施している:二言語領域適応、fine-tuningによる対訳文分類器の作成
  • 公開されているBERTはWikipediaで学習しているため特許独特の表現にそのままでは適応しない
  • M-BERTのMLMを再訓練することによって領域適応し、各言語ごとにそれぞれ言語モデルが訓練されるとともに言語間の対応が取れていないものにも適応可能になる
  • fine-tuningにはQQPを使用(入力した2つの文章が同一の意味か否かを判定する英語おける手法;2つの英文間をみる)、これを日本語と英語間として適用した
  • 学習には、NVIDIA GPU, バッチサイズ8
  • (質疑応答:二言語領域適応のみだとどうなの?※ボクの質問!うぇい!)二言語領域適応のみだと、今後教師データが不要になったりとさらによくなる、今後の課題
  • (質疑応答:翻訳性能は測っていないの?)翻訳性能は測っていない、同じ研究室の別のものがやっているので今度学会で発表されることでしょう
  • (質疑応答:sentence-BERTではなくLASERと比較した理由はなんでしょうか)今だったらSentence-BERTを使った方がいいかも、最初のとっかかりとしてLASERと比較した

LT3: BERTのMulti Modalタスクへの活用

  • MultiModal...複数のモダリティから推測する(皮肉は文章だけでなく、表情とかも読み取った方が精度良く推定できるでしょう?っていう)
  • MultiModalで使用されているBERTは複数ある; ViLBERT, LXMERT, VLBERT, UNITER
  • BERT使って解きたいタスク: 画像と文章を組み合わせた質問、画像にアノテーションされているものに対してテキストでその状況説明のうち正しいものを選択する、文章中で指定されている対象を図中から同定する、など両方のModarityをしっかり理解する必要がある
  • ViLBERTについて
  • Self-attension(Query/Key/Valueは全て自身から)の代わりにCo-attension(Query自身から、Key/Valueは他のModarityから)のレイヤーを使用
  • [, v1, ..., , w1, ..., ]の形式、ランダムにマスクしたvi/w1のクラスを予測するor画像を文章の対応を予測する
  • LXMERTについて
  • ModelごとのTransformer encoderとModarityを統合・複数個スタックする
  • 事前学習タスクには複数ある(発表中では5つ紹介)
  • VLBERTについて
  • Encoderを分離せずに、imageとtextを同じencoderに投入・self-attentionする
  • Unicode-VLについて
  • VBERTと差分は少ない、fine-tuningした後のタスクが少し違う
  • 違いってなんや?っていう論文登場
  • UNITERについて
  • VLBERTと同じようにimageとtextを同じencoderに投入、そのご4種類の事前学習タスクに投じる; Masked Language Modeling, Image-Text Matching, Word-Region Alignment(最適輸送問題として解く;IPOTで求め、その距離を損失とする), Masked-Region Modeling(回帰、クラス等3種類の損失関数を使用)
  • UNITERつおい
  • 俯瞰してみると、ModalごとにEncoderを分けて使用するのが主流になっている
  • モデル固有の事前学習タスクが設定されることで他のモデルとの差を生み出している
  • (質疑応答:ビジネスで応用される、ビジネスとして活用できる場面は?)テキストから画像、画像からテキストを検索といった、Modalをまたいだ動きができる
  • (質疑応答:マルチモーダルは単一モーダルよりも認識精度は、やはり向上するのでしょうか?その分、難易度も高くなるのでしょうか?トレードオフ?)一概には言えない、imageとtext両方にencodeしなくてはいけないため学習の難易度が上がるため。実際やる場合には、modal同士のalignmentが機能するような損失関数を設計すること、簡単な学習タスクから始めて少しずつ難しくしていくなど学習方法にも工夫が必要
  • (質疑応答:画像とテキストの事前学習、ファインチューン、それぞれのデータ数の目安)数万〜数十万を複数Modalで組み合わせるので、10万、20万、多くて50万とか

LT4: BERTをブラウザで動かすには ―MobileBERTとTensorFlow.js―

  • 質問文を投げると、文章中から回答を探してきてくれる(文章が存在していない場合、No Answerっていうのも答えとして出力してくれる)
  • MobileBERTの適用例として、Ctrl+Fでできるキーワード検索に質問を入力することで答えをサイト内から探す、という応用例(うまくいく時といかない時はある)
  • モバイル端末向けに、軽量化・高速化したBERT(学習方法の工夫、アーキテクチャの工夫)
  • 学習方法...BERT Largeからの蒸留を採用(Progressive K.. Transfer下層から順に一層ずつ学習、各層の特徴マップと注意マップを近づけていく)
  • アーキテクチャの工夫...PKTのために教師と生徒で各層の入出力サイズは一致させなければならない(教師は逆ボトルネック型、生徒はボトルネック型)
  • inputのパラメータを揃えつつも、他のレイヤのパラメータはIB-BERTと比較して大きく削減(精度としてはBERT Largeには負けている)
  • 日本語版公開軽量BERTはALBERTがある
  • TensorFlow.jsでは、学習済みのモデルを呼び出すだけで使えるのでとっても便利
  • (質疑応答:MibileBERTに限らず、BERTの性能をほぼ維持しつつ高速化させるアプローチは多数報告されていると思います(パラメータの量子化やPoorMan's BERTなど)が、タスクや実装環境によって得手不得手があったりするのでしょうか?)ハンか性能と軽量性、速度を両立するのは困難

LT5: テキスト生成の評価 × BERT - BERTScore, MoverScore, BLEURT

  • BERTを用いた評価についてがメイン
  • テキスト生成;xxx-to-xxx (text-to-text, data-to-text, image-to-text, etc.)
  • 教師あり学習なので、ラベルと出力の分を比較することで生成文を評価する
  • 課題の一つに、評価の難しさがある(どうやって定量的にやる?単語の一致度?意味?機械が評価するには、単語の一致数などの一致度を見て評価してしまいがち、利用する側からすれば意味が一致している方が嬉しいのだが、、、)
  • 現状、自動評価に加えて人で評価も行っている、すっごい手間。
  • 既存指標は単純に単語のマッチングを見ていることが多い;n-gram matching base (precisionをベースにしたBLUE、F値を使用したMETEOR)
  • Word Mover's Distance (輸送距離)
  • 学習可能な評価指標も(人手評価の値を推測する回帰モデル)
  • 既存の評価指標は、多くが表面上の違いにばかりフォーカスしてしまっている
  • 意味まで見るためにBERTを使用する
  • 1.BERTScore
    • BERTの出力を用いてreferenceとcandidateをともにBERTに突っ込む、各単語についてmax(場合によってはidfで重みづけ)をとる
    • 実装が簡単
    • 元データのQQPでもadversarial sapを加えたPAWSでも性能高
  • 2.MoverScore
    • word mover's distanceをBERT出力に適用
    • BERTScoreでは最も炊事どの高い単語だけを参照するが、MoverScoreでは最適輸送問題をそくのでどのように分布を移動させればよいかをみる
    • Uni-gramではBERTScoreとほとんど差がない、Bi-gramでは、まぁみる範囲が大きくなるので差が出る
  • 3.BLEURT
    • BLEUやBERTScore、Backtransitionを用いて学習
    • wikiのテキスト180万から擬似ペアデータ650万を作成
    • 15種類のラベルを作成してpre-trainしている
    • これをやった後に、人手で作成したラベル付きペアデータに対してfine-tuningしている
  • 指標は3つに分類できる;ルールベース、汎用的なモデルの出力を比較する、人手評価をモデリング。3つ目はアーキテクチャ合戦になるため、1と2のハイブリッドがこれから研究が大きく進んでいくと考えられる
  • (質疑応答:テキスト生成の評価指標,五月雨式にさまざま提案されている印象ですが,どれも定着せず,結局BLEUが使われ続けているように思います.なぜ新しい評価指標は定着しないのか,また定着させるためには,どのような努力(アカデミアに向けてのアピールの仕方など)が必要だと思われますか? and モデルを利用した評価は学習データの変化や、より精度の高いモデルが出た時にベースラインが変わってしまう点が課題で、結局ロジックベースのスコアが公平性という点で使われ続けている気がします。こういった問題の解決に向けた取り組みはありますか?)人手評価をモデリングする手法が出てきている、なんでBLEURが使われないのか、扱うのが難しいから。BERTScoreは名前から信用しやすそうなのと、扱いが簡単なため。今は研究においても、これと比較すればいいっていう王道の基準がない。BERTScoreっていう基準が出てきてくれたのは大きい。これからに期待。
  • (質疑応答:モデルをBERTで推論すれば,BERT-score高くなる気がする.実質リークになってたりしないのでしょうか?)可能性はあるけど、そこまで問題はないだろう。入力が文章で、サンプリングされているため、ほとんど問題ないと思われる, BERTScoreの癖をよっぽど掴まない限りリークはしないだろう
  • (質疑応答:スコア計算にかかる時間はどれくらいなんでしょうか) BLUEの1.5~2.0倍くらい(GPU環境)

終わりに

世界的に見れば、そりゃほとんどの国で英語が使われているんだから英語のBERTモデルはどんどん進んでいくよねって話なわけで。日本語にもこれから期待したいし、英語を覚える必要ないくらいにBERTが言語間の壁を打ち破ってくれる存在になって欲しいなと。



言葉を、ダイジに。
昨夜の野田洋次郎/RAD x Taka/OORのインスタライブには震えましたな。
ってことで、今回はこちらの曲を聞いてお別れです。

(せーのっ)

\\\ バイ・マイ・サイ ///