word2vec における分散表現。one-hot エンコードをした 2 つのコンテキストのベクトルを線形層に放り込んで低次元に落として、再度線形層に放り込んで one-hot ベクトルを得る。i say hello
という文章で言えば、i
と hello
がコンテキストで say
が出力であるところのコンテキストが定める単語ということになる。これをコンテキストから単語を生成する “エンコーダ-デコーダネットワーク” と考えるなら、'say' = dec(enc('i'), enc('hello'))
という形になる。ということは、dec
にわたる引数は i
の潜在表現と hello
の潜在表現になる。適当に 4 つの単語のテキストを考える時に hello
に対応する one-hot 表現が $\begin{pmatrix}0 & 0 & 1 & 0\end{pmatrix}$ として、このエンコードのプロセスは例えば
\begin{align*}
\begin{pmatrix}0 & 0 & 1 & 0\end{pmatrix} \begin{pmatrix}
0.91 &-0.42 & 0.8 \\
0.84 & -0.46 & 0.79 \\
-0.39 & -0.82 & 0.3 \\
0.95 & -0.86 & -0.29
\end{pmatrix}
= \begin{pmatrix}-0.39 & -0.82 & 0.3\end{pmatrix}
\end{align*}
のようになる。つまり線形層の重みの第 3 行が hello
の潜在表現ということになる。enc
を通した潜在表現は何かしら単語の本質をコード化した分散表現ということになるであろうから、訓練済みの入力層の重みの行を分散表現として採用することには一定の納得感があるように思われる。
p.103 くらいまでの内容。