"What is Supervised learning and Unsupervised learning and Reinforcement learning?"
딥러닝 두 번째 글 주제는 지도 학습 (Supervised learning), 비지도 학습 (Unsupervised learning), 강화 학습 (Reinforcement learning)에 대한 간략한 소개이다.
지도 학습과 비지도 학습을 구분하는 가장 큰 기준은 "정답이 무엇인지를 인간이 알려주는가? 알려주지 않는가?" 이다.
예시를 통해 이해해보자.
사진을 입력으로 받아 사진 속 물체가 무엇인지 분류하는 딥러닝 모델을 학습시킨다고 해보자.
당연히 사진 속 물체가 무엇인지 컴퓨터는 전혀 알지 못한다. 강아지인지, 고양이인지, 사자인지, 동물인지 아닌지도 모델은 전혀 알지 못한다.
그렇다면, 모델이 사진 속 물체가 무엇인지 분류하는 문제를 해결하기 위해서는 정답도 함께 주어지는 것이 더욱 학습이 쉬울 것이다.
이 '정답'을 딥러닝 / 머신러닝에서는 '라벨 (label)'이라고 하는데, label이 데이터와 함께 주고 딥러닝 모델을 학습시키는 방법을 지도 학습, label은 없이 데이터만 주고 딥러닝 모델을 학습시키는 방법을 비지도 학습이라 한다.
이것을 수학으로 표현해보면 다음과 같이 표현할수 있다.
위 수식에서 $S$는 데이터 집합을 표현한다. 데이터 집합 (dataset) 의 하나의 원소가 데이터 하나 (one example, one data point)를 표현한다.
즉, 현재 우리에겐 총 n개의 데이터가 있는 dataset $S$가 존재하는 것이다.
이 때 각각의 data point는 $(x, y)$로 표현되는데 $x$는 이미지, 텍스트, 영상 등등 다양한 형태의 데이터를 표현하는 변수이다. 그리고 현재 우리가 집중할 것은 $y$인데 $y$가 바로 label을 표현하는 변수이다.
예를 들어, 강아지와 고양이를 구분하는 딥러닝 모델을 학습시키고 싶다면 나는 강아지 사진과 고양이 사진으로 이루어진 데이터셋이 존재할 것이다.
그리고 강아지 사진에는 '강아지'라는 정답표를 붙여야 하고, 고양이 사진에는 '고양이'라는 정답표를 붙여야 하는데 (이 작업을 labelling이라고 한다.)
컴퓨터는 오직 '숫자'만 처리할 수 있기 때문에 강아지 사진 클래스를 0, 고양이 사진 클래스를 1이라고 labelling을 할 수 있을 것이다.
그렇다면, 내가 어떤 사진을 집어넣었을 때, 딥러닝 모델이 0이라는 결과를 내놓으면 모델은 이 사진을 강아지 사진이라고 분류한 것이고, 1이라는 결과를 내놓으면 고양이 사진이라고 분류한 것이다.
즉, 위 수식의 $y$에서는 $y_i = \{0, 1 \}$로 표현할 수 있을 것이다.
이처럼 supervised learning은 labelling 과정을 인간이 직접 수행하며, 이는 상당히 많은 비용과 시간이 드는 작업이기 때문에 labelling 되지 않은 데이터를 최대한 활용할 수 있는 방법이 존재하고 그것이 Unsupervised learning이다.
Unsupervised learning에는 '인간이' 직접 labelling을 하는 것이 아니라, 모델이 나름의 기준을 가지고 학습 과정 속에서 labelling을 진행한다.
(모델이 만든 label을 인간이 만든 label과 구분하기 위해 pseudo label이라고 표현하기도 한다.)
이에 대해 자세히 이야기하면 너무 길어지므로, 본 글에서는 이 정도만 언급하고 넘어가겠다.
그렇다면 지도 학습과 비지도 학습은 '정답'을 누가 작업하는가? 즉 인간이 하는가 모델이 하는가에 따라 구분되는 학습 방법이다.
물론 Supervised learning과 Unsupervised learning 이외에 Self-supervised learning, Semi-supervised learning 등도 존재하고 이 방법들도 현재 딥러닝 필드에서 상당히 중요한 학습 방법으로 자리 잡았다.
이 두 가지 방법에 대해서는 추후 기회가 된다면 자세하게 다뤄보도록 하겠다.
하지만 본질은 결국 '인간이 labelling을 하지 않은 dataset을 딥러닝 학습에 사용할 수 없을까?'라는 문제에 대한 해결을 시도하는 방법들이다.
지금처럼 딥러닝이 매우 빠르게, 매우 많이 발전할 수 있었던 이유는 현대 사회가 Big-data era이기 때문이다.
좋은 모델, 조금 더 '지능적으로' 보이는 인공지능 모델을 만들기 위해서 현재의 딥러닝이 채택한 방법은 상당한 양의 데이터를 활용해서 학습을 시키는 것이다.
그런데 앞서 언급했듯이, supervised learning처럼 이 모든 하나하나의 데이터에 인간이 직접 labelling을 하는 것은 상당한 시간과 비용이 드는 작업이고 그렇다면 인간이 직접 labelling하지 않은 데이터를 최대한 활용해서
딥러닝 모델을 학습시킬 수 있는 방법이 없을까 고민들에 대한 해결책으로 시도되고 있는 것들이 Unsupervised learning, Self-supervised learning, Semi-supervised learning이다.
위 학습 방법들이 매우 중요한 것은 맞지만 딥러닝을 처음 시작하는 사람들을 대상으로 작성되는 이 글에선 Supervised learning 상황에만 한정하여 딥러닝에 대한 이야기를 해나가고자 한다.
그래도 충분하다고 생각하기 때문이다.
다음 글에서는 본격적으로 딥러닝 모델 (Neural network)에 대한 설명을 시작하기 전에 기본적인 수학에 대해 점검해보고자 한다.
선형대수학 / 확률통계 / 미적분학 / 정보이론 등에 대해 2번에 걸쳐 복습하는 시간을 가져보고 그 다음 본격적으로 신경망에 대한 이야기를 시작하고자 한다.1
'Deep dive into Deep learning' 카테고리의 다른 글
Deep dive into Deep learning part 6. - Updated (0) | 2023.03.17 |
---|---|
Deep dive into Deep learning part 5. - Updated (1) | 2023.03.13 |
Deep dive into Deep Learning Part 4. - Updated (0) | 2023.03.09 |
Deep dive into Deep Learning Part 3. - Updated (0) | 2023.03.07 |
Deep Learning part 1. 딥러닝과 머신러닝 (Updated) (0) | 2023.03.04 |
댓글