私もこれについて疑問に思っています。彼らが何をやっているのかは分かりませんが、これが私の発見です。
paper on wide and deep learningには、埋め込みベクトルがランダムに初期化されてから、誤差を最小限に抑えるためにトレーニング中に調整されるものとして記述されています。
通常、埋め込みを行うときは、データの任意のベクトル表現(ワンホットベクトルなど)をとり、それに埋め込みを表す行列を掛けます。この行列は、PCAによって、またはt-SNEやword2vecのようなものによって訓練中に見つけることができます。
embedding_columnの実際のコードはhereで、_FeatureColumnのサブクラスである_EmbeddingColumnというクラスとして実装されています。埋め込み行列をsparse_id_column属性内に格納します。次に、to_dnn_input_layerメソッドは、この埋め込み行列を適用して、次のレイヤの埋め込みを生成します。
def to_dnn_input_layer(self,
input_tensor,
weight_collections=None,
trainable=True):
output, embedding_weights = _create_embedding_lookup(
input_tensor=self.sparse_id_column.id_tensor(input_tensor),
weight_tensor=self.sparse_id_column.weight_tensor(input_tensor),
vocab_size=self.length,
dimension=self.dimension,
weight_collections=_add_variable_collection(weight_collections),
initializer=self.initializer,
combiner=self.combiner,
trainable=trainable)
だから私の知る限り、埋め込みが埋め込み行列にどのような学習則あなたが使っている(勾配降下など)を塗布して形成されているように思えます。