>100 Views
June 04, 18
スライド概要
2018/05/28
Deep Learning JP:
http://deeplearning.jp/hacks/
DL輪読会資料
DLHacks Fast and Accurate Entity Recognition with Iterated Dilated Convolutions 2018.05.28 山田涼太
概要 NLPのNER dilated convolution 提案手法ID-CNN 実装 結果・考察
概要 NLPのNER dilated convolution 提案手法ID-CNN 実装 結果・考察
概要 まとめ ID-CNNという手法を提案 dilated CNNの変形をNLPに適用 NERで従来と同等の精度をキープしつつ高速化を実現した 背景 LSTMなどのRNNでは入力データをシーケンシャルに計算する必要があった =並列計算が適用できずGPUの利点が活かせない 結果 Bi-LSTM-CRFに比べて14-20倍の高速化が実現できた さらに、全文書の主計結果から訓練されたID-CNNは精度を維持しつつ8倍高速だった
概要 NLPのNER dilated convolution 提案手法ID-CNN 実装 結果・考察
NER Named Entity Recognition: 固有表現抽出。固有名詞や数値、日付を抽出する技術 CoNLL2003: Reuters Corpusのニュース記事に対して、 POSやNERのタグ付けを行ったデータセット 右のようにI-ORGなら組織名、I-PERなら人名を意味する OntoNotes 5.0 English NER: 別のデータセット
概要 NLPのNER dilated convolution 提案手法ID-CNN 実装 結果・考察
Dilated Convolution simple convolution(通常のCNN): NLPで使うCNNは典型的には一次元 トークンの特徴量ベクトルのシーケンスに対してCNNを適用する この条件下でCNNはアフィン変換と等価、この演算をWcとする あるトークンに着目した時、前後にrの幅をもつスライドウィンドウがWcの対象となる r … r xt … slide window 入力xtに対する出力ctは ⊕はvector concatenation
Dilated Convolution dilated convolution: スライドウィンドウが前後にr連続したものではなく、δ間隔でr個のトークンを含む形 δ δ … … δ xt … 入力xtに対する出力ctは δ=1でsimple comvolutionと等価 出力に影響する入力の範囲を広げることが可能 =より全体の情報を考慮した結果を取得可能 δ δ … … δ … slide window
Dilated Convolution Multi-Scale Context Aggregation 幅をどんどん広げるようにdilated convolutionの層を重ねることで、局所的な情報を失うこ となく全体の文脈を考慮した判断ができる。 Yu and Koltun (2016) は画像のセグメンテーションにmultiscale context aggregation という指数関数的にdilationの幅が増加する手法を用いた(下図参照)。 F1 3×3 F2 7×7 F3 15×15 Fi+1のウィンドウサイズは(2i+2 − 1)2 引用: MULTI-SCALE CONTEXT AGGREGATION BY DILATED CONVOLUTIONS
概要 NLPのNER dilated convolution 提案手法ID-CNN 実装 結果・考察
Iterated Dilated CNN dilated CNNでは層を重ねることで容易に全体の文脈情報を考慮することができる r = 1で4層のレイヤーを重ねれば、 (有効な入力サイズはn層目で2n+1 - 1なので) 1層目で3、2層目で7、3層目で15、4層目で31となる。 Penn TreeBankコーパスの一文の平均単語数は23なので、4層dilated convolutionを重ね れば大体の文章の全体の文脈を考慮したタグ付けができることになる。 r = 2で8層のレイヤーを重ねれば有効な入力サイズは1000トークン以上になり、ニュース文書 を丸々扱える。
Iterated Dilated CNN ただし、単純に層を増やしていくだけでは過学習に陥ってしまう。 ID-CNNではdilated convolutionの繰り返しを複数回重ねることでこの問題を解決した。 これにより、全体の文脈の考慮と高い一般性を実現した。
Iterated Dilated CNN Model Architecture dilated convolution * Lc層 + final dilation-1 layer = B(・) Lc層 final dilation-1 layer … … … 2Lc-1 データc(Lc+1) … 2Lc-1 データc(Lc) … データc(Lc-1) … データc(0) … … 入力データx … … r(): ReLU関数 … … = B(・)
Iterated Dilated CNN Model Architecture 前述のB(・) * Lb層 + W0 … … … … … データh(Lb) … データb(Lb) … データb(1) … データi … … 入力データx … L b層 …
概要 NLPのNER dilated convolution 提案手法ID-CNN 実装 結果・考察
やりたかったこと 生命科学論文から情報抽出を試みている 薬剤名の抽出で難儀 (辞書が膨大で意図しない単語が引っかかる) 何かしらのスクリーニングが必要 NERを試したい 今回の手法をはじめとして複数の手法で薬剤名のNERの精度を比較したかった。。。
Test 著者がコードをあげている Github: https://github.com/iesl/dilated-cnn-ner.git Tensorflow
Test ./bin/preprocess.sh conf/conll/dilated-cnn.conf
Test ./bin/train-cnn.sh conf/conll/dilated-cnn.conf
概要 NLPのNER dilated convolution 提案手法ID-CNN 実装 結果・考察
Experimental Results Sentence-level prediction CoNLL2013を利用 文章レベルの予測精度でLSTMを上回った さらに学習時間の早い
Experimental Results Document-level prediction CoNLL2013を利用 文書レベルの予測精度でもLSTMを上回った 学習時間も早い
Experimental Results OntoNotes 5.0 English NER OntoNotes 5.0 English NERを利用 文書レベルの予測精度でLSTMを上回った さらに学習時間の早い
考察 Bi-LSTM-CRFでは広いコンテキストを入力すると精度が落ちるかもしれないが、 ID-CNNではより全体の文脈を捉えることができる したがって、大きな文書や局所的に曖昧な表現が含まれる文書を扱う場合はID-CNNの方より顕 著に優れた結果を出すことが可能かもしれない
本当はやりたかったこと 生命科学論文から情報抽出を試みている 薬剤名の抽出で難儀 (辞書が膨大で意図しない単語が引っかかる) 何かしらのスクリーニングが必要 NERを試したい 今回の手法をはじめとして複数の手法で薬剤名のNERの精度を比較したかった。。。
論文メモ
Abstract Introduction Background Dilated Convolutions Iterated Dilated CNNs Related work Experimental Results Conclusion
Abstract Introduction Background Dilated Convolutions Iterated Dilated CNNs Related work Experimental Results Conclusion
Abstract 今日、ウェブ全体や大量のトラフィックに対して予測器が基本的なNLPを実行するならば、よ り早いことこそが時間とエネルギーのコストを抑えるの肝要である。 昨今GPUの性能の向上がbi-directional LSTMの出現に一役買った。Bi-LSTMはNERなどのラ ベリングタスクの入力に使われるトークンごとのベクトル表現を取得するのにスタンダードな手 法だ。 この手法ではGPUの計算力を完全に使い切ることができなかった。この論文では、Iterated Dilated CNN(ID-CNNs)という巨大な文脈や構造予測に対して従来のCNNより適している手 法を使うことでBi-LSTMの高速化を実現した。 長さNの文章に対して、並列化を適用してもO(N)の計算量がかかるLSTMと異なり、ID-CNN は全文書に対して固定長のCNNが並列に処理を行う。 パラメータの共有などのネットワーク構造同士の強調が見られ、Bi-LSTM-CRFに比べて14-20 倍の高速化が実現できた。 さらに、全文書の主計結果から訓練されたID-CNNは精度を維持しつつ8倍高速だった。
Abstract Introduction Background Dilated Convolutions Iterated Dilated CNNs Related work Experimental Results Conclusion
Introduction エコロジカルフットプリントを最小化しつつ大規模なNLPや情報抽出を普及させるためには、 もっと早くエネルギー効率の良いPOS taggingやNERの手法が必要だ。 GPUによる並列計算の向上によってシーケンスラベリングを解くNNモデルがいくつも出現し た。これらの手法はGPUの並列計算能力を十分に活用できていなかったのでスピードに限界が あった。 特にこれらの手法は特徴量抽出にRNNを使うか、出力モデルにビタビアルゴリズムを使ってい たが、いずれの手法も入力データをシーケンシャルに計算する必要があった(=並列計算が適用 できずGPUの利点が活かせない)。 入力データの大きさによって実行時間が関わらない並列的な計算ができれば時間とリソースを節 約できる。CNNはまさにこのような特徴を持っている。入力データ一つ一つに対して計算する んではなく、まとめて計算する。よってCNNにおいて計算量は入力データの大きさによらず、 層の深さに依存する。音声合成などに使われている。
Introduction CNNの方が計算面で有利なのに対して、RNNはテキストの深い表現が可能である。 これはBi-directional RNNによってエンコードされたトークンは入力シーケンス全体の特徴を 残すからだ。 CNNではネットワークにとって効率の良い入力サイズに納めなくてはいけないため、制限を受 ける。 CNNでの計算量 畳み込み層の幅 w、層の数 lの時、トークン特徴量 rは r = l(w - 1) + 1 層の数は入力された全てのコンテキストを結合する必要があるため、シーケンスの長さに応じ て線形に増加する。 シーケンスをまたいで特徴量をプールしておくことが一つの解決策として挙げられるが、出力の 分解能を下げるためにあまり良い解決方法ではない。
Introduction (Yu and Koltun, 2016) がdilated convolutionをシーケンスラベリングに適用することを 提案した。 dilated convolutionでは層が深くなるほどに入力データの幅が指数関数的に効率良くなって いく。 典型的なCNNのようにdilated convolutionでもシーケンス上のスライディングウィンドウに 計算を実行する。 しかし従来手法と異なり、コンテキストは連続的でない。dilated windowはdilation width d毎にスキップするからだ。 l番目の層にとって効率的な入力幅は2l+1-1である。
Introduction 例: 幅3のdilated covolutionを4層重ね合わたものに対して効率的な入力サイズは 24+1 - 1 = 31 となる。これはPTBの文章の平均単語数23より大きいので十分に有効である。
Introduction ID-CNNでは同じdilated convolutionのブロックがトークン特徴量に適用される。 メリット1: 過学習が抑えられる メリット2: ネットワークの途中に監視を差し込むことができる?? RNNとの違い 1: それぞれのトークンのラベルを個別に予測できる
Introduction 検証 CoNLL 2003、OntoNotes 5.0 English NERを用いた 結果 RNNに比べてF1を維持しつつ、高速化に成功した
Abstract Introduction Background Dilated Convolutions Iterated Dilated CNNs Related work Experimental Results Conclusion
Background •Conditional Probability Models for Tagging
Background Conditional Probability Models for Tagging 入力(テキスト): 出力(トークン毎のタグ): yiに対するドメインサイズ: 本研究ではxが与えられた時のyの確率は 計算量はO(D) linear-chain CRF modelでは 計算量はO(D2T)
Abstract Introduction Background Dilated Convolutions Iterated Dilated CNNs Related work Experimental Results Conclusion
Dilated Convolutions simple convolution(通常のCNN): NLPで使うCNNは典型的には一次元 トークセンの特徴量ベクトルのシーケンスに対してCNNを適用する この条件下でCNNはアフィン変換と等価、この演算をWcとする あるトークンに着目した時、前後にrの幅をもつスライドウィンドウがWcの対象となる r … r xt … slide window 入力xtに対する出力ctは ⊕はvector concatenation
Dilated Convolutions dilated convolution: スライドウィンドウが前後にr連続したものではなく、δ間隔でr個のトークンを含む形 δ δ … … δ … 入力xtに対する出力ctは δ=1でsimple comvolutionと等価 δ δ xt … … δ … slide window
Dilated Convolutions Multi-Scale Context Aggregation 幅をどんどん広げるようにdilated convolutionの層を重ねることで、局所的な情報を失うこ となく全体の文脈を考慮した判断ができる。 Yu and Koltun (2016) は画像のセグメンテーションにmultiscale context aggregation という指数関数的にdilationの幅が増加する手法を用いた(下図参照)。 F1 3×3 F2 7×7 F3 15×15 Fi+1のウィンドウサイズは(2i+2 − 1)2 引用: MULTI-SCALE CONTEXT AGGREGATION BY DILATED CONVOLUTIONS
Abstract Introduction Background Dilated Convolutions Iterated Dilated CNNs Related work Experimental Results Conclusion
Iterated Dilated CNNs dilated CNNでは層を重ねることで容易に全体の文脈情報を考慮することができる。 r = 1で4層のレイヤーを重ねれば、 有効な入力サイズは1層目で3、2層目で7、3層目で15、4層目で31となる。 Penn TreeBankコーパスの一文の平均単語数は23なので、4層dilated convolutionを重ね れば大体の文章の全体の文脈を考慮したタグ付けができることになる。 r = 2で8層のレイヤーを重ねれば有効な入力サイズは1000トークン以上になり、ニュース文書 を丸々扱える。
Iterated Dilated CNNs ただし、単純に層を増やしていくだけでは過学習に陥ってしまう。 ID-CNNでは同じdilated convolutionを複数回重ねることでこの問題を解決した。 これにより、全体の文脈の考慮と高い一般性を実現した。
Iterated Dilated CNNs Model Architecture dilated convolution * Lc層 + final dilation-1 layer = B(・) Lc層 final dilation-1 layer … … … 2Lc-1 データc(Lc+1) … 2Lc-1 データc(Lc) … データc(Lc-1) … データc(0) … … 入力データx … … r(): ReLU関数 … … = B(・)
Iterated Dilated CNNs Model Architecture 前述のB(・) * Lb層 + W0 … … … … … データh(Lb) … データb(Lb) … データb(1) … データi … … 入力データx … L b層 …
Abstract Introduction Background Dilated Convolutions Iterated Dilated CNNs Related work Experimental Results Conclusion
Abstract Introduction Background Dilated Convolutions Iterated Dilated CNNs Related work Experimental Results Conclusion
Experimental Results Sentence-level prediction CoNLL2013を利用 文章レベルの予測精度でLSTMを上回った さらに学習時間の早い
Experimental Results Document-level prediction CoNLL2013を利用 文書レベルの予測精度でもLSTMを上回った 学習時間も早い
Experimental Results OntoNotes 5.0 English NER OntoNotes 5.0 English NERを利用 文書レベルの予測精度でLSTMを上回った さらに学習時間の早い
Abstract Introduction Background Dilated Convolutions Iterated Dilated CNNs Related work Experimental Results Conclusion
Conclusion 高速にNLPタグ付けを行うことができた シーケンスラベリングの高速化に大きく寄与するだろう 今後NLPの別の課題にも適用したい
Test
Test 著者がコードをあげている Github: https://github.com/iesl/dilated-cnn-ner.git Tensorflow
Test: Python準備 pyenvでPython 2.7にしておく pip install tensorflow-gpu
Test: ファイル準備 git clone https://github.com/iesl/dilated-cnn-ner.git conll2003をダウンロードしてプロジェクトのルートディレクトリに置く git clone https://github.com/synalp/NER.git mkdir -p dilated-cnn-ner/data cp -R NER/corpus/CoNLL-2003/ dilated-cnn-ner/data/ cd dilated-cnn-ner/data/ mv CoNLL-2003 conll2003 cd ../
Test: ファイル準備 mkdir -p data/embeddings 以下に記載されるGoogle Driveからlample-embeddings-pre.txtをダウンロード https://github.com/iesl/dilated-cnn-ner/issues/1 scpなりでec2に送る scp -P 2211 lample-embeddings-pre.txt [email protected]:~/download 先ほど作ったディレクトリに移動 mv ~/download/lample-embeddings-pre.txt ~/dilated-cnn-ner/data/ embeddings/
Test: パス設定 cd ~/dilated-cnn-ner export DILATED_CNN_NER_ROOT=`pwd` export DATA_DIR=data # 必要かなぞ # export CUDA_VISIBLE_DEVICES=“0” ???
Test ./bin/preprocess.sh conf/conll/dilated-cnn.conf
Test ./bin/train-cnn.sh conf/conll/dilated-cnn.conf
Keywords named entity recognition(NER): 固有表現抽出。固有名詞や数値、日付を抽出する技術 sequence labeling: 連続的な入力データに対してラベルづけすること、POS taggingなど inside-outside-beggining tagging(IOB tagging):