Ordinary day

Andrew Ng 머신러닝 기초 강의 - Introduction 본문

Study/ML 이론

Andrew Ng 머신러닝 기초 강의 - Introduction

minung14 2017. 1. 15. 19:47

1. Introduction

페이스북의 사진 태그, 스팸 필터 등 일상 생활에서 머신러닝의 활용 사례를 볼 수 있다.
이런 머신러닝은 AI가 점차 발전하면서 머신러닝도 같이 성장했다고 볼 수 있으며,
컴퓨터 하드웨어의 성능이 좋아지면서 머신러닝의 성능도 같이 좋아졌다.

머신러닝의 활용 사례

  1. 데이터베이스 마이닝
    많은 양의 data들이 생기면서 머신러닝의 비중이 높아짐
    이런 data들의 예로는 웹데이터, 의료기록, biology 데이터 등이 있다.
  2. 직접 프로그래밍할 수 없는 application
    예) 자율주행 헬리콥터, 필기체 인식, 자연어 처리, 컴퓨터 비전 등
  3. self-customizing 프로그램
    예) 아마존, 넷플릭스의 상품 추천
  4. 인간 학습을 이해(사람의 뇌처럼 작동)

What is Machine Learning?

머신러닝을 언급한 두 가지 정의가 있다.
- Arthur Samuel은 “컴퓨터에 명시적으로 프로그래밍하지 않고 배우는 능력을 주는 연구 분야”라고 묘사했는데, 이것은 오래되고 비공식적인 정의이다.
- Tom Mitchell은 좀더 현대적으로 언급했다. 

“컴퓨터 프로그램은 P에 의해 측정된 작업 T에서의 성능이 경험 E로 향상된다면 어떤 종류의 작업 T와 성능 측정 P에 대해 경험 E로부터 학습한다는 것을 말한다” 

예를 들어 체커 게임에 대해 생각해보면,
    E = 체커 게임을 많이 해본 경험(게임 횟수)
    T = 체커를 하는 task
    P = 다음 게임에서 이길 확률


일반적으로 모든 머신러닝은 크게 두 가지로 나눌 수 있다.
- Supervised learning

- Unsupervised learning

2. Supervised Learning(Intro)

가장 흔한 머신러닝의 유형. 정답set이 주어짐


예시)
1. 집 크기에 따른 집 값 예측 

 


연속적인 값에 대해 output을 예측하는 것.
이를 Regression 이라 한다. 


2. 암 진단

현재 각각의 결과에 대해 5개씩 데이터가 있는데, 종양 크기로 암을 진단 할 수 있을까?
이런 문제를 Classfication 이라 한다.
이 예시에서는 데이터를 두 개의 분리된 클래스 중 하나로 분류한다. - 악성인지 아닌지
Classfication은 output에 대한 가능한 값의 불연속적인 수를 가질 수 있다.

위 그림을 다르게 표현하면 아래와 같이 표현할 수 있다.

나이에 따른 종양 크기의 그래프가 아래와 같다고 한다면

두 부분으로 나눌 수 있을 것이다.

이처럼 실제 문제에서는 여러 attribute가 존재할 수 있다.
- 세포 크기의 균일성, 세포 모양의 균일성 등

그렇다면 무한한 수의 이런 feature들을 어떻게 처리해야 할까?
이는 수학트릭으로 해결 가능하다!

3. Unsupervised Learning(Intro)

두번째 주요한 유형.
unsupervised learning에서는 data에 labeling이 되어있지 않음.
이런 작업은 데이터를 그룹으로 클러스터링 하는 것


예시)

1. 구글 뉴스
- 비슷한 뉴스끼리 보여짐
2. DNA micro data
3. Social Network 분석 등


기본적으로 데이터의 변수들 사이 관계에 근거하여 클러스터링 함으로써 자동으로 구조를 도출해낸다.
또한 정답을 모르기 때문에 unsupervised learning 이라고 하며, 결과에 대한 피드백이 없다.

Cocktail party problem

파티장에 여러 사람들이 말하고 있어서 오디오가 겹친다.
예를 들어, 두 개의 마이크가 존재하고, 동시에 두 사람이 말한다고 가정할 때,
1번 사람은 1번 마이크에서의 소리가 더 크고, 2번 사람은 2번 마이크에서의 소리가 더 크다.
이때 각 마이크에서 녹음된 소리는 서로 다를 것이다.
이로부터 우리는 unsupervised learning 으로 음성을 분리해 낼 수 있다.

이 해결법은 원래 매우 복잡하지만, 알고리즘은 단 한줄의 코드로 만들 수 있다.
     [W,s,v] = svd((repmat(sum(x.*x,1), size(x,1),1).*x)*x’);


정의하는 것은 쉽지 않지만 프로그램 상으로는 간단하다.
Octava나 matlab을 사용하면 쉽게 알고리즘을 만들 수 있지만, C++이나 Java를 사용한다면 굉장히 복잡할 것이다.

Comments