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

知識ベースの自然言語処理への活用

Ikuya Yamada
March 18, 2021

 知識ベースの自然言語処理への活用

招待講演: 第22回音声言語シンポジウム兼第7回自然言語処理シンポジウム
https://www.ipsj.or.jp/kenkyukai/event/nl246slp134.html

Ikuya Yamada

March 18, 2021
Tweet

More Decks by Ikuya Yamada

Other Decks in Research

Transcript

  1. 自己紹介
 山田 育矢 (@ikuyamada)
 Studio Ousia 共同創業者 Chief Scientist
 理化学研究所AIP

    客員研究員
 • 大学入学時に、学生ベンチャー企業を起業し売却(2000年〜2006年)
 ◦ インターネットの基盤技術(Peer to Peer通信におけるNAT越え問題)の
研究開発を推進 
 ◦ 売却先企業は株式上場
 • Studio Ousiaを共同創業し、自然言語処理に取り組む(2007年〜)
 ◦ 質問応答を中心とした自然言語処理の研究開発を推進 
 • プログラミングが好き(特にPython)
 ◦ よく使うライブラリ:PyTorch、PyTorch-lightning、transformers、AllenNLP、 
 Wikipedia2Vec(自作)
 2
  2. 知識ベースの例
 • 百科事典
 ◦ Wikipedia
 ◦ Wikitionary
 ◦ Wikia (Fandom)


    4 • 知識グラフ
 ◦ Wikidata
 ◦ DBpedia
 ◦ YAGO

  3. 知識ベースの例
 • 百科事典
 ◦ Wikipedia
 ◦ Wikitionary
 ◦ Wikia (Fandom)


    5 • 知識グラフ
 ◦ Wikidata
 ◦ DBpedia
 ◦ YAGO
 本講演では主にWikipediaを知識ベースとして使った方法を解説します
  4. 知識グラフ
 11 Image: Nickel et al., A Review of Relational

    Machine Learning for Knowledge Graphs, ArXiv preprint 2015.
 • 知識をエンティティ間の関係で記述
 ◦ 例:Star Wars(エンティティ) → genre (関係) → SciFi(エンティティ)
 • 知識グラフは頂点がエンティティ、辺が関係をあらわす有向グラフとしてあらわされる

  5. Wikipedia2Vecの視覚化
 Wikipedia2Vecのエンティティエンベディングを次元圧縮して視覚化
 15 Yamada et al., Wikipedia2Vec: An Efficient Toolkit

    for Learning and Visualizing the Embeddings of Words and Entities from Wikipedia. EMNLP 2020. 
 https://wikipedia2vec.github.io/demo/
  6. • エンティティ名を単語として扱ってWord2vec (skip-gram) 等の 
 単語エンベディングの訓練をエンティティアノテーション付きのコーパスで走らせる 
 • オープンソースの実装:
 ◦

    Wiki2vec:https://github.com/idio/wiki2vec 
 ◦ 日本語Wikipediaエンティティベクトル :http://www.cl.ecei.tohoku.ac.jp/~m-suzuki/jawiki_vector/ 
 エンティティエンベディングを
 Wikipediaから学習するベースライン
 16 東京は日本の首都である
 ##東京都## は ##日本## の 首都 で ある
 Wikipediaのハイパーリンクを固有のトークンに置き換え 
 Wikipediaのハイパーリンクをエンティティのアノテーションと見なして訓練

  7. Wikipedia2Vec: 概要
 • 3つの入力の異なるskip-gramモデルを同時に学習
 ◦ Word-based skip-gram model: 近くにある単語のペアから学習 


    ◦ Anchor context model: ハイパーリンク先のエンティティと周辺単語のペアから学習 
 ◦ Link graph model: ハイパーリンクでつながったエンティティのペアから学習 
 
 17 Yamada et al., Joint Learning of the Embedding of Words and Entities for Named Entity Disambiguation. CoNLL 2016.
 Yamada et al., Wikipedia2Vec: An Efficient Toolkit for Learning and Visualizing the Embeddings of Words and Entities from Wikipedia. EMNLP 2020.
 Wikipediaのハイパーリンクで接続されたエンティティのペアを入力として使って学習する
  8. • pipで簡単にインストールできる
 • Wikipediaダンプをダウンロードして、wikipedia2vec trainコマンドで高品質な
 エンベディングをすぐに学習できる
 • 日本語、英語を含む12言語での訓練済みモデルが公開されていて、ダウンロードして
 すぐに使える(https://wikipedia2vec.github.io/wikipedia2vec/pretrained/)
 Wikipedia2Vec:

    特徴
 18 $ pip install wikipedia2vec $ wget https://dumps.wikimedia.org/enwiki/latest/enwiki-latest-pages-articles.xml.bz2 $ wikipedia2vec train enwiki-latest-pages-articles.xml.bz2 <OUTPUT_FILE> Wikipedia2Vecをインストールしてエンベディングを訓練するコマンド 

  9. Wikipedia2Vec: 速度
 19 Name Time Wikipedia2Vec (all models) 276min Wikipedia2Vec

    (word-based skip-gram) 154min Gensim (skip-gram) 197min fastText (skip-gram) 243min • C++ (Cython)、BLAS、multiprocessingを用いて高速化 
 • 単語のみのskip-gramの実装としては、GensimやfastTextより高速 
 • 全てのモデルを用いて訓練した場合でもCPUで高速に訓練を行うことが出来る 
 英語Wikipediaを入力として5エポックの訓練にかかった時間 
 Yamada et al., Wikipedia2Vec: An Efficient Toolkit for Learning and Visualizing the Embeddings of Words and Entities from Wikipedia. EMNLP 2020. 

  10. Wikipedia2Vec: 活用事例
 20 • エンティティリンキング Yamada et al. (CoNLL 2016)

    Eshel et al. (CoNLL 2017) Chen et al. (ArXiv 2020) Poerner et al., (EMNLP 2020 Findings) • 固有表現抽出 Sato et al. (IJCNLP 2017) • テキスト分類 Yamada and Shindo (CoNLL 2019) Alam et al. (EKAW 2020) • 関係分類 Poerner et al. (EMNLP 2020 Findings) 
 • 質問応答 Yamada et al. (NIPS Competition 2017) • 知識グラフ補完 Shah et al. (AAAI 2019) • フェイクテキスト検出 Ghosal et al. (iiWAS 2020) Zhong et al. (EMNLP 2020) • プロットの解析 Papalampidi et al. (EMNLP 2019) • 対話型情報検索 Rodriguez et al. (EMNLP 2020) 

  11. 活用事例: エンティティリンキング
 21 New Frozen Boutique to Open at Disney's

    Hollywood Studios • エンティティリンキング: テキスト中のエンティティ名(メンション)を 
 知識ベースのエンティティにリンクするタスク 
 • メンションは曖昧な場合があり(例: Frozen)、テキストのコンテキストと
 エンティティの情報の双方を使って解く必要がある 
 Frozen (2013 film)
 The Walt Disney Company
 Disney’s Hollywood Studios

  12. 活用事例: テキスト分類
 テキスト中に含まれるエンティティ集合を用いてテキスト分類を行う 
 23 • 文書に含まれる単語集合(bag of words) の

    代わりにエンティティ集合(bag of entities)を 用いる • 文書から辞書を使ってエンティティの候補を抽出 • 抽出されたエンティティのエンベディングの 重み付き平均で文書の特徴を作成する ◦ アテンションを用いて文書と関連性の高い エンティティに重みがつくようにする • bag-of-wordsとあわせて用いることでニュース記事の分 類タスクでSOTA Yamada and Shindo, Neural Attentive Bag-of-Entities Model for Text Classification. CoNLL 2019.

  13. 活用事例: Deepfake Detection (1/2)
 25 • テキストを機械で生成した場合、不適合なエンティティが文中に出現する確率が高い
 Zhong et al.,

    Neural Deepfake Detection with Factual Structure of Text. EMNLP 2020.
 Deepfake detection: テキストが人間が書いたのか機械が生成したのかを判別する
  14. 活用事例: Deepfake Detection (2/2)
 26 • テキストが機械で生成されたかを検出するためにエンティティの情報を利用 
 • 文書中のエンティティをグラフニューラルネットに入力し、文書レベルでのエンティティの一貫性を計測

    
 • Wikipedia2Vecを利用してWikipediaからの外部知識を導入 
 • ベースライン(BERT、XLNet、RoBERTa)と比較して性能改善 
 Zhong et al., Neural Deepfake Detection with Factual Structure of Text. EMNLP 2020.

  15. BERT
 28 • 入力単語列(サブワード列)に対して文脈を考慮した単語エンベディング
 (contextualized word embeddings)を出力
 従来の単語エンベディング:1単語に1つのエンベディング
 BERT:入力毎に異なる単語エンベディング
 •

    文脈を考慮した単語エンベディングを出力する大規模ニューラルネットワークを
 大規模なデータで事前学習し、追加学習(転移学習)を行ってタスクを解く
 • あらゆるタスクで高い性能を発揮し、自然言語処理の手法における標準的な選択に
 「文脈を考慮した」単語エンベディングを生成する訓練済みモデル
  16. • 入力テキストに対して下記の2種類の処理を適用 
 1. 入力テキストを単語(サブワード)に分割 
 2. 入力エンベディングを計算 
 •

    入力エンベディングは3種類のエンベディングを加算して計算される 
 ◦ トークンエンベディング:
 各単語に対して割り当てられたエンベディング 
 ◦ セグメントエンベディング:
 入力テキストが異なる種類で構成されている場合の範囲をあらわすエンベディング 
 ◦ ポジションエンベディング:
 各単語の入力テキスト上での位置をあらわすエンベディング 
 BERTの仕組み (1/2)
 29
  17. BERTの仕組み (2/2)
 • 入力エンベディングをTransformerに入力し、文脈を考慮した出力エンベディングを計算 
 • Masked Language Model :

    
 テキスト中の単語をランダムに隠して( [MASK]に置換して)、隠された単語を予測する 
 自己教師あり学習
 30 Transformerベースのモデルに大規模な事前学習を適用する Transformer
  18. BERTからエンティティエンベディングを動的に計算
 • 主な方法:
 ◦ 入力単語列に特別トークンを挿入し(例: [ENT])、出力された単語エンベディングを使う(例: [CLS] の出力エンベディング、 [ENT]の出力エンベディング) 


    ◦ 対象エンティティのスパン内の単語エンベディング(例:最初の単語)を使う 
 ◦ 対象エンティティが含む単語エンベディングをプーリングしてエンベディングとして使う 
 • テキストに含まれる情報と事前訓練で学習した情報の双方を使ってタスクを解くことができる 
 31 Joshi et al., SpanBERT: Improving Pre-training by Representing and Predicting Spans. TACL 2019. 
 Zhang et al., ERNIE: Enhanced Language Representation with Informative Entities. ACL 2019. 
 (図はZhang et al,から引用) 
 BERTを使ってテキスト中に出現するエンティティのエンベディングを計算する
  19. BERTはエンティティエンベディングとしては不向き?
 1. 事前訓練の問題: サブワードを隠す事前訓練でエンティティに関する知識を学習できるか 
 ◦ “o [MASK] no ##bu

    ##na ##ga”において [MASK] == ##daであることは文脈とは無関係に分かる 
 2. 入力エンベディングの問題: エンティティに関する情報はサブワードのエンベディングに保持されることに 
 なるが、サブワードの情報は十分に保持できるのか 
 ◦ エンティティ名は曖昧性の高い複数のサブワードに分割されてしまうことが多い 
 (例: o ##da no ##bu ##na ##ga) 
 3. 出力エンベディングの問題: エンティティのエンベディングをサブワードの出力エンベディングから 
 計算するのは適切か
 ◦ 特別トークンを入力に挿入する場合、特別トークンは事前訓練時には使用されていない 
 32 Akechi Mitsuhide killed Oda Nobunaga at the Honnō-ji temple 
 ak ##ech ##i mit ##su ##hide killed o ##da no ##bu ##na ##ga at the hon ##no - ji temple 
 ak [MASK] ##i mit ##su ##hide killed o [MASK] no ##bu ##na ##ga at [MASK] hon ##no - ji temple
 BERTで サブワードに分割 ランダムな サブワードを隠して 事前学習 BERTやその類似のモデルでは、入力テキストはサブワードに分割されて入力される
  20. BERTの事前訓練を工夫する
 33 • Whole Word Masking: サブワード単位ではなく単語単位でマスクする 
 (BERTの別バージョンとしてGoogleが公開) 


    ◦ 質問応答(SQuAD)、自然言語推論(MNLI)で性能改善
 • SpanBERT: 連続した1〜n個(確率的に長さを選択)のサブワードを隠す 
 (Joshi et al., 2019)
 ◦ 質問応答、関係抽出、GLUEタスクにおいて性能改善
 • Salient Span Masking: 入力テキストに固有表現抽出器を適用して、検出された固有表現の 範囲を全てマスクする (Guu et al., 2020) 
 ◦ 複数のオープンドメイン質問応答データセットにて性能改善
 Joshi et al., SpanBERT: Improving Pre-training by Representing and Predicting Spans. TACL 2019. 
 Guu et al., REALM: Retrieval-Augmented Language Model Pre-Training. Arxiv preprint 2020. 

  21. Pretrained Encyclopedia
 34 • 英語のWikipediaに含まれるランダムなエンティティ名を「同じ型の違うエンティティ名」に置換する 
 ◦ Marvel Comics ->

    DC Comics 
 • Wikipediaのハイパーリンクをエンティティのアノテーションとして利用 
 • エンティティ名が置換されているかを予測する事前訓練タスクをBERTのMasked Language Modelに 
 加えることでBERTの性能を向上させる 
 • エンティティの型推定および質問応答タスクで性能向上 
 Xiong et al., Pretrained Encyclopedia: Weakly Supervised Knowledge-Pretrained Language Model. ICLR 2020. 
 
 エンティティの情報を使ってBERTの事前訓練を行う
  22. • BERTの隠れ層をT-Encoder(単語のみを入力)とK-Encoder(単語とエンティティを入力)に分割 
 • K-Encoderからテキスト中に含まれるエンティティのエンベディングを入力として追加 
 • エンティティエンベディングは外部知識ベース(Wikidata)で別途事前訓練する 
 •

    中間層の単語エンベディングとエンティティエンベディングから次の層に入力するエンベディングを 
 計算するInformation Fusion層を提案 
 ERNIE (1/2)
 35 BERTを訓練済みエンティティエンベディングで拡張する Zhang et al., ERNIE: Enhanced Language Representation with Informative Entities. ACL 2019.
 

  23. • Wikipediaテキスト中のエンティティをランダムにマスクして予測する事前訓練を行うことで 
 エンティティエンベディングをBERTに適合させる 
 
 • ダウンストリームタスクは、テキストからエンティティリンキングでエンティティを抽出して入力 
 •

    エンティティ関連タスク(型推定および関係分類)で性能向上 
 ERNIE (2/2)
 36 BERTを訓練済みエンティティエンベディングで拡張する Zhang et al., ERNIE: Enhanced Language Representation with Informative Entities. ACL 2019.
 

  24. KnowBERT
 37 • BERTを事前訓練されたエンティティエンベディングを用いて拡張 
 • ERNIEとは異なりエンティティリンキングの機能がモデルに含まれている 
 ◦ 辞書を用いて生成されたエンティティ候補から、アテンションを用いて正しいエンティティを選択する

    
 • 関係分類、エンティティの型推定、単語の曖昧性解消等のタスクで性能向上 
 BERTを訓練済みエンティティエンベディングで拡張する Peters et al., Knowledge Enhanced Contextual Word Representations. EMNLP 2019. 

  25. Entities as Experts (1/2)
 38 BERTにエンティティエンベディングのエンベディングを付加する • エンティティエンベディングを含めてBERTの事前訓練を最初から行う 
 •

    BERTの隠れ層を2つのレイヤー群に分割 
 1. メンション検出(BIOタギング)、エンティティリンキングを行う 
 2. エンティティエンベディングを入力に追加して出力エンベディングを計算 
 • KnowBERTと異なり、メンションの検出まで含めてモデルに含まれている 
 Fevry et al., Entities as Experts: Sparse Memory Access with Entity Supervision. EMNLP 2020. 

  26. Entities as Experts (2/2)
 39 BERTにエンティティエンベディングのエンベディングを付加する • Wikipediaテキストを入力として、マスクされた単語の予測、メンション検出(BIOタギング)、 
 エンティティリンキングの3タスクで事前訓練

    
 ◦ メンション検出はWikipediaのハイパーリンクと固有表現抽出の結果を結合して訓練 
 ◦ エンティティリンキングはWikipediaのハイパーリンクから訓練 
 • オープンドメイン質問応答およびプロービングタスク(LAMA)で性能向上 
 Fevry et al., Entities as Experts: Sparse Memory Access with Entity Supervision. EMNLP 2020. 

  27. CoLAKE (1/2)
 40 BERTに知識グラフの情報を付加する Sun et al., CoLAKE: Contextualized Language

    and Knowledge Embedding. COLING 2020. 
 
 • 知識グラフから取得したエンティティと関係を入力トークンとして追加する 
 ◦ 単語と同等に、エンティティや関係にもトークンエンベディングを割り当てる 
 • テキストに含まれるエンティティを含むトリプル(エンティティ, 関係, エンティティ)を入力文に連結 
 • 知識グラフから取得したトークンについてはアテンションの範囲を隣接したトークンのみに限定 

  28. CoLAKE (2/2)
 41 BERTに知識グラフの情報を付加する Sun et al., CoLAKE: Contextualized Language

    and Knowledge Embedding. COLING 2020. 
 
 • 入力に含まれる単語、エンティティ、関係をランダムにマスクして予測することで事前訓練 
 • エンティティの型推定、関係分類、プロービングタスク(LAMA)で性能向上 

  29. • 単語だけでなくエンティティも入力トークンとして扱う
 • 単語とエンティティをランダムにマスクして予測することで事前訓練を行う
 • entity-awareなself-attention mechanismの改善
 LUKE: 概要
 43

    Input text w/ Wikipedia entity annotations: Beyoncé lives in Los Angeles エンティティに関連するタスクに特化して設計された事前訓練済み言語モデル Yamada et al., LUKE: Deep Contextualized Entity Representations with Entity-aware Self-attention. EMNLP 2020. 

  30. LUKE: 事前訓練 (1/2)
 47 Wikipediaのハイパーリンク を 
 エンティティのアノテーションと
 して扱う
 Wikipediaのハイパーリンクをエンティティのアノテーションとして使って

    単語とエンティティをランダムにマスクして予測する事前訓練を実施 15%のランダムな単語および
 エンティティを[MASK]単語および [MASK]エンティティに置き換える
 Born and raised in Houston, Texas, Beyoncé performed in various singing and dancing competitions as a child. She rose to fame in the late 1990s as the lead singer of Destiny's Child Born and [MASK] in Houston, Texas, [MASK] performed in various [MASK] and dancing competitions as a [MASK]. She rose to fame in the [MASK] 1990s as the lead singer of Destiny's Child
  31. i番目とj番目のトークンに対応する重み (αij )は2つのベクトルの内積で計算される: 
 入力ベクトル列 x 1 ,x 2 …,x

    k が与えられた際、i番目のトークンに対応する出力 
 ベクトル y i は全ての線形変換された入力ベクトルの重み付き和で計算される 従来の方法:
 BERT (Transformer) のself-attention mechanism
 49 ◦ Qx i : クエリ行列Qと処理しているトークンのベクトル x i の積
 ◦ Kx j : キー行列Kとアテンションの対象となるトークンのベクトル x j の積 

  32. • あり得るトークンのペア(x i , x j )の型に対して、異なるクエリ行列を用いるように self-attention mechanismを拡張する 


    提案手法:
 Entity-aware Self-attention Mechanism
 50 処理しているトークンの種類(単語かエンティティ)の情報を モデルが使えるようにself-attentionを拡張 従来のself-attention mechanism Entity-aware self-attention mechanism
  33. 5つの異なるタスクでSOTAスコアを更新
 
 LUKE: 評価
 51 Dataset Task Open Entity Entity

    typing TACRED Relation classification CoNLL-2003 Named entity recognition ReCoRD Cloze-style QA SQuAD Extractive QA
  34. LUKE: エンティティエンベディングの計算方法
 52 • 事前学習時に使った [MASK]エンティティを入力
 ◦ 入力テキスト中からエンティティに関連する情報を集めてエンティティエンベディングを計算 
 ◦

    入力テキストに含まれるエンティティが未知の場合でも使用可能 
 ◦ 抽出型質問応答(SQuAD)以外の全てのタスクで使用 
 • Wikipediaのエンティティを入力 
 ◦ 学習したエンティティのトークンエンベディングの情報を元にエンティティエンベディングを計算 
 ◦ 出力単語エンベディングの情報をエンティティエンベディングで拡張する 
 ◦ 抽出型質問応答(SQuAD)タスクで使用 
 エンティティエンベディングは2種類の方法で計算できる
  35. LUKE: エンティティエンベディングの計算方法
 53 • 事前学習時に使った [MASK]エンティティを入力
 ◦ 入力テキスト中からエンティティに関連する情報を集めてエンティティエンベディングを計算 
 ◦

    入力テキストに含まれるエンティティが未知の場合でも使用可能 
 ◦ 抽出型質問応答(SQuAD)以外の全てのタスクで使用 
 • Wikipediaのエンティティを入力 
 ◦ 学習した入力エンベディングの情報を元にエンティティエンベディングを計算 
 ◦ 出力単語エンベディングの情報をエンティティエンベディングで拡張する 
 ◦ 抽出型質問応答(SQuAD)タスクで使用 
 エンティティエンベディングは2種類の方法で計算できる
  36. 実験: エンティティの型推定、関係分類、穴埋め型質問応答
 54 モデル:
 出力エンティティエンベディング+線形分類器
 モデルへの入力:
 • 入力テキスト中の単語
 • 入力テキストに含まれるエンティティのスパンに

    対応する[MASK]エンティティ
 エンティティの型推定、関係分類、穴埋め質問応答でSOTAスコアを更新 Open Entityでの評価結果 TACREDでの評価結果 ReCoRDでの評価結果 データセット:
 • Open Entity (エンティティ型推定)
 • TACRED (関係分類)
 • ReCoRD (穴埋め質問応答)

  37. 実験: 固有表現認識 (CoNLL-2003)
 55 モデル:
 1. テキスト中の全てのあり得るスパンをエンティティ名の候補とする 
 2. 線形分類器を用いて各スパンをエンティティ型(人名等)か

    non-entity型 (エンティティ名ではないことを示す)に分類 
 3. 分類器のロジットを用いて貪欲にスパンを選択 
 線形分類器には下記の3つのエンベディングを連結して入力: 
 • スパンに含まれる最初の単語のエンベディング 
 • スパンに含まれる最後の単語のエンベディング 
 • スパンに対応するエンティティエンベディング 
 モデルへの入力:
 • 入力テキスト中の単語列 
 • エンティティ名の候補に対応する [MASK]エンティティ
 CoNLL-2003 固有表現認識データセットでSOTAスコアを更新 CoNLL-2003での評価結果
  38. 実験: 抽出型質問応答 (SQuAD v1.1)
 56 モデル:
 出力単語エンベディングを入力とする線形分類器を
 2つ追加し、それぞれ解答の開始位置、終了位置を
 予測(BERTと同じモデル)
 


    モデルへの入力:
 • 質問および対象パッセージに含まれる単語
 • パッセージに含まれるエンティティ
 ◦ 辞書ベースのエンティティリンキングで 
 自動でパッセージからエンティティを抽出 
 SQuAD v1.1抽出型質問応答データセットでSOTAスコアを更新 SQuAD v1.1での評価結果 Leaderboard上で一位を獲得