Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

Zorba blog

Word Embedding(ELMo, BERT) 본문

자연어처리

Word Embedding(ELMo, BERT)

Zorba blog 2022. 6. 22. 12:22

ELMo and BERT

- 언어 모델의 성능 향상을 위하여 모델의 가장 핵심이라 할 수 있는 워드 임베딩(Word Embedding) 방식을 개선하려는 시도가 있었음.

- 2018년, ELMo와 BERT가 제안되며 NLP(Natural Language Processing) 분야의 트렌드를 주도함.

 

기존 Word Embedding 방식의 문제점

- 주변 맥락 단어를 학습할 때만 고려하고, 이렇게 생성된 어휘 임베딩을 다른 모델의 입력으로 사용하는 상황은 가정하지 않음.

- 즉, 학습이 완료된 후 어휘 임베딩 값은 불변.

- 실제로 사용되는 어휘의 의미는 맥락에 따라 가변적임.

  • "나는 머리를 끄덕였다."
  • "나는 머리를 다시 잘랐다."
  • "나는 머리가 좋아서 공부를 잘 한다."

- 기존 임베딩 방식은 위의 세 가지 '머리' 단어에 대하여 같은 임베딩 값을 할당.

- 학습이 잘 이루어졌다면 위의 세 가지 상황에 대한 맥락적 정보를 모두 포괄할 것이나,

- 실제 사용되는 맥락과 관계 없는 정보까지 담고 있어야 하며, 이러한 정보는 사실상 불필요함.


ELMo(Embedding from Language Models)

- ELMo의 가장 큰 특징은 사전 훈련된 언어 모델(Pre-Trained Language Model)을 사용한다는 점.

- 사과라는 단어를 보면 "미안해서 사과하다."와 "사과를 먹다."에서의 사과는 전혀 다른 의미를 가짐.

- Word2Vec 이나 GloVe 등으로 표현된 임베딩 벡터들은 이를 제대로 반영하지 못한다는 단점이 있음.

- 같은 표기의 단어라도 문맥에 따라서 다르게 워드 임베딩을 할 수 있으면 자연어 처리의 성능이 올라갈 것.

- 워드 임베딩 시 문맥을 고려하여 임베딩을 하겠다는 아이디어가 문맥을 반영한 워드 임베딩

  (Contextualized Word Embedding)

 

biLM(Bidirectional Language Model)의 사전 훈련

- 다음 단어를 예측하는 작업인 언어 모델링을 보자. 아래는 은닉층이 2개인 일반적인 단방향 RNN 언어 모델.

- RNN 언어 모델은 문장으로부터 단어 단위로 입력을 받고, RNN 내부의 은닉상태 ht는 시점이 지날수록 업데이트 됨.

- 이는 결과적으로 RNN의 ht의 값이 문장의 문맥 정보를 점차적으로 반영한다고 말할 수 있음.

- ELMo는 위의 그림의 순방향 RNN 뿐만 아니라, 위의 그림과는 반대 방향으로 문장을 스캔하는 역방향 RNN 또한 활용.

- 양쪽 방향의 언어 모델을 둘 다 학습하여 활용한다고하여 이 언어 모델을 biLM(Bidirectional Language Model)이라 함.

 

- 양방향 RNN과 ELMo에서의 biLM은 다름. 양방향 RNN은 순방향 RNN의 은닉 상태와 역방향 RNN의 은닉 상태를 연결(concatenate)하여 다음층의 입력으로 사용. 반면, biLM은 순방향 언어모델과 역방향 언어모델이라는 두 개의 언어 모델을 별개의 모델로 보고 학습.

 

biLM의 활용

- biLM이 언어 모델링을 통해 학습된 후 ELMo가 사전 훈련된 biLM을 통해 입력 문장으로부터 단어를 임베딩하기 위한 과정.

- play라는 단어를 임베딩 하기위해서 ELMo는 위의 점선의 사각형 내부의 각 층의 결과값을 재료로 사용.

- 해당 시점의 BiLM의 각 층의 출력값을 가져오고, 순방향, 역방향 언어 모델의 각 층의 출력값을 연결하여 추가 작업 진행.

- 각 층의 출력값이란 첫번째는 임베딩 층. 나머지 층은 각 층의 은닉 상태를 말함.

* ELMo의 직관적인 아이디어는 각 층의 출력값이 가진 정보는 전부 서로 다른 종류의 정보를 갖고 있을 것이므로, 이들을 모두 활용한다는 점.

 

1) 각 층의 출력값을 연결한다.

2) 각 층의 출력값 별로 가중치를 준다.

3) 각 층의 출력값을 모두 더한다.

4) 벡터의 크기를 결정하는 스칼라 매개변수를 곱한다.

- 이렇게 완성된 벡터를 ELMo 표현 이라고 함.

- 이제 ELMo를 입력으로 사용하여 수행하고 싶은 텍스트 분류, 질의 응답 시스템 등의 자연어 처리 작업을 시행.

 

- ELMo 표현을 기존의 임베딩 벡터와 함께 사용.

- 텍스트 분류 작업을 위해 GloVe와 같은 기존의 방법론을 사용한 임베딩 벡터를 준비했다고 할 때,

- 준비된 ELMo 표현을 GloVe 임베딩 벡터와 연결(Concatenate)해서 입력으로 사용.

- 이때 biLM의 가중치는 고정시키고, 위에서 사용한 s1,s2,s3, r 은 훈련 과정에서 학습.

 


BERT(Bidirectional Encoder Representations from Transformers)

- 2018년 10월 논문 공개, 11월 오픈소스 공개로 혜성처럼 등장한 구글의 새로운 Language Representation Model.

- 대형 코퍼스로 Unsupervised Learning을 통해 General Purpose Language Understanding Model을 구축.

- 이후 실행하고자 하는 Task에 집중한 데이터로 Supervised Learning 하여 적용하는 Semi-Supervised Model.

- ELMo와 같이 양방향 문맥을 모두 고려하는 방식으로 접근.

- 다만 ELMo는 Shallow Bidirectional 방식으로 사용했으므로 보다 Deep한 접근법이 필요.

 

자세한 설명은 이전글 첨부.

https://zorba-blog.tistory.com/30?category=937067

Comments