Keras 임베딩 레이어에서 임베드 레이어는 어떻게 훈련됩니까? (tensorflow 백엔드를 사용하는 것, 즉 word2vec, 장갑 또는 빠른 텍스트와 유사 함)
사전 훈련 된 임베딩을 사용하지 않는다고 가정하십시오.
Keras 임베딩 레이어에서 임베드 레이어는 어떻게 훈련됩니까? (tensorflow 백엔드를 사용하는 것, 즉 word2vec, 장갑 또는 빠른 텍스트와 유사 함)
사전 훈련 된 임베딩을 사용하지 않는다고 가정하십시오.
답변:
Keras에 포함 된 레이어는 네트워크 아키텍처의 다른 레이어와 마찬가지로 학습됩니다. 선택한 최적화 방법을 사용하여 손실 기능을 최소화하도록 조정됩니다. 다른 레이어와의 주요 차이점은 출력이 입력의 수학 함수가 아니라는 것입니다. 대신 레이어에 대한 입력은 임베딩 벡터를 사용하여 테이블을 인덱싱하는 데 사용됩니다 [1]. 그러나 기본 자동 차별화 엔진은 손실 함수를 최소화하기 위해 이러한 벡터를 최적화하는 데 아무런 문제가 없습니다 ...
따라서 Keras의 Embedding 레이어가 word2vec [2]와 동일하게 작동한다고 말할 수는 없습니다. word2vec는 단어의 의미를 포착하는 임베딩을 배우려는 매우 구체적인 네트워크 설정을 나타냅니다. Keras의 임베딩 레이어를 사용하면 손실 함수를 최소화하려고합니다. 예를 들어 감정 분류 문제로 작업하는 경우 학습 된 임베딩은 완전한 단어 의미를 포착하지 않고 감정적 극성을 캡처합니다.
예를 들어, [3]에서 가져온 다음 이미지는 클릭 베이트 헤드 라인 (왼쪽)과 사전 훈련 된 word2vec 임베딩 (오른쪽) 을 감지하도록 설계된 감독 네트워크의 일부로 처음부터 훈련 된 Keras Embedding 레이어로 세 문장을 포함하는 것을 보여줍니다 . 보다시피, word2vec 임베딩은 구 b)와 c) 사이의 의미 상 유사성을 반영합니다. 반대로 Keras의 Embedding 레이어에서 생성 된 임베딩은 분류에 유용하지만 b) 및 c)의 의미 적 유사성을 포착하지는 않습니다.
이것은 제한된 양의 훈련 샘플이있을 때 word2vec 가중치로 임베딩 레이어를 초기화하는 것이 좋은 아이디어 일 수 있으므로, 적어도 모델에서는 "Alps"와 "Himalaya"가 비슷한 것으로 인식합니다. 둘 다 훈련 데이터 세트의 문장에서 발생하지 않습니다.
[1] Keras 'Embedding'레이어는 어떻게 작동합니까?
[2] https://www.tensorflow.org/tutorials/word2vec
[3] https://link.springer.com/article/10.1007/s10489-017-1109-7
참고 : 실제로 이미지는 임베딩 레이어 이후의 레이어 활성화를 보여 주지만이 예제에서는 중요하지 않습니다 ... [3]에서 자세한 내용을 참조하십시오.
임베딩 레이어는 불연속적이고 희박한 1-hot-vector에서 연속적이고 조밀 한 잠재 공간으로의 투영입니다. (n, m)의 행렬입니다. 여기서 n은 어휘 크기이고 n은 원하는 잠재 공간 크기입니다. 실제로는 실제로 행렬 곱셈을 수행 할 필요가 없으며 대신 인덱스를 사용하여 계산을 절약 할 수 있습니다. 실제로, 그것은 양의 정수 (단어에 해당하는 지표)를 고정 된 크기의 고밀도 벡터 (임베딩 벡터)로 매핑하는 레이어입니다.
Skip-Gram 또는 CBOW를 사용하여 Word2Vec 포함을 작성하도록 훈련시킬 수 있습니다. 또는 특정 문제에 대해 교육하여 특정 작업에 적합한 임베딩을 얻을 수 있습니다. 사전 훈련 된 임베딩 (예 : Word2Vec, GloVe 등)을로드 한 다음 특정 문제 (이전 학습 형태)에 대한 교육을 계속할 수도 있습니다.