실제로, 출력 벡터는 수학 연산을 사용하여 입력으로부터 계산되지 않습니다. 대신, 각 입력 정수는 모든 가능한 벡터를 포함하는 테이블에 액세스하기위한 인덱스로 사용됩니다. 그렇기 때문에 어휘의 크기를 첫 번째 인수로 지정해야합니다 (테이블을 초기화 할 수 있음).
이 레이어의 가장 일반적인 응용 프로그램은 텍스트 처리입니다. 간단한 예를 보자. 우리의 훈련 세트는 두 가지 문구로 구성됩니다.
곧 Hope기를 바랍니다
다시 만나서 반갑다
따라서 각 단어에 고유 한 정수를 할당하여 이러한 문구를 인코딩 할 수 있습니다 (예 : 훈련 데이터 세트의 모양 순서). 그런 다음 문구를 다음과 같이 다시 작성할 수 있습니다.
[0, 1, 2, 3, 4]
[5, 1, 2, 3, 6]
이제 첫 번째 레이어가 포함 레이어 인 네트워크를 훈련시키고 싶다고 상상해보십시오. 이 경우 다음과 같이 초기화해야합니다.
Embedding(7, 2, input_length=5)
첫 번째 주장 (7)은 훈련 세트에서 구별되는 단어의 수입니다. 두 번째 인수 (2)는 포함 벡터의 크기를 나타냅니다. input_length의 argumet은 물론, 각각의 입력 시퀀스의 크기를 결정한다.
일단 네트워크가 훈련되면, 임베딩 레이어의 가중치를 얻을 수 있으며,이 경우 크기는 (7, 2)이며 정수를 임베딩 벡터에 매핑하는 데 사용되는 테이블로 생각할 수 있습니다.
+------------+------------+
| index | Embedding |
+------------+------------+
| 0 | [1.2, 3.1] |
| 1 | [0.1, 4.2] |
| 2 | [1.0, 3.1] |
| 3 | [0.3, 2.1] |
| 4 | [2.2, 1.4] |
| 5 | [0.7, 1.7] |
| 6 | [4.1, 2.0] |
+------------+------------+
이러한 임베딩에 따르면 두 번째 교육 문구는 다음과 같이 표현됩니다.
[[0.7, 1.7], [0.1, 4.2], [1.0, 3.1], [0.3, 2.1], [4.1, 2.0]]
처음에는 직관적이지 않지만 기본 자동 차별화 엔진 (예 : Tensorflow 또는 Theano)은 모델의 다른 매개 변수와 마찬가지로 각 입력 정수와 관련된 벡터를 최적화합니다. 다른 도메인의 다른 방법 / 사람들이 배운 임베딩을 사용하는 것도 흥미 롭습니다 ( https://blog.keras.io/using-pre-trained-word-embeddings-in-a-keras-model.html 참조 ). [1]에서 완료되었습니다.
[1] López-Sánchez, D., Herrero, JR, Arrieta, AG 및 JM Corchado, 적응 형 클릭 베이트 탐지를위한 메트릭 학습 및 사례 기반 추론. 응용 지능, 1-16.