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
   19   20   21   22   23   24   25   26   27   28   29