koBERT 들어가기 전에, BERT부터 공부하기로 하였다.
BERT 논문을 읽어봤고, 여러 블로그들을 참고하며 공부하였다.
Bidirection Encoder Representationss from Transformers
BERT는 Transformer의 인코더를 여러개 붙여서 엄청나게 많은 문서를 Pre-trained하고 끝에 특정한 목표(downstream task)를 위한 최소한의 가중치를 추가해서 모델을 추가로 학습시키는 fine-tuning을 수행한다.
여기서 궁금한 점이 생겼는데, BERT 논문뿐만 아니라 딥러닝에서 자주 등장하는 Pre-training, Fine-tuning, Transfer leaning에 대해서 정리를 먼저 하고 가야겠다.
사람의 경우에는 피아노를 칠 줄 아는 사람이 못 치는 사람보다 바이올린을 더 빨리 배우고, 파이썬을 알고있을 경우, C언어를 훨씬 더 쉽게 배울 수 있다.
그렇다면, 인공지능도 이와 비슷하게 학습을 진행할 수 있지 않을까?
영어를 불어로 번역하는 인공지능을 활용하여 영어를 한국어로 번역하는 인공지능의 성능을 개선시킬 수 있을까?
혹은, 개와 고양이 이미지를 분류하는 인공지능을 활용하여 호랑이와 표범을 분류하는 인공지능을 만들 수 있을까?
이와 같은 질문은 전이 학습(transfer learning)을 공부하면 충분히 답변이 가능하다.
결론은 가능하다
전이 학습 (Transfer learning)
이미 학습된 모델을 다른 딥러닝 모델의 입력값 또는 부분으로 재사용하는 기법을 일컫는다.
전이 학습은 과업 전이(task adaptation)과 도메인 전이(domain adaptation)으로 나눌 수 있다. task와 domain의 차이점에 대해서는 task와 domain 해당 글을 참고 ( 이부분에 대해서는 후에 추가로 정리할 예정)
일반적으로 전이 학습은 새로 학습하려는 데이터가 적은 경우에 적용하게 된다.
딥러닝 모델의 중요한 성격 중 하나는 모델의 초기 층은 "일반적인(general)" 특징을 추출하도록 하는 학습이 이루어지는 반면에, 모델의 마지막 층에 가까워질수록 특정 데이터셋 또는 특정 문제에서만 나타날 수 있는 "구체적인(specific)" 특징을 추출해내도록 하는 고도화된 학습이 이루어진다는 점입니다.
동물 사진 분류 모델의 초기 층은 모서리나 경계, 곡선 등을 검출하는 층이고, 마지막 층은 동물 각각의 세세한 특성을 추출하는 층이라고 생각해 볼 수 있습니다.
따라서 초기 층은 다른 데이터셋의 이미지들을 학습할 때도 재사용될 수 있지만, 마지막 층은 새로운 문제를 맞이할 때마다 새로 학습이 필요합니다.
사전 학습 (Pre-training)
범용적인 대규모 데이터 세트에 대한 모델 학습을 진행하여 파라미터가 정해져 있는 것
weight와 bias가 모두 학습이 되어 있다.
이미지 분류라면, ImageNet의 방대한 데이터 베이스를 학습해서 이미지의 구조에 대해서 모델의 파라미터가 학습되어 있는 것이며,
자연어 처리라면, Word2Vec, FastText, GloVe와 같은 워드 임베딩 방법, OpenAI GPT, ELMo, BERT 등의 딥러닝 기반 사전 학습 방법이 있다.
파인 튜닝 (Fine Tuning)
사전 학습 모델을 구체적으로 풀고자하는 문제에 맞게 weight와 bias를 미세 조정하는 것
파인 튜닝을 할 때, 보통은 마지막 층 몇 개를 변경하여 다시 학습시키는데, 이 또한 데이터의 유형과 특징에 따라서 달라진다.
새로 훈련할 데이터가 적지만, original 데이터와 유사할 경우
새로 훈련할 데이터가 적으며, original 데이터와 다른 경우
새로 훈련할 데이터가 많으며, original 데이터와 유사할 경우
새로 훈련할 데이터가 많지만, original 데이터와 다른 경우
출처
한국어 임베딩 , 이기창 저
기계학습, 오일석 저
https://wikidocs.net/136686
https://velog.io/@soyoun9798/Pre-training-fine-tuning
https://heeya-stupidbutstudying.tistory.com/entry/DL-Transfer-Learning-vs-Fine-tuning-%EA%B7%B8%EB%A6%AC%EA%B3%A0-Pre-training
https://www.youtube.com/watch?v=yofjFQddwHE&ab_channel=DeepLearningAI