여러 사람들마다 각자 학습하는 방법이 다르기 마련다. 예컨대 미적분을 배울 때는 우리가 레고를 쌓는 법을 배울 때와는 다른 방식으로 학습하게 되고 알파벳을 배울 때와 사물에 대한 접근법을 배울 때는 또 다른 학습 방식으로 학습한다.
이와 같이 프로그램을 만들때도 학습하는 방식에 대해 구분을 하는데 머신러닝에서는 '지도 학습(Supervised learning)'과 '비지도 학습(Unsupervised learning)으로 구분된다 (각기 다른 환경과 상황에서 다르게 사용된다)
이번 포스팅에서는 이 두 학습 방식에 대한 차이를 알아보겠다.
지도 학습 (Supervised learning)
음악의 각기 다른 장르를 배운다고 상상해보자. 음악 지도 선생님이 인디락밴드 음악을 틀고 '이건 인디락밴드 음악입니다' 라고 얘기한다. 그리고 케이팝을 틀면서 '이건 케이팝입니다'라고 얘기한다. 이와 같이 여러 장르의 음악을 들려주고 장르명을 알려주면서 '학습'하게 된다. 이다음에 라디오를 듣던 중 케이팝을 듣게 되면 '아 이건 수업시간에 들었던 케이팝과 비슷하구나. 아마 이건 케이팝일 거야!'라고 말하게 된다.
수업시간에 들었던 케이팝 음악과는 동일한 음악이 아니지만 여러 예시들을 들었기 때문에 케이팝 음악이란 걸 알 수 있게 된다.
우리가 프로그램에 명확한 결괏값을 알려주고 유사한 입력값을 입력하면 이에 일치한 결과값을 출력한다. 지도 학습을 하고 있는 것이다.
하기 예제를 보면 처음에 학습을 위해 딸기 2개와 블루베리를 넣고 각각 딸기, 딸기, 블루베리라고 라벨링을 해준다.
이후에 딸기를 입력값으로 주면 프로그램은 기존 학습한 데이터를 참고하여 해당 이미지가 '딸기'라는 걸 인식하고 출력한다.
우리가 수많은 학습 예제들을 입력하고 이에 맞는 라벨링을 해주게 되면 프로그램은 자체적 시스템의 수치들을 조정하게 된다. 이후 새로운 피드가 들어오면 내재된 값들과 비교하여 가장 '유사한' 값을 출력하는 논리이다.
비지도 학습 (Unsupervised learning)
외계인이 되어서 지구를 바라보며 지구인들이 무얼 먹는지 보고 있다고 상상해보자. 한 스타트업 회사의 직원이 먹는 음식을 한동안 관찰하였고 (아침, 점심, 간식) 지구인이 아침식사로 먹는 음식은 아래와 같다고 추측한다.
* 시리얼
* 베이글
* 그래놀라 바
점심식사는 통상 아래와 같은 음식의 조합이었다:
* 야채류
* 단백질류
* 곡물류
간식은 대부분 과일이나 견과류가 많았다. 아무도 나(외계인)에게 어떤 음식을 먹는지에 대해서 알려주지 않았지만 '관찰'만으로 이와 같은 패턴을 찾아내었다.
비지도 학습에서 우리(사용자)는 프로그램에게 출력 값(결괏값)에 대한 설정 및 라벨링을 주지 않고 자체적으로 알아서 입력되는 데이터를 분석해서 패턴을 파악, 그룹화한 후 의미 있는 결과를 산출한다.
아래 그림에서는 여러 가지 랜덤 한 입력값은 받고 프로그램 자체적으로 일정 패턴을 분석하는 내용을 담았다.
정리하며
이번 포스팅에서 지도 학습과 비지도 학습에 대해 확인하였는데,
지도 학습(Supervised learning)의 데이터는 라벨 되어있고 프로그램이 이런 패턴을 익히고, 입력값을 예측하여 결괏값을 산출한다.
비지도 학습(Unsupervised learning)의 데이터는 특정 라벨링이 되어있지 않지만 프로그램 자체가 알아서 학습하고 패턴을 파악, 입력값의 구조를 응용하여 결괏값을 도출한다.