Page 20 -
P. 20

1.3.3 파이썬만으로 신경망 만들기


               신경망의 기본 아키텍처를 이해했다면 파이썬만 사용해 간단한 신경망을 만들어 보자. 먼저
               NeuralNetwork라는 파이썬 클래스를 선언한다.

                 import numpy as np


                 class NeuralNetwork:
                     def __init__(self, x, y):
                         self.input = x
                         self.weights1 = np.random.rand(self.input.shape[1],4)
                         self.weights2 = np.random.rand(4,1)
                         self.y = y
                         self.output = np.zeros(self.y.shape)



                 Note   예제 코드에서는 넘파이 배열(self.weights1, self.weights2)에 무작위로 숫자를 넣어 가중치를
                 초기화했다. 넘파이 배열은 다차원 벡터를 표현하는 데 주로 사용한다. 가중치 벡터의 차원은 np.random.rand() 함
                 수에 전달한 매개변수가 결정한다. 예를 들어 첫 번째 가중치 벡터 self.weights1은 self.input.shape[1] 변
                 수를 바탕으로 만들어지며, 이 변수의 값은 결국 입력 벡터의 크기로 결정된다.



               이 클래스로 만든 레이어 두 개짜리 신경망의 출력( )은 다음 공식으로 계산한다.






               이 공식에서 출력(   )에 영향을 주는 변수는 가중치(W)와 편향(b)뿐이다. 따라서 가중치와 편향 값
               이 예측 결과와 성능을 크게 좌우한다. 신경망을 훈련시킨다는 것은 결국 입력 데이터에 맞춰 가
               중치와 편향 값을 조절하는 과정을 말한다.

               훈련 과정은 반복적으로 이뤄지며 다음 단계로 구성된다.

               1. 순전파(feedforward): 예측값(   )을 계산한다.

               2. 역전파(backpropagation): 가중치와 편향 값을 갱신한다.


               그림 1-6은 신경망의 훈련 과정을 그린 것이다.








         32





     신경망교과서_07.indd   32                                                                     2020-05-19   오전 9:04:31
   15   16   17   18   19   20   21   22   23   24   25