-
zero-shot-classification fine-turningDEV 2023. 12. 20. 00:43
'유저 질의 의도(도메인)를 파악할 수 있는 모델을 파인튜닝 해 볼 수 있을까?' 🫤
zero-shot-classification
- 모델이 레이블이 지정된 예제 세트에 대해 훈련된 다음 이전에 볼 수 없었던 클래스의 새로운 예제를 분류할 수 있는 자연어처리 작업
- 훈련 중에 모델에서 볼 수 없는 클래스를 예측하는 작업 - 하지만 다양한 라벨링 데이터를 확보하는 것은 어려운 일
- GPT-3와 같은 거대 규모로 학습된 언어 모델은 라벨링을 거의 사용하지 않고도 태스크를 수행할 수 있음을 보여줌
- 하지만 GPT-3와 같은 모델을 활용해야만 가능한 작업이 나고 묻는다면 꼭 그렇지는 않다.
거대모델을 사용하지 않고 문장의 도메인을 분류해 보자.
1. Sentence Similarity task, sentence-transformers model
- sentenceTransformers 모델을 사용해 문장을 임베딩한 값을 cosine similarity을 비교해 유사한 의미를 가진 문장을 찾기
- 파인튜닝도 가능한 것 같지만, 사전학습 모델을 KorSTS, KorNLI 학습 데이터셋으로 멀티 태스크 학습한 huggingface 모델을 사용
- https://huggingface.co/jhgan/ko-sroberta-multitask
2. Zero-shot classification task, transformers model
- Natural Language Inference(NLI)
- zero-shot classification 태스크 모델을 kor_nli의 mnli, xnli로 파인튜닝한 모델을 미리 정리된 문장으로 파인튜닝
- https://huggingface.co/Huffon/klue-roberta-base-nli
미리 정리한 질의와 class 예제
text class 코스닥 지수 알려줘 금융 오펜하이머 등장인물 알려줘 영화 서귀포 맛집 알려줘 장소 ... ... sentence-transformers
- 위 질의 리스트의 text열을 임베딩 → 유저 쿼리를 임베딩 → 유사한 의미를 가진 text를 찾아서 class를 리턴
- 벡터 디비에 문서를 저장하고, 질의를 벡터디비에 검색해 검색된 결과로 질의에 대한 답을 주는 방식과 같지만, 질의에 대한 답을 주는 것이 아니라 비슷한 질의에 레이블 된 값을 리턴하여 활용
- colab code
prototype
- 비슷한 질의에 대해 빠르고 정확하게 동작하지만, 비슷한 종류의 문장이나 레이블이 없을 경우 대응이 어렵다.
- 정답을 주진 못했지만 왜 저 문장이 뽑히게 되었는진 알겠다.
Zero-shot classification, NLI
- Natural Language Inference는 두 문장이 논리적 관계를 판단
- entailment(수반), contradict(모순), neutral(중립적)
premise(전제) hypothesis(가설) label "날 위해 네가 뭔가 해줘야 해." "나는 어떠한 도움도 필요 없어요." 2 (contradict:모순) "날 위해 네가 뭔가 해줘야 해." "내가 해야 하는 일은 아주 큰 일이다." 1 (neutral:중립) "날 위해 네가 뭔가 해줘야 해." "무언가 내가 해야 하는 일이 있다." 0 (entailment:수반) 아래 논문에서 위 방법을 사용해 zero-shot classification을 수행하도록 제안
text class 영화 드라이브마이카의 감독은 누구인가요? 영화 - 만약 위와 같은 데이터가 있을 경우, text에 대한 class결과를 알고 있기 때문에 아래와 같은 데이터를 간단한 배치를 통해 생성이 가능
premise(전제) hypothesis(가설) label 영화 드라이브마이카의 감독은 누구인가요? 이 문장은 (장소)에 관한 것입니다. 2 (contradict:모순) 영화 드라이브마이카의 감독은 누구인가요? 이 문장은 (금융)에 관한 것입니다. 2 (contradict:모순) 영화 드라이브마이카의 감독은 누구인가요? 이 문장은 (영화)에 관한 것입니다. 0 (entailment:수반) - 모델은 특정 클래스에 속한다는 주장이 얼마나 논리적으로 수반하는지를 예측
- 미리 준비한 문서로 파인튜닝
- https://huggingface.co/mundo-go/ko-domain-zsc
- 파인튜닝에 사용한 base mode
prototype
👇🏼
- base model에서는 영화 관련된 질의를 '장소'라는 class로 분류했지만, 파인튜닝한 모델에서는 '영화'를 1순위로 분류
👇🏼
- 금융, 장소 모두 해당 가능한 질의이지만, 파인튜닝 결과 의도대로 분류됨
- 학습 데이터가 부족한 경우도 발생
Ref.
728x90'DEV' 카테고리의 다른 글
무상태(stateless) 웹 계층에서 비정규화(de-normalization)까지 (1) 2023.12.23 zero-shot-classification model 성능 (1) 2023.12.20 API 어뷰징과 처리율 제한(rate limit) (0) 2023.12.17 chatGPT로 면담 예약 시스템 만들기 (0) 2023.12.14 HuggingFace에서 Transformer 모델을 fine-turning 해보자 (0) 2023.12.08 - 모델이 레이블이 지정된 예제 세트에 대해 훈련된 다음 이전에 볼 수 없었던 클래스의 새로운 예제를 분류할 수 있는 자연어처리 작업