$30 off During Our Annual Pro Sale. View Details »

実践!AllenNLPによるディープラーニングを用いた自然言語処理

 実践!AllenNLPによるディープラーニングを用いた自然言語処理

言語処理学会「言語処理技術セミナー2020」
https://sites.google.com/site/nlpseminarweb

Ikuya Yamada

March 17, 2021
Tweet

More Decks by Ikuya Yamada

Other Decks in Technology

Transcript

  1. 山田 育矢 (Ikuya Yamada)
    Studio Ousia / RIKEN AIP
    自然言語処理
    実践!
    によるディープラーニングを用いた

    View Slide

  2. 自己紹介
    山田 育矢 (@ikuyamada)
    ソフトウェアエンジニア、起業家
    Studio Ousia 共同創業者 Chief Scientist
    理化学研究所AIP 客員研究員(知識獲得チーム、言語情報アクセス技術チーム)
    ● 大学入学時に、学生ベンチャー企業を起業し売却(2000年〜2006年)
    ○ インターネットの基盤技術(
    Peer to Peer通信におけるNAT越え問題)の研究開発を推進
    ○ 売却先企業は株式上場
    ● Studio Ousiaを共同創業し、自然言語処理に取り組む(2007年〜)
    ○ 質問応答を中心とした自然言語処理の研究開発を推進
    ● プログラミングが好き(特にPython)
    ○ よく使うライブラリ:PyTorch、PyTorch-lightning、transformers、AllenNLP、
    Wikipedia2Vec(自作) 2

    View Slide

  3. 本講演で目指すもの
    ● AllenNLPを用いて、ニューラルネットワーク(≒ディープラーニング)による自然
    言語処理のシステムを開発するために必要な知識を解説します
    ○ AllenNLPを使う上で必要なコンポーネントの解説
    ○ AllenNLPを用いた応用タスクの解説(文書分類、感情分析、固有表現抽出)
    ● 解説する内容は、Google Colaboratoryで自分で動かすことができます
    ● ニューラルネットワークのモデルに関する解説はあまり行いません
    ○ 数式は登場しません :数学的な知識がなくても理解できる内容に留めています
    ○ ニューラルネットワークによる自然言語処理に関する良い和書が出版されていますので
    興味のある方はそちらを参照してください
    3

    View Slide

  4. ニューラルネットワークによる自然言語処理の日本語書籍
    深層学習による自然言語処理
    (機械学習プロフェッショナルシリーズ
    )
    自然言語処理のための深層学習
    4

    View Slide

  5. 本講演から得られるもの
    ● エンジニアの方:
    AllenNLPを使った製品やプロトタイプの開発が始められるようになる
    ● 学生や研究者の方:
    AllenNLPを使って手法の実装や実験ができるようになる
    ● それ以外の方:
    自然言語処理のシステムがどのように動いているのか分かる
    主に自然言語処理に携わるエンジニア、学生、研究者を対象にしています
    5

    View Slide

  6. とは
    ● Allen Institute for Artificial Intelligenceという米国の研究機関が開発している
    Pythonで書かれたオープンソースのライブラリ
    ○ 2017年に公開された新しいライブラリだが、既に Facebook、Amazon、Airbnbなど、
    世界中のユーザに使われている
    ● ニューラルネットワークのライブラリとして幅広く使われている
    PyTorchを
    ベースに開発されている
    ● 自然言語処理のシステムを開発することに特化して開発されており、
    実装の際に必要となる高レベルなコンポーネントが提供
    されている
    ○ 高度なニューラルネットワークのモデルを必要最低限の記述で開発できる
    6

    View Slide

  7. AllenNLPを使うメリット
    ● 自然言語処理のシステムの開発にあたって必要となる高レベルな
    コンポーネントが提供されている
    ● ほとんどのコンポーネントが拡張可能なように設計されており、
    必要な部分を必要になった際に拡張して開発できる
    ● コンポーネントはよくテストされていて、幅広いユーザに使われており、ある程度
    信頼して使うことができる
    よくテストされた高レベルなコンポーネントが提供されており
    必要に応じて拡張できる
    7

    View Slide

  8. AllenNLPを使うメリット
    ● 可読性が高い
    ● 開発工数が短い
    ● モデルや設定の変更がしやすい
    ● 実験管理がしやすい(設定ファイルと結果を保存しておくだけで良い)
    ● 開発担当者と実験担当者を分離できる
    JSONベースの設定ファイルを書くだけで
    コードを書かずにシステムを開発できる
    8

    View Slide

  9. AllenNLPを使うデメリット
    ● 高レベルなコンポーネントが提供されている反面、各コンポーネントの
    基本的な使い方が分からないと使えない
    ⇒この講演で解説します!
    ● 新しい手法がサポートされていないことがある
    ○ 例)gradient accumulation、mixed precision、DistributedDataParallel等の
    訓練方法は、最近までサポートされていなかった
    ○ 最近は新しい手法も含め機能が揃ってきている
    ● コンポーネントを拡張したりするよりも自分で書いた方がはやい
    9

    View Slide

  10. AllenNLPで開発を行う際の2つの方法
    ● Pythonを使う方法:
    AllenNLPをPythonライブラリとして用いて、処理をコードで記述する
    ● 設定ファイルを書く方法:
    設定ファイルを書くことでモデルの開発を行う
    設定ファイルを使ってシステムを開発し、必要に応じて
    コンポーネントをPythonで拡張すると良い
    10

    View Slide

  11. AllenNLPを用いて3種類の自然言語処理のシステムを開発します
    ● bag-of-embeddingsモデルによる文書分類
    ○ AllenNLPをライブラリとして用いてPythonで開発
    ○ 設定ファイルを使って開発
    ● 畳み込みニューラルネットワークによる感情分析
    ● [発展] BERTによる固有表現抽出
    これからの流れ
    11

    View Slide

  12. bag-of-embeddingsモデルによる文書分類
    12

    View Slide

  13. ● 文書をあらかじめ定義されたカテゴリに対して分類するタスク
    ● 自然言語処理において古くからよく解かれている基本的なタスクの1つ
    ● 応用例:
    ○ メールをスパムか否かの2つのラベルに分類する
    ○ 医療カルテの内容から該当する病名に分類する
    文書分類とは
    文書分類
    モデル
    メール
    スパム
    スパム
    ではない
    文書分類によるスパム検出の例 13

    View Slide

  14. Livedoorニュースコーパスを用いた文書分類
    ● Livedoorニュースから収集されたニュース記事に
    9種類のラベルが付与された日本語のデータセット
    ● 記事に付与されたラベルは、ニュース記事を取得したサー
    ビスの名称に対応
    ○ Livedoorニュース内の「ITライフハック」から収集された
    記事には「it-life-hack」というラベルが付与されている
    ラベル サービス名称
    dokujo-tsushin 独女通信
    it-life-hack ITライフハック
    kaden-channel 家電チャンネル
    livedoor-homme livedoor HOMME
    movie-enter MOVIE ENTER
    peachy Peachy
    smax エスマックス
    sports-watch Sports Watch
    topic-news トピックニュース
    記事を入力としてラベルを予測するモデルを開発
    14

    View Slide

  15. bag-of-embeddingsモデル
    1. 全ての単語に1つのベクトル(単語エンベディング)を割り当てる
    2. 文書の特徴を含んだベクトル(特徴ベクトル)を、文書に含まれる単語の単語エ
    ンベディングをベクトルの各次元単位で加算した値として計算する
    3. テキストの特徴ベクトルを使ってテキストの分類を行う
    文書分類でよく使われている単純なニューラルネットワークのモデル
    15

    View Slide

  16. bag-of-embeddingsモデル
    1. 全ての単語に1つのベクトル(単語エンベディング)を割り当てる
    2. 文書の特徴を含んだベクトル(特徴ベクトル)を、文書に含まれる単語の単語エ
    ンベディングをベクトルの各次元単位で加算した値として計算する
    3. テキストの特徴ベクトルを使ってテキストの分類を行う
    文書分類でよく使われている単純なニューラルネットワークのモデル
    16
    ニューラルネットワークを用いた自然言語処理では、
    一般的に、単語は数十〜千次元程度のfloatベクトルと
    してあらわす

    View Slide

  17. Google Colaboratoryのノートブックへ
    17

    View Slide

  18. 畳み込みニューラルネットワークによる感情分析
    18

    View Slide

  19. 感情分析とは
    ● テキストに紐付いた感情を分析する基本的な自然言語処理のタスク
    ● アンケート結果の集計やソーシャルメディアの解析などの用途で、
    幅広く使用されている
    感情分析
    モデル
    商品レビュー
    肯定的
    否定的
    実用的で非常に役に立つ本で
    した。買って損は無いと思いま
    す。
    19

    View Slide

  20. Amazon Reviewsデータセットを用いた感情分析
    ● Amazonに蓄積されたユーザによる製品のレビューのデータセット
    ● 5段階のレビュー評価のうち、1と2を否定的、4と5を肯定的として
    二値分類のデータセットを作成
    元気がでます。聞くのを飛ばしたいと思う曲がなく全部好きです。 positive
    ほどよく難しくて楽しい。今でも息子の机の上に飾ってあります。 positive
    前作がよかっただけにやるせない。全てにおいて中途半端。 negative
    レビューの内容が肯定的か否定的かを判別する感情分析のモデルを開発
    20

    View Slide

  21. 感情分析では単語の並びが重要
    21
    この料理は価格が高くて美味しくない
    この料理は美味しくて価格が高くない
    negative
    positive
    ● 「価格が高く て」「美味しくない」といった単語の並びを重点的に考慮する必要があ

    ● 上の2文は、含まれる単語が同じなので、bag-of-embeddingsモデルでは
    同じ特徴ベクトルとなってしまうため違いを区別できない

    View Slide

  22. 畳み込みニューラルネットワーク(CNN)
    22
    ● 画像処理において主に使われていたが、近年、自然言語処理でも頻繁に
    使われるようになった
    ● 畳み込みとプーリングの2つのステップで構成される
    「単語の並び」から特徴を抽出することが得意な
    ニューラルネットワークのモデル

    View Slide

  23. 畳み込みニューラルネットワーク(CNN)
    1. 畳み込み:
    ○ 入力ベクトル列(単語エンベディング列)に対して任意の幅の 窓を順に移動させる
    ○ 窓に含まれる入力ベクトル列に フィルタを適用して特徴値をスカラー値で計算
    2. プーリング:
    ○ 各フィルタが入力に対して出力した全ての値を プーリングしてスカラー値を計算
    ■ 最大プーリング:最大値を出力
    ■ 平均プーリング:平均して出力
    「この料理は美味しくない」という文に対して窓幅 2の畳み込みを適用した例
    23

    View Slide

  24. 畳み込みニューラルネットワーク(CNN)
    「この料理は美味しくない」という文に対して窓幅 2の畳み込みを適用した例
    24
    1. 畳み込み:
    ○ 入力ベクトル列(単語エンベディング列)に対して任意の幅の 窓を順に移動させる
    ○ 窓に含まれる入力ベクトル列に フィルタを適用して特徴値をスカラー値で計算
    2. プーリング:
    ○ 各フィルタが入力に対して出力した全ての値を プーリングしてスカラー値を計算
    ■ 最大プーリング:最大値を出力
    ■ 平均プーリング:平均して出力

    View Slide

  25. 畳み込みニューラルネットワーク(CNN)
    「この料理は美味しくない」という文に対して窓幅 2の畳み込みを適用した例
    25
    1. 畳み込み:
    ○ 入力ベクトル列(単語エンベディング列)に対して任意の幅の 窓を順に移動させる
    ○ 窓に含まれる入力ベクトル列に フィルタを適用して特徴値をスカラー値で計算
    2. プーリング:
    ○ 各フィルタが入力に対して出力した全ての値を プーリングしてスカラー値を計算
    ■ 最大プーリング:最大値を出力
    ■ 平均プーリング:平均して出力

    View Slide

  26. 畳み込みニューラルネットワーク(CNN)
    「この料理は美味しくない」という文に対して窓幅 2の畳み込みを適用した例
    26
    1. 畳み込み:
    ○ 入力ベクトル列(単語エンベディング列)に対して任意の幅の 窓を順に移動させる
    ○ 窓に含まれる入力ベクトル列に フィルタを適用して特徴値をスカラー値で計算
    2. プーリング:
    ○ 各フィルタが入力に対して出力した全ての値を プーリングしてスカラー値を計算
    ■ 最大プーリング:最大値を出力
    ■ 平均プーリング:平均して出力

    View Slide

  27. 畳み込みニューラルネットワーク(CNN)
    1. 畳み込み:
    ○ 入力ベクトル列(単語エンベディング列)に対して任意の幅の 窓を順に移動させる
    ○ 窓に含まれる入力ベクトル列に フィルタを適用して特徴値をスカラー値で計算
    2. プーリング:
    ○ 各フィルタが入力に対して出力した全ての値を プーリングしてスカラー値を計算
    ■ 最大プーリング:最大値を出力
    ■ 平均プーリング:平均して出力
    「この料理は美味しくない」という文に対して窓幅 2の畳み込みを適用した例
    27
    最大プーリング: max(p1,p2,p3,p4)
    平均プーリング: (p1+p2+p3+p4)/4

    View Slide

  28. 畳み込みニューラルネットワークによる感情分析
    ● CNNでは、一般的に1つのモデルに複数の窓幅やフィルタ
    を用いる
    ● プーリングを適用すると、フィルタごとに
    1つのスカラー値が出力される
    ⇒窓幅×フィルタ次元の特徴ベクトルが出力される
    ● 特徴ベクトルを全結合層とソフトマックス関数に入力し、感情分析を行う
    畳み込みとプーリングで得られた特徴ベクトルを用いた感情分析
    28

    View Slide

  29. Google Colaboratoryのノートブックへ
    29

    View Slide

  30. [発展] BERTによる固有表現認識
    30

    View Slide

  31. 固有表現認識とは
    31
    ● テキストから固有表現を抽出し、定義されたクラスに分類するタスク
    ○ 固有表現:固有名詞や日付、時間表現などの表現
    ○ クラス:人名、地名、組織名など
    ● 単語の系列に対してBIO(Begin, Inside, Outside)形式のラベルを付与することで、
    固有表現認識を解くことができる
    ○ B
    ○ I
    ○ O
    ● BラベルとIラベルは、型名を連結してB-型名、I-型名のような形式にする
    (例:B-LOC、I-ORG)
    単語列に対して固有表現ラベルを付与した例
    :固有表現の開始位置
    :固有表現の内部
    :固有表現ではない

    View Slide

  32. ウェブ文書リードコーパスを用いた固有表現認識
    ● ウェブから取得した日本語文書の冒頭の3文に対して品詞や固有表現
    ラベル等のアノテーションが付与されたデータセット
    ● ニュース記事、百科事典記事、ブログ、商用ページなどで構成される
    ● 約5,000文書に対して人手でアノテーションを付与
    32
    ウェブ文書リードコーパスを用いた日本語固有表現認識モデルを作成する
    萩行正嗣, 河原大輔, 黒橋禎夫.
    多様な文書の書き始めに対する意味関係タグ付きコーパスの構築とその分析 ,
    自然言語処理, Vol.21, No.2, pp.213-248, 2014.

    View Slide

  33. BERT
    33
    ● 入力した単語列(サブワード列)に対して文脈を考慮した単語エンベディング
    (contextualized word embeddings)を出力
    ○ 従来の単語エンベディングは1単語に1つのベクトルを割り当てていたが、
    BERTでは、入力毎に異なる単語エンベディングが出力される
    ○ 単語エンベディングを計算する際に文脈を考慮することで、単語の多義性の問題を自然に
    解決(例:マウス: 動物 or 入力デバイス)
    ● 文脈を考慮した単語エンベディングを出力する大規模なニューラルネットワークを
    大規模なデータで事前学習し、少しだけ追加学習(転移学習)してモデルを作る
    ● あらゆるタスクで高い性能を発揮し、自然言語処理の手法における標準的な選択に
    「文脈を考慮した」単語エンベディングを生成する訓練済みモデル

    View Slide

  34. BERTの事前訓練: Masked Language Model
    ● テキスト中の単語をランダムに隠して、隠された単語を予測できるように
    モデルを学習する
    ● 訓練データをテキストから自動生成できるため、ウェブやWikipedia等の
    大規模コーパスをそのまま訓練データとして使うことができる 34
    Masked Language Model: テキストから自動生成した
    「穴埋め問題」を解かせることで事前学習を行う

    View Slide

  35. BERTの事前訓練: 穴埋め問題の例
    35
    富士山は日本で一番高い山だ
    富士山は__で一番高い山だ
    ___は日本で一番高い山だ
    富士山は日本で一番高い_だ
    富士山_日本で一番高い山だ

    View Slide

  36. BERTによる固有表現認識
    36
    ● BERTの出力した単語エンベディングを使って、単語を固有表現ラベルに分類
    ● ポイント:単語エンベディングは周辺文脈を含んでいる
    ので、単語エンベディングだけで固有
    表現を認識できる
    例:京都:組織名(ORGANIZATION) or 地名(LOCATION)

    View Slide

  37. Google Colaboratoryのノートブックへ
    37

    View Slide

  38. ● 本講演の内容を書籍として来年初旬頃に出版する予定です
    『ディープラーニングによる実践自然言語処理』(共立出版)
    山田育矢・柴田知秀・玉木竜二・進藤裕之
    ● 基本的な解説からBERTまで、ニューラルネットワークを用いた
    自然言語処理をPython + AllenNLPで動かしながら学べる書籍です
    ● この講演の内容は、この書籍の内容がベースになっており、共著者の
    皆様が作成されたソースコードや図を使わせていただきました
    宣伝
    38

    View Slide

  39. 最後に
    ● 本講演で使用したGoogle Colaboratoryは、今後も随時内容を追加して
    いく予定です
    ● 質問等あれば下記の連絡先までお気軽にご連絡ください!
    [email protected] @ikuyamada
    39

    View Slide