Slide 1

Slide 1 text

自然言語処理の基礎と実践 株式会社電通国際情報サービス X(クロス)イノベーション本部 AIトランスフォーメーションセンター 阿田木 勇八

Slide 2

Slide 2 text

アジェンダ 1. はじめに 2. BERTについて 3. 研究開発の取組み(ISID-BERTの紹介) 4. 自然言語処理の実践(Kaggleでの実践) • Kaggleとは • コンペ① • コンペ② 5. まとめ

Slide 3

Slide 3 text

はじめに

Slide 4

Slide 4 text

4 自己紹介 阿田木 勇八 所属: 電通国際情報サービス クロスイノベーション本部 AIトランスフォーメーションセンター 経歴: 2019年3月:千葉大学大学院融合理工学府修了(基幹工学/機械工学専攻) 2019年4月:新卒で医療機器メーカーへ入社し、 現場で製造業のいろはを学ぶ 現場課題を解決するAIを開発したいと思い転職 2021年9月:ISIDへ中途入社 現在は、AIモデル構築や顧客支援と並行してAIを使った自社サービス開発に尽力中 業務: 機械学習システム開発・導入・支援、自社のAIソフトウェアの開発 趣味: Kaggle等のデータ分析コンペティションへの参加

Slide 5

Slide 5 text

はじめに • 本発表では、自然言語処理(特に深層学習を用いた技術)について取り扱います。 • BERTをはじめとした自然言語処理技術については、既に多くの書籍やwebサイ ト等の情報がありますので、本発表では軽く触れる程度と致します。 • 実践編として、主に、データ分析コンペティション(Kaggle)で過去に開催さ れた自然言語処理をテーマとした課題について触れていきたいと思います。 • 様々なデータ分析手法を組み合わせた応用的な内容のため、難しいと感じる部分 があるかもしれませんが、少しでもお楽しみいただけますと幸いです。 5

Slide 6

Slide 6 text

BERTについて

Slide 7

Slide 7 text

• 「自然言語」は私たちが日常的に使用する日本語や英語といった言語 • 「人工言語」はある目的で人工的に作られた言語 例えばプログラミング言語であるC言語やJava、Pythonなど 7 そもそも自然言語とはなにか? 自然言語 (Natural Language) 人工言語 (Artificial Languuage)

Slide 8

Slide 8 text

自然言語のコンピュータ処理に関する学問・研究開発分野が「自然言語処理」 英語では ”Natural Language Processing(NLP)” と呼ばれる 8 自然言語処理とはなにか? 自然言語 (Natural Language)

Slide 9

Slide 9 text

9 自然言語処理の位置づけ 人工知能(AI) 機械学習 深層学習 自然言語処理 (NLP)

Slide 10

Slide 10 text

自然言語は曖昧であり、人間は無意識的に言語を柔軟に解釈できるが、 コンピュータにこのような処理をさせることは簡単ではない 10 自然言語処理の難しさ 1. 「今日の東京はとても暑い。」 2. 「今日の日本経済はウクライナ情勢の悪化や円安進行による物価上昇圧力の 強まりから実質賃金が下がっている。」

Slide 11

Slide 11 text

自然言語は曖昧であり、人間は無意識的に言語を柔軟に解釈できるが、 コンピュータにこのような処理をさせることは簡単ではない 11 自然言語処理の難しさ 1. 「今日の東京はとても暑い。」 2. 「今日の日本経済はウクライナ情勢の悪化や円安進行による物価上昇圧力の 強まりから実質賃金が下がっている。」

Slide 12

Slide 12 text

自然言語は曖昧であり、人間は無意識的に言語を柔軟に解釈できるが、 コンピュータにこのような処理をさせることは簡単ではない 12 自然言語処理の難しさ 1. 「今日の東京はとても暑い。」… 天気に関する文章? 2. 「今日の日本経済はウクライナ情勢の悪化や円安進行による物価上昇圧力の 強まりから実質賃金が下がっている。」 … 政治・経済に関する文章?

Slide 13

Slide 13 text

そもそもコンピュータが言語を理解することはどういうことなのか? • 違う表現で同じ意味を表す(=同義) • 東京大学 = 東大、購入 = 買う、渡米 = アメリカに行く • 同じ表現がさまざまな意味を表す(=多義) • マック: マックドナルド or マッキントッシュ • かける: (橋を)かける or (ソースを)かける ... • 階層的な系列をどのように扱うかを考える必要がある • 文字 → 単語 → 文 → 文書 自然言語処理の難しさ

