Coursera ML class – week04 Neural Networks : Representation part II

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

Course Home: Coursera Machine Learning

(이 글은 Coursera ML class – week04 Neural Networks : Representation part I 에서 이어집니다.)

 

  • Neural networks – Model Representation 2

앞서서 우리는 ai(j) 와 Θ(j)를 통해 hypothesis를 구하는 방법을 알아봤다. 이번에는 벡터를 활용하여 효율적으로 계산하는 방식을 살펴보도록 하겠다.

아래 그림에서 보듯이 a1(2) 식에서 Θ10(1)x0 + Θ11(1)x1 + Θ12(1)x2 + Θ13(1)x3  z1(2) 라고 하자. 그러면 a1(2) = g(z1(2)) 로 간략하게 정리할 수 있다. a2(2) , a3(2) 도 마찬가지로 g(z2(2)), g(z3(2)) 으로 나타낼 수 있다.

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

a2(2) = g(Θ20(1)x0 + Θ21(1)x1 + Θ22(1)x2 +  Θ23(1)x3 ) = g(z2(2))

a2(2) = g(Θ30(1)x0 + Θ31(1)x1 + Θ32(1)x2 +  Θ33(1)x3 ) = g(z3(2))

 

여기서 z1(2) z2(2) z3(2) 을 vector로 만들면 z(2) 로 표현할 수 있고, z(2)는 다시 Θ(1)x 의 벡터 곱으로 나타낼 수 있다.

a(2) = g(z(2)) = g(Θ(1)x)

 

a는 j번째 layer의 i번째 unit의 activation이기 때문에 a(1) 은 첫 번째 layer의 개체인 x 벡터와 같다.  z(2)= Θ(1)x 에서 x 대신 a(1) 으로 치환하면 z(2)= Θ(1) a(1) 으로 바꿀 수 있다.

a(2) = g(z(2)) = g(Θ(1)x) = g(Θ(1) a(1))

 

a(2)는 a1(2) , a2(2) , a3(2) 에 bias unit인 a0(2) 을 포함한 4×1 벡터가 된다. 최종적으로 hypothesis를 구하기 위해 z(3) 를 계산한다. z(3) 는 Θ10(2)a0(2) + Θ11(1) a1(2) + Θ12(1) a2(2) +  Θ13(1) a3(2) 이고, 위와 같은 방식에 의해 Θ(2) a(2) 로 계산할 수 있다. hΘ(x)는 결국 a(3) 이며, a(3) 는 output layer에서 오직 한 개의 unit으로 이루어졌고, 이것은 실수(real number)로 구성된 4×1 벡터이다.

hθ(x) = g(Θ10(2)a0(2) + Θ11(2)a1(2) + Θ12(2)a2(2) +  Θ13(2)a3(2) ) = g(z1(3)) = g(Θ(2)a(2)) = a(3)∈R4

위와 같이 hypothesis를 계산하는 과정을 forward propagation이라고 한다. (input layer 부터 시작하여 output layer까지 순방향(forward propagate) 으로 이동하며 각 layer의 activation을 계산하여 최종 결과값을 계산하기 때문이다.)

10

아래 neural network 그림에서 왼쪽 박스 부분이 없다고 생각하면, logistic regression 과 흡사하다. hθ(x) = g(Θ0a0 + Θ1a1 + Θ2a2 + Θ3a3 ) 이다. 단지 neural network는 original feature인 x1, x2, x3 대신 hidden layer에서 계산된 new features값인 a1(2), a2(2), a3(2)을 사용하고 있다. a1(2), a2(2), a3(2)은 original features가 아닌 스스로 학습하여 계산된 값이다. 따라서, layer1에서 layer2로 매핑되는 값은 θ에 의하여 결정된다. neural networks는 feature가 무엇이든지 최적의 output을 도출하기 위해 스스로 학습하는 유연성(flexibility)을 가지고 있기 때문에 우리가 직접 최적의 feature를 정해야 했던 기존 logistic 방식보다 더 좋은 결과값을 도출할 수 있다.

11

 

우리는 또한 뉴런이 서로 연결되는 방식에 따라 다양한 형태의 neural network를 구성할 수 있다(Network architecture). Layer는 여러 개의 node를 가질 수 있고, layer의 수를 늘릴 수도 있다. 아래의 network는 1개의 input layer(layer 1), 와 1개의 output layer(layer 4) 그리고 layer2, layer 3 두 개의 hidden layer로 구성되어 있다.  layer 2는 3개의 hidden unit을, layer 3는 2개의 hidden unit을 가진다.

