본문 바로가기

ML공부🖥️

파이토치 트랜스포머를 활용한 자연어처리와 컴퓨터비전 심층학습 chapter7. 트랜스포머

  • 트랜스포머 모델 기능 : 기존의 순환 신경망과 같은 순차적 방식이 아닌 병렬로 입력 시퀀스를 처리하는 기능. 
    • 인코더 : 예측되는 토큰의 양옆에 있는 토큰들을 참조하기 때문에 양방향 구조를 가진다.
    • 디코더 : 예측되는 토큰의 왼쪽에 있는 토큰들만 참조하기 때문에 단방향 구조를 가진다. 

  • 트랜스 포머 : 딥러닝 모델 중 하나로, 기계 번역, 챗봇, 음성 인식 등 다양한 자연어 처리 분야에서 많은 성과를 내는 모델. 어텐션 메커니즘만을 사용하여 시퀀스 임베딩을 표현.
  • 트랜스포머의 어텐션 메커니즘은 인코더와 디코더 간의 상호작용으로 입력 시퀀스의 중요한 부분에 초점을 맞추어 문맥을 이해하고 적절한 출력을 생성한다. 인코더는 입력 시퀀스를 임베딩하여 고차원 벡터로 변환하고, 디코더는 인코더의 출력을 입력으로 받아 출력 시퀀스를 생성. 어텐션 메커니즘은 인코더와 디코더 단어 사이의 상관관계를 계산하여 중요한 정보에 집중. 이를 통해 입력 시퀀스의 각 단어가 출력 시퀀스의 어떤 단어와 관련이 있는지를 파악하여 번역이나 요약문 생성과 관련된 작업 등을 수행할 수 있게 된다. 
  • 트랜스포머의 인코더와 디코더는 두 부분으로 구성돼 있으며, 각각 N개의 트랜스포머 블록으로 구성된다. 이 블록은 멀티 헤드 어텐션과 순방향 신경망으로 이뤄져 있다. 
  • 멀티헤드 어텐션은 입력 시퀀스에서 쿼리, 키, 값 벡터를 정의해 입력 시퀀스의 관계를 셀프 어텐션하는 벡터 표현 방법. 

  • 특수 토큰 : BOS, EOS, UNK 및 PAD 토큰은 모두 특수토큰으로 자연어 처리에서 일반적으로 사용.
    • BOS : 문장의 시작
    • EOS: 문장의 종료
    • UNK : 어휘 사전에 없는 단어. 모르는 단어를 의미. 
    • PAD : 모든 문장을 일정한 길이로 맞추기 위해 사용. 

  • 트랜스 포머 인코더 : 입력 시퀀스를 받아 여러 개의 계층으로 구성된 인코더 계층을 거쳐 연산을 수행.
    • 쿼리 벡터 : 현재 시점에서 참조하고자 하는 정보의 위치를 나타내는 벡터. 인코더의 각 시점마다 생성. 
    • 키 벡터 : 쿼리 벡터와 비교되는 대상으로 쿼리 벡터를 제외한 입력 시퀀스에서 탐색되는 벡터가 된다. 키 벡터는 인코더의 각 시점에서 생성.
    • 값 벡터 : 쿼리 벡터와 키 벡터로 생성된 어텐션 스코어를 얼마나 반영할지 설정하는 가중치 역할을 한다. 
    • 멀테 헤드 : 이러한 셀프 어텐션을 여러번 수행해 여러 개의 헤드를 만든다. 각각의 헤드가 독립적으로 어텐션을 수행하고 그 결과를 합친다. 
  • 트랜스 포머 디코더 : 위치 인코딩이 적용된 타깃 데이터의 입력 임베딩을 입력받는다. 위치 인코딩은 입력 시퀀스 내에서 각 단어의 상댖거인 위치 정보를 전달하는 기법. 디코더의 입력 임베딩에 위치 정보를 추가함으로써 디코더가 입력 시퀀스의 순서 정보를 학습할 수 있게 된다. 

  • GPT : 트랜스포머의 디코더를 여러 층 쌓아 만든 언어 모델. 트렌스포머의 인코던느 입력 문장의 특징을 추출하는데 초첨을 두고 있다면, 디코더는 입력 문장과 출력 문장 간의 관계를 이해하고 출력 문장을 생성하는데 초점을 두고 있다. 
  • BERT : 트랜스포머 기반 양방향 인코더를 사용하는 자연어 처리 모델. 양방향 인코더는 입력 시퀀스를 양쪽 방향에서 처리하여 이전과 이후의 단어를 모두 참조함녀서 단어의 의미와 문맥을 파악한다. BERT는 기존 모델들보다 더 정확하게 문맥을 파악하고, 다양한 자연어 처리 작업에서 높은 성능을 보인다. 입력 문장의 의미와 구조를 학습하고 다양한 자연어 처리 작업에 적용할 수 있는 사전 학습된 언어 모델. 
    • [CLS] : 입력 문장의 시작 부분에 추가되는 토큰. 이 토큰을 이용해 문장 분류 작업을 위한 정보를 제공
    • [SEP] : 입력 문장 내에서 두 개 이상의 문장을 구분하기 위해 사용되는 토큰. 이를 통해 모델은 입력 문장을 두 개의 독립적인 문장으로 인식하고, 각각의 문장에 대한 정보를 정확하게 파악할 수 있게 된다.
    • [MASK] : 입력 문장 내에서 임의로 선택된 단어를 가리키는 특별한 토큰. 
      • 토큰 임베딩 : 각 토큰에 대해 토큰 임베딩 벡터를 생성. 
      • 위치 임베딩 : 입력 토큰의 위치 정보를 나타내는 임베딩. 각 입력 토큰의 위치 인덱스 정보를 입력받아 해당 위치의 임베딩 벡터를 출력. 
      • 문장 구분 임베딩 : 입력 문장이 두 개 이 상의 문장으로 이루어진 경우, 각 문장을 구분하는 임베딩을 생성. 
  • BART : BERT의 인코더와 GPT의 디코더를 결합한 시퀀스-시퀀스 구조. 노이즈 제거 오토인코더로 사전 학습된다. 사전 학습 시 노이즈 제거 오토인코더를 사용하므로 입력 ㅁ누장에 임의로 노이즈를 추가하고 원래 문장을 복원하도록 학습. 
  • ELECTRA : 입력을 마스킹하는 댓니 생성자와 판별자를 사용해 사전 학습을 수행. GAN을 사용해 학습하므로 이전 언어 모델과 비교하여 더 효율적인 학습이 가능하다. BERT와 같은 모델과 비교한다면 모델의 매개변수 수가 더 작다. 
  • T5 : 인코더 - 디코더 모델 구조를 바탕으로 다양한 자연어 처리 작업에서 높은 성능을 보이는 모델. 입력과 출력을 모두 토큰 시퀀스로 처리하는 텍스트 - 텍스트 구조. 입력과 출력의 형태를 자유롭게 다룰 수 있으며, 모델 구조상 유연성과 확장성이 뛰어나기 때문에 새롱누 자연어 처리 작업에서도 쉽게 적용할 수 있다.