Slide 14

Slide 14 text

BERT(Bidirectional Encoder Representations from Transformers) Transformerと呼ばれるAttentionを利用した深層学習モデルがベース - 文脈を考慮した単語のベクトル表現が可能 - 大規模な事前学習済みモデルから小規模なコーパスでの転移学習が可能 14 BERT 文章1:昨日、マックに行った。 文章2:マックのパソコンを買った。 文章1では飲食店として「マック」、 文章2ではガジェットとして「マック」 のベクトル表現を得られる

Slide 15

Slide 15 text

研究開発の取組み ( ISID-BERTの紹介 )

Slide 16

Slide 16 text

• BERTモデルはパラメータ数が多く、 モデルサイズが大きいので、限られた計算リソース (GPU/CPU)では学習が不可能 • 推論時間が遅い • ディスク使用量が多い → そのため、ISIDではBERTモデルを小さくして推論速度 を速くする方法を研究開発し、ISID-BERTを構築しました。 BERTにおける課題 ISIDではBERTを用いた製品開発にも取り組んでいます。 しかし、実際にBERTを運用するには以下のような課題があり ます。 16

Slide 17

Slide 17 text

ISID-BERTの特徴 1. 標準のBERTに比べて、モデルサイズが10分の1に圧縮されています。 2. 標準のBERTに比べて、2倍ほど長い文章が扱えます。 3. トークナイザーで使っている辞書は比較的新しいものを使っています。 17

Slide 18

Slide 18 text

ニュース分類タスクにより性能評価 ※記事タイトルを使用しない モデル accuracy 学習時間 (1枚K80) 推論時間 (1500件) alinear-corp/albert-japanese 89.27%​ 57分 3分50秒 yoheikikuta/bert-japanese 94.16%​ 1時間20分 4分10秒 cl-tohoku/bert-base-japanese-whole- word-masking 93.21%​ 1時間20分 4分15秒 albert-sudachi(ISIDオリジナル) 94.30% 1時間5分 4分3秒 ISID-BERT • Livedoorニュースの分類タスクに対してモデルをファ インチューニングしました。 18

Slide 19

Slide 19 text

文書活用AIソリューション:TexAIntelligence 1. ISID-BERTを組み込んだISID独自 の製品であり、実運用に耐えうる精 度と推論速度を備えています。 2. 文書の類似検索・自動分類・要約の 3つの機能を持っています。 ・類似検索: 検索サービスと同様の操作で文章を丸ごと検索し、類似度順に表示 ・自動分類: 過去文書を教師データとして自動で他分類のラベルを付与 ・要約: 文章群を自由な条件でクラスタリングすることで素早く文章群の意味を把握 19

Slide 20

Slide 20 text

• ここまで、「BERTについて」と「ISID-BERTを研究開発し製品に実装した話」をしまし た。 • 以上で、見てきたように、自然言語処理技術を製品に実装するためには、 既存の技術でできることできないことを把握し、効果的な手法を選択する必要があります。 • 実際に効果のある様々なAI技術について学ぶことができる場として、 Kaggleなどのデータ分析コンペに参加することが方法の1つです。 • そこで、ここからは、私が最新のAI技術をキャッチアップするために参加している Kaggleの話をしたいと思います。 ここまでのまとめ 20

Slide 21

Slide 21 text

自然言語処理の実践 (Kaggleでの実践)

Slide 22

Slide 22 text

• ここからは、実践編として、私が過去に参加したKaggleの自然言語処理タスク のコンペについて紹介します。 • 実際に色んなモデルや手法を使うことで、論文や参考書で紹介されている手法が 本当に効果のあるものなのかを身をもって体感することができます。 キーワード:文書分類、固有表現抽出 実践編で話すこと 22

Slide 23

Slide 23 text

• Kaggleとは、世界中のAIエンジニアが腕を競い合うプラットフォームです。 AIエンジニア界の『天下一武道会』と呼ばれたりします。 • Kaggleの参加者にはTiersと呼ばれるランクが設けられており、コンペなどで メダルを獲得していくことで昇格することができます。ランクは下から、 Novice、Contributor、Expert、Master、Grandmasterとなっております。 Kaggleとは 各メダル 取得条件 ×2 ×1 ×2 ×5(内1枚はsolo) 23 昇格条件

Slide 24

Slide 24 text

