트랜스포머의 인코더와 디코더를 활용한 응용
그림에서 알 수 있듯이 BERT모델은 Transformer구조의 인코더만을 활용한 예시이고, GPT모델은 Transformer구조의 디코더를 활용한 예시이다.
BERT (Bidirectional Encoder Representations from Tramsformers)
- 2018년에 공개된 구글의 pre-trained Model 이다.
- 위키피디아와 BooksCorpus와 같은 레이블이 없는 텍스트 데이터로 사전 훈련된 언어모델이다.
- 다른 모델들과 마찬가지로 fine-tuning이 가능하다. 레이블이 없는 사전훈련된 모델을 가지고, 레이블이 있는 다른 작업에서 추가 훈련과 함께 하이퍼파라미터를 재조정하여 높은 성능을 얻는 BERT모델을 만들 수 있다.
- 또한, Subword Tokenizer로 WordPiece를 사용한다. 자주 등장하는 단어는 단어집합에 그대로 추가하지만, 자주 등장하지 않는 단어는 더 작은 단위인 서브워드로 분리되어 단어집합에 추가된다.
이 문장을 보면 다른 단어들은 일반적으로 많이 사용하는 단어라 그런지 단어 그대로 단어집합에 저장되어있다면, embedding 이라는 단어는 단어집합에 저장되어있지 않기 때문에 서브워드로 쪼개지고, 나중에 다시 embedding으로 합칠 수 있도록 ##으로 표시한다.
1. 텍스트 분류 (Single Text Classification)
BERT는 영화 리뷰 감성분류, 로이터 뉴스분류 등과 같이 입력된 텍스트에 대해서 분류를 하는 유형으로 사용된다. 두가지 예시 모두 긍정과 부정으로 분류한다.
이러한 텍스트 분류 문제를 풀기 위해서는 파인튜닝 시, fully-connected layer 라고 불리는 층들을 추가하여 분류에 대한 예측을 하게 된다.
2. 태깅 작업 (Tagging)
BERT의 또 다른 활용으로는 태깅작업이 있다. 대표적으로 문장의 각 단어에 품사를 태깅하는 품사태깅작업과 개체를 태깅하는 개체명 인식작업이 있다. 위 그림과 같이 사람인지, 단체인지, 장소인지 태깅하는 역할을 하기도 한다.
이러한 문제를 풀기 위해서 출력층에서는 입력 텍스트의 각 토큰의 위치에 밀집층(완전 연결층, fully-connected layer)을 사용하여 분류에 대한 예측을 하게 된다.
3. 텍스트 쌍에 대한 분류/회귀 (Text Pair Classification or Regression)
BERT는 텍스트의 쌍을 입력으로 받는 태스크도 풀 수 있다. 텍스트의 쌍을 입력으로 받는 대표적인 태스크로 자연어 추론(Natural language inference)이 있다. 자연어 추론 문제란, 두 문장이 주어졌을 때, 하나의 문장이 다른 문장과 논리적으로 어떤 관계에 있는지를 분류하는 것이다. 유형으로는 모순 관계(contradiction), 함의 관계(entailment), 중립 관계(neutral)가 있다.
4. 질의응답 (Question Answering)
텍스트의 쌍을 입력으로 받는 또 다른 태스크로 QA(Question Answering)가 있다. BERT로 QA를 풀기 위해서 질문과 본문이라는 두 개의 텍스트의 쌍을 입력한다. 질문과 본문을 입력받으면, 본문의 일부분을 추출해서 질문에 답변한다.
>> 이와 같은 BERT 모델은 데이터를 숫자나 클래스로 변환하는 것이 목표이기 때문에 전통적인 인코더-디코더 구조에서 디코더를 생략할 수 있다. 이러한 인코더의 구조를 활용한 BERT모델은 자연어이해(NLU)작업에서 강력한 성능을 보여준다.
GPT (Generative Pre-trained Transformer)
- GPT모델은 OpenAI에 의해 개발
- 이전의 데이터 포인트들을 기반으로 다음 데이터 포인트를 예측하는 확률기반 방식
- 인터넷에서 쉽게 접할 수 있는 방대한 양의 텍스트 데이터를 활용하여 문맥에 따른 다음 단어의 적합성을 학습한다.
- 앞선 단어들을 기반으로 다음 단어를 예측하고, 예측된 단어까지 포함한 이전 단어들을 기반으로 또 다시 다음 단어를 예측한다.
- 디코더가 주어진 입력 시퀀스의 문맥을 충분히 활용하여, 필요한 출력 시퀀스를 직접 생성할 수 있다. 전체 시퀀스를 통한 문맥의 흐름을 휴지하면서 자연스러운 출력을 생성할 수 있다.
GPT 모델은 번역, 요약, 질문 응답 등에서 활용된다.
>> GPT모델은 Transformer의 디코더 구조를 활용한 모델이다. 인코더-디코더용 데이터셋을 따로 관리하지 않고 하나의 긴 시퀀스를 모델링 하는 방식으로 처리하게 되어 디코더만을 사용하여 구현할 수 있다. 이는 자연어 생성(NLG) 작업에서 강력한 능력을 갖추게 된다.
차이점
문맥 이해
- GPT : 한 방향(순방향, Forward)으로만 문맥을 이해.
- BERT : 양방향(Bidirection)으로 문맥을 이해.
적용 분야
- GPT : 텍스트 생성, 대화형 AI, 글쓰기 보조 등 언어 생성 작업에서 탁월한 성능을 발휘
- BERT : 텍스트 분류, 질의응답, 문장 인식 등 문맥이해와 텍스트 분석에서 뛰어난 성능을 보임
학습방식
- GPT : 다음단어를 예측하는 언어 모델링 작업을 통해 학습. 입력 시퀀스의 다음 단어를 예측하는 방식으로 사전 학습됨
- BERT : 학습 입력 텍스트의 일부 단어를 마스킹하고, 마스킹 된 단어를 예측하는 방식으로 학습
'Natural Language Processing' 카테고리의 다른 글
[Goorm] 딥러닝을 이용한 자연어 처리 9 (Transformer) (2) | 2024.08.06 |
---|---|
[SeSac] LangChain 6 - RAG(Retrieval-Augmented Generation) (0) | 2024.07.15 |
[SeSac] LangChain 5 - Output Parser (0) | 2024.07.14 |
[SeSac] LangChain 4 - 모델 파라미터 (0) | 2024.07.14 |
[SeSac] LangChain 3 - LLM, ChatModel 모델 클래스 (0) | 2024.07.14 |