티스토리 뷰



모처럼 연휴를 맞아 파이썬 실습을 해보았다.

"optuna"라는 최적화 패키지를 소개한다.

링크: https://optuna.readthedocs.io/en/stable/index.html

[1] 최적화의 목적

인공지능을 통한 서로깃 모델 (혹은 모델 차원축소)링을 했다면 (이전 Pycaret 패키지 참조),
https://jinsustory.tistory.com/229?category=866244
https://jinsustory.tistory.com/230?category=866244

 

그 이후에는 모델링의 컴퓨터 연산시간 감소 이점을 부각하기 위하여 (혹은 어플리케이션 목적) 최적화를 많이들 쓰곤 한다.

오늘은 Optuna 패키지를 사용하여 내가 다룬 시스템에서의 optuna 패키지에서 결과를 얻었던 방법과 코드 소개 그리고 trouble-shooting에 대해 간단히 다루어 보려고 한다.

[2] OPTUNA 목차

 목차를 통해서 어떠 기능과 테크닉으로 최적화가 작동하는지 확인할 수 있다.

 

OPTUNA 목차

이 중에서 STUDY를 통해 내가 원하는 OBJECTIVE FUNCTION을 최대화 (혹은 최소화) 할 수 있었다.

 

그외에 목차를 보면 가치지기라던지 샘플링, 다목적 함수 최적화, 예외 처리 등.. 필요한 부분에 대해 카테고리가 잘 나누어져있어서 보기 편리했던 것 같다.

 

[3] OPTUNA.Visualization

그 중 특히 visualization 파트를 눈여겨 보았다. 결과에 대한 시각화를 올바르게 한 이후에 독자들에게 의미 전달이 가능하기 때문.

 

파레토 / optimization history / parallel coordinate / contour 등 여러가지 시각화를 뽑아주었다.

 

다만, 화질이 구지니 raw-value를 재 가공해야하는 불편함이 있었다. (논문 투고용 작업 코드는 이후 2탄에서 업로드 예정)

 

 

[4] FAQ 중 눈에 띄는 키워드: Reproducible optimization

일반적으로 genetic algorithm 기반의 난수 생성 알고리즘은 재현이 쉽지 않다. 특히, 높은 차원의 탐색 공간에서는 더더욱 그러하다.이에 대해 누군가가 먼저 질문을 던졌고, 그 정답은 sampling에서 찾을 수 있었다.

 

나는 변수의 민감도 변화에 따른 최적화 결과가 달라지는 경향성에 관심이 있었는데, 이것을 위해서는 재현성 있는 최적화가 필요 했었고, 아래와 같이 난수의 시드를 고정해서 시뮬레이션을 하면 최적화 된 결과가 재현 가능했다. :)

출처: https://optuna.readthedocs.io/en/stable/faq.html#how-can-i-obtain-reproducible-optimization-results

 

Tree-structured Parzen Estimator (TPE - Sampler)라는 키워드를 배울 수 있었다. 2탄에서 정리해볼 예정!

출처: https://optunity.readthedocs.io/en/latest/user/solvers/TPE.html

 

 

오늘의 일기 끝.