• Kaggleとは、世界中のAIエンジニアが腕を競い合うプラットフォームです。 AIエンジニア界の『天下一武道会』と呼ばれたりします。 • Kaggleの参加者にはTiersと呼ばれるランクが設けられており、コンペなどで メダルを獲得していくことで昇格することができます。ランクは下から、 Novice、Contributor、Expert、Master、Grandmasterとなっております。 Kaggleとは ×2 ×1 ×2 ×5(内1枚はsolo) 24 昇格条件 Kaggle Master は世界で約1600人/770 万人中 (0.021%) 、日本には200人程

Slide 25

Slide 25 text

個人的に、Kaggleの利点は、競争ゆえの楽しさと、様々な課題に実際に触れて知見を獲得でき るという点だと思います。 自分に合った動機で始めることが大事であると思いますが、Kaggleを長く続けていきたいと 思っている方は、「楽しむ」という気持ちを持っておくことがとても大切であると思います。 参加の動機については以下のようなものがあると思いますが、いずれもKaggleを続けていく中 で満たすことができるものです。 • データ分析の勉強をしたい。 • 実力を試したい。 • 自身のスキルアップ、キャリアアップしたい。 • 最新の解析手法などについて学びたい。 • 順位を競うことを楽しみたい。 Kaggleに参加して得られるもの 25

Slide 26

Slide 26 text

Kaggle Competitionに参加するにはKaggleアカウントが必要になります。 Kaggleには、「タイタニックコンペ」という練習用のコンペがあります。 Active Competitionsの右下にある「Titanic - Machine Learning from Disaster」を選 択してみましょう。 Kaggleの始め方 次に、とりあえず現行コンペに参加してみましょう! 適切なコンペの選び方 詳しく知りたい方は、AITCサイトへ https://isid-ai.jp/column/column19.html 26 AITC Kaggleコンペの始め方

Slide 27

Slide 27 text

私が参加したKaggleの過去コンペ例になります。 過去コンペ例 27 皮膚の画像からメラノーマ(悪性黒色腫)である 確率を予測するコンペ 顕微鏡画像内の各細胞のタンパク質ラベルを予測 するコンペ 「薬の働き」を予測するコンペ レポートの談話ラベルを分類するコンペ 患者メモ(カルテ等)から、症状の特徴を表す キーワード(臨床概念)を抽出するコンペ

Slide 28

Slide 28 text

私が参加したKaggleの過去コンペ例になります。 過去コンペ例 28 「薬の働き」を予測するコンペ 各コンペについて もっと詳しく知りたい方は、ISID-AITCサイトへ https://isid-ai.jp/column/column13.html AITC Kaggle人生を振り返って

Slide 29

Slide 29 text

本日紹介するコンペは、自然言語処理タスクである、下から2つのコンペになります。 過去コンペ例 29 皮膚の画像からメラノーマ(悪性黒色腫)である 確率を予測するコンペ 顕微鏡画像内の各細胞のタンパク質ラベルを予測 するコンペ 「薬の働き」を予測するコンペ レポートに対する談話ラベルを分類するコンペ 患者メモ(カルテ等)から、症状の特徴を表す キーワード(臨床概念)を抽出するコンペ

Slide 30

Slide 30 text

コンペ① Feedback Prize - Evaluating Student Writing

Slide 31

Slide 31 text

• タスク:アメリカの学生6年生~12年生までのレポートの文章を7つの談話ラベルに分類する • ラベル:Lead, Position, Claim, Counterclaim, Rebuttal, Evidence, Concludingの7つ • 評価指標: macro-F1(各クラスのF1値の平均) コンペ① 概要 31 談話ラベルの位置

Slide 32

Slide 32 text

• id-エッセイ応答のIDコード • discourse_id-談話ラベルのIDコード • discourse_start-談話が始まる文字の位置 • discourse_end-談話が終了する文字位置 • discourse_text-談話ラベルのテキスト • discourse_type-談話ラベルの分類 • discourse_type_num-談話ラベルの列挙された クラスラベル • predictionstring-談話ラベルの位置 コンペ① データについて #1 与えられたデータ 提出データ サンプル • どういうデータが与えられているか確認します。 • どういう出力にすればいいか確認します。 なるほど。 ラベル分類だけでなく、文 書中での該当箇所まで予測 しないといけないのか。 32

Slide 33

Slide 33 text

文章とラベルの例 コンペ① データについて #2 ふむふむ、 Positionラベルか。 文章が長いな。Evidenceラベルの文章は長め? また、Evidenceラベルだ。 Evidenceラベルは多め? • まずは、ざっくり定性的にデータを確認します。 • データを見て疑問をもつことが大事です。 33

