Link
Recent Posts
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 딕셔너리
- 파이썬AHP
- 빅분기
- 백준1920
- 예측모델링
- dataq
- 공빅데
- 행별속성합계
- 파이썬
- csv병합
- 공빅데기관매칭
- konlpy
- set시간복잡도
- 백준 2164
- 셋
- 실기
- 컨테이너
- 공공빅데이터청년인턴
- 리스트
- 파이썬입출력
- 워드클라우드
- 빅분기실기
- 파이썬딕셔너리
- 튜플
- 태블로
- 작업형2
- 빅데이터분석기사
- 2회기출
- 파이썬튜플
- 파이썬셋
- Today
- Total
Data Science
[do it! bert gpt] 1장. 처음 만나는 자연어처리 본문
1-1 딥러닝 기반 자연어 처리 모델¶
자연어 처리 모델은 자연어를 입력 받아서 해당 입력이 특정 범주일 확률을 반환하는 확률 함수다.
- 문서 분류 (document classification)
- 문장 쌍 분류 (sentence pair classification)
- 개체명 인식 (named entity recognition)
- 질의응답 (question answering)
- 문장 생성 (sentence generation)
학습이란 출력이 정답에 가까워지도록 모델을 업데이트하는 과정을 말한다.
1-2 트랜스퍼 러닝 - 전이학습 (transfer learning)¶
Transfer learning 이란 특정 태스크를 학습한 모델을 다른 태스크 수행에 재사용하는 기법이다.
업스트림 태스크 (upstram task)
문맥을 이해하는 과제
ex) 다음 단어 맞추기, 빈칸채우기
- 다음 단어 맞히기 : GPT - 언어모델(language model)
- 빈칸 채우기 : BERT - 마스크 언어 모델 (masked language model)
1-3 학습 파이프라인¶
In [ ]:
!pip install ratsnlp
In [ ]:
# 코드 1-1 설정값 선언
from ratsnlp.nlpbook.classification import ClassificationTrainArguments
args = ClassificationTrainArguments(
pretrained_model_name="beomi/kcbert-base",
downstream_corpus_name="nsmc",
downstream_corpus_root_dir="/content/Korpora",
downstream_model_dir="/gdrive/My Drive/nlpbook/checkpoint-doccls",
learning_rate=5e-5,
batch_size=32,
)
Korpora (코포라) : 다양한 한국어 말뭉치를 쉽게 내려받고 전처리할 수 있도록 도와주는 패키지
In [ ]:
# 코드 1-2 데이터 다운로드
# 네이버 영화 리뷰 말뭉치
from Korpora import Korpora
Korpora.fetch(
corpus_name=args.downstream_corpus_name,
root_dir=args.downstream_corpus_root_dir,
force_download=True,
)
In [ ]:
# 코드 1-3 kcvbert-base 모델 준비
# hugging-face 에서 만든 transformers 오픈소스 파이썬 패키지에 있는 모델
from transformers import BertConfig, BertForSequenceClassification
pretrained_model_config = BertConfig.from_pretrained(
args.pretrained_model_name,
num_labels = 2,
)
model = BertForSequenceClassification.from_pretrained(
args.pretrained_model_name,
config=pretrained_model_config,
)
In [ ]:
# 코드 1-4 kcbert-base 토크나이저 준비
from transformers import BertTokenizer
tokenizer = BertTokenizer.from_pretrained(
args.pretrained_model_name,
do_lower_case=False,
)
pytorch DataLoader
- 데이터 로더는 데이터를 배치단위로 모델에 넣어주는 역할
- 전체 데이터 중 일부 인스턴스를 뽑아 배치를 구성
- 컬레이트(collate): 배치의 모양등을 정비해 모델의 최종 input 형태로 만들어 주는 과정
In [ ]:
# 코드 1-5 문서 분류 데이터 로더 선언
from ratsnlp import nlpbook
from torch.utils.data import DataLoader, RandomSampler
from ratsnlp.nlpbook.classification import NsmcCorpus, ClassificationDataset
corpus = NsmcCorpus()
train_dataset = ClassificationDataset(
args=args,
corpus=corpus,
tokenizer=tokenizer,
mode='train',
)
train_dataloader = DataLoader(
train_dataset,
batch_size=args.batch_size,
sampler=RandomSampler(train_dataset, replacement=False),
collate_fn=nlpbook.data_collator,
drop_last=False,
num_workers=args.cpu_workers,
)
태스크 정의하기
- 본 교재는 모델 학습을 할때 pytorch lightning 라이브러리 이용함
- pytorch lightning: 딥러닝 모델을 학습할 때 반복적인 내용을 대신 수행하여 사용자가 모델 구축에만 신경쓸수 있도록 돕는 라이브러리
- optimizer, learning rate scheduler
In [ ]:
# 코드 1-6 문서 분류 모델 학습
from ratsnlp.nlpbook.classification import ClassificationTask
task = ClassificationTask(model, args)
trainer = nlpbook.get_trainer(args)
trainer.fit(
task,
train_dataloaders=train_dataloader,
)
'인공지능' 카테고리의 다른 글
[do it! bert gpt] 2장. 문장을 작은 단위로 쪼개기 (0) | 2023.01.26 |
---|
Comments