AND,OR,XOR게이트 학습
- 최초 등록일
- 2019.12.23
- 최종 저작일
- 2019.09
- 22페이지/ MS 워드
- 가격 1,000원
목차
1. AND
1) code
2) 결과 화면
3) 학습그래프
4) 에러 그래프
2. OR
1) code
2) 결과 화면
3) 학습그래프
4) 에러 그래프
3. XOR
1) code
2) 결과 화면
3) 학습그래프
4) 에러 그래프
5) 오류 분석
4. 도우넛 모양 구분 실험
1) code
2) 실행결과
3) 학습 그래프
4) 에러 그래프
5) 오류 분석
본문내용
AND 구분을 위해 사용한 코드를 보면 가장 위에 _CRT_SECURE_NO_WARNINGS를 사용해 파일 입출력으로 인한 에러를 방지했다. 이전의 코드에서는 학습 횟수가 많지 않아도 결과가 나오기에 콘솔 창에 출력하였었는데 이번 과제에서는 학습 횟수가 많아 가중치와 바이어스 업데이트 현황을 텍스트 파일에 출력하기 위해 파일 입출력을 사용했다. 또한 기존에서는 임계 값보다 작으면 0 크면 1로 확실하게 값이 나오는 hard limiting을 활성함수로 사용했으나 이번 과제에서는 활성함수로 시그모이드 함수를 사용했다.
<중 략>
다음은 train함수로 가중치를 학습하는 함수이다. 학습률과 초기 input을 인자로 받는다. 학습을 진행하기 전 out을 구해야 하므로 compute함수, hcompute함수를 호출해 값을 계산한다. hidden은 입력x를 인풋으로, 최종 출력은 hidden에서 계산한 out으로 출력 값을 계산한다. 가장 마지막 out을 계산한 결과로 error를 계산한다. 이렇게 현재 상태의 입력 값과 가중치를 계산한 출력 값을 계산하고 만약 계산한 값과 목표로 하는 값의 차이가 0.01보다 크면 가중치를 조정해 학습을 진행한다. 이 때 math.h에 있는 fabs함수를 사용하는데 이 함수는 실수 타입의 값의 절댓값을 구해준다. 목표로 하는 값과의 차이가 0.01보다 크면 반복문으로 들어가 학습을 진행한다. 가중치는 LeCun의 backpropagation 알고리즘을 사용해 학습했다. 가장 먼저 최종 out과 목표 값의 차이를 deltabar로 놓고 진행한다. backpropagation에서는 학습할 때 델타를 사용하는데 이 때의 델타는 델타바를 이용해 계산한다. 가장 out쪽에 있는 델타는 델타바의 현재 노드의 net값을 시그모이드 미분 함수에 인자로 넣은 결과 값을 곱한 값이다. 이 델타 값을 사용해 가중치와 bias를 구한다.
참고 자료
없음