12

 

  • Neural networks – Examples and Intuitions

우리는 Neural Network를 통해 Non-linear 문제들을 빠르게 해결하고자 하였다. 아래 그래프에서 오른쪽의 파란 선으로 표시되어 있는 부분이 non-linear decision boundary이다. 이 복잡한 문제를 neural network를 적용하면 왼쪽처럼 간단하게 표현할 수 있다. X는 binary 형태 즉, 0과 1밖에 없기 때문에 x1과 x2가 같을 때 y=1이고 다를 때 y=0인 경우가 될 것이다. 이것은 XNOR게이트로 표현할 수 있다. (x1, x2값이 같으면 1, 다르면 0 반환)

13

좀 더 자세히 어떻게 적용하는지 살펴보자. 간단하게 neural network를 적용할 수 있는 것은 x1과 x2의 AND연산이다. Layer1에 노드가 3개가 있다. x0, x1, x2 간선에 있는 것들은 weights 즉 theta값을 나타낸다. 즉 hΘ(x) = g(-30 + 20x1 + 20x2) 라는 식을 세울 수 있다. 여기서 사용하는 function은 logistic regression에서 사용했었던 sigmoid function이다. 오른쪽 위 그래프를 보면 z가 4.0일 경우 0.99값을 가지게 되고 z가 -4.0일 경우 h값은 0.01을 가지는 함수이다. 따라서 오른쪽 아래 표와 같이 x1, x2에 대한 4가지 경우의 값을 적용하여 h값을 구해보면 g(-30), g(-10)은 0에, g(10)은 1에 수렴하게 된다. 즉 x1, x2 두 값이 모두 1 일 때만 결과값이 1이고, 두 값 중 하나라도 0을 포함 한다면 결과값이 0이 되기 때문에 AND연산이 정확히 구현됨을 확인할 수 있다.

14

 

아래는 OR function을 구현하는 방식이다.  hΘ(x) = g(-10 + 20x1 + 20x2) 를 적용하면, x1, x2가 모두 0인 경우에만 h값(g(-10))은 0으로 수렴하고, x1, x2 중 하나라도 1이 포함되면 h값은 1로 수렴하게 된다.

15

다음은 NOT 연산을 구하는 방식이다.  hΘ(x) = g(10 – 20x1 ) 를 적용하면 x1이 0일 떄 h는 1, x1이 1일 때 h는 0으로 수렴된다.

16

그러면 다시 처음에 나왔던 x1 XNOR x2(x1, x2값이 같을 때만 1 반환)를 한번 구현해보자.

x1 XNOR x2 = (x1 AND x2) OR ((Not x1) AND (Not x2)) 로도 계산할 수 있다.

따라서, (x1 AND x2) 연산식을 Layer2 (hidden Layer) 의 a1(2) 로 구성하고, ((NOT x1) AND(NOT x2))연산을 a2(2) 로 구성한다. 그리고 a(2) (a1(2) OR a1(2) )에 의해 다시 a1(3) 구성하면 그 값이 곧 hΘ(x) 가 된다. 즉, X1, x2가 같을 때만 1이고, 아닌 경우에는 0인 XNOR 연산을 Neural Network로 표현할 수 있다.

17

 

  • Neural networks – Multi-class classification

이번에는 Neural Network의 multiple classification은 어떻게 수행이 되는지 알아보자. 분류기(classifier)가 보행자, 자동차, 오토바이, 트럭 4종류를 구분해야 한다고 하면, 우리는 4개의 output unit을 갖는 neural network을 구성할 수 있다. 여기서 결과값은 4×1 벡터의 형태가 된다 벡터의 첫 번째 element가 1이면 보행자, 두 번째 element가 1이면 자동차, 세 번째 element가1인 경우는 오토바이. 4번째 element가 1이면 truck으로 구분할 수 있다.

18

4개 종류(보행자, 자동차, 오토바이, 트럭)의 이미지들을 training set(x(i), y(i))으로 입력한다면, 아래 그림처럼 training set의 y(i)값은 4개의 벡터 중 하나로 표현되고, hypothesis에 의한 결과값도 네 개 벡터 중의 하나의 형태로 도출될 것이다.

19

<끝>

 

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.