[Machine Learning] 비지도 학습(Unsupervised Learning) - 클러스터링 알고리즘, 칵테일 파티 알고리즘

Minjeong Park·2021년 8월 2일
0

Machine Learning

목록 보기
3/17

이전에 우리는 지도학습에 대해 얘기했다. 양성 또는 음성이라고 레이블(label)된 데이터를 불러와보자.

이 데이터는 양성 종양인지 또는 악성 종양인지를 나타낸다. 지도학습에서는 명시적으로 어떤게 양성인지 악성인지, 소위 말하는 정답이 주어져 있다.

비지도 학습

비지도 학습에서는 데이터가 좀 더 다르게 주어진다.

어떤 레이블도 갖고 있지 않거나, 모두 같은 레이블을 갖고 있거나, 또는 아예 레이블이 없다. 그래서 우리에게 주어진 데이터집합으로 우리는 무엇을 할지, 또 각 데이터가 무엇인지 알 수 없다. 대신 "이런 데이터가 있는데, 이걸로 어떤 구조를 찾을 수 있나요?"라고 물을 수 있다. 위와 같은 데이터 집합에서 비지도 학습 알고리즘은 두 가지 다른 클러스터(cluster)로 되어있다고 할 수 있다.

위와 같이 이렇게 두 가지 클러스터로 묶을 수 있다. 비지도 학습 알고리즘은 이 데이터를 두 가지 서로 다른 클러스터로 구분 지을 수 있다. 그래서 이것을 클러스터링 알고리즘이라고 부른다. 그리고 이 알고리즘은 많은 곳에서 사용되고 있다.

클러스터링 알고리즘

구글 뉴스 또는 네이버 뉴스

구글 뉴스에서 클러스터링 알고리즘을 사용하고 있다. 여기에서 구글 뉴스를 확인할 수 있다. 구글 뉴스가 하는 일은 웹에서 매일 수만, 수천 가지의 새로운 기사를 찾고, 그 기사를 연관성 있는 것끼리 묶는 것이다. 그래서 같은 토픽의 기사들이 묶여서 한 데서 볼 수 있도록 할 수 있다. 최근 네이버 뉴스도 마찬가지이다. 아래와 같이 말이다.

클러스팅 알고리즘과 비지도 학습 알고리즘은 다른 많은 문제에서도 활용된다.

대규모 컴퓨터 클러스터

데이터 센터, 즉, 거대한 컴퓨터 클러스터를 보고 어떤 기기들끼리 주로 같이 일하는지 알아내려고 할 때, 만약 그 기기를 같이 두면 데이터 센터를 더 효율적이게 만들 수 있다.
이 외에도 소셜 네트워크 분석의 친구 추천, Market segmentation(고객의 정보를 보고 자동적으로 세분화된 시장을 찾아내고, 고객들을 세분화된 시장 안으로 묶어 넣어서 자동적으로 그리고 더욱 효율적으로 세분 시장에서 판매와 영업을 동시에 할 수 있음), 천문학 데이터 분석에 사용된다.

Cocktail Party Problem

칵테일 파티에 가서 파티룸 가득 사람들이 앉아서 모두 동시에 이야기 하는 걸 상상해보자.이러면 중첩되는 목소리가 많다. 동시에 얘기를 해서 얘기를 듣기도 힘들다.
말하는 사람이 2명 있다고 하자. 그리고 방에는 마이크도 두 개 있다고 하자.

이 마이크들은 말하는 사람들로 부터 다른 거리에 있기 때문에, 아래와 그림과 같이 각 마이크는 말하는 두 사람의 목소리의 서로 다른 조합을 녹음하게 된다. 1번 화자는 1번 마이크에서 좀 더 크게 들릴 수 있고, 2번 화자는 2번 마이크에서 더 크게 들릴 수 있다. 각 마이크는 두 목소리가 조합되어 중첩된 것을 녹음한다.

이렇게 녹음 된 것을 칵테일 파티 알고리즘이라고 불리는 비지도 학습 알고리즘에게 주고, "이 데이터에서 구조를 찾아내줘!"라고 말하게 되면 어떻게 될까? 알고리즘은 이 두 음성녹음을 들어보고 이것이 두 음성녹음이 더해져서, 또는 합쳐져서 우리가 가진 녹음이 되는 것 같다고 할 것이다. 나아가 두 개의 음성 소스를 분리해 낼 것이다!

이런 오디오 처리를 해내려면 엄청나게 많은 코드를 쓰거나, 오디오를 처리해주는 C++, Java 라이브러리를 가져와야할 것 같다. 사실 이 알고리즘은 한 줄의 코드로 가능하다. 이 한 줄의 코드를 만들기 위해 연구자들이 긴 시간이 걸리긴 했다. 그래서 쉽다고 말하는 건 아니지만, 적당한 프로그래밍 환경을 사용하면 많은 학습 알고리즘들을 간단히 프로그래밍 할 수 있다.

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

svd 함수는 특이값 분해(singular value decomposition)의 약자인데, 선형대수학의 과정 중 하나로 Octave에 내장되어 있다.

이것이 우리가 수업에서 Octave를 사용해야 하는 이유이다. 무료 오픈소스 소프트웨어인데, OctaveMatlab 같은 도구를 사용하면, 많은 학습 알고리즘을 단지 몇 줄의 코드로 구현할 수 있다. 학습하기에도 정말 용이하다. 이미 실리콘밸리의 많은 회사에서도 프로토타입을 위해 정말 많이 사용하고 있다. 나중에 Octave사용법을 알아보자.

profile
아자아잣

0개의 댓글

관련 채용 정보