coursera에 오픈되어 있는 Andrew Ng 교수의 머신 러닝 수업을 듣고 있다. 6월 22일부터 개강한다고 해서 최신 강의인 줄 알았는데, 몇 년 전에 찍어놓은 강의를 기간에 맞추어 반복적으로 오픈하는 듯 하다.
교수가 예를 들어 보여주는 구글 검색창이나 메일 UI를 봤을 때 너무 옛날 같아서 놀라긴 했으나 😅 전달하는 내용이 초심자에게 쉽고 잘 정리되어 있는 것 같아서 계속 들어보려고 한다.
머신 러닝이 왜 필요한지에 대해서는 더이상 설명이 필요 없는 시대라고 생각된다. 강의에서 소개한 머신러닝의 다소 오래되고, 형식적이지 않은 정의는 다음과 같다.
Arthur Samuel (1959)
Machine learning: field of study that gives computers the ability to learn without being explicitly programmed.
조금 더 현대적인 정의는 아래 Tom Mitchell의 정의인데, 경험과 작업, 성능으로 나누어 설명해 조금 더 구체적으로 개념을 명시해주는 것 같다.
Tom Mitchell (1998)
Well-posed learning Problem: A computer program is said to learn from experience E with respect to some task T and some performance measure P, if its performance on T, as measured by P, improves with experience E.
E = the experience of playing many games of checkers
T = the task of playing checkers.
P = the probability that the program will win the next game.
경험E : 수십번의 체스 게임을 하는 것, 사용자가 이메일을 분류하는 것을 보는 것
작업T : 체스 게임을 수행하는 행위, 이메일을 스팸으로 분류하는 행위
작업성능P : 프로그램이 다음 판을 새로운 상태로 했을 때, 그 판을 이길 확률, 맞게 분류된 스팸 매일의 개수
일반적으로, 어떤 머신 러닝 문제든 아래 두 가지의 알고리즘 범주 안에 들어갈 수 있다.
지도학습 알고리즘: 정답(right answers given)을 알려주고, 예시 데이터를 학습해 결과를 예측하도록 만드는 알고리즘. 다시 말해 input-output 사이에 상관관계가 있다는 전제를 갖고, 맞는 결과값이 무엇인지 아는 상태에서 data set이 주어지는 것이다.
We'll talk about Supervised Learning, and the idea is that in Supervised Learning, in every example in our data set, we are told what is the correct answer that we would have quite liked the algorithms have predicted on that example. Such as the price of the house, or whether a tumor is malignant or benign.
지도 학습 알고리즘은 크게 두 가지 카테고리가 있다.
회귀 문제. 연속된 값을 가진 결과를 예측하는 것 - predict continuous valued ouput. 여기서 연속된 값이란 시간, 가격과 같이 잘게 쪼개어질 수 있는 것들을 말한다.
예를 들어 똑같은 상품에 대해 재고가 많이 쌓여있을 때, 3달 동안 몇 개를 팔 수 있을지 예측하는 것. 여기서 몇 개
란 연속된 값은 재고 수이고 실수로 본다.
분류 문제. 불연속적인(이산적인) 결과값을 예측하는 것. 결과가 두 개 보다 많을 수 있지만, 회귀 문제에 비해서는 결과 값이 적다. - discrete valued output(0 or 1)
예를 들어 내 사이트에 가입한 유저 중에서 해킹당한 유저와, 그렇지 않은 유저를 구분하는 것. 1 또는 0
의 이산적인 결과로 구분할 수 있다. (0: not hacked, 1: hacked)
attribute라고도 부르는 것 같다. 머신 러닝을 할 때 하나 혹은 그 이상 속성(feature, or attribute)이 주어지게 되고, 컴퓨터는 특성이나 신호(cue)를 통해 예측하게 된다.
면적
에 따른 매도가 예상 종양 사이즈
에 따라 음성인지 양성인지 + 환자의 나이, 두께, 세포 모양 등
많은 feature들이 추가될 수 있다.A solution to number of infinite features! 위에서 말한 feature가 단순히 몇 개가 아니라 무한대로 늘어난다면 어떨까? 컴퓨터가 저장해야할 메모리가 엄청나게 늘어나게 될 것이다. 서포트 벡터 머신이라는 알고리즘에서 수학적인 방법(mathmetical trick)을 써서 요 문제를 해결할 수 있다.
서포트 벡터 머신(support vector machine, SVM)은 기계 학습의 분야 중 하나로 패턴 인식, 자료 분석을 위한 지도 학습 모델이며, 주로 분류와 회귀 분석을 위해 사용한다. 두 카테고리 중 어느 하나에 속한 데이터의 집합이 주어졌을 때, SVM 알고리즘은 주어진 데이터 집합을 바탕으로 하여 새로운 데이터가 어느 카테고리에 속할지 판단하는 비확률적 이진 선형 분류 모델을 만든다.
만들어진 분류 모델은 데이터가 사상된 공간에서 경계로 표현되는데 SVM 알고리즘은 그 중 가장 큰 폭을 가진 경계를 찾는 알고리즘이다. SVM은 선형 분류와 더불어 비선형 분류에서도 사용될 수 있다. 비선형 분류를 하기 위해서 주어진 데이터를 고차원 특징 공간으로 사상하는 작업이 필요한데, 이를 효율적으로 하기 위해 커널 트릭을 사용하기도 한다.
비지도학습: labled data를 보고 학습하는 것이 지도 학습이라면, 비지도학습은 lable이 없거나, 모두 같은 lable을 갖고 있다.
여기 데이터가 있는데, 여기서 구조를 찾을 수 있겠니? 같은 식의 알고리즘이다.
클러스터링 알고리즘. 구글 뉴스에서 같은 토픽의 모든 기사들을 자동으로 묶어서 표시하는 것. 백만개의 서로 다른 유전자를 주고, 수명/위치/역할 등의 변수들과 관련이 되어 있는 그룹들을 자동으로 그루핑해주는 것이다.
예시: organize couputing clusters, social network analysis, market segmentation, astronomical data analysis
여러 명이 말 하거나, 발화자 외에 배경 음악이 깔릴 경우 코드를 돌리면 두 사람의 목소리를 분리해내거나, 배경음악과 발화자의 목소리를 분리해주는 것을 예시로 들었다. 즉, 혼란스러운 환경에서 구조를 찾을 수 있도록 해주는 것이다.
open source software. 학습 알고리즘을 매우 빨리 구현해준다. 일반적인 프로그래밍 언어로 알고리즘을 만드려면 매우 시간이 오래 걸리나, octave 같은 애들은 아주 빨리 구현을 해준다. 그래서 얘네들로 프로토타입을 만들고, 동작하면 C++나 JAVA로 옮긴다고 한다.
그 외 강의에서 또 배울 것들은 reinforcement learning, recommender systems, practical advice for applying learning algorithms 등이 있다.
생각보다 일정이 타잇하므로 내일이나 모레 중 두 번째 클래스를 들어야겠다 🤔