나는 이것에 대해서도 궁금해하고 있습니다. 그들이하는 일이 내게는 분명하지 않지만 이것이 내가 찾은 것입니다.
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)
그래서 최대한 멀리 볼 수, 묻어가 매입 행렬에 어떤 학습 규칙을 사용하고있는 (그라데이션 하강 등)을 적용하여 형성되는 것 같다.