블로그 이미지
윤영식
Full Stacker, Application Architecter, KnowHow Dispenser and Bike Rider

Publication

Category

Recent Post

Weight 초기화 잘하기 강좌를 정리한다. 





Deep Network의 문제점


- sigmoid를 ReLU(렐루)로 변경

- weight(초기) 값을 잘 못 사용하고 있다. 


sigmoid를 사용할 때 layer가 깊어져도 cost가 전혀 줄어들지 않았다. 

- 주의: 0 값은 절대 주지 말아야 한다.







RBM (Restricted Boltzmann Machine)


Hinton교수가 2006년 논문(A Fast Learning Algorithm for Deep Belief Nets) 에서 초기값을 잘 구하는 RBM을 소개함.

- forward: x (입력)값을 통해 w, b를 구한다

- backward: 생성된 w, b를 거꾸로 계산한다.

=> forward, backward의 결과를 보고 Weigth을 조정한다. 즉, Weight값을 학습을 통해 적절한 Weight값을 구한다.

 



Deep Belief Network


이전과 다음 Layer마다 RBM을 이용해 Weigth을 구하여 Multi Layer를 구성하 것을 Deep Belief Network이라고 한다. 

- RBM통해 Weight값 얻는 Training을 Fine Tunning이라고 부른다.


RBM 보다 더 간단한 초기화가 나옴. 



Xavier Initialization (샤이버)


- fan_in/2를 하면 쉽게 더 좋은 weight값을 얻을 수 있다.


정확도(Accuracy) 비교  테이블


- 최기화 메소드 쓰기

- ReLU 쓰기

등의 2가지 문제가 해결되었다. 







참조


- 김성훈교수님의 Weight 초기화 잘 해보자 강좌

- 다른 강좌 정리 블로글

- ReLU 소개 



posted by 윤영식

TensorBoard 사용하기 강좌를 정리한다





TensorBoard 사용하기 


5개의 step 을 거친다. 

1) 어떤것을 로깅할 것인지 정한다

2) all summary

3) summary 기록할 파일 위치 지정

4) session.run 실행

5) 별도 터미널에서 tensorboard --logdir=<지정폴더> 수행




Scalar (스케일러)





Histogram 

다차원 텐서의 경우 사용함. 



Graph

흐름도를 보고 싶을 경우 사용함.

- name_scope 사용하여 Layer를 구분하여 보기 좋게 한다. (접혔다 폈다 할 수 있음)




remote에 있는 tensorboard 보기





Multi run 하기 

부모 폴더만을 지정하면 child folder를 자동으로 보여줌 







9 Layer Tensorboard 구성시 문제점 


Deep Network을 다음과 같이 구성하고 Learning을 시킨 것이 Deep Learning이다. 



name_scope로 구분하여 Tensorboard에 표현 (강좌)

deep network를 구성할 때 코드로만 보면 어려울 수 있다. 이것을 시각화하여 다음과 같이 표현한다. 




결과 : 서로의 연결과 가중치(Weight)를 쉽게 볼 수 있다. 



9 layer를 거친다고 해서 정확도가 높아지는 것은 아니다. 2,3 layer는 잘 학습이 되지만 3 layer넘어가면 학습도가 떨어진다. 

이유: 결과의 1보다 작은 소숫점의 값을 multiply할 수록 더 작은 소숫점 값이 되어 버려서 gradient값이 살라진게 된다. 





Network으로 표현하면 좌측으로 갈 수록 점점 정확도가 떨어짐. 2006년까지 겨울이 찾아옮.

- 힌튼교수가 해결: Sigmoid를 잘 못 쓴것 같다. 

- ReLU를 적용해 보자. 








ReLU (Rectified Linear Unit, 렐루)


힌트 교수의 잘 못한 부분중 4번째 




ReLU 사용


- z값이 커질수로 1보다 작다라는 sigmoid를 0보다 커질 수록 갈 때까지 커진다.

- 대신 0보다 작으면 무조건 0이 된다. 


Sigmoid 대신 relu를 사용한다. 수식으로 표현하면 하고 앞으로 neural network에서는 최종 Layer를 빼고 hidden부분은 sigmoid를 사용하지 않고 relu를 사용해야 한다. 




9 layer의 relu와 sigmoid 사용 예




Activation Function

sigmoid와 relu등을 activation function이라고 하는데 다른 것들도 있다.

- sigmoid

- ReLU

- Leaky ReLU: 0이하일 때 약간 값을 살려줌

- ELU: 0이하일 때 원하는 값으로 살려줌

- Maxout



비교하면 LeRU 계열의 정확도가 높다.






참조


- 김성훈교수님의 TensorBoard 사용 강좌

- 김성훈교수님의 Backpropagation (chain rule) 희석 강좌

posted by 윤영식
prev 1 next