본문 바로가기

Unsupervised learning

Machine learning은 크게 Supervised learning과 Unsupervised learning의 두 가지로 분류된다.

여기서는 Unsupervised learning을 살펴보자.

 

Unsupervised learning(비지도 학습)

 

Supervised learning과 가장 큰 차이점은 label 즉 '정답'이 주어지지 않는다는 것이다.

쉽게 말해 기계에 dataset을 때려넣고 "알아서 구분해라"라고 하는 셈이다.

 

Supervised learning과 Unsupervised learning의 차이

위 그림에서 보다시피 Supervised learning의 경우 label(O/X)되어 있는 반면,

Unsupervised learning의 경우 label이 없거나 모든 data가 같은 label을 갖는다.

 

Clustering 

 

Unsupervised learning에서는 주어진 dataset이 무엇인지, 이걸로 뭘 할 수 있는지는 알 수 없다.

"이런 dataset이 있는데 여기서 어떤 구조를 찾을 수 있는가?"가 중요한 것이다. 그래서 비슷한 데이터끼리 한 cluster로 묶게 되는데, 이런 특성 때문에 Clustering algorithm이라고도 한다.

 

몇 천 건씩 쏟아지는 기사들을 비슷한 주제끼리 묶는 인터넷 뉴스가 대표적인 예다.

 

 

 

Cocktail party problem

파티장에서 A라는 사람과 대화하고 있다고 해보자. 주변 소리에 섞여서 A의 목소리가 잘 들리지 않을 것이고, A 역시 내 목소리를 잘 듣지 못 할 것이다. 이 문제도 Unsupervised learning으로 해결할 수 있다. 목소리에는 정답이 없지만, 비슷한 목소리끼리 분류할 수는 있지 않은가.

 

두 명의 사람이 동시에 말하는 소리에 대해 다음 Octave 코드를 실행하면 두 목소리가 분리된다.

 

 [W, s, v] = svd((repmat(sum(x.*x, 1), size(x, 1).*x)*x'); 

 

Octave는 수치해석용 자유 컴퓨터 소프트웨어로 문법이 MATLAB과 거의 같다(고 한다. MATLAB을 안 써봐서 모르겠음). 원래 C, Java 등과 비교하면 거의 계산기다.

 

위에 나온 코드가 어떤 원리로 두 소리를 분리하는지는 모른다.  함수 이름이 svd니까 특이값 분해(Singular Value Decomposition)를 수행하는 것 같긴 한데, Ng 교수님도 '이렇게 하면 된다'고 소개만 하고 넘어가셨다.

'Machine Learning > Machine Learning' 카테고리의 다른 글

Feature scaling  (0) 2021.02.22
Gradient descent for linear regression  (0) 2021.02.21
Gradient descent  (0) 2021.02.21
가설과 비용함수  (0) 2021.02.20
Supervised learning  (0) 2020.12.20