Tensorflow 2.0 Tutorial ch3.3.4 - 두번째 신경망 네트워크: OR

Page content

공지

  • 본 Tutorial은 교재 시작하세요 텐서플로 2.0 프로그래밍의 강사에게 국비교육 강의를 듣는 사람들에게 자료 제공을 목적으로 제작하였습니다.
  • 강사의 주관적인 판단으로 압축해서 자료를 정리하였기 때문에, 자세하게 공부를 하고 싶은 반드시 교재를 구매하실 것을 권해드립니다.

  • 본 교재 외에 강사가 추가한 내용에 대한 Reference를 확인하셔서, 추가적으로 학습하시는 것을 권유드립니다.

Tutorial

이전 강의가 궁금하신 분들은 아래에서 선택하여 추가 학습 하시기를 바랍니다.

I. OR 연산의 기본 개념

OR 연산의 기본개념은 아래와 같습니다. AND와 달리 하나만 참이어도, 결과값은 모두 참이 됩니다.

입력1 입력2 AND 연산
거짓
거짓
거짓 거짓 거짓

파이썬에서는 참, 거짓을 나타내는 값은 True, False입니다. 그런데, 딥러닝의 주요 입력값은 정수(Integer)나 실수(float)입니다. 참과 거짓의 값을 출력하여 확인해봅니다.

print(int(True))
print(int(False))
1
0

참은 1로 출력하고 거짓은 0으로 출력한 것을 확인하였습니다. 다시 OR 연산 기본개념에 적용하면 아래와 같습니다.

입력1 입력2 AND 연산
1 1 1
1 0 1
0 1 1
0 0 0

II. Review & Edit For OR

OR 연산을 계산하는 네트워크를 생성하는 코드도 예제 3.16의 AND 네트워크와 매우 비슷합니다. 달라지는 것은 y 부분의 기대출력뿐입니다.

# 본 예제
import tensorflow as tf
import numpy as np

import math
# 시그모이드 함수 정의
def sigmoid(x): 
  return 1 / (1 + math.exp(-x))

x = np.array([[1, 1], [1, 0], [0, 1], [0, 0]])
y = np.array([[1], [1], [1], [0]])
w = tf.random.normal([2], 0, 1)
b = tf.random.normal([1], 0, 1)
b_x = 1

for i in range(2000): 
  error_sum = 0

  for j in range(4): 
    output = sigmoid(np.sum(x[j] * w) + b_x * b)
    error = y[j][0] - output
    w = w + x[j] * 0.1 * error
    b = b + b_x * 0.1 * error
    error_sum += error

  if i % 200 == 199:
    print(i, error_sum)
199 -0.04753116837317456
399 -0.025197255723869036
599 -0.017073852769690062
799 -0.012871429837134879
999 -0.010311318147416329
1199 -0.008592360635920386
1399 -0.0073599238611461795
1599 -0.006433635333937565
1799 -0.005713413823827767
1999 -0.0051357747755025746

III. OR 네트워크의 평가

OR 네트워크를 평가하는 코드와 결과는 다음과 같습니다.

for i in range(4): 
  print('X:', x[i], 'Y:', y[i], 'Output:', sigmoid(np.sum(x[i]*w)+b))
X: [1 1] Y: [1] Output: 0.9999972280734293
X: [1 0] Y: [1] Output: 0.9898012421887588
X: [0 1] Y: [1] Output: 0.9898094027343277
X: [0 0] Y: [0] Output: 0.025464390776753325

학습 수(for i in range(2000):의 2000)를 바꿔가며 실습하는 것을 권장합니다. 학습 수가 커지면 커질수록 실제 출력이 기대출력 값에 가까워지는 것을 확인할 수 있습니다.

IV. 연습 파일

V. Reference

김환희. (2020). 시작하세요! 텐서플로 2.0 프로그래밍: 기초 이론부터 실전 예제까지 한번에 끝내는 머신러닝, 딥러닝 핵심 가이드. 서울: 위키북스.