PRJ1_6 BERT 사용법

영영·2023년 5월 25일
post-thumbnail

출처: wikidocs


BERT 학습 구조

사전 훈련 모델(마스크드 언어 모델 + 다음 문장 예측) + 파인 튜닝


1. 마스크드 언어 모델

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("모델명")

이후 예측하는 실습 진행.

2. 다음 문장 예측


문장 예측 모델과 토크나이저 로드

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("모델명")

이후 예측하는 실습 진행.

3. SBERT (파인튜닝)

BERT로부터 문장 임베딩을 얻을 수 있는 센텐스버트.
BERT의 문장 임베딩을 응용하여 파인 튜닝함.


SBERT 학습법

1. 문장 쌍 분류 테스크 (NLI) : 수반, 모순, 중립 관계인지 맞추기.
2. 문장 쌍 회귀 테스크 (STS) : 두 문장의 의미적 유사성 구하기.

--> 내가 앞서 챗봇에 사용한 모델이 한국어와 영어의 NLI, STS를 klue/roberta-base에 학습시킨것.
KorNLI.STS 학습방법
KorSTS 데이터셋


transformers 라이브러리는 하려는 테스크에 맞게 출력층을 추가한 BERT 모델 클래스 구현제 제공 중. 따라서 원하는 모델을 잘 찾으면 사용자가 별도의 출력층을 설계할 필요x.

허깅페이스(모델 찾는 페이지)에서 필터 이용해서 검색하기.


transformers 모델 클래스 불러오는 방법

  1. 다대일 유형 : 텍스트 분류
from transformers import TFBertForSequenceClassification

model = TFBertForSequenceClassification.from_pretrained("모델 이름", num_labels=분류할 레이블의 개수)
  1. 다대다 유형 : 개체명 인식
from transformers import TFBertForTokenClassification

model = TFBertForTokenClassification.from_pretrained("모델 이름", num_labels=분류할 레이블의 개수)
  1. 질의응답 유형 : QA 문제
from transformers import TFBertForQuestionAnswering

model = TFBertForQuestionAnswering.from_pretrained('모델 이름')


출력층 설계 코드

다대일 유형 한글
다대다 유형 한글
질의응답 한글

0개의 댓글