6. [머신러닝] AND, OR, NAND, XOR Code 구현

김범수·2022년 6월 2일
0

머신러닝, 딥러닝

목록 보기
6/10

논리게이트 AND, OR, NAND, XOR

AND, OR, NAND, XOR 논리테이블(Logical Table)은 입력 데이터(x1, x2), 정답 데이터 t(0 또는 1)인 머신러닝 Training Data 와 개념적으로 동일합니다.

=> 따라서, 논리게이트는 손실함수로 cross-entropy를 이용해서 Logistic Regression(Classification) 알고리즘으로 데이터를 분류하고 결과 예측이 가능합니다.

논리게이트 검증을 위한 코드들 입니다.

  • external function

  • LogicGate class

  • usage

앞서 Regression 과정에서 다루지 않은 코드들만 자세히 살펴보도록 하겠습니다.

  • Class LogicGate

Class LogicGate는 함수 init, __loss_func, error_val, train, predict 함수로 구성됩니다.

init는 클래스가 선언되면 먼저 실행되는 함수로 입력으로 받게되는 데이터들과 Learning Rate의 초기화 과정을 수행합니다.

이 때, Training Data, W, b, Learning Rate등이 외부에서 함부로 변경되지 않도록 __을 통해 private로 설정됩니다.

loss_fuc, error_val predict는 앞서 진행했던 것과 같은 역할을 수행하며, train 함수는  수치미분을 이용하여 손실함수를 최소로 반들기 위한 함수로 Training에서 가장 중요하다고 볼 수 있는 함수입니다.

  • AND GATE Train & Prediction

  • OR GATE Train & Prediction

  • NAND GATE Train & Prediction

  • NOR GATE Train & Prediction

AND, OR, NOR에서는 error value가 정상적으로 줄어들며 제대로 Training이 됨을 확인할 수 있지만 XOR에서는 error value가 2.77 근처에서 감소하지 않고 출력 값 또한 XOR 연산에 맞지 않음을 확인할 수 있습니다.

  • NAND + OR => AND 조합으로 XOR 계산

Training을 통한 XOR 예측이 안되므로 NAND, OR, AND의 조합을 이용하여 XOR을 예측하는 과정입니다.

그림과 같이 NAND + OR => AND 조합을 이용하여 XOR을 나타내는게 가능합니다.

s1, s2 리스트에 NAND, OR의 예측 값을 입력 받은 후 new_input_data라는 리스트로 입력합니다.

이는 AND 예측을 수행할 입력 데이터이며 AND_obj.predict를 통해 AND 연산의 예측값을 출력해보면

XOR 연산이 제대로 수행됨을 확인할 수 있습니다

출처 : 유튜브 NeoWizard 채널 머신러닝/딥러닝 강의

profile
iOS Developer

0개의 댓글