Coursera ML class – week04 Neural Networks : Representation part I

이 포스트는 Coursera Machine Learning 강의(Andrew Ng 교수)를 요약 정리한 것 입니다. 포스트에 사용된 이미지 중 많은 내용은 동영상 강의 자료의 이미지 캡쳐임을 밝힙니다.

Course Home: Coursera Machine Learning

 

 

이번 시간에는 Neural Network라고 불리는 학습 알고리즘에 대하여 설명하도록 하겠다.

 

  • Non-linear hypothesis

Neural Network는 꽤 오래 전부터 제시된 방법이지만 한동안 사람들의 관심을 받지 못했다가 최근 들어 다양한 분야에 기계학습을 적용하기 위한 기법으로 사용하면서 다시 각광받게 되었다. 그런데 왜 Neural network(신경망 알고리즘)이 중요하게 되었을까? 이 문제를 알아보기 위해서는 복잡한 비선형 가설(Non-linear Hypothesis) 문제에서부터 시작해보겠다.

아래 그림처럼 복잡한 non-linear classification문제에 지도학습 알고리즘(supervised learning algorithm) 적용하려고 한다면, 많은 다항식으로 구성된 로지스틱 회귀식을 사용할 수 있다. x1, x2 두 가지 변수(feature)만으로 데이터가 주어졌을 때는 알고리즘은 잘 동작한다.

그러나 feature의 개수가 많다면 어떨까? 예를 들어, 우리는 집의 feature(집의 크기, 방의 개수, 연식 등)를 알고 있고, 이것을 통해 이 집이 6개월 이내 팔릴 가능성이 얼마나 될 지 예측하고자 한다. 만약 집의 feature의 개수가 100개라고 하면 단지 이차항(quadratic)만으로 구성된다 해도 5000개(100C2 )가 넘는 식(features)이 생성된다. 식(Feature)의 개수는 O(n2) = nC2 ≒ n2/2까지 증가할 것이다. 삼차항(cubic)까지 포함하게 되면 더 많은 식(features)이 생성되어 O(n3)까지 증가하게 될 것이다. n이 100개라면 조합 가능한 식(feature)는 약 170,000개가 될 것이고, 상당히 많은 계산이 필요하게 된다. 따라서, n(xi의 개수)이 크다면 이와 같은 방법은 효율적이지 않다.

1

Computer vision 문제를 생각해보자. 아래 보이는 그림은 자동차이다. 우리는 눈으로 보면 이것이 무엇인지 한 눈에 알 수 있지만 컴퓨터는 그림의 한 부분의 픽셀값(0~255)을 숫자 배열형태로만 인식하게 된다.  여기서 픽셀값은 이미지에서 각 픽셀의 밝기를 나타낸다. 컴퓨터는 픽셀 밝기로 이루어진 matrix를 보고 이 숫자들이 특정 자동차의 한 부분(예를 들어 문 손잡이와 같은)을 나타낸다고 우리에게 알려주게 된다.

2

따라서, 자동차 분류(Car detection)알고리즘을 위해 우리가 해야 할 일은 ‘자동차’라고 표시된 사진들과 ‘자동차’가 아님이라고 표시된 사진들을 입력시키는 것이다. 이 사진들(training set)을 학습 알고리즘에 전달하여 분류기(classifier)를 학습시킨 후, 새로운 사진으로 학습된 알고리즘을 테스트 한다. 아래의 그림처럼 새로운 테스트 사진을 보여주고 이것이 차인지 아닌지 판단하게 하는 것이다.

3

아래 그림처럼 pixel1과 pixel2를 가지고 자동차 분류 알고리즘을 만든다고 생각해보자. 50×50픽셀 이미지를 사용한다고 하면 총 2,500개의 픽셀 데이터를 가지게 된다. 즉, 데이터의 개수 n은 2,500이다. 여기서 x는 2,500개의 행을 가진 벡터로 각 원소(element)의 값은 픽셀의 밝기(0~255)를 나타낸다. 만약 RGB이미지를 사용한다면 이미지는 적색, 녹색, 청색 값을 각각 가지기 때문에 n은 2,500*3= 7,500개가 된다. 이차항을 포함한 비선형 가설(quadratic hypothesis function)을 학습하려고 한다면, feature의 개수는 약 300만개(3,125,000)까지 증가하게 된다. 따라서 n이 클 경우 비선형 가설을 학습하는데 단순 로지스틱 회귀를 사용하는 것은 좋은 방법이 아니다. 따라서 이것을 해결하기 위한 방법으로 Neural Network에 대하여 알아보도록 하겠다.

