Upstage AI Lab 2기
2024년 5월 7일 (화) Day_100
CH2. 자연어처리 경진대회 이해하기
Part1. 자연어처리 Task 이해하기
(1) Hugging Face
1. import model, tokenizer
2. datasets module
3. pipeline module
(2) 자연어처리 task
- 기계 번역 / 질의 응답 / 정보 추출 / 감성 분류 / 요약
(3) Evaluation Metric
confusion matrix - accuracy, precision&recall, F1-score
서비스 관점에서의 예시 1) 악성 채팅
어느 것이 서비스 관점에서 더 치명적일까?
- 일반 채팅을 악성채팅으로 분류하여 차단 (FP)
: 악성채팅이 노출되지 않는 것이 중요한 경우, 악성채팅의 threshold 낮춤.
FP 증가 → Precision ↓
FN감소 → Recall ↑
- 악성 채팅을 일반채팅으로 분류하여 노출 (FN)
: 확실히 악성채팅인 것만 차단하는 것이 중요한 경우, 악성채팅의 threshold 높임.
FP 감소 → Precision ↑
FN 증가 → Recall ↓
서비스 관점에서의 예시 2) 암환자 예측
실제 암환자를 찾아내는 것이 중요
FN 감소 → Recall ↑
FP 증가 → Precision ↓
BLEU (Bilingual Evaluation Understudy Score) :
기계번역 및 텍스트 생성의 평가지표
정답문장 중 몇 단어 누락 (FN 증가 → recall 감소) 되어도 문장의 의미는 유사할 수 있음
but 문장에 없는 단어 포함 (FP 증가 → precision 감소) 오번역 가능성 증가
∴ precision을 기반으로 함
n-gram : n개의 token을 한 개체로 보고 평가
brevity penalty (정답문장보다 예측 문장이 짧을 경우 1 이하의 값을 곱해서 precision 값을 낮게 보정)
x
n-gram (n = 1 to 4) 에 대한 precision의 기하 평균에 관한 항
Part2. 자연어처리 Pipeline 이해하기
파이프라인의 구조
1. 환경설정 : 라이브러리 설치 & 데이터셋 로드
pd.read_csv() arguments
filepath or buffer : 파일 경로
sep or delimiter : 구분자
header : 헤더가 있는 행 번호
usecols : 컬럼명을 리스트로 지정
dtype : 각 컬럼의 데이터 타입을 딕셔너리로 지정
encoding : e.g. ‘utf-8’ , ‘cp949’
2. 데이터셋 구축 : input data → train/valid split → tokenize & Pytorch Dataset class 로 변환
Pytorch Dataset class
- DatatLoader 구현이 쉬움 → batch, shuffle, multi-processing 구현 쉬움
- Pytorch 와 확장성/호환성, 구조화된 데이터 관리
__init__ : 데이터 생성/전처리방법 지정
__len__ : 데이터셋 길이
__getitem__ : index에 해당되는 데이터 반환
3. Import model & tokenizer (pre-trained)
from transformer import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("모델체크포인트")
4. 모델 학습
Model : 토크나이저와 동일한 체크포인트!! (otherwise 호환성 문제 발생)
Trainer : 학습, 평가, 최적화
|- TrainingArguments() :
| |- save_total_limit : 저장할 체크포인트의 수
| |- warmup_steps : warmup(모델 학습률 점진적 증가)을 몇 스텝까지 진행
| |- load_best_model_at_end : 학습 종료 후 제일 성능이 좋은 체크포인트 저장
|- Trainer() :
| |- compute_metrics : 사전 정의된 metrics function 입력
| |- callbacks : training 각 상태 별 선택할 action 설정
| | |- (예. EarlyStoppingCallback(early_stopping_patience=3, early_stopping_threshold=0.001))
| |- optimizers : optimizer, learning scheduler 지정
5. Inference&Evaluation : model.eval(), with thorch.no_grad()
model.eval() : batch normalization, dropout 등은 학습 시에만 적용, 추론 및 평가 시에는 꺼야 함.
with thorch.no_grad() : gradient 계산·저장하지 않음. (메모리 사용 ↓ 연산속도 ↑)
Part3. 자연어처리 Pipeline 구현하기
Task : 텍스트 분류
Dataset : AI Hub 낚시성 기사 탐지 데이터
1. Dataset & Tokenizing
제목과 본문을 [SEP] 토큰을 사이에 넣고 연결해서 input으로 넣어줌
2. Model & Trainer
3. Inference & Evaluation
'Upstage AI Lab 2기' 카테고리의 다른 글
Upstage AI Lab 2기 [Day102] NLP - Encoder - Decoder Model(BART) (이론) (0) | 2024.05.09 |
---|---|
Upstage AI Lab 2기 [Day101] NLP - Decoder Model (GPT) (이론) (0) | 2024.05.07 |
Upstage AI Lab 2기 [Day100] NLP - Encoder Model(BERT) (이론) (0) | 2024.05.07 |
Upstage AI Lab 2기 [Day100] NLP (0) | 2024.05.06 |
Upstage AI Lab 2기 [Day095] CV - Generation (0) | 2024.04.29 |