Page 24 -
P. 24
X = np.array([[0,0,1], [0,1,1], [1,0,1], [1,1,1]])
y = np.array([[0],[1],[1],[0]])
nn = NeuralNetwork(X,y)
for i in range(1500):
nn.feedforward()
nn.backprop()
print(nn.output)
Note feedforward 함수에 sigmoid 함수를 호출한 부분을 눈여겨보자. sigmoid 함수는 값을 0과 1 사이로
줄여 넣는 활성화 함수다. 이렇게 줄여 넣는 이유는 이진 값을 예측하는 데 필요하기 때문이다. sigmoid 활성화 함수
는 2장에서 더 자세히 설명한다.
1.3.3.4 신경망 학습
지금까지 신경망의 순전파와 역전파 과정을 파이썬 코드로 구현했다. 이제 이 신경망에 예제 데이
터를 적용하고 잘 동작하는지 시험해 보자.
)와 목표 변
예제로 사용할 데이터는 표 1-1과 같다. 각 데이터 포인트는 입력 변수 세 개(x 1 , x 2 , x 3
수(Y )로 구성된다.
표 1-1 신경망 학습에 사용할 간단한 예제 데이터
Y
x 1 x 2 x 3
0 0 1 0
0 1 1 1
1 0 1 1
1 1 1 0
신경망은 이 함수를 가장 잘 표현하는 가중치를 찾아야 한다. 사람이 직접 찾기는 쉽지 않을 것
이다.
신경망을 1,500회 반복 훈련시키고 결과를 확인해 보자. 그림 1-8은 반복 훈련에 따라 달라지는
손실 값을 그린 차트다. 손실 값이 최저점을 향해 계속 감소하는 것을 알 수 있다. 그림 1-7에서
설명한 경사 하강법 알고리즘과도 동일한 움직임을 보인다.
36
신경망교과서_07.indd 36 2020-05-19 오전 9:04:31