출처: wikidocs
BERT 학습 구조
사전 훈련 모델(마스크드 언어 모델 + 다음 문장 예측) + 파인 튜닝
transformers 필수 설치
pip install transformers
모델과 토크나이저 로드
누군가 학습해둔 모델을 가져오는 거라서, 모델과 토크나이저는 항상 맵핑 관계여야함. (A 모델 -> A 토크나이저, A 모델 -/-> B 토크나이저)
from transformers import TFBertForMaskedLM
from transformers import AutoTokenizer
# 예시 모델명: bert-large-uncased
model = TFBertForMaskedLM.from_pretrained('모델명')
tokenizer = AutoTokenizer.from_pretrained("모델명")
이후 예측하는 실습 진행.
문장 예측 모델과 토크나이저 로드
import tensorflow as tf
from transformers import TFBertForNextSentencePrediction
from transformers import AutoTokenizer
# 예시 모델명: klue/bert-base
model = TFBertForNextSentencePrediction.from_pretrained('모델명', from_pt=True)
# from_pt=True : 파이토치로 학습된 모델이지만 텐서플로우에서 사용하겠다
tokenizer = AutoTokenizer.from_pretrained("모델명")
이후 예측하는 실습 진행.
BERT로부터 문장 임베딩을 얻을 수 있는 센텐스버트.
BERT의 문장 임베딩을 응용하여 파인 튜닝함.
SBERT 학습법
1. 문장 쌍 분류 테스크 (NLI) : 수반, 모순, 중립 관계인지 맞추기.
2. 문장 쌍 회귀 테스크 (STS) : 두 문장의 의미적 유사성 구하기.
--> 내가 앞서 챗봇에 사용한 모델이 한국어와 영어의 NLI, STS를 klue/roberta-base에 학습시킨것.
KorNLI.STS 학습방법
KorSTS 데이터셋
transformers 라이브러리는 하려는 테스크에 맞게 출력층을 추가한 BERT 모델 클래스 구현제 제공 중. 따라서 원하는 모델을 잘 찾으면 사용자가 별도의 출력층을 설계할 필요x.
허깅페이스(모델 찾는 페이지)에서 필터 이용해서 검색하기.
transformers 모델 클래스 불러오는 방법
from transformers import TFBertForSequenceClassification
model = TFBertForSequenceClassification.from_pretrained("모델 이름", num_labels=분류할 레이블의 개수)
from transformers import TFBertForTokenClassification
model = TFBertForTokenClassification.from_pretrained("모델 이름", num_labels=분류할 레이블의 개수)
from transformers import TFBertForQuestionAnswering
model = TFBertForQuestionAnswering.from_pretrained('모델 이름')