E,AHRSS

케라스

last modified: 2018-02-07 23:15:21 Contributors

Contents

1. 개요
2. Activation
3. Optimizer
3.1. 고급 경사 하강법

1. 개요

Python 라이브러리의 일종.

텐서플로우 (Tensorflow), 테아노 (Theano), CNTK를 일반인이 쓰려면 배워야할 것이 많은데 케라스는 이 과정을 줄여주어 일반인이 쓰기 편하게 만들어준다.

케라스를 사용하려면 셋 중 한 라이브러리는 설치되어 있어야만 한다. 단순한 취향의 문제가 아니라 실행속도에 영향을 끼친다. 변경방법은 한 번이라도 케라스를 실행해본 뒤[1] c:\users\사용자이름\.keras 폴더에 있는 keras.json 파일을 텍스트 편집기로 열어 "backend" 인자를 "tensorflow", "theano", "cntk"[2]로 변경해 주어야 한다.

2. Activation

sigmoid, tanh, ReLu 같은 것이 일반적인 활성화 함수다. 다음 층으로 어떻게 값을 넘길지 결정한다.

3. Optimizer

오차를 어떻게 줄일 지 결정한다.

3.1. 고급 경사 하강법

경사하강법은 업데이트할 때마다 전체 데이터를 미분해야 하므로 계산량이 너무 많다. 이렇게 계산량이 많으면 속도도 느리고 최적화가 최적해를 찾기 전에 멈추기도 쉽다.

  • 확률적 경사 하강법 (SGD)
기본형은 keras.optimizers.SGD (lr=0.1) 같은 식이다. lr은 학습률 (learning rate)를 의미한다.
이 기본형에 momentum 계수를 추가해 정확도를 개선할 수 있고, nestrov momentum (NAG)을 추가해 불필요한 이동을 줄임으로써 정확도를 더더욱 개선할 수 있다.
keras.optimizers.SGD (lr=0.1, momentum=0.9, nesterov=True)
  • Adagrad 함수
기본형은 keras.optimizers.Adagrad (lr=0.01,epsilon=1e-6) 같은 식이다. SGD에 비해 보폭 크기를 개선한다.
  • RMS prop
기본형은 keras.optimizers.RMSprop(lr=0.001, rho=0.9, epsilon=1e-08, decay=0.0) 같은 식이다. Adagrad 함수에 비해 보폭 민감도를 보완한 방법이다.
  • Adam
momentum 계수와 RMSprop 방법을 함께 사용하는 방법이다. 정확도와 보폭 크기 모두 좋다.
기본형은 keras.optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0) 같은 식이다.
----
  • [1] 설치 직후에는 해당 파일이 존재하지 않는다
  • [2] CNTK가 아닌 데 주의