달력

05

« 2018/05 »

  •  
  •  
  • 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
  •  
  •  

[정리] 모두를 위한 딥러닝 10 - ReLU & 초기값 정하기   by 김성훈 


강의 웹사이트 : http://hunkim.github.io/ml/

Lec = 강의 / Lab = 실습


시그모이드 결과값은 0<f(x)<1 이기 때문에 이를 체인룰에 따라 계속 곱하다보면 (레이어가 많으면) 

0.01 * 0.03 * 0.2 와 같은 형태가 되기 때문에 결국 한없이 0 에 가까워 진다. 

즉, 입력값 X 가 결과값 f(x), Y 에 미치는 영향이 거의 없게 된다.  

따라서 학습을 깊게 여러번 하면 에러가 커지는 현상이 일어난다. (이건 오버피팅과 다르다)


이를 극복하기 위한 함수가 렐루 ReLU 이다.

렐루는 0 이하는 0 으로, 그 이상값은 자기 자신의 값을 갖는다.


이 두가지 함수를 비교하기 위해 텐서보드 tensorboard 를 이용해보자.

텐서보드로 분석할 수 있도록 로그를 남긴 다음, 텐서보드를 띄워서 웹브라우저로 확인하면 된다.


1번 방법 = 시그모이드로 레이어 10개 사용하기.


2번 방법 = 렐루로 레이어 10개 사용하기.




초기값 잘 설정하기


RBM : Restricted Boatman (Boltzman) Machine

자비어 : xavier

MSRA



Posted by 멋지다마라송

[정리] 모두를 위한 딥러닝 09 - XOR 풀기  by 김성훈 


강의 웹사이트 : http://hunkim.github.io/ml/

Lec = 강의 / Lab = 실습


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 멋지다마라송

[정리] 모두를 위한 딥러닝 08 - 딥러닝 개념  by 김성훈 


강의 웹사이트 : http://hunkim.github.io/ml/

Lec = 강의 / Lab = 실습


사람의 뇌를 연구해보니 작은 뉴런들이 신호를 주고 받는걸로 밝혀졌는데,
이 뉴런 하나하나는 아주 단순한 신호를 전달하지만, 이게 합해지면서 바로 생각이라는게 만들어진다는 것이었다.

이를 기계에도 적용해서 학습시키면 좋은 결과가 나오지 않을까 하는게 바로 CNN 이다.


그리고, 리니어 리그레션만으로는 XOR 를 풀 수 없다.


이런 문제를 Convolutional Neural Networks (CNN) 기법으로 풀 수 있다.


MNIST = 글자 이미지를 분석해서 어떤 글자인지 맞추는 학습인데, 지금은 거의 99% 정확도에 도달했다.




Posted by 멋지다마라송


티스토리 툴바