Hugging Face 튜토리얼 (트랜스포머 모델)
트랜스포머로 무엇을 할수 있나요?
Transformers Library 에서 공유된 사전 학습된 모델들을 가지고 자신만의 모델을 공유 또는 개발 가능
from transformers import pipeline
기본적인 객체는 pipline()함수고 모델에 있어서 필수과정인 전처리와 후처리 과정을 모델로 연결
우리가 어떤 question 을 input , output 을 할수있다.
우리가 model을 사용 할때 크게 중요한것은
1.텍스트가 모델이 이해할수 있는 형태로 전처리 과정을 진행 해야하고
2. 전처리된 입력이 모델입력으로 들어간다.
3. 모델의 예측값이 후처리를 거쳐 , 사람이 이해할수있는 형태로 변환
현재까지 사용할 수 있는 파이프라인(available pipelines)은 다음과 같습니다:
feature-extraction : 특징 추출 (텍스트에 대한 벡터 표현 추출)
fill-mask : 마스크 채우기
ner : 개체명 인식 (named entity recognition)
question-answering : 질의 응답
sentiment-analysis : 감정 분석
summarization : 요약
text-generation : 텍스트 생성
translation : 번역
zero-shot-classification : 제로샷 분류
기본적으로 우리가 colab 에서 실행해보기 위해서는 아래와 같이 필요한것들을 import 해줘야 한다.
!pip install datasets evaluate transformers[sentencepiece]
트랜스포머의 구조
History
2018년 6월: GPT, 최초로 사전 학습된 트랜스포머 모델로 다양한 NLP 작업에 미세 조정(fine-tune)되도록 사용되었으며 SOTA(state-of-the-art) 성능 달성
2018년 10월: BERT, 또 다른 거대 사전 학습 언어 모델로, 더 좋은 문장 요약을 위해 설계 (이번 단원과 다음 단원에서 더 자세히 알아봐요!)
2019년 2월: GPT-2, 더 좋은 성능(그리고 더 큰) 버전의 GPT로, 윤리적 문제로 인해 즉시 공개되지 못하였음
2019년 10월: DistilBERT, BERT의 60% 빠른 속도에 메모리 측면에서 40% 가볍지만 BERT 성능의 97%를 재현하는 경량화 버전의 BERT
2019년 10월: BART 와 T5, 동일한 구조의 (처음으로) 원본 트랜스포머 모델의 구조를 그대로 따른 두 거대 사전학습 언어 모델
2020년 5월, GPT-3, 미세 조정 없이도 (zero-shot learning이라 부름) 다양한 작업을 훌륭하게 수행하는 GPT-2의 더 큰 버전
트랜스포머 모델의 3가지 카테코리
GPT-계열 (Auto-regressive 트랜스포머 모델로도 불림)
BERT-계열 (Auto-encoding 트랜스포머 모델로도 불림)
BART/T5-계열 (Sequence-to-sequence 트랜스포머 모델로도 불림)
트랜스포머는 언어모델이다.
위에 언급한 모델(GPT, BERT, BART, T5 등)들은 언어 모델(language model)로서 학습 되었습니다. 다르게 말하면 이 모델들은 스스로 지도하는 방식으로 수많은 텍스트에 대해 학습된 모델들입니다. 이러한 자가 지도 학습(self-supervised learning)은 학습의 목적이 모델 입력으로부터 자동으로 계산되는 방식을 말합니다. 결국 사람이 데이터에 레이블을 달지 않아도 학습이 가능한 것입니다!
이러한 종류의 모델은 학습한 언어에 대해 통계 기반의 방식으로 이해를 하지만, 이는 몇몇 실생활 문제에 적합하지 않습니다. 그렇기 때문에 사전 학습된 모델은 전이 학습(transfer learning)이라 불리는 과정을 거칩니다. 이 과정에서 모델은 특정 작업에 맞춰 지도적(supervised)인 방법, 즉 사람이 레이블을 추가한 데이터를 사용하는 방법으로 미세 조정(fine-tune)이 이루어지는 단계를 거칩니다.
하나의 예시로 문장 내에서 이전 n개의 단어를 읽고 다음에 올 단어를 에측하는 문제를 들 수 있습니다. 이를 과거와 현재의 입력 정보를 이용하는 방식(미래에 올 입력 정보는 이용하지 않습니다)이기 때문에 인과적 언어 모델링(causal language modeling)이라고 부릅니다.
트랜스포머는 거대 모델이다.
일반적으로 모델의 성늘을 향상시키는 일반적은 전략은 사전학습에 사용 하는 모델과 데이터의 크기를 늘리는것!!
사전학습 (Pretraining) 시에는 모델을 밑바닥부터 학습시키게 되고 모델 가중치를 랜덤하게 초기화 하고 사전 지식없이 학습
여기서 모델 가중치는 딥러닝의 학습 파라미터를 의미 즉 입력신호가 결과 출력에 미치는 중요도를 조절하는 매개변수(parameter)
사전학습은 엄청난 양의 데이터로 막대한 Cost , Time 들어 위와 같이 유명한 회사들이 학습시킨걸 사용하는게 용이
미세조정(Fine-tuning) 이란 모델이 모두 사전학습을 마친 이후 하는 학습
사전 학습된 언어 모델을 가져오고, 여러분이 할 작업에 특화된 데이터셋을 이용해 추가 학습을 수행
- 사전 학습된 모델은 이미 미세 조정 데이터셋과 유사한 데이터셋으로 학습이 이루어진 상태입니다. 결국 모델이 사전 학습시에 얻은 지식(이를테면, NLP 문제에서 사전 학습된 모델이 얻게 되는 언어의 통계적 이해)을 십분 활용해 미세 조정에 활용할 수 있게 됩니다.
- 사전 학습된 모델은 이미 방대한 데이터로 학습되었기 떄문에 미세 조정에서는 원하는 성능을 얻기까지 적은 양의 데이터만 필요로 하게 됩니다.
- 위와 같은 이유로, 원하는 성능을 얻기까지 적은 시간과 리소스만 필요하게 됩니다.
모델의 미세 조정은 이렇게 시간, 데이터, 경제, 그리고 환경 비용 측면에서 훨씬 저렴합니다. 뿐만 아니라 전체 사전 학습 과정보다 제약이 적기 때문에 다양한 방식의 미세 조정을 쉽고 빠르게 반복할 수 있습니다.
[참조]https://huggingface.co/learn/nlp-course/ko/chapter1/4?fw=pt