2016-08-06 5 views
4

나는 tensorflow 튜토리얼 tensorflow을 진행할 것입니다. 이 word2vec 사용하거나 다른 어떤 경우tf.contrib.layers.embedding_column from tensor flow

tf.contrib.layers.embedding_column 

궁금하거나, 어쩌면 내가 완전히 잘못된 방향으로 생각하고있다 : 나는 다음 줄의 설명을 찾을 싶습니다. 나는 GibHub을 클릭하려고했지만 아무 것도 발견하지 못했습니다. 나는 파이썬이 일부 C++ 라이브러리를 참조 할 수 있기 때문에 GitHub을 찾는 것이 쉽지 않을 것이라고 생각한다. 아무도 올바른 방향으로 나를 가리킬 수 있을까요?

답변

5

나는 이것에 대해서도 궁금해하고 있습니다. 그들이하는 일이 내게는 분명하지 않지만 이것이 내가 찾은 것입니다.

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) 

그래서 최대한 멀리 볼 수, 묻어가 매입 행렬에 어떤 학습 규칙을 사용하고있는 (그라데이션 하강 등)을 적용하여 형성되는 것 같다.

1

나는 embeddings에 대해 비슷한 의구심을 가졌습니다.

전통 넓은 선형 모델과 함께 매립 층을 추가하는 능력은 낮은 차원까지 부족한 차수를 감소시킴으로써 정확한 예측을 허용 :

여기서 요점이다. 여기 enter image description here

그것에 대해 good post입니다!

그리고 임베디드 레이어를 결합한 simple example입니다. Titanic Kaggle 데이터를 사용하여 이름, 성별, 보유한 승차권, 숙박 한 객실 요금 등 승객이 승객의 승소 여부를 예측합니다.