기초자연어처리- 11. 엘모

WooSeongkyun·2023년 3월 19일
0

자연어처리기초

목록 보기
12/16

케라스의 임베딩 층

  • tensorflow.keras.layers.Embedding
    - 케라스는 훈련 데이터셋의 단어들을 임베딩해주는 레이어를 제공한다
    - 임베딩은 기본적으로 '단어>정수 인코딩>원-핫>임베딩 벡터'순으로 이루어지나 케라스의 임베딩층은 정수 인코딩된 단어를 원-핫 벡터 변환없이 입력한다
    - 임베딩은 다음과 같은 3개의 parameter가 존재한다
    - vocab_size: 텍스트 데이터셋의 크기
    - output_dim : 임베딩 벡터의 차원
    - input_length: 입력 시퀀스의 길이
    - 사용 예시
    1. 단어들에 tokenizer를 적용하여 정수 인코딩
    2. 각 문장에 패딩을 적용시켜 동일한 길이로 만듬
    3. 임베딩 층을 설계 or 사전학습된 임베딩층 활용
    - 예를 들어 urlretrieve("http://nlp.stanford.edu/data/glove.6B.zip", filename="glove.6B.zip") 를 통해 다운로드하면 크기가 100인 40만개의 임베딩 벡터를 활용할 수 있다

ELMO

Embeddings form Language Model

  • 사전 훈련된 언어모델의 시발점이다

  • ELMO의 특징
    - 예 bank Account(은행계좌) 와 River Bank(강둑)
    - Word2Vec이나 GloVe의 방법론으로 학습한 임베딩 벡터는 어떤 단어들과의 조합으로 쓰였는지와 상관없이 하나의 벡터값으로 결정된다
    - 그러한 이유로 문맥을 고려한 워드 임베딩 Contextualized Word Embedding이 탄생한다

  • biLM(Bidirectional Language Model)
    -

  • RNN 언어모델은 단어 단위로 입력을 받는데, RNN 내부의 은닉상태 hth _{t}는 시간 time-step이 지날수록 점점 업데이트가 되어간다
    - 이는 hth _{t}가 문장의 문맥 정보를 점차적으로 반영한다고 말할 수 있다
    - 그런데 ELBo는 순방향 RNN 뿐만 아니라, 역방향의 문장을 스캔하는 역방향 RNN 또한 활용한다. 이러한 언어모델을 biLM(Bidirectional Language Model)이라고 부른다
    - biLM의 각 시점이 되는 단어벡터는 임베딩 층을 사용해서 얻은게 아니라, 합성곱 신경망을 활용하영 문자 임베딩 character embedding을 통하여 얻은 단어 벡터이다.

  • 작동원리
    -
    1. xtx _{t} 가 입력될떄의 시점을 보자. 해당 tt 시점에서의 Forward 신경망 층과 Backward 신경망층을의 값을 가져오자
    2. 각 출력 층을 연결하고, 각 층(임베딩층, LSTM 층1, LSTM층2)별로 가중치를 곱하여 더한다. 즉 가중합weighted sum을 한다
    3. 벡터의 크기를 결정하는 스칼라 매개변수 γ\gamma 를 곱한다
    - 이렇게 완성된 벡터를 ELMo표현이라 부른다

profile
안녕하세요!

0개의 댓글