인공지능 AI/자연어처리 NLP

NLP 딥 모델 Transformer Bert RNN(LSTM) TextCNN GPT

sailorCat 2022. 3. 23. 12:23
728x90

NLP 를 위한 딥 모델

- RNN(LSTM)

- TextCNN

- Transformer

- BERT

- GPT

 

RNN 

시퀀스 투 시퀀스 모델로 단어 하나씩 순차적으로 인코더와 디코더를 거치며 hidden states 연산을 한다.

지금은 잘 쓰이지 않는다.

멀리 떨어진 단어들의 의존성을 모델링하기 어렵고, 순차적으로 단어 하나씩 계산되기 때문에 처리 속도가 느리다.

 

 

 

Text CNN

단어들의 직선적인 시퀀스를 여러가지 속성의 필터를 적용하여 특성 추출을 하게 된다.

window size를 조정하여 filter를 거친다.

그 후에 나온 벡터들을 축소하여 concat한다.

 

RNN과 비교하면 속도가 빠르지만 의존성 문제는 RNN보다 좋지 못하다.

꽤 성능이 좋기 때문에 사용된다. 

 

 

 

Transformer

Attention is all you need

RNN, CNN 없이 attention으로만 단어의 의미를 문맥에 맞게 표현 할 수 있다는 논문

병렬처리가 가능하고 그로 인해 속도에서 좋은 성능을 보인다.

후에 나오는 BERT 와 GPT의 기초가 된다.

 

 

 

https://github.com/google-research/bert/blob/master/modeling.py

 

GitHub - google-research/bert: TensorFlow code and pre-trained models for BERT

TensorFlow code and pre-trained models for BERT. Contribute to google-research/bert development by creating an account on GitHub.

github.com

 

 

Residual

input으로 들어온 임베딩을 attention을 거치지 않고 점선 화살표를 따라 벡터에 더해주고 정규화 한다.

이런 잔차 연결을 하는 이유는 맞는 답이 아닐경우 오답을 계속 학습하기 때문에 그것을 중간에서 정정해주는 역할을 하기 때문이고, 역전파시에 gradient가 0에 가까워지는 vanishing gradient가 발생할 수 있기 때문이다.

 

 

 

BERT

bert는 transformer의 인코더 부분을 활용하여 만들었다.

Transfer Learning을 통해 적은 양의 데이터로 양질의 모델을 학습한다.

 

Transformer의 encoder 부분과 거의 동일하다.

 

Encoder 부분에서 단어 임베딩 벡터들이 한번에 출력되지만, 

그 이후의 Fine tuning 단계인 classifier에서는 해당하는 벡터만 사용하게 된다.

BERT 모델이 사용하는 Pre-trained 모델은 Masked language model과 Next sentence prediction이다.

 

Masked Language Model

주어진 input 중에서 단어 몇가지를 숨기고, BERT 모델이 이것을 예측할 수 있게 하면 학습이 된다.

모델 파라미터 뿐만 아니라 입력으로 주어지는 토큰들의 임베딩도 알 수 있게 된다.

 

Input 에는 Word가 아니라 Subword인 Wordpiece로 토크나이징 한다.

Vocabulary의 사이즈가 줄어든다.

또한 학습해야 할 토큰 임베딩의 크기도 줄어든다.

 

이런 식으로 단어 학습을 하고, 예측을 통해 분류가 가능하다.

 

 

 

분류, 답변, 문장분류, 태깅에서 좋은 성능을 보여준다.

내가 진행할 프로젝트도 BERT 모델을 사용할 예정이다.

 

마지막 상단 레이어 4개를 합쳐서 쓰는 것이 좋다.

 

 

 

 

Data Augmentation

클래스를 바꾸지 않는 범위 안에서 입력을 변환한다.

학습데이터를 확장 시키고, 더 나은 일반화 성능을 유도한다.

이미지의 경우에 Shift, Flip, Resize, Rotate와 같은 변형을 거치면서 학습 데이터 값을 늘려준다.

텍스트의 경우에

 

BERT

문서 D와 클래스 C가 주어졌을 때, D의 단어들을 랜덤하게 Mask 한 다음 BERT를 사용하여 예측하고, 그 결과를 D'로 학습데이터에 추가한다. (클래스 C와 함께)

GPT 모델을 사용해서 비슷한 방식으로 학습데이터를 확장시킨다.

 

 

728x90