((유의)) 직접 검색해서 이해한 내용만 정리한 것이므로 틀린 부분이 있을 수 있습니다! (지적해주시면 감사하겠습니다.)

 

모델의 하이퍼파라미터를 최적화 하려면, 보통 데이터 엔지니어의 직관 또는 최적화 라이브러리를 사용한다고 한다. 

(직관이라니.)

 

케라스를 이용하여 데이터를 학습 및 예측 하다가 학습률, 감쇄율, 배치사이즈 등의 파라미터를 로또 번호맞추는 느낌으로 맞추고 있는 나자신을 발견하고, 하이퍼파라미터 최적화 라이브러리를 찾아봤다. 

 

Keras + Hyperopt: A very simple wrapper for convenient hyperparameter optimization 라고 소개되어 있다. 

(readme.md 부터 예시가 아주 친절하다.)

https://github.com/maxpumperla/hyperas

 

maxpumperla/hyperas

Keras + Hyperopt: A very simple wrapper for convenient hyperparameter optimization - maxpumperla/hyperas

github.com

 

여기서도 다운로드 가능하다.

http://maxpumperla.com/hyperas/

 

Hyperas by maxpumperla

Hyperas A very simple convenience wrapper around hyperopt for fast prototyping with keras models. Hyperas lets you use the power of hyperopt without having to learn the syntax of it. Instead, just define your keras model as you are used to, but use a simpl

maxpumperla.com


hyperas의 구조

data() : 데이터를 읽어오고 전처리하여 입력과 출력을 리턴한다. (학습용 입출력, 검증용 입출력 총 4개를 리턴)

model() : 모델 구조와 하이퍼파라미터를 지정하고 학습한다. 

optim.minimize() : data()와 model()을 반복 수행하여 최적의 파라미터를 알려준다. max_evals로 시도 횟수를 지정할 수 있다. 

 

hyperas의 동작 흐름

main함수에서 optim.minimize() 의 Trials()가 실행되어 data()와 model()이 반복적으로 수행된다. 

 

사용법 

기존 프로젝트에 hyperas의 함수들을 끼워넣어 시험하려고 했었지만 실패했다. (ㅠㅠ...)

main함수, data(), model()만 있는 테스트 모듈을 따로 만들어서 시험하니까 동작했다. 

hyperas에서 파라미터 시험을 위해 uniform() 과 choice()를 제공한다. 

 

 

시험하려는 값들의 리스트를 choice 함수 안에 입력할 수 있다. 

{{ 를 이용하는 것이 특이하다. 

배치사이즈의 경우, 결과값은 batch_size = 0 이런식인데, 리스트의 인덱스가 리턴된다고 보면 된다.

위 코드의 경우, best batch_size는 1440이다. 

 

 

또는 시험하려는 수치 범위를 uniform 내에 입력할 수 있다. 

0에서 1 사이의 값에서 시도해보자는 뜻이다. 

 

실행해보면,  {{ 로 감싸진 부분들이 def get_space() 의 변수로 들어가는 것을 콘솔에서 확인할 수 있다. 

 

위의 변수를 통해 최종 결과로 무엇이 나올 지 미리 알수 있다. 

 

 

새롭게 알게된 내용이 있으면 추가해 놓을 예정이다. 

 


혹시 도움이 되었다면 하트를 눌러주세요!

 

글 내용에 관한 의견은 댓글로 주시면 감사하겠습니다 :)

728x90

+ Recent posts