4

 

  • Neurons and the Brain

Neural Network를 알아보기 전 모티브가 되었던 Neurons and the Brain에 대해 먼저 알아보자. Neuron(신경세포)은 크게 input wire인 Dendrite(수상돌기), 실제 processing을 하는 Nucleus(원자핵), 그리고 output wire인 Axon(축삭돌기) 세 부분으로 구성된다. 뉴런은 dendrites 로부터 한 개 이상의 input값을 받아 processing 과정을 거친 후, axon을 통해 output을 밖으로 전달한다.

5

 

  • Model Representation 1

아래 그림은 뉴런 모델을 나타내고 있다. input값(X1~X3)은 input wire를 통해 뉴런에 입력된다. 뉴런(노란색 원)은 logistic unit형태로 프로세싱(computation) 을 거쳐서 output wire를 통해 결과값을 도출한다. 뉴런 모델은 logistic unit이므로 기존 로지스틱 회귀의 hypothesis 계산 방식과 동일하게 구현될 수 있다. input값에 X0을 포함시키는 것이 좋은데 X0을 “bias unit”이라고 하며 값은 항상 1이다. 뉴런 모델은 sigmoid(logistic) activation function이라고도 한다. Theta(θ) 벡터는 parameters값으로 Neural network에서는 weights라고 부른다.

6

아래의 그림이Neural Network 이다. 3개의 layer로 구성되어 있는데 Layer1에서는 x1, x2, x3 세 개의 input 값을 받아 들인다. 여기서 input값은 첫 번째 layer의 input activation이라고 부르기도 한다. 다음 layer 2에는 3개의 뉴런이 있다. (a1(2), a2(2), a3(2))  layer 3에는 output을 도출하는 마지막 4번째 뉴런이 있고, 이 뉴런은 a1(3)으로도 표현된다. Layer1은 input layer, Layer3는 output layer, Layer2를 Hidden layer라고 한다.

7

 

Neural Network에서 사용되는 a, Θ에 대하여 알아보자.

ai(j) 은 j번째 layer내 i번째 unit(개체)의 activation(activation of unit I in layer j) 이다. 예를 들어, a1(2) 는 두 번째 layer 중 첫 번째 unit의 activation을 말한다. 우리는 activation에 의해 각 node의 output을 계산할 수 있다.

Θ(j) 는 하나의 layer에서 그 다음 layer로 연결해주는 matrix형태의 파라미터 값 이다. j번째 layer에 Sj개의 units이 있고 j+1번쨰 layer 에 Sj+1개의 units이 있다면 Θ(j) 행렬의 크기는 Sj+1 x (Sj + 1) 이 된다. Sj 에 +1를 하는 이유는 bias unit 때문이다. 따라서 모든 input과 activation연결하는 행렬 형태의 파라미터 Ɵjil 는 다음과 같이 표현된다. Ɵjil 에서l은 source layer를 의미하며(l번째 layer à l+1 번째 layer로 연결), j는 l+1번째 layer(target layer)의 unit의 위치, i는 l번째 layer(source layer)의 unit의 위치를 의미한다. 아래그림에서 Ɵ131은 1번째 layer와 2번째 layer를 연결하는 선 중에 2번째 layer의 첫 번째 노드와 첫 번째 layer의 세 번째 노드를 연결해주는 선에 위치하게 된다.

8

아래 그림에서 첫 번째 hidden unit a1(2) 은logistic activation function으로 input값들의 linear combination으로 계산한다.

a1(2) = g(Θ10(1)x0 + Θ11(1)x1 + Θ12(1)x2 +  Θ13(1)x3 )

a2(2). a3(2), hθ(x)도 동일한 방식으로 구할 수 있다. 또한, 3개의 input units(Sj)과 3개의 hidden units((Sj+1)를 가지고 있기 때문에Θ(1) 는3 x 4의 행렬 형태(Sj+1 x (Sj + 1))이다.

9

(Coursera ML class –week04 Neural Networks : Representation part II로 이어집니다.)

 

 

Course Home: Coursera Machine Learning

Andrew Ng 교수님 소개: https://www.coursera.org/instructor/andrewng

 

 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.