Optuna 내부에서 무슨 일이 일어나고 있습니까?

소개



스스로 잘 이용할 수 있는 optuna입니다만, 내부에서 무엇이 일어나고 있는지 실제로 스스로 코드를 써 이해해 보았으므로 그것을 정리하려고 생각합니다.
특히 이번에는 전체도를 잡는 것을 목적으로 하고 있기 때문에, optuna 자체의 코드까지는 건드리지 않습니다. 다음에 이사하고 싶습니다.
그대로 움직일 수 있는 코드 도 있습니다. 그것도 만져보십시오. optuna와 비교할 수 있으며 정확히 일치하는지 확인할 수 있다고 생각합니다.
버젼은 v2.9.1 를 참고로 하고 있습니다.

optuna란?



Preferred Networks 회사가 제공하는 하이퍼파라미터 최적화 라이브러리에서 TPE라는 알고리즘을 채용한 것입니다.
TPE의 상위 개념은 베이즈 최적화이며 유사한 개념에는 GP-EI가 있습니다. TPE도 GP-EI도 베이즈 최적화의 일종이 됩니다.
A hyperparameter optimization framework

참고



하이퍼파라미터 최적화 프레임워크 Optuna 구현 설명
Optuna (TPE) 알고리즘 이해
기계 학습에서 하이퍼 파라미터 최적화의 이론과 실천

최적화 개요



optuna가 TPE라고 하는 구조로 하이퍼 파라미터를 최적화하고 있는 것은 알았다고 생각합니다만, 실제로 그것이 어떠한 기구인가 설명해 봅니다.

우선, 전체도로부터 확인해 갑니다. 이것은 하이퍼파라미터의 최적화 전반에 말할 수 있는 것이라고 생각합니다. (필기 죄송합니다)



먼저 그림의 왼쪽 하단에있는 것처럼 평소대로 모델을 학습하고 자릅니다 (전 에포크 분). 그러면 손실(Loss)을 출력할 수 있다고 생각합니다.
그 후, 무엇인가의 최적화 알고리즘을 개입시켜, 다음에 학습할 때는 어떤 하이퍼 파라미터로 하면 좋을지 출력합니다. 그 값을 다시 모델의 학습에 이용해, 또 손실이 출력됩니다. 이 순환을 반복해 갑니다.

베이즈 최적화 개요



하이퍼파라미터의 최적화의 전체상을 알 수 있었는데, 이번에는 TPE나 GP-EI가 속하는 베이즈 최적화의 틀을 생각해 보겠습니다.



먼저 주어진 몇 개의 손실로부터 하이퍼파라미터의 정의 영역 전체에 걸친 손실을 예측합니다. 이것은 실제 손실을 나타내는 함수를 프록시하는 것과 같으며 프록시 함수라고합니다.
이 함수를 사용하여 다음 하이퍼파라미터를 어디로 만들지 결정할 수 있는 함수를 만듭니다. 이를 획득 함수라고 합니다.

이 대리 함수와 획득 함수를 만드는 방법의 차이에 따라 GP-EI와 TPE (optuna)는 크게 나눌 수 있다고 생각합니다.

베이즈 최적화 개요 (보충)



이것은 보충이므로 읽어 날려도 괜찮습니다.
원래 왜 하이퍼파라미터의 최적화가 어려운가 하면, 대부분의 경우, 그림의 좌하의 모델의 학습에 상당한 시간이 걸려 버리기 때문입니다.
만약 시간이 걸리지 않는 경우는, 세세한 입도의 그리드 서치나 랜덤 서치로 완전하게 가까운 횟수를 시험해 최적인 것을 선택하면 됩니다.
시간이 무한하면 이런 알고리즘은 필요하지 않지만, 제한된 시간으로, 한정된 개수의 손실 밖에 얻을 수 없는 상황에서 최선을 다하기 위해 어떻게든 시도하고 있는 곳이 나는 재미있다고 생각합니다 했다.

마지막으로



또 이 계속을 써 가려고 합니다.

좋은 웹페이지 즐겨찾기