Yet Never Lose Faith

- Good to Great , Jim Collins

How To Preprocess Image Data 자세히보기

카테고리 없음

다층신경망 경사하강법으로 가중치 업데이트하기

Kellyyyy 2020. 10. 9. 22:00

 

 

 

 

이번 포스팅에서는 다층신경망에서 경사하강법으로 가중치를 업데이트하는 원리를 다룬다.


단일신경망

단일신경망의 구조

이전 포스팅까지 다뤘던 예측 모델은 입력층과 출력층으로만 구성된 단일신경망이었다. 

 

다층신경망

다층신경망의 구조

위 그림은 K개의 뉴런을 가진 다층신경망이다.

 

보통 입력층의 개수는 층의 개수에 포함시키지 않는다. 그래서 위와 같은 다층신경망을 2개의 층(은닉층, 출력층)을 가진 다층신경망이라고 한다. 위 그림에서 출력층의 뉴런은 1개인데, 내가 다룰 모델은 이진분류모델이기 때문에 은닉층의 각 뉴런에서 출력된 값을 하나의 뉴런으로 다시 모아야하기 때문이다. 다중분류모델이라면 출력층에 여러개의 뉴런이 존재할 수 있다.


경사하강법 적용하기

다층신경망의 구조

다층신경망을 단순화해서 그렸다. 경사하강법을 적용하기 위해서는 W2와 b2 그리고 W1,b1에 대한 손실함수 L의 도함수를 구한 후 가중치와 절편을 업데이트 해줘야한다. 그럼 하나씩 계산해보자.

 

STEP1. 행렬 크기 정리하기

계산하기에 앞서, X, W, b, Z등이 모두 행렬이기 때문에 각 행렬의 크기를 미리 정리해두면 계산시 편리하다. 입력층은 m개의 특성을 가진 n개의 샘플이고, 은닉층의 뉴런은 k개라고 가정하면 아래와 같이 각 인자의 행렬 사이즈를 정리할 수 있다.

 

입력층 --> 은닉층 은닉층 --> 출력층    
X          
n * m          
W1 + B1        
m * k n * m        
  Z1 A1      
  n * k n * k      
    W2 +B2    
    k * 1  n * 1    
      Z2 A2 Y
      n * 1 n * 1 n * 1

 

STEP2. 도함수 계산

1. 가중치에 대한 손실함수의 도함수(출력층)

 

가중치에 대한 손실함수의 도함수 계산식 (출력층)

2. 가중치의 대한 손실함수의 도함수(은닉층)

가중치에 대한 손실함수의 도함수 계산식(은닉층)

3. 절편에 대한 손실함수의 도함수(출력층)

절편에 대한 손실함수의 도함수 계산식(출력층)

4. 절편에 대한 손실함수의 도함수(은닉층)

 

절편에 대한 손실함수의 도함수 계산(은닉층)

(오타 수정) B1 행렬의 크기는 n *  m으로 봐야한다.


Conclusion.

출력층 가중치에 대한 도함수
은닉층 가중치에 대한 도함수
출력층 절편에 대한 도함수
은닉층 절편에 대한 도함수

다음 포스팅에서는 계산한 도함수를 가지고 가중치를 업데이트하는 다층신경망을 Python으로 구현해본다.


Reference.

도서 <Do it! 코딩으로 배우는 딥러닝 입문> 이지스 퍼블리싱, 박해선지음

끝.