(* DeepLearning from scratch2 서적을 학습한 후 정리한 내용임 )

1.2.1 신경망 추론 전체 그림

2개 데이터를 입력하여 3개 데이터를 결과로 출력하는 신경망 구현을 가정합니다.

3개의 층으로 구현됩니다.

(1) 입력층 : 2개의 뉴런으로 구성

(2) 은닉층 : 4개의 뉴런으로 구성

(3) 출력층 : 3개의 뉴런으로 구성

(* 3개의 층으로 구성되어 있지만 가중치를 지니고 있는 층은 입력층과 은닉층 사이, 은닉층과 출력층 사이 2개 이므로 이 책에서는 이 모델을 "2층 신경망" 이라고 부릅니다. )

 

위의 그림에서 원은 뉴런을 의미한다.

x1, x2:입력값

Wh11, Wh12,Wh13, Wh14 : X1값이 은닉층 4개의 뉴런에 영향을 주는 가중치값

Wh21, Wh22,Wh23, Wh24 : X2값이 은닉층 4개의 뉴런에 영향을 주는 가중치값

h1, h2, h3, h4 :  x1, x2 입력값이 가중치에 따라 은닉층 4개의 뉴런에 전달된 값

Wy11, Wy12, Wy13 : h1값이 출력층 3개의 뉴런에 영향을 주는 가중치값

Wy21, Wy22, Wy23 : h2값이 출력층 3개의 뉴런에 영향을 주는 가중치값

Wy31, Wy32, Wy33 : h3값이 출력층 3개의 뉴런에 영향을 주는 가중치값

Wy41, Wy42, Wy43 : h4값이 출력층 3개의 뉴런에 영향을 주는 가중치값

y1, y2, y3 : h1, h2, h3, h4 히든층 뉴런값으로 부터 가중치에 따라 출력층 3개의 뉴런에 전달된 값

 

은닉층의 4개 뉴런값을 수식으로 정리하면 다음과 같다

h1 = X1 * Wh11 + X2 * Wh21 + bh1

h2 = X1 * Wh12 + X2 * Wh22 + bh2

h3 = X1 * Wh13 + X2 * Wh23 + bh3

h4 = X1 * Wh14 + X2 * Wh24 + bh4

 

위 공식을 행렬 곱으로 표현하면 다음과 같다.

[ X1  X2] * [Wh11  Wh12   Wh13   Wh14]   + [ bh1  bh2  bh3  bh4 ] =  [ h1  h2  h3  h4]

                    [Wh21  Wh22   Wh23   Wh24]

 

위 행렬 곱 공식에서 각 행렬을 간소화하면 다음과 같다

 

X * Wh + bh = h

(이후 행렬을 간소화해서 알파벳으로 표현할 때는 굵은 글씨체 사용)

 

행렬 곱 연산이 정상처리되려면 각 행렬의 형태가 규칙에 맞아야 한다. 즉, 행렬 곱 연산자 좌측행렬의 열 개수와 우측행렬의 행 개수가 같아야 한다

 

위의 간소화 공식에서 X 행렬은 1 * 2  (행 개수가 1개 , 열 개수가 2개 의미)

                                   Wh 행렬은 2 * 4 (행 개수가 2개, 열 개수가 4개 의미)

                                    bh 행렬은 1 * 4 (행 개수가 1개, 열 개수가 4개 의미)

                                     결과 행렬인 h 행렬은 1 * 4 (행 개수가 1개, 열 개수가 4개 의미)

 

위 행렬 형태는 입력데이터가 (X1, X2) 한 개인 경우이고 보통 복수 개(N개)의 데이터를 준비한 경우 반복적으로 미니 배치 형식으로 학습을 시키게 되므로 실제 학습진행 시 행렬 형태는 아래와 같게 된다.

X (N × 2) * Wh (2 × 4) + bh( N × 4) = h(N × 4)

 

신경망은 사람의 뇌에서  뉴런으로 전기신호가 전달되는 과정을 모델링 한 것이다.

뉴런으로 전기신호가 전달 될 때 어느 크기 이상이 되어야 다음 뉴런으로 전달되게 되는 특성이 있다.

이를 신경망으로 구현하려면 비선형 함수가 추가되어야 한다. 이 비선형함수를 활성화함수라고 하며 여러 종류의 활성화함수 중에서 쉬운 Sigmoid 함수를 사용한다. 임의의 실수를 입력받아 0에서 1사이의 실수를 출력한다.

파이썬으로 구현해보면

def  sigmiod(x):

      return 1 / (1 + np.exp(-x))

 

 

+ Recent posts