金融と工学のあいだ

興味関心に関するメモ(機械学習、検索エンジン、プログラミングなど)

CS224n「Lecture2 Word Vector Representations: word2vec」


Lecture 2 | Word Vector Representations: word2vec

Word meaning

離散表現の問題

  • 細かいニュアンスが消えてしまう
  • 人手で作らないといけない
  • 単語種長のone-hot vectorが必要になる
  • 近い意味の単語が全く異なる語として扱われる

分散表現

  • ある単語に近い単語はその単語の意味を表現する f:id:kumechann:20170507000225p:plain
  • 単語の意味が固定長のみつベクトルで表現される
    • 意味の近い単語は類似度が高くなるように学習されている f:id:kumechann:20170507000509p:plain

word2vecとは

単語tからのprediction

f:id:kumechann:20170507001215p:plain - 全ての単語t=1,…,Tに対して、距離mにあるた単語の確率が最大化されるように学習を行う

objective functionとは

  • objective function = loss function = cost function

詳細

  • 確率のモデリングにはSoftmax関数を用いる
    • Softmaxは実数を0~1の値(確率)にマップできるf:id:kumechann:20170507002142p:plain

参考文献

CS224n「Lecture1 Intro to NLP and Deep Learning」


Lecture 1 | Natural Language Processing with Deep Learning

  • CS224nのvideoが公開されたのでこちらにする。

自然言語処理とは?

自然言語のレベル

  • 音声 → 音素
  • 文書 → token化
  • 構文解析 → 意味解析

自然言語の特徴

  1. 離散
    • 脳内では連続的な信号である
  2. シンボリック
  3. 分類的

DL

DLと他の機械学習の違い

  • 自動で適切な特徴量を取得する

なぜDLをつかうの?

  • 特徴量を設計しなくて良い
  • ユニバーサル
  • 現在進行系で改善されている

なぜ成功したの?

なぜNLPは難しいの?

  • 複雑
  • プログラミングと違ってあいまい
  • コンテキストによって意味が異なる

Deep NLP

  • Deep LearningとNLPをくみあわせたもの
  • 以下で大きな成果を出した
    1. レベル:speech, words, syntax, semantics
    2. ツール:speech, entities, parsing
    3. アプリ:機械翻訳、意味解析、会話エージェント、QAシステム

リンク

CS224n「Lecture1 Intro to NLP and Deep Learning」


CS224D Lecture 1 - 29th Mar 2016 - Introduction.mp4

Deep Learningを研究する理由

  • 下記によりパフォーマンスが上がった

DLが効果を発揮した分野

Phonology・Morphology・Word・Syntax・Semantics

  • Phonology:ある言語の音の体系およびその音素の分析と分類の研究
  • Morphology:形態。容認可能な単語を形成するための規則の研究。
  • word
  • syntax
  • semantics
  • DLは上記すべてvectorとして表現する。
  • その他にも
    • Sentiment Analysis
    • Question Answering
    • Machine Translation

リンク

Chainerで「CS224d: Deep Learning for Natural Language Processing」

勉強の仕方

Chainerで「Python機械学習プログラミング」の例題を解く~感情分析~

目的

  • 上記の本の解説部分(1章~6章)は読み終わったので実際に例題を解いてみたい。
  • どうせなら流行りのDeep LearningライブラリChainerを使って解いてみたい。

Chainerにコントリビュート ~Documentation編~

Chainerにコントリビュートしよう

  • 以下がDocumentationに関するIssue。

github.com

  • その中でも関数の説明に関するIssueがこれ。

github.com

作業手順

手順の確認

[WIP] Improve docs of functions and links · Issue #2182 · pfnet/chainer · GitHubに手順が書いてるので確認

gitレポジトリの準備

  1. 自分のスペースにchainerをforkする(pfnet/chainerのmasterと自分のmasterが追従するようにはここ )
  2. documentation用のbranchを作成する(ex. improve-docs-examples)

softmax関数にDocumentationを追加してみよう

  1. 様子を見る
  2. 既にDocumentation済みの関数を見てみる
    • 同様に、関数にはdocは付いているが、クラスにはついていない。
    • ただ、よりtemplateに近い形になるように関数のdocが修正されている。
  3. テンプレートを見る

    chainer/sigmoid.py at master · pfnet/chainer · GitHub

  4. 真似して書く

  5. ちゃんと生成できるかチェックする
  6. プルリクエスト作成