이번 포스팅에서는 Supervised learning과 Unsupervised learning, 그리고 Self supervised learning에 대해 설명해보고자 한다.
보통 머신러닝/딥러닝을 공부하는 사람들에게 지도학습과 비지도학습에 대한 이야기는 머신러닝의 기초이므로 익히 들어왔을 것이다. 이에 대해서는 간단하게 요약만 하고 넘어가며, Self supervised learning에 대해 조금 더 자세히 이야기해 보도록 하자.
1. Supervised Learning(지도학습)
지도학습은 X값들을 가지고 Y의 값을 예측하는, 즉 정답이 존재하는 데이터에 대해 학습하는 것을 말한다. 사전에 사용자가 만들어놓은 labeled 데이터에 대해 학습을 진행하며, 입력값 X와 출력값 Y 사이의 관계를 학습하는 과정을 말한다.
분류, 회귀등이 지도학습에 속하며 비즈니스 상용화의 대부분을 차지하고 있다.
2. Unsupervised Learning(비지도학습)
비지도학습은 label이 존재하지 않은 데이터로 학습을 진행하여 모델이 데이터의 특성을 스스로 학습하는 과정을 말한다. 사용자에 의한 label이 없이 데이터 x자체의 내부 표현 또는 특징을 학습한다. 그래서 학습된 모델에 대한 검증이 주관적이 되기 쉬워 상용화가 조금 어렵다는 단점이 있지만 label에 대한 공수는 적다. X의 분포 자체를 학습하거나 X의 feature를 학습하여 활용한다.
Clustering같은 군집화가 대표적인 비지도학습이지만, 딥러닝에서는 더 나아가 Generative modeling, representation learning과 같은 방법들도 비지도학습에 속한다.
3. Self-Supervised Learning(자기지도학습)
상용화 또는 모델의 성능적인 측면에선 지도학습이 가장 좋게 보일 수 있으나, 지도학습의 가장 큰 문제는 다량의 label데이터가 없을 경우에서 발생한다. 대량의 데이터에 labeling을 하기에 너무 많은 공수가 들기 때문에 이에 대한 해결책이 필요했다. 그래서 나온 기법이 Self-Supervised Learning이다. 이에 대한 학습 과정은 다음과 같다.
- 사용자가 특정 task를 정의한다.
- label이 없는 데이터를 1의 task를 목표로 모델을 학습한다. 이때, 데이터 자체의 정보를 적절히 변형하거나 조작하여 이를 지도학습처럼 삼고 학습한다. (masking 등)
- 2에서 학습시킨 모델을 Downstream task에 가져와 weight는 고정한 후 전이학습(transfer learning)을 진행한다. ([NLP/자연어처리] Transfer Learning(전이학습)에 대한 소개 참고)
이와 같은 자기지도학습은 주로 자연어처리나 이미지 분류와 같이 대량의 unlabeled data를 이용하여 pretraining 및 fine-tunning 하는 학습 과정에서 사용된다. 주로 전이학습을 통해 다른 task의 지도학습 성능을 극대화한다.
여기서 자기지도학습과 지도학습의 차이에서 중요한 점은, 자기지도학습은 unlabeled 된 데이터에서 특성을 고려하여 자동 레이블링을 생성하고, 데이터를 적절히 변형하여 학습한다는 점이다. 그렇기 때문에 데이터 labeling의 공수가 줄어들며 전이학습을 통해 지도학습의 성능을 최대로 끌어올릴 수 있다.
'Study > NLP' 카테고리의 다른 글
[NLP/자연어처리] 이전의 자연어처리 방법론 - Word Embedding 과 Skip-Gram (0) | 2021.11.21 |
---|---|
[NLP/자연어처리] Transfer Learning(전이학습)에 대한 소개 (0) | 2021.10.17 |
[NLP/자연어처리] Beyond BERT (1) | 2021.06.08 |
[NLP/자연어처리] pre-trained model(3) - BERT(Bidirectional Encoder Representations from transformer) (0) | 2021.06.01 |
[NLP/자연어처리] pre-trained model(2) - GPT-1(Generative Pre-Training of aLanguage Model)/OpenAI (0) | 2021.06.01 |