Tech for good

자연어 언어모델 ‘BERT’ 2강 - 언어 모델(Language Model) | T아카데미 본문

IT/Data Science

자연어 언어모델 ‘BERT’ 2강 - 언어 모델(Language Model) | T아카데미

Diana Kang 2021. 4. 19. 13:21

모든 출처: Sk techx Tacademy (www.youtube.com/watch?v=zia49ZyKiX0&t=4s)

 

 

 

강의 목표

  • 자연어 처리의 종류와, 자연어 처리가 현업에서 적용된 예제를 소개한다.
  • BERT가 탄생하게 된 과정과, BERT에 적용된 메커니즘을 살펴본다.
  • BERT를 이용한 다양한 자연어 처리 실험 결과들을 소개한다.
  • Open source로 공개된 BERT 코드를 이용해 한국어 BERT를 학습해보고, 다양한 자연어 처리 task를 직접 실습해본다.

 

 

목차

  • 2.언어 모델(Language Model)
    • 2.1. 모델이란?
    • 2.2. 언어 모델 
      • 2.2.1. Markov 확률 기반의 언어 모델
      • 2.2.2. Recurrent Neural Network(RNN)기반의 언어 모델
        • (1) RNN 언어 모델
        • (2) Seq2Seq(Sequence to Sequence) 
        • (3) RNN의 구조적 한계점
      • 2.2.3. Attention모델
      • 2.2.4. Self-attention모델
      • 2.2.5. Multi-head Self Attention모델
      • 2.2.6. Multi-head Self Attention encoder 모델
      • 2.2.7. Transformer 모델

2. 언어 모델(Language Model)

  • 언어 모델의 개념과, BERT가 탄생하기 이전의 언어모델들을 살펴본다.

2.1. 모델이란?

- 자연 법칙을 컴퓨터로 모사함으로써 시뮬레이션이 가능

- 이전 state를 기반으로 미래의 state를 예측할 수 있음 (e.g. 습도와 바람 세기 등으로 내일 날씨 예측)

- 즉, 미래의 state를 올바르게 예측하는 방식으로 모델 학습이 가능함.

 

 

2.2. 언어 모델

  • '자연어'의 법칙을 컴퓨터로 모사한 모델 -> 언어 '모델'
  • 주어진 단어들로부터 그 다음에 등장한 단어의 확률을 예측하는 방식으로 학습 (이전 state로 미래 state를 예측)
  • 다음의 등장할 단어를 잘 예측하는 모델은 그 언어의 특성이 잘 반영된 모델이자, 문맥을 잘 계산하는 좋은 언어 모델

 

2.2.1. Markov 확률 기반의 언어 모델

 

 

2.2.2. Recurrent Neural Network (RNN) 기반의 언어 모델

(1) RNN 언어 모델

: 위의 Markov 확률 기반의 언어 모델을 신경망 구조로 바꾼 모델

 

-> RNN은 이전 state를 입력으로 받아 현재의 state를 예측하는 방식이다. 
-> RNN을 이용하면 매우 간단한 언어 모델을 만들 수 있다.

-> RNN을 이용하면 앞에 나온 단어들의 문맥을 고려한 아웃풋을 얻을 수 있다.

 

 

-> 인풋을 모두 고려하여 Context vector가 만들어진다. 이렇게 만들어진 Context vector는 좌표평면에 나열이 되므로 분류(Classification)가 가능해진다. 

-> 즉, 문맥을 데이터로 인코딩(Encoding)할 수 있다는 것이다. 

 

 

 

(2)  Seq2Seq (Sequence to Sequence)

 

  • Seq2Seq(Sequence to Sequence)
    • 입력이 시퀀스로 들어가고, 출력이 시퀀스로 나오는 모델.
    • Input이 문맥이 고려된 RNN 네트워크를 거쳐 Context vector를 생성하고, 이 Context vector를 다시 RNN으로 Decoder하게 되면 그 벡터에 대한 해석이 가능해지는 것!
    • 보통 번역에서 많이 사용 (e.g. 한국어로 인코딩하여 영어로 디코딩)

 

 

 

