Bridge over troubled Techs.

オープンストリーム CTO 寺田英雄のブログ

メモ:tf.nn.embedding_lookup() とは何か?

ひきつづきTensorFlowを勉強中。知らないことだらけなのがバレて恥ずかしいけれども、せっかくなので、調べたことをメモっておくシリーズ。

次にわからない関数はこれである。

tf.nn.embedding_lookup(params, ids, partition_sto) 

 embedding というと『組み込み』と脊髄反射してしまうが、ここでいう embedding はニューラルネット系業界用語である。まずこれを理解しないといけない。

Embeddingsとは?

ディープラーニングなどのニューラルネットは、基本的に連続値、つまりアナログな値をデータとして使わなければならない。使用するベクトルや行列・テンソルは全部連続値(計算機上は浮動小数点値)である。

しかし、それでは困ることに気がつく。離散的な値、つまりデジタルな値を使いたい場合はどうすれば良いのか?例えば言語処理などはどうすればよいのだろう?

その答えが Embeddings である。その方法は、離散的なオブジェクト(例:単語)を、連続値のベクトルにマッピングすることである。

TensorFlow にはこの Embedding をサポートする各種関数や可視化機能が用意されている。使い方などの詳しくはこちらを参照

embedding_lookup()とは?

上述のように、embeddingsが理解できれば、embedding_lookup() も理解できる。

この関数は引数 params に含まれる embedding 形式のテンソルの中かから、ids に該当するものを抽出するという動作を並列に実行する。