Coursera ML class – week05 Neural Networks : Learning part I

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

Course Home: Coursera Machine Learning

 

  • Cost function

앞 시간에 우리는 Neural Network의 개념과 구성방식에 대하여 알아보았다. 이번에는 Neural Network의 Cost function을 어떻게 계산하는지 소개하겠다. 앞서서 우리는Classification문제를 해결하기 위한 Neural Network 모델에 대해 살펴보았다. 두 가지 모델을 살펴보았는데, 하나는 결과가 0,1 두 개의 값인 Binary classification과 y값이 여러 가지로 분류되는 Multi-class classification 문제였다. 우리는 앞으로 L을 네트워크 Layer의 총 개수라 하고. Sl을 각 Layer의 unit의 개수라고 정의하겠다. 예를 들면 아래 그림에서 S1은 Layer1의 unit의 수이므로 3개가 되겠고, S2는 5이다.  SL은 L이 Layer의 총 개수이므로 마지막 Layer의 unit 수를 의미한다.

그리고 K를 output의 개수라고 한다면. Binary classification은 output이 1개(0 or 1)밖에 없으므로 K는 1이 되겠고, Multi-class classification에서 K는 3보다 큰 값을 갖으며, Sl=K 이므로, y값은 실수로 구성된 K차원 벡터의 형태를 가진다.

 

1

2

 

그러면 Neural network의 Cost function 형태를 살펴보자. 아래 식은 Regularized Logistic regression에서 cost function을 구하는 식이다.

3

Neural network 의 cost function도 K라는 부분이 추가된 것 외에는 logistic regression cost function과 비슷한 형태로 표현된다.

 

4

 

일단 Regularize하는 부분을 제외하고 살펴보자. hθ(x)는 K차원 벡터이고 (hθ(x))i 는 벡터 내 i번째output값을 의미한다. 1부터 K까지의 합이 추가 된 것은 K개의 output값이 이전 layer의 모든 노드에 영향을 받기 때문이다. 만약output unit을 4개 가지고 있다면, K=1에서 4까지 각각의 output unit의 logistic regression결과값을 합한 값을 반영해야한다.  Regularize 부분을 살펴보면 복잡해 보이지만 하는 것은 결국 (Θji(l))2 값의 합을 구하는 것과 같다. 단, 여기서 bias unit(Θj0(l))값은 더하지 않는다.

5

 

 

  • Backpropagation algorithm

 

이번에는 Neural Network의 Backpropagation Algorithm에 대하여 알아보자. 

Backpropagation 은 neural network에서cost function을 최소화하기 위한 기법이다. 따라서 back propagation은 실제 값(y)과 예측된 결과(h)간 오차(δ)를 찾는 것부터 시작한다. 그리고 output layer에서 input layer방향(backward)으로 진행해가며 모든 노드의 오차를 계산한다. 데이터의 수만큼 반복 과정을 통해 최적의 오차값(Δ)을 도출한다. 여기서 최적의 오차값은 곧cost function의 최소값을 의미하기 때문이다.

6

 

우리가 지금까지 Forward propagation방식으로 hθ(x)를 계산하였다. 4개의 Layer가 있을 때 우리는 다음 그림과 같은 방식으로 hθ(x) 를 구했다. (자세한 내용은 이전 강의인 Neural Networks : Representation 참고)

7

 

Backpropagation algorithm은 모든 노드에서 δj(l) 을 구한다. Delta값 δj(l) 은 l번째 layer 내 j번째 node의 오차값(error)을 의미한다. Layer가 4개 일 때, 마지막 노드 L=4 에서의 delta값은  δj(4) = aj(4) – yj 가 된다. 이 때 aj(4)  = (hθ(x))j 이므로 δj(L) 은 계산된 예측 결과와 실제 답 간의 오차를 의미한다. 수식을 벡터화하면  δ(4) = a(4) – y 가 된다. 마지막 layer전의 delta값을 얻는 방법은 아래와 같은 계산식을 사용할 수 있다.

8