Slide 34

Slide 34 text

コンペ① データについて #3 ◼ 各ラベル ごとの文章の長さの平均 Evidenceに長い文章が多い。 ◼ 各ラベル のカウント数 Claimが多い。 非常に不均衡なデータセットである。 不均衡なデータセットでも、学習・推論 が上手くいくように工夫が必要かも。 →バリデーションはStratifiedKFoldを用 いよう! • データをもう少し定量的に確認して、対策を考えます。 ラベルごとに文章長さに傾向がある。 推論時に、ラベルごとの文章長さに 閾値を設けてみよう! 34

Slide 35

Slide 35 text

• 結果:Pubricスコア 0.701、Privateスコア 0.712 全体2000人中83位で銀メダルを獲得 できました。 コンペ① ソリューション 35 項目 内容 モデル DeBERTa large 、Funnel Transformer 、Longformer largeのアンサンブルモデル 損失関数 Cross Entropy 最適化 AdamW クロスバリデー ション MultilabelStratifiedKFold (n_splits:5、colums:[“discourse_type” 、"discourse_type_num“]) 入力サイズ 1600 トークン (これより長い文章がテストにないことが分かっていたため) 正則化 マルチサンプルドロップアウト 後処理1 確信度の閾値変更。予測しやすいdiscourse_typeは高く、難しいものは低く設定 後処理2 discourse_typeごとの予測文章の長さによる閾値設定 学習用データの分布をもとに設定

Slide 36

Slide 36 text

• BERTの改良版であるDeBERTaが、最も精度良いモデルでした。 • DeBERTaなどのモデルはバッチサイズや学習率によってモデルの精度に影響がありました。 →実験すべきパラメータであることを学べました。 • AWPやFGMなどのAdversarial Trainingがモデルの改善に効果的でした。 • 面白い手法として、マルチサンプルドロップアウトを試すことができました。 この手法は学習の高速化と汎化性能の向上が可能です。 高速化はあまり実感できなかったですが、単一のドロップアウトよりも精度は向上しました。 参考 https://arxiv.org/abs/1905.09788 コンペ① 学び 36 実際に研究開発 でも使えそう

Slide 37

Slide 37 text

コンペ② NBME - Score Clinical Patient Notes

Slide 38

Slide 38 text

• タスク:患者メモ(カルテ等)から、症状の特徴を表すキーワード(臨床概念)を抽出 します。 • 臨床概念の例:(例:「食欲不振」)と、医学生が書いた臨床患者のメモにある様々な 表現方法(例:「食事量が少ない」「服がゆったり着られる」)を自動的に対応付けた い • データセット:ラベルありとラベルなしの患者メモデータがあり、 症例ごとに14種程度の臨床概念がありました。 • ラベルあり:1,000件の患者メモに対する特徴量注釈(10症状ごとに100件のメモ) • ラベルなし:41,146件の患者メモ • 評価指標: micro-F1(全予測のうち正しく予測できたものの割合) コンペ② 概要 38 臨床概念の位置(間隔)

Slide 39

Slide 39 text

コンペ② データについて #1 患者メモ データ 症状の特徴データ 患者メモの注釈データ 提出データ サンプル ・id:各患者メモ/特徴のペアのID ・pn_num:患者メモID ・feature_num:注釈が付けられた症状の特徴 ・case_num:患者メモが属する症状 ・annotation:注釈 ・location:メモ内の各注釈の位置を示す文字間隔 • どういうデータが与えられているか確認します。 • どういう出力にすればいいか確認します。 同じ患者メモIDに対して、複数のラベルがあるぞ。 バリデーションはGroupKFoldを使った方がよさそう。 39

Slide 40

Slide 40 text

文章と注釈の例 コンペ② データについて #2 このワードは何?医療用語は難しい。 AIはちゃんと学習してくれるかな。 トークナイザーに追加してみるか。 • まずは、ざっくり定性的にデータを確認します。 40

Slide 41

Slide 41 text

コンペ② データについて #3 • データをもう少し定量的に確認して、対策を考えます。 case_numのカウント数 case_numは不均衡だな。 ダウンサンプリングしたいけど、学習用の データ少ないな。 他に使えるデータはないかな。 41

Slide 42

Slide 42 text

思考回路 コンペ② データについて #4 事前学習(Mask language model)に用いてみる? 疑似ラベリング*して学習に用いよう。 まずはラベルのあるデータで精度のいいモデルを作りこむぞ。 ラベルがないデータがたくさんあるぞ。 • 整備されていないデータも活用しましょう • Kaggleにはそのままでは学習に使えないデータが与えられている場合があります ※ 疑似ラベリングとは、学習時にラベルにないデータの 一部を予測したものを含めて学習し、このモデルを使っ て再度データ全体を学習することです。 42

Slide 43

Slide 43 text

• 結果:Pubricスコア 0.88921、Privateスコア 0.88994 全体1471人中87位で銅メダルを 獲得できました コンペ② ソリューション 43 項目 内容 モデル DeBERTa-v1-large 、DeBERTa-v2-large 、DeBERTa-v3-largeのアンサンブルモデル 損失関数 BCEWithLogitsLoss 最適化 AdamW クロスバリデー ション GroupKFold(n_splits:5、Groups :pn_num(患者メモID )) 入力サイズ 354 (DeBERTa-v2、 v3) 、466(DeBERTa-v1) トークン 疑似ラベリング ラベルなしのデータが非常に多いため、疑似ラベルで半教師あり学習を実施。確信度が 高い予測のみ選択 前処理 疑似ラベル付けしたデータについては、症例ラベルごとの分布に偏りがあったため、均 等になるようダウンサンプリングを実施 (※データが多すぎるため全体の1割程度しか使用できず)

Slide 44

Slide 44 text

①勾配蓄積( gradient_accumulation_steps ) ②グラジエントチェックポイント ③下位層の凍結 ④ 8bit adam • 今回もDeBERTaが強かったです。コンペ①のV1以外のモデルも試しましたが、特にV2 モデルが強力でした。V1やV3とのアンサンブルも精度改善に効きました。 • タスクの専門性がある場合はMLMを事前学習として実施すると精度向上につながる場合 があります。特に、コンペ②の方は、医療用語が多いため、専門用語の多いデータでは 事前学習が大事そうです。 • 今回参加したコンペで使用したモデルDeBEATaは非常に強力ながら、学習に膨大なメモ リリソースを必要としました。そのため、メモリ節約手法として以下の方法があること が分かりました。 コンペ② 学び 44 実際に研究開発 でも使えそう

Slide 45

Slide 45 text

コンペ② メモリ節約手法の補足 ①勾配蓄積( gradient_accumulation_steps ): Optimizer.stepを実行する前に実行する学習ステップ数です。こちらの値を大きくすることで、学習時間を犠牲にして メモリ消費量を削減できます。 ②グラジエントチェックポイント: 学習時間が少し伸びますが、メモリの使用を節約できます。 ③下位層の凍結: BERTモデルは入力に近い下位層で一般的な言語知識を保持する傾向にあります。一方で、出力に近い上位層ほど、知識 はよりタスク固有になります。下位層を凍結しても、一般的な言語知識が依然として有用であり、特定のタスクに適応す るために上位層を変更する必要があることが想定されます。 そして、下位層を凍結することで、メモリの使用を抑えることができます。以上を利用することで、モデルの大きさを小 さくすることができ、効率よく学習することができました。 ④8bit adam : 8bitのadam最適化を使用することで、使用メモリを抑制することができます。ただ、私の実験では精度が下がってし まいました。MLMを実施したモデルでは、影響はなかったという報告もあるので、ある程度学習が進んでいる場合や簡単 なタスクでは利用できるかもしれません。 45

Slide 46

Slide 46 text

まとめ

Slide 47

Slide 47 text

• BERTについて • 文脈を考慮した単語のベクトル表現が可能であることを紹介しました。 • 大規模な事前学習済みモデルから小規模なコーパスでの転移学習が可能であることを紹介しました。 • 研究開発の取組み( ISID-BERTの紹介 ) • 研究開発の成果を製品に実装した例を紹介しました。 • 自然言語処理の実践(Kaggleでの実践) • 自然言語処理の実践としてKaggleの例を紹介しました。 • 実際に、コンペに参加することで、研究開発にも活かせる手法を得ることができました。 まとめ 47

Slide 48

Slide 48 text

• ISID-AITCでは、AIを使ったビジネスに興味のある方、AIの研究をされている方 を積極的に採用しております。 • ISID-AITCは、やりたいことがあれば、挑戦させてくれる環境です。 • AIでやりたいこと(製品開発や社会課題の解決)がある方は、ぜひ弊社へ。 一緒に、AIをビジネスに活かしませんか 48 https://isid-ai.jp/