달력

12

« 2018/12 »

  •  
  •  
  •  
  •  
  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  
  •  
  •  

[정리] 모두를 위한 딥러닝 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

실행한 다음 웹 브라우저로 확인해 볼 수 있습니다.

Posted by 멋지다마라송


티스토리 툴바