Upgrade to Pro — share decks privately, control downloads, hide ads and more …

自然言語処理の基礎と実践

AITC - DENTSU SOKEN
September 28, 2022
1k

 自然言語処理の基礎と実践

以下イベントの登壇資料です。
https://rikeinavi.com/24/event_detail/?id=4d78f4186ead2cbc58d0092218cc1bff

自然言語処理(特に深層学習を用いた技術)について取り扱います。
[1] BERTをはじめとした自然言語処理技術については、既に多くの書籍やwebサイト等の情報がありますので、本発表では軽く触れる程度と致します。
[2] 実践編として、主に、データ分析コンペティション(Kaggle)で過去に開催された自然言語処理をテーマとした課題について触れていきたいと思います。

AITC - DENTSU SOKEN

September 28, 2022
Tweet

More Decks by AITC - DENTSU SOKEN

Transcript

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

    View full-size slide

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

    View full-size slide

  3. はじめに

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  6. BERTについて

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  18. ニュース分類タスクにより性能評価
    ※記事タイトルを使用しない
    モデル 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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  24. • 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人程

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  30. コンペ①
    Feedback Prize - Evaluating Student Writing

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  35. • 結果: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ごとの予測文章の長さによる閾値設定
    学習用データの分布をもとに設定

    View full-size slide

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

    View full-size slide

  37. コンペ②
    NBME - Score Clinical Patient Notes

    View full-size slide

  38. • タスク:患者メモ(カルテ等)から、症状の特徴を表すキーワード(臨床概念)を抽出
    します。
    • 臨床概念の例:(例:「食欲不振」)と、医学生が書いた臨床患者のメモにある様々な
    表現方法(例:「食事量が少ない」「服がゆったり着られる」)を自動的に対応付けた

    • データセット:ラベルありとラベルなしの患者メモデータがあり、
    症例ごとに14種程度の臨床概念がありました。
    • ラベルあり:1,000件の患者メモに対する特徴量注釈(10症状ごとに100件のメモ)
    • ラベルなし:41,146件の患者メモ
    • 評価指標: micro-F1(全予測のうち正しく予測できたものの割合)
    コンペ② 概要
    38
    臨床概念の位置(間隔)

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  43. • 結果: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割程度しか使用できず)

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide