語彙数が10,000語のモデルで、各単語を10,000次元のワンホットベクトル(1行×10,000列)で表す。これに10,000行×300列の埋め込み行列を掛けて、単語埋め込み(分散表現)を得る。この処理の説明として、最も適切なものを1つ選べ。
正解と解説を見る
解説
正解 C
この問題の論点:埋め込み行列による単語の変換
ポイント
ワンホットベクトルと埋め込み行列の積は、その単語に対応する行を取り出す操作と同じです。取り出した行が、その単語の分散表現になります。
選択肢ごとの解説
- A
不適切
1行×10,000列と10,000行×300列の積は1行×300列なので、結果は300次元です。多くの要素が0でない値をもつ密なベクトルで、語彙数よりずっと短くなります。
- B
不適切
埋め込み行列は、語彙の単語ごとに1行をもちます。パラメータ数は現在10,000×300=3,000,000個で、語彙を20,000語にすると20,000×300=6,000,000個に増えます。
- C
適切 正解
ワンホットベクトルは1か所だけが1で残りが0なので、行列との積は、1の位置に対応する1行を選び出す操作と同じです。実装では通常、掛け算をせず、単語の番号で行を引く表引きとして処理します。
- D
不適切
埋め込み行列の値は、word2vecのように周辺の単語を予測する学習や、目的のタスクの学習を通じて、データから自動的に決まります。類義語辞書のように、人が語どうしの関係を書き込んで作るものではありません。
試験での狙われ方
ワンホットベクトルと分散表現は、次元数の大きさや、疎か密かの違いで比べて押さえておくと、選択肢を絞りやすくなります。