2019/03/21 長岡技術科学大学 自然言語処理研究室 学部4年 守谷 歩
自然言語処理におけるCNN2019/03/21長岡技術科学大学 自然言語処理研究室学部4年 守谷 歩単語埋め込み表現(Wordembedding),CNN,QRNN
View Slide
単語共起行列⚫I like apple⚫He like banana⚫He like fruitI Like Apple He Banana FruitI 0 1 0 0 0 0Like 1 0 1 2 1 1Apple 0 1 0 0 0 0He 0 2 0 0 0 0Banana 0 1 0 0 0 0Fruit 0 1 0 0 0 0
SVD 特異値分解⚫任意のM*Nの行列Cに対して以下のような分解を行う = Σ⚫左特異行列UはM*Mの正方行列で各列はと直行する固有ベクトル⚫右特異行列VはN*Nの正方行列で各列はと直行する固有ベクトル⚫ΣはN*M行列で対角行列成分が特異値によって表現(それ以外は0)⚫特異値はの固有値の平方根で求まる
Word2Vec Skip-Gram⚫単語の前後に大きさCのウィンドウをといったものを考える。ウィンドウ内単語に対して出現確率を考え、総和を目的関数にし、最尤推定する。⚫直観的なイメージとしては “Do Androids Dream of Electric Sheep?”のDreamの単語に注目したとき、ウインドウサイズC=2として考えるときDreamの周辺2単語がNNの出力される確率が高くなるように学習を行う。⚫上の注目する単語をすべての単語に対して行うと1単語に対する次の単語の生成確率と単語数の行列を作ることができる。
Glove⚫Word2VecとSVDの利点を取ったもの⚫単語の共起カウントを行列とする⚫以下の式を最小二乗法にて単語ベクトルを求めるための損失関数として定義する。 = ,=1 ,~ + + ~ − log 2⚫この時関数fは重みをつけるための関数で以下のように定義される = ൞ < 1 ℎ
CNN⚫入力が文書の場合、各行を単語を表現するベクトルで考える。例として、200次元の単語埋め込みを行った10単語の文書があった場合、10*200の行列として扱うことができる。⚫NLPタスクでは一般的に行列の行全体をスライドするフィルタを使う。⚫CNNではハイパーパラメータとして畳み込み幅のサイズ、ストライド数、プーリング層の数、チャンネルといった点でCNNはハイパーパラメータを取りうる。⚫分類問題を解くCNNを実装すると考えると畳み込みや、プーリングの操作を適用すると単語の局所的な位置情報は失われる
QRNN Quasi Recurrent neural network⚫RNNを並列処理しようとすると、RNNが前回の隠れ層からの入力を重みをかけて受け取るため、順番に処理する必要がある。⚫QRNNではCNNを連続的なデータに対して適用する。また、重みを使わずに伝搬させるため隠れ層の中の各要素を他要素からの影響から独立した状態で留める。⚫LSTMでいうinput,forget,outputといったものをZ,F,Oといった関数を用いて計算する。 = tanh ∗ = ∗ = (∗ )
QRNN Quasi Recurrent neural network⚫また畳み込み処理ではプーリングをよく使うが、これは4領域あった場合にその最大値や平均値をとるといった手法であった。ここにFの割合で過去の情報hと合成したものをプーリングする。F-poolingといった手法として以下の手法が挙げられている。ℎ= ⨀ℎ−1+ 1 − ⨀⚫ほかにも、コンテキストcを経由するfo-poolingとして以下の変形も提案されている。ct= ⨀−1+ 1 − ⨀ℎ= ⨀⚫また、インプットを書き込む割合を考える変形としてifo-poolingが提案されている。= ⨀−1+ ⨀ℎ= ⨀
参考文献⚫QUASI-RECURRENT NEURAL NETWORKS https://arxiv.org/pdf/1611.01576v1.pdf⚫自然言語処理における畳み込みニューラルネットワークを理解するhttp://tkengo.github.io/blog/2016/03/11/understanding-convolutional-neural-networks-for-nlp/⚫畳み込みニューラルネットワークによるテキスト分類を TensorFlow で実装するhttp://tkengo.github.io/blog/2016/03/14/text-classification-by-cnn/⚫A Sensitivity Analysis of (and Practitioners’ Guide to) ConvolutionalNeural Networks forSentence Classification https://arxiv.org/pdf/1510.03820.pdf⚫高速かつ高性能な分散表現Gloveについて(PyTorch実装)https://qiita.com/GushiSnow/items/e92ac2fea4f8448491ba⚫いますぐ使える単語埋め込みベクトルのリストhttps://qiita.com/Hironsan/items/8f7d35f0a36e0f99752c