こんな夢を見た

修士学生による自然言語処理研究の記録。主にDeep LearningやEmbedding関連論文の軽い自分用まとめとして。内容に誤りが含まれている場合があります。お気軽にご指摘ください。

雑読論文まとめ

  1. Efficient Non-parametric Estimation of Multiple Embeddings per Word in Vector Space
  2. A Fast and Accurate Dependency Parser using Neural Networks
  3. Learning to Distinguish Hypernyms and Co-Hyponyms
  4. Relation Classification via Convolutional Deep Neural Network
  5. Don’t count, predict! A systematic comparison of context-counting vs. context-predicting semantic vectors
  6. Neural Word Embedding as Implicit Matrix Factorization
  7. Retrofitting Word Vectors to Semantic Lexicons

論文紹介されたorスライドを読んだ等+さくっと論文で補完したのみのやつ。

  1. Arvind Neelakantan, Jeevan Shankar, Alexandre Passos, Andrew McCallum, 2014, EMNLP
    word2vecを拡張して、1つの単語に対してsenceごと複数のベクトルを学習させる。ざっくばらんに言うと、ある単語ベクトルを学習するときに、その周りの文脈ベクトルとの類似度が高いようなsenceベクトルを選び、それで学習を行う。各単語のsence数を決め打ちするモデルと、唯一のsenceから始めていってある事例の文脈ベクトルに対して類似度が閾値以下ならば新しいsenceベクトルを作成するようなモデルの2つを提案。まあまあの実験結果っぽい。アイデアは非常に自然。word2vecを多義性に対応するということも絶対すぐやられることだと思うし、この手法もすぐ考えつくものではある。

  2. Danqui Chen, Christopher D. Manning, 2014, EMNLP
    既存のDependency Parsingは職人的な凝った素性がたっぷりで処理が遅いし入力もsparseなので、それを改善すべくembeddingとNNでやったら速度は爆上がりだったし精度もちゃんと肩を並べた。transition-basedモデルというのが流行りらしく、既存もそれで提案もその枠組の中でやっている。NNの入力は普通のword embedding、POSタグ、arcラベル。arcラベルはあまり生きなかった。活性化関数にはシグモイド関数より、cube関数=x3とかいうのを使ったほうが精度がよかった。

  3. Julie Weeds, Daoud Clarke, Jeremy Reffin, David Weir and Bill Keller, 2014, COLING
    分布類似度を捉えた単語ベクトルに対して、SVMを学習させると2単語についてHypernymsなのかとCo-hyponymsなのかがある程度判定できたという話。2つのベクトルに対して、和・差・積・結合等したものを素性とするSVMをそれぞれ学習してみたら、和はCo-Hyponymの判定に効いて、差はHypernymの判定に効いたらしい。(なお、単語ベクトルはword2vecとかCollbertのでなく単語共起のPMIを使ったもの)
    SVMの重みの調整次第で、和モデルと差モデルは結合モデルで表現できてしまうはず(後者は前者2つの一般化)なので、ハマる局所最適解が異なるということだろうか。であれば、このようにシンプルな変更で精度が上がることもあると思うとなかなか面白い。

  4. Daojian Zeng, Kang Liu, Siwei Lai, Guangyou Zhou and Jun Zhao, 2014, COLING 文を与えられたときに素性を得るのに品詞タグ付や構文解析したりするのをやめて、 (Max-Pooled) Convolutional DNNを使う。普通に解析したりするとエラーがどんどん積み重なっていって良くないですよという理由付けは若干腑に落ちないが(CDNNが超頑健なわけでもあるまい)、結果的に既存モデルとかSocherのMVRNNより精度が良くなっているので終良全良な話。SemEval 2010の文内単語間関係認識のタスクでの実験。
    ささっと文内単語のうちの幾つかのword embeddingをつなげて作るLexical level featuresと、凝ったことをしてCNNを通して作るSentence Level Featuresをつなげたものが最終的なfeature vector(そこに1つ行列かけてソフトマックス関数適用して分類)。前者は、単語AとB、それぞれの左右の単語のembeddingをつなげただけのシンプルさ(とりあえず今回のタスクならこれでよさそう)。後者について。まず文内の各単語についてwindow幅だけ周りの単語も結合させたembeddingsをそれぞれ作成する(n-gram embeddingとでも呼べば分かりやすそう)。また、各単語の2つの単語A、Bに対する相対的な位置を求めてそれをembeddingにしたものを作成(v_+1、v_-3とかそれぞれの距離用embeddingsは5次元でランダム初期化から学習する)。この時点で各単語(列)に対してn-gram embと距離 embが割り当てられた行列ができる。これに重み行列を1つかけたものから、(各単語を示す方向ではなく)各要素成分に対してmax poolを適用してベクトルを作成、そこに別の重み行列をかけてtanhで終わり。これでSentence Level Featuresが完成。

  5. Marco Baroni and Georgiana Dinu and German Kruszewski, 2014, ACL
    タイトルでのネタバレが酷い。PMIのような共起カウント+行列分解で作る(count)モデルと、word2vecの(predict)モデルについて、パラメータをあれこれ変えてタスクもあれこれ用意してしっかり調べたという論文。結果から言えば、どのタスクでもword2vecが勝ってしまった。関係ないstate-of-the-artモデルと比べると勝ったり負けたりされど健闘という感じ。またword2vecはパラメータによる性能のブレが比較的少なく、countモデルはその点でも白旗だった(逆にパラメータを上手くすれば匹敵できる時もあった)。ただ、両モデル特性が異なるので組み合わせて使うといいときがありそう。
    論文の最後で投げかけられていた疑問は以下のとおり。
    Do the dimensions of predict models also encode latent semantic domains?
    Do these models afford the same flexibility of count vectors in capturing linguistically rich contexts?
    Does the structure of predict vectors mimic meaningful semantic relations?
    Does all of this even matter, or are we on the cusp of discovering radically new ways to tackle the same problems that have been approached as we just sketched in traditional distributional semantics?

    predictモデルの各次元は潜在的に意味を表しているのか?
    predictモデルは言語的に豊かに文脈を捉えるカウントモデル同様の柔軟性があるのか? predictベクトルの構造は重要な意味関係を模倣しているのか? これらは重要なのか? それとも実際には今までの分布意味論でやってきたアプローチと同様の問題に挑んでいる新しい方法というだけで今はその一部しか見えていないだけなのか?
    どうなのかはわからないけども、この問には、次の6の論文が関連しているはず。
    参考: 小町さんslide高瀬さんslide

  6. Omer Levy and Yoav Goldberg, 2014, NIPS
    word2vecはPMIの行列分解したのと同じだったんだよ!ナンダッテー!論文。
    これだけ言い切ると詐欺っぽい。内容としてはしっかりと証明がなされているよう。あくまで"同じ"なんて言えるのは色々特殊な状況下での話らしい。conclusionでは単なる行列分解じゃなく重み付き行列分解なのではとも言っている。
    参考: 東大 橋本さんNTT数理 白川さんslide

  7. Manaal Faruqui, Jesse Dodge, Sujay K. Jauhar, Chris Dyer, Eduard Hovy, Noah A. Smith, 2015, NAACL (Best student paper)
    predictモデルなりなんなりでベクトルを大量のコーパスからまず作成。それを軸にして外部知識を使って再学習するとよりよいベクトルになった話。
    元のベクトルはGlove、Skip-gram、Global Context vector、Multilingual vector。外部知識はParaphrase DB、WordNet、FrameNet。タスクは単語類似度、TOEFLの同義語選択問題、syntacticアナロジー、素性につかってsentiment analysis。
    学習は、(1)自身の元のベクトルと近く、(2)外部知識上で同義/上位下位/言い換え単語と互いに近くなるように。
    この辺まで見るととても良さそうで、実験しても先行研究よりよくなっている。けども目的関数がちょっと腑に落ちない。見た感じ"単語ベクトル"であって、senceベクトルではないので、遠く離れた2つの意味を持つような単語に関してはかなりベクトルが荒らされるように見える(特に重み付けとかもしていないので)。
    Global Context Vector (Huang et al., 2012) … 局所的な文脈と文書単位の大局的な文脈を組み合わせてRecursive NNで学習。
    Multilingual Vector (Faruqui+, 2014)複数言語でそれぞれベクトル作って正準相関分析を活用して1つの多言語用ベクトルに。
    参考: 高瀬さんslide