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

実践!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 自然言語処理

    実践! によるディープラーニングを用いた
  2. 自己紹介 山田 育矢 (@ikuyamada) ソフトウェアエンジニア、起業家 Studio Ousia 共同創業者 Chief Scientist

    理化学研究所AIP 客員研究員(知識獲得チーム、言語情報アクセス技術チーム) • 大学入学時に、学生ベンチャー企業を起業し売却(2000年〜2006年) ◦ インターネットの基盤技術( Peer to Peer通信におけるNAT越え問題)の研究開発を推進 ◦ 売却先企業は株式上場 • Studio Ousiaを共同創業し、自然言語処理に取り組む(2007年〜) ◦ 質問応答を中心とした自然言語処理の研究開発を推進 • プログラミングが好き(特にPython) ◦ よく使うライブラリ:PyTorch、PyTorch-lightning、transformers、AllenNLP、 Wikipedia2Vec(自作) 2
  3. 本講演で目指すもの • AllenNLPを用いて、ニューラルネットワーク(≒ディープラーニング)による自然 言語処理のシステムを開発するために必要な知識を解説します ◦ AllenNLPを使う上で必要なコンポーネントの解説 ◦ AllenNLPを用いた応用タスクの解説(文書分類、感情分析、固有表現抽出) • 解説する内容は、Google

    Colaboratoryで自分で動かすことができます • ニューラルネットワークのモデルに関する解説はあまり行いません ◦ 数式は登場しません :数学的な知識がなくても理解できる内容に留めています ◦ ニューラルネットワークによる自然言語処理に関する良い和書が出版されていますので 興味のある方はそちらを参照してください 3
  4. とは • Allen Institute for Artificial Intelligenceという米国の研究機関が開発している Pythonで書かれたオープンソースのライブラリ ◦ 2017年に公開された新しいライブラリだが、既に

    Facebook、Amazon、Airbnbなど、 世界中のユーザに使われている • ニューラルネットワークのライブラリとして幅広く使われている PyTorchを ベースに開発されている • 自然言語処理のシステムを開発することに特化して開発されており、 実装の際に必要となる高レベルなコンポーネントが提供 されている ◦ 高度なニューラルネットワークのモデルを必要最低限の記述で開発できる 6
  5. AllenNLPを使うメリット • 可読性が高い • 開発工数が短い • モデルや設定の変更がしやすい • 実験管理がしやすい(設定ファイルと結果を保存しておくだけで良い) •

    開発担当者と実験担当者を分離できる JSONベースの設定ファイルを書くだけで コードを書かずにシステムを開発できる 8
  6. AllenNLPを使うデメリット • 高レベルなコンポーネントが提供されている反面、各コンポーネントの 基本的な使い方が分からないと使えない ⇒この講演で解説します! • 新しい手法がサポートされていないことがある ◦ 例)gradient accumulation、mixed

    precision、DistributedDataParallel等の 訓練方法は、最近までサポートされていなかった ◦ 最近は新しい手法も含め機能が揃ってきている • コンポーネントを拡張したりするよりも自分で書いた方がはやい 9
  7. 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
  8. 畳み込みニューラルネットワーク(CNN) 1. 畳み込み: ◦ 入力ベクトル列(単語エンベディング列)に対して任意の幅の 窓を順に移動させる ◦ 窓に含まれる入力ベクトル列に フィルタを適用して特徴値をスカラー値で計算 2.

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

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

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

    窓に含まれる入力ベクトル列に フィルタを適用して特徴値をスカラー値で計算 2. プーリング: ◦ 各フィルタが入力に対して出力した全ての値を プーリングしてスカラー値を計算 ▪ 最大プーリング:最大値を出力 ▪ 平均プーリング:平均して出力
  12. 畳み込みニューラルネットワーク(CNN) 1. 畳み込み: ◦ 入力ベクトル列(単語エンベディング列)に対して任意の幅の 窓を順に移動させる ◦ 窓に含まれる入力ベクトル列に フィルタを適用して特徴値をスカラー値で計算 2.

    プーリング: ◦ 各フィルタが入力に対して出力した全ての値を プーリングしてスカラー値を計算 ▪ 最大プーリング:最大値を出力 ▪ 平均プーリング:平均して出力 「この料理は美味しくない」という文に対して窓幅 2の畳み込みを適用した例 27 最大プーリング: max(p1,p2,p3,p4) 平均プーリング: (p1+p2+p3+p4)/4
  13. 固有表現認識とは 31 • テキストから固有表現を抽出し、定義されたクラスに分類するタスク ◦ 固有表現:固有名詞や日付、時間表現などの表現 ◦ クラス:人名、地名、組織名など • 単語の系列に対してBIO(Begin,

    Inside, Outside)形式のラベルを付与することで、 固有表現認識を解くことができる ◦ B ◦ I ◦ O • BラベルとIラベルは、型名を連結してB-型名、I-型名のような形式にする (例:B-LOC、I-ORG) 単語列に対して固有表現ラベルを付与した例 :固有表現の開始位置 :固有表現の内部 :固有表現ではない
  14. BERT 33 • 入力した単語列(サブワード列)に対して文脈を考慮した単語エンベディング (contextualized word embeddings)を出力 ◦ 従来の単語エンベディングは1単語に1つのベクトルを割り当てていたが、 BERTでは、入力毎に異なる単語エンベディングが出力される

    ◦ 単語エンベディングを計算する際に文脈を考慮することで、単語の多義性の問題を自然に 解決(例:マウス: 動物 or 入力デバイス) • 文脈を考慮した単語エンベディングを出力する大規模なニューラルネットワークを 大規模なデータで事前学習し、少しだけ追加学習(転移学習)してモデルを作る • あらゆるタスクで高い性能を発揮し、自然言語処理の手法における標準的な選択に 「文脈を考慮した」単語エンベディングを生成する訓練済みモデル