e.g)

- 음성이 RNN 네트워크를 거쳐 인코딩이 되고, 디코딩을 텍스트로 하는 형태 ---- (Seq2Seq로 음성인식)

- 비디오가 인풋으로 들어가 RNN 네트워크를 거치고, 텍스트로 디코딩 하는 형태   ---- (Seq2Seq로 영상인식)

 

 

(3) RNN의 구조적 한계점

 


 

2.2.3. Attention 모델

 

모든 픽셀 하나하나의 데이터가 아닌, 집중해야 하는 데이터만 중요하게 여기자! 

-> 즉, 특정한 단어에 attention을 줘서 그 단어에만 집중하는 것이 핵심.

 

 

 

 

좋지 못한 Context vector를 보정하는 방법
: 어텐션 웨이트(Attention weight)를 조정 <- Attention weight는 fully connected에서 만들어짐.

 

 

-> Attention을 이용하면 어떤 피쳐들이 서로 강하게 연결되어 있는지 시각화가 가능해짐. 즉, Attention을 통해 피드백을 받아서 고칠 수 있음.

 

 

 

-> 디코더에 인풋으로 들어가는 Context vector를 attention weight을 통해 다이나믹하게 획득할 수 있다.

-> 이 Attention 모델을 통해 기존의 인코더-디코더 구조로 이루어졌던 모든 NLP 어플리케이션의 성능을 향상시킴.

 

 

 

 

-> BUT, 어찌됐든 이 Attention 모델도 RNN 네트워크를 거침.

-> RNN 네트워크의 가장 큰 단점은 시간이 오래 걸린다는 것 (Why? 다음 state를 예측하기 위해 이전 state의 상태를 기다려야 하기 때문. 시계열 단계로 이루어지는 학습이기 때문에.)

-> 그럼 그냥 이 RNN을 없애면 안되나?

 

 

 

2.2.4. Self-Attention 모델

 

 

  • Self-Attention의 구조
    • Query: 얻고자 하는 context vector
    • Key: Query와의 상관관계를 나타내고자 하는 대상
    • Value: Query와 Key의 상관관계 값

-> 모두가 다 행렬연산으로 표현되어 있어서 GPU를 사용하면 이것을 병렬처리로 한 번에 처리할 수 있게 된다.

 

 

 

 

Query * Key = Score -----> 여기에 Softmax 함수를 취하면 0-1사이의 값이 나온다. 

 

 

 

 

 

-> Softmax함수로 나온 값 * Value = 얻고자 하는 context vector,  즉 Query에 대해서 각각의 중요도(벡터값)를 산출할 수 있음.

-> 이 만들어진 벡터들을 모두 합산하게 되면 Attention layer output, 즉 문장 속에서 단어 'I'가 지닌 의미를 context vector로 표현할 수 있음.

 

 

 

-> 즉 이 문장 속에서 'I'가 가지는 중요도를 context vector로 표현할 수 있고, 마찬가지로 문장 내에서 'Study'가 가지는 중요도를 context vector로 표현하고 (...) 이런 식으로 각각의 토큰들에 대한 context vector를 독립적으로 구할 수 있는 것이다.

 

 

 

 

2.2.5. Multi-head Self Attention 모델

 -> BERT는 이 Multi-head Self Attention 모델을 12개 갖추고 있는 것.

 

 

 

2.2.6. Multi-head Self Attention encoder 모델

 

 

-> I study at school 이 입력으로 들어갔을 때, 합성을 통해 자신을 표현하는 context vector를 얻어낼 수 있다. 

-> 각각의 Self Attention에서 나온 값들을 concat을 하고, Feed-forward Network를 거쳐 최종 아웃풋이 나오게 되는 것.

 

 

 

*  참고: What's the difference between 'feed-forward network' and 'fully-connected network?'

stackoverflow.com/questions/45933670/whats-the-difference-between-feed-forward-network-and-fully-connected-networ

 

 

 

2.2.7. Transformer 모델