📢 전이학습에 대한 이론 페이지입니다.
전이학습
전이 학습 나오게 된 배경
- 자체적으로 설계한 모델은 여러 번의 학습 및 평가를 통해 검증을 반드시 진행해야 한다.
- 신경망의 하이퍼 파라미터를 조절하여 적절한 모델을 활용해야 함 (padding, stride 값, 커널 수, 커널 크기 등)
- 수정과 보완의 시간이 오래 걸림
전이 학습
- 기존에 학습되어 있는 모델을 가져다가 사용하는 것
- 추가 학습을 통하여 우리만의 모델로 재학습 후 사용할 수 있음
사용 방법
- CNN 층에서 특성추출부만 가져와서 사용!
- classifier(MLP) 의 경우, 우리가 해결하고자 하는 문제에 맞게 설정해줘야 하기 때문!
- 미세조정
- 새롭게 분류할 클래스의 종류가 사전 학습에 사용된 데이터와 특징이 매우 다르면, 특성추출부 전체를 재사용해서는 안되고 앞 단의 일부 계층만 재사용 해야 함 (심플한 특징들만 추출해내기 위해)
- = 분류기에 내가 원하는 class 가 없을 경우, 특성 추출부의 마지막 부분도 새로 학습해서 미세조정 가능!
장단점
- 장점
- 적은 데이터로도 충분히 좋은 성능을 낼 수 있음
- 추가 데이터만 학습시키기 때문에 학습 속도가 빠르다
- 학습할 데이터셋의 초기 특징을 추출하는 학습 시간이 줄어듦 (뒤의 classifier 부분만 우리 데이터로 학습 시키면 됨)
- 단점
- 예시
- 우리의 분류 class: 개 vs 고양이
- 사전 학습 된 모델 2개: 사자 vs 호랑이 모델 (O), 승용차 vs 트럭 모델 (X)
이미지 모델
VGG16 모델
- CNN 구조, 이미지 분류용 신경망 모델
- imgNet 데이터셋 1000개 카테고리로 훈련된 모델 (객체 다양(동물, 나무, 음식 등등)) → 약 1,200만개 이상의 이미지로 학습
- VGG16 모델을 추가학습 시키기 위해서는 이미지의 크기를
224*224 크기로 조정하여 사용해야함 (해당 모델이 사용하고 있던 크기에 맞춰야 해서!)
언어 모델
PLM 을 이용한 성능 향상 방법
Pretrained Language Moel (PLM)
Feature-based Approach
- 더 좋은 입력 representation 을 갖게 하여 성능을 개선하는 방법
- Word Embedding 방법 변경
- Word Embedding 종류
- Frequency Based: BOW, TF-IDF
- Prediction Based: Word2Vec, GloVe, FastText
Fine-tunning Approach
- 더 좋은 weight parameter 를 갖게 하여 성능을 개선하는 방법
- ELMo, GPT, BERT
- ELMo
- 기존 임베딩은 주변 단어만 고려하기 때문에 동음이의어(눈, 배 등)에 취약
- 문맥을 고려하면서 임베딩하는 구조를 가진 언어모델(양방향 순환)
- 임베딩 벡터, 각 층 별 히든 스테이트의 가중합을 이용해 다운스트림 태스크 진행
전이 학습 과정: 업스트림과 다운스트림 태스크
Upstream task
pre-training
- 방대한 텍스트 데이터를 이용하여 일반적인 언어 이해능력을 학습하는 단계 → 뭔가 broad 하게 학습하는 단계
- 다음 단어 맞추기, 빈칸 채우기 등의 학습을 대규모 말뭉치를 이용해 진행
- 모델이 기본적인 언어 구조를 이해하도록 함
- 좋은 weight parameter 가 구성된 사전 학습 모델이 됨 (임베딩 파라미터, 예측을 위한 파라미터 등)
Downstream task
fine-tunning
- 우리 데이터로 추가 학습 시키기!
- 특정 task(우리의 목적)에 맞게 미세조정(fine-tunning) 하는 과정
- upstream task 로 구성된 모델을 구조 변경없이 사용하거나 새로운 task 모델을 붙여 학습하는 작업
- 문서 분류, 자연어 추론, 개체명 인식, 질의 응답, 문장 생성
- 문서 분류: 자연어(문서나 문장)을 입력받아 해당 입력이 어떤 범주(긍정, 중립, 부정 등)에 속하는지 그 확률 값을 반환
- 자연어 추론: 문장 2개를 입력 받아 두 문장 상의 관계가 참, 거짓, 중립 등 어떤 범주인지 그 확률값을 반환
- 개체명 인식: 자연어(문서나 문장)를 입력받아 단어별로 기관명, 인명, 지명 등 어떤 개체명 범주에 속하는지 그 확률값을 반환 (텍스트 데이터 분석 할 때 tag 붙여서 metadata 로 추가 학습 할 수 있음)
- 문장 생성: 자연어(문장)를 입력받아 다음에 올 단어의 확률 값을 반환 (chatgpt!)