여기서 θ(3) 은 3번째 layer에서 4번째 layer로 매핑되는 행렬 형태의 매개변수(parameter) 이고, δ(4) 은 4번째 layer의 벡터 형태의 오차값(error) , g’(z3) 은 z3 에 의해 계산된 activation function의 미분값(first derivative)이다.

여기서 g’ 값은 아래와 같은 유도식에 의해 g(z)(1-g(z))로 치환할 수 있다.

9

다시, 정리해보면 delta값을 구하는 식은 아래와 같다.

10

11

 

 

 

 

12

13

14

 

그러면, Backpropagation algorithm을 정리해보자.

우선 우리에게 주어진 training set이 {(x(1), y(1)) … (x(m), y(m))} 까지 있을 때 delta값  Δij(l) 은 모든 (l, I, y)에 대하여 0으로 초기화한다.

그리고, i=1부터 m까지 아래의 계산을 반복한다.

  • a(1) = x(i) 에 대입하여, 첫번째 layer의 a 벡터를 구한 후,
  • forward propagation 통해 a(l) 을 모두 구한다. (l=2,3, … L)
  • 그리고, y(i) 값으로 δ(L) 을 구한다. (δ(L) = a(L) – y(i) 이고, 이 값은 가정된 결과값과 실제 y값의 오차 vector가 될 것이다)

δ(L) 을 구한 후, δ(L-1) 부터 δ(2) 까지 계산하고, 다시 Δij(l) 값을 업데이트 한다.15

이것을 vector화 하면 아래와 같이 된다.

16

m번의 계산 과정을 마친 후 Dij(l)값을 계산한다.

17

이 값이 바로 우리가 구하고자 하는 값이다.

18

오늘 설명한 Neural Network의 backpropagation은 Andrew교수도 어려운 부분이라 하며 식을 도출하는 중간 과정과 증명을 생략한 부분이 있다. 따라서 작동 방법에 추가적인 이해가 필요하다면 링크 참고 및 cousera강의 연습문제를 풀어보는 것을 권장한다.

 

  • Backpropagation intuition

 

이번에는 Neural Network의 Backpropagation에 대한 intuition(직관력)을 갖기 위해 정리해보도록 하자.

아래 그림에서 보여주는 방식이 Forward Propagation 이다. Input layer(xi,yi)에 input값을 넣은 후 layer마다 bias unit(+1) 을 더해가며 a(l) 값을 업데이트 하여 최종적으로 a(L) , hθ(x) 값을 구한다.

19

아래 그림은 z값과 a값을 구해가는 과정에 대해 보여주고 있다. z값을 대입한 sigmoid function은 activation value를 도출해 준다.(a1(2) = g(z1(2)) 아래 그림에서 보여주듯이 z값은 앞 단계 layer의 각 unit의 합으로 계산된다. 예를 들어, Z1(3) = θ10(2) x 1 + θ11(2) x a1(2) + θ12(2) x a2(2) 로 계산된다.

20

 

이번에는 backpropagation이 어떻게 작동하는지 살펴보자. 아래 그림에서의 J(θ)은 Output이 1개이고 lambda값이 0일 경우이다. K=1이므로 K의 sum(Σ)을 하는 부분이 없어진 것을 볼 수 있다. K=1인 경우 neural network의 cost function은 logistic regression의 cost function과 동일함을 볼 수 있다.

21

우리는 앞서 δ 는 각 node의 activation value(a)의 cost에 대한 오차값(error)라고 설명했다. 다시 말하면 δj(l) 은 cost function의 순간변화율이다.

22

또한cost function은 activation값과 실제 y값의 차이를 의미하므로 output layer에서 backpropagation은 δ 값을 a-y로 세팅한다. 그리고 역방향(backwards)으로 진행하며 δ 값을 계산한다. 아래 그림에서 보듯이  δ1(4) = y(i) – a1(4) 이고, δ2(3) 12(3) x δ1(4), δ2(2) 12(2) x δ1(3) + θ22(2) x δ2(3) 가 된다.

23

 

(Coursera ML class –week05 Neural Networks : Learning 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.