[정리] 모두를 위한 딥러닝 09 - XOR 풀기 by 김성훈
강의 웹사이트 : http://hunkim.github.io/ml/
Lec = 강의 / Lab = 실습
XOR 게이트는 입력값 두개를 받아서, 두개가 다르면 (1,0) 또는 (0,1) 이런 형태이면 1 참값을 리턴하는 함수입니다.
XOR 게이트는 한개의 선형 리니어 함수로는 풀 수 없고, 여러개를 이용하면 풀 수 있습니다.
이렇게 3개로 연결해서 만들면 됩니다.
여기에서는 w1, b1 값이 주어졌는데, 이 값 말고도 다른 값도 찾을 수 있습니다.
이 슬라이드에서 5, -8 / -7, 3 / -11, 6 이런 값들이 이미 주어졌지만, 이 값들은 학습을 통해 찾아야 합니다.
이를 위해 백 프로파게이션 기법을 이용합니다.
출력으로 나온 에러 loss 를 다시 뒤에서부터 계산하는 방법입니다. (계산할때에는 편미분을 사용합니다.)
아래 슬라이드에서 보면 빨간색 가장 위에 글자. 편미분 : w 가 f 에 미치는 영향. 이걸 먼저 보겠습니다.
최종적으로 입력값이 가장 마지막에 있는 f 에 미치는 영향.이 필요한건데, 아래와 같이 구할 수 있습니다.
w 가 f 에 미치는 영향 = g 가 f 에 미치는 영향 * x 가 f 에 미치는 영향 = 편미분 f/g * 편미분 g/x = 1 * w
이렇게 편미분을 뒤에서부터 계산하면 아주 쉽게 이 값들을 구할 수 있습니다.
편미분들의 곱으로 전체를 나타내는 방법이 바로 백 프로파게이션 이며, 이를 체인룰 이라고도 합니다.
특히 가장 마지막에 있는 함수 f 를 Activation Function 이라고 부릅니다.
자, 그런데 이 함수가 시그모이드 형태를 띄고 있다면 문제가 있습니다.
1 또는 0 에 수렴하기 때문에 무조건 1 보다 작게 됩니다.
그러니 f 결과값, 즉 액티베이션 함수의 결과값을 곱하면 (이런 로직이 생긴다) 0 보다 한없이 작아지게 됩니다.
다음번에 이걸 풀어보겠습니다.
참고로, 이렇게 그려지는 그래프를 텐서보드로 확인하는 방법입니다. (소스 09-4)
D:\marasong\Workspace\DeepLearningZeroToAll-master>tensorboard --logdir=./logs/xor_logs_r0_01
실행한 다음 웹 브라우저로 확인해 볼 수 있습니다.
'Tech > 머신러닝' 카테고리의 다른 글
케라스 Keras 모델 저장, 재사용 (0) | 2018.06.12 |
---|---|
[정리] 모두를 위한 딥러닝 10 - 렐루 ReLU & 초기값 정하기 by 김성훈 (0) | 2018.06.12 |
유용한 사이트 모음 (0) | 2018.02.07 |
MNIST-CNN 강의 (0) | 2018.02.06 |
책 읽어주는 딥러닝 : DEVIEW 2017 by 김태훈 (0) | 2018.02.02 |