0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

深層学習 Day 3 - Section 6 Word2vec のまとめ

Last updated at Posted at 2020-11-20

この記事は個人的なお勉強用のメモです。

このお勉強の位置

深層学習 Day 3

Section 1 再帰型ニューラルネットワークの概念
Section 2 LSTM
Section 3 GRU
Section 4 双方向RNN
Section 5 Seq2Seq
Section 6 Word2vec ← これ
Section 7 Attention Mechanism

講義

RNNの課題
可変長の文字列をNNに与えられない。(固定長のみ可能)

word2vecの処理

単語のボキャブラリを作成する。(単語の重複なし)

I want to eat apples. I like apples.
⇒ {apples, eat, I, like, to, want}

one-hotベクトルにする。
「apples」が入力の場合。
1...apples
0...eat
0...I
0...like
0...to
0...want

word2vecのメリット

大規模データの分散表現の学習を
現実激な計算速度とメモリ量で実現できる。

以前の方法:ボキャブラリ数 × ボキャブラリ数
word2vec:ボキャブラリ数 × 単語ベクトル

重みの数を減らせるようになった。

演習チャレンジ

def traverse(node):
  if not isinstance(node, dict):
    v = node
  else:
    left = traverse(node['left'])
    right = traverse(node['right'])
    v = _activation(W.dot(np.concatenate([left, right]))
  return v

np.concatenate関数:ndarrayを結合する
           上のソースでは1次元ベクトル同士を連結しているので結合の方向は気にしなくていい。

これは選択肢を見れば正解はわかる。
W の形状が (embed_size, 2*embed_size) であることからも明らか。

実装演習

なし。

確認テスト

RNNとword2vecの違い

word2vecは単語をone-hotベクトルで計算する。

模範解答
word2vecは重みの計算が現実的な計算速度で可能。
少ないリソース消費量。

RNNはボキャブラリ数 × ボキャブラリ数の重み
word2vecはボキャブラリ数 × 単語ベクトルの重み

修了テスト~練習問題~

修了テスト内にword2vecの問題は無い。
代わりに赤本2でお勉強。

  • 入力層は扱う単語の数だけ、中間層を経て、出力層へ
  • それぞれが全結合層
  • 入力層に与える単語はone-hot表現
  • 入力層から中間層への重みは分散表現を表す行列、学習によって更新される
  • 出力層によって出力されるのはスコア
  • スコアをSoftmax関数で確率に変換
  • 複数の単語を入力として与えると、確率として推測結果が出力される

例:「you」と「goodbye」から推測される単語の中で最も確率が高いのは「say」

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?