tensorflow.keras.layers.Embedding
vocab_size
: 텍스트 데이터셋의 크기output_dim
: 임베딩 벡터의 차원input_length
: 입력 시퀀스의 길이tokenizer
를 적용하여 정수 인코딩urlretrieve("http://nlp.stanford.edu/data/glove.6B.zip", filename="glove.6B.zip")
를 통해 다운로드하면 크기가 100인 40만개의 임베딩 벡터를 활용할 수 있다사전 훈련된 언어모델의 시발점이다
ELMO의 특징
- 예 bank Account(은행계좌) 와 River Bank(강둑)
- Word2Vec이나 GloVe의 방법론으로 학습한 임베딩 벡터는 어떤 단어들과의 조합으로 쓰였는지와 상관없이 하나의 벡터값으로 결정된다
- 그러한 이유로 문맥을 고려한 워드 임베딩 Contextualized Word Embedding이 탄생한다
biLM(Bidirectional Language Model)
-
RNN 언어모델은 단어 단위로 입력을 받는데, RNN 내부의 은닉상태 는 시간 time-step이 지날수록 점점 업데이트가 되어간다
- 이는 가 문장의 문맥 정보를 점차적으로 반영한다고 말할 수 있다
- 그런데 ELBo는 순방향 RNN 뿐만 아니라, 역방향의 문장을 스캔하는 역방향 RNN 또한 활용한다. 이러한 언어모델을 biLM(Bidirectional Language Model)이라고 부른다
- biLM의 각 시점이 되는 단어벡터는 임베딩 층을 사용해서 얻은게 아니라, 합성곱 신경망을 활용하영 문자 임베딩 character embedding을 통하여 얻은 단어 벡터이다.
작동원리
-
1. 가 입력될떄의 시점을 보자. 해당 시점에서의 Forward 신경망 층과 Backward 신경망층을의 값을 가져오자
2. 각 출력 층을 연결하고, 각 층(임베딩층, LSTM 층1, LSTM층2)별로 가중치를 곱하여 더한다. 즉 가중합weighted sum을 한다
3. 벡터의 크기를 결정하는 스칼라 매개변수 를 곱한다
- 이렇게 완성된 벡터를 ELMo표현이라 부른다