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