머신러닝에 흥미를 가지고 학습을 하던 중 이론적으로 좀 더 튼튼한(?) 기초를 다지기 위해 Coursera 의 유명한 강좌 중 하나인 Andrew Ng 교수님의 Machine Learning 강의를 듣기로 마음먹었습니다.

비록 영어강의라 거부감이 심하고 온전히 여기에 시간투자를 얼마나 많이 할 수 있을지는 모르겠지만 (강의가 무려 11주차까지…) 꾸준히 학습하며 정리해 보겠습니다.


  • 이 포스팅은 Andrew Ng 교수님의 Machine Learning 강의를 정리했습니다.

머신러닝? 기계학습?

우리는 머신러닝, 기계학습이라는 말을 많이 들어봤습니다. 어쩌면 아주 어렵게 느껴지고 생소하다고 생각 할 수 있습니다. 하지만 우리는 하루에도 수십번씩 기계학습을 사용하고 있습니다.

예를들어 구글에 검색을 할 때, 웹 검색 엔진들을 사용하게 되는데 검색엔진들이 검색을 잘 하기 위해서 학습 알고리즘이 사용됩니다. 이 외에도 페이스북이나 애플의 사진 어플리케이션을 사용할 때, 얼굴을 인식하는 것도 머신러닝을 통해 가능하게 합니다. 이메일이 스팸메일을 구분하는 것 또한 기계학습입니다.

이러한 머신러닝이 오늘날에 왜 사용될까요? 머신러닝은 인공지능분야에서 발전해 파생되어 나갔습니다. 우리는 기계가 지능을 가지길 원했고 몇몇 간단한 일들을 스스로 해내길 원했습니다. 위 예시에서 든 것 말고도 우리가 모르는 더 많은 부분들이 있습니다. 여기서 알 수 있는 한가지는 기계가 스스로 학습한다는 사실입니다.

학습 알고리즘의 강력한 이점을 이용하기 위해 다양한 산업군에서 머신러닝을 적용하고 싶어하고 필요한 분야는 점차 확산되고 있습니다.


머신러닝의 정의

  • Arthur Samuel (1959) 의 머신러닝 정의

Machine Learning :

Field of study that gives computers the ability to learn without being explicitly programmed.

머신러닝이란, 컴퓨터가 명시적 프로그램이 없어도 스스로 학습할 수 있는 능력을 연구하는 학문 분야.

Arthur Samuel 의 정의는 조금 오래된 느낌이 있습니다.

더 최근에 나온 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

Tom Mitchell 은 머신러닝을 Well-posed Learning Problem(학습 과제) 중심으로 정의하고 있습니다. 프로그램이 일정 수준의 작업 성능(P)을 가지고 작업(T)을 수행한다고 했을 때, 경험(E)이 증가함에 따라 작업(T)를 수행하는 성능(P)이 향상될 수 있음.


학습 알고리즘

학습 알고리즘은 여러개가 있습니다. 그 중 주로 배울 학습 알고리즘은 지도 학습(Surpervised Learning)비지도 학습(Unsupervised Learning, 자율학습) 입니다.

지도 학습(Surpervised Learning) 은 작업을 수행할 수 있는 방법을 컴퓨터에게 가르치는 것.

비지도 학습(Unsupervised Learning) 은 컴퓨터가 스스로 학습하도록 유도하는 것.

이 외에도 강화학습(Reinforcement Learning), 추천 시스템(Recommender Systems) 과 같은 알고리즘이 있습니다.