본문 바로가기
멋쟁이사자처럼 AI School 8기(fin)/TIL(Today I Learn)

[멋쟁이사자처럼 AI스쿨] TIL(23.4.24) 자연어처리, 트랜스포머

by #FF0000 2023. 4. 24.

 

 

 

자연어처리로 할 수 있는 task

  • 전체 문장 분류: 리뷰에 드러난 감정 파악하기, 스팸 메일 분류하기, 문장이 문법적으로 올바른지 혹은 문장 쌍이 논리적으로 관련이 있는지 없는지 결정하기
  • 문장 내 단어 분류: 문장 구성 성분(명사, 동사, 형용사 등) 혹은 개체명(사람, 장소, 기관) 식별하기 텍스트 컨텐츠 생성: 자동 생성 텍스트로 프롬프트 작성하기, 텍스트 내 마스킹 된 단어의 빈칸 채우기
  • 텍스트 안에서 정답 추출하기: 지문과 질의가 주어질 때 지문에 주어진 정보를 이용해 질의에 대한 정답 추출하기 입력 텍스트로부터 새로운 문장 생성하기: 입력 텍스트를 다른 언어로 번역하거나, 요약하기

 

 

트랜스포머는 쿼리, 키, 밸류를 이용해 self-attention을 수행.

- self attention은 문장 내 단어들 간 상호작용을 고려하므로, 문장의 의미를 파악할 수 있습니다.

 

허깅페이스 Hugging Face는 자연어 처리를 위한 오픈소스 라이브러리와 모델을 제공,

- Transformers. 감성분석, 분류, 생성, 마스킹, NER, 요약, 번역 등

 

허깅페이스에서 기본적으로 제공하고 있는 pipeline 의 기능

  • feature-extraction : 특징 추출 (텍스트에 대한 벡터 표현 추출)
  • fill-mask : 마스크 채우기
  • ner : 개체명 인식 (named entity recognition)
  • question-answering : 질의 응답
  • sentiment-analysis : 감정 분석
  • summarization : 요약
  • text-generation : 텍스트 생성
  • translation : 번역
  • zero-shot-classification : 제로샷 분류

 

 

트랜스포머 알고리즘

번역, 요약, 챗봇, 질의응답, 감성분석, 텍스트 생성 등 자연어처리 분야의 문제를 해결하는데 사용

시퀀스 데이터의 긴 의존성을 모델링할 수 있는 능력을 가지고 있음

Self-Attention 메커니즘을 활용하여 긴 문장에 대한 처리를 더욱 효과적으로 할 수 있음

 

 

트랜스포머 모델에서 입력과 출력의 형태

일반적으로 트랜스포머 모델에서 입력은 2차원 혹은 3차원의 텐서로 표현되며, 2차원의 경우 입력 시퀀스의 길이 x 임베딩 차원으로 구성됩니다. 3차원의 경우는 배치 크기 x 입력 시퀀스의 길이 x 임베딩 차원으로 구성됩니다. 이러한 입력 텐서는 각각의 단어를 임베딩 공간으로 매핑하고, 포지션 임베딩을 더하여 포지션 정보를 추가한 후, 트랜스포머의 인코더 및 디코더에 입력됩니다.

출력은 보통 2차원 형태의 텐서로 표현됩니다. 트랜스포머의 경우 다음 단어를 예측하는 언어 모델링과 같은 일부 작업에서는 출력 시퀀스의 길이가 입력과 다를 수 있지만, 대부분의 경우 출력 시퀀스의 길이는 고정되어 있습니다. 출력 텐서는 보통 각 단어에 대한 확률 분포를 나타내며, 디코더의 출력으로부터 최종 예측을 생성합니다.

 

 

 

Fine-tuning과 Few-shot learning의 차이점

Fine-tuning은 기존의 대규모 데이터셋으로 학습된 모델을 새로운 태스크나 데이터셋에 맞게 fine-tuning 하는 기술입니다. 예를 들어, 이미지 분류 모델에서는 ImageNet 데이터셋에서 학습된 모델을 다른 이미지 데이터셋으로 fine-tuning하여 새로운 이미지 분류 문제를 해결할 수 있습니다. Fine-tuning은 일반적으로 많은 양의 데이터가 필요하며, 새로운 태스크에 대해 명시적인 라벨이 필요합니다.

반면 Few-shot learning은 적은 양의 데이터로도 새로운 태스크를 해결하는 기술입니다. Few-shot learning은 몇 개의 샘플로부터 학습하여 새로운 데이터에 대해 예측하는 방법입니다. 예를 들어, 이미지 분류에서는 몇 개의 라벨만 주어져도 새로운 이미지를 분류할 수 있는 방법을 학습합니다. Few-shot learning은 대규모 데이터셋을 필요로 하지 않으며, 새로운 태스크에 대한 명시적인 라벨이 필요하지 않습니다.

 

 

 

BLEU score

Transformer 로 번역 태스크를 진행했을 때 측정하는 지표

  • 각 문장의 n-gram을 추출합니다.
  • 추출된 n-gram이 번역된 결과 문장에 있는지 확인합니다.
  • 가중치를 적용하여 모든 추출된 n-gram의 점수를 더합니다.
  • 추출된 n-gram의 수가 많을수록, 그리고 인간 번역된 결과 문장과 겹치는 n-gram이 많을수록 더 높은 score를 얻습니다.

 

 

WordPiece

단어의 의미를 표현하는데 사용되는 임베딩 방법 중 하나입니다. 이 방법은 하나의 단어를 서브워드(subword)로 분리하여 표현하는 방법입니다. 예를 들어 "playing"이라는 단어를 "play"와 "##ing"으로 나누어서 표현하는 것입니다. 이렇게 서브워드로 분리함으로써, 단어의 유사성을 더욱 잘 반영할 수 있고, 희귀한 단어나 이상한 단어도 분해하여 처리

 

 

BPE(Byte Pair Encoding)

문자열을 바이트 단위로 분할하고 연속된 바이트 쌍을 세어 가장 빈번하게 등장하는 바이트 쌍을 하나의 새로운 바이트로 대체하는 과정을 반복합니다. 이 과정을 계속 반복하다보면, 새로운 바이트들이 계속해서 생성되고, 이러한 과정을 더 이상 진행할 수 없을 때까지 반복하게 됩니다. 텍스트 데이터의 압축 뿐만 아니라, 언어 모델링, 기계 번역, 문장 분류 등의 자연어 처리 작업에서도 활용됩니다. 예를 들어, 기계 번역에서 BPE는 훈련 데이터에서 단어의 재조합을 통해 새로운 단어를 생성하여 OOV(out-of-vocabulary) 문제를 해결하는 데 사용됩니다. 또한, 문장 분류에서 데이터에 존재하는 많은 단어를 미리 알지 못하는 상황에서도 단어 임베딩을 생성하는 데 활용

 

 

마스크 토큰

자연어 처리에서 문장 내 일부 단어를 마스킹하여 모델이 이를 예측하는 작업.

 

마스크 토큰을 사용하는 이유?

모델이 문장 내에서 해당 단어가 빠진 문맥을 이해하고, 문맥에 맞는 적절한 단어를 예측하는 능력을 강화시키는 데에 유용

문맥을 파악하고 누락된 정보를 채울 수 있는 능력을 향상

모델이 훈련 데이터를 완벽하게 기억하고 있는 경우, 테스트 데이터에서는 제대로 일반화되지 못할 수 있습니다. 이를 방지하기 위해, 모델을 일부러 불완전한 데이터로 훈련