# AI 이론/DeepLearning

케라스를 이용한 인공 신경망 만들기(하이퍼파라미터 튜닝)

alz 2022. 4. 19. 18:26
신경망은 유연하다는 장점과 동시에 단점이 존재한다.

 

신경망의 유연성은 조정할 하이퍼파라미터가 많아진다는 단점이 존재한다.

아주 복잡한 네트워크 구조에서뿐만 아니라 간단한 다층 퍼셉트론에서도 조차 층의 개수, 층마다있는 뉴런의 개수,

각 층에서 사용하는 활성화 함수, 가중치 초기화 전략등 바꿀수 있는것이 매우많습니다.이때 어떤 하이퍼파라미터 조합이 문제의 최적인지 알수 있을까요?

 

이때 한가지 방법은 많은 하이퍼파라미터 조합을 시도해보고 어떤것이 검증 세트에서 가장 좋은 점수를 내는지

확인 해보는것입니다. GridSearchCV , RandomizedSearchCV를 통해 하이퍼 파라미터 공간을 탐색할 수 있습니다

 

이때, 케라스 모델을 사이킷런 추정기 처럼 보이도록 꾸며야 하는데, keras.wrappers.scikit_learn.KerasRegressor() 메서드를 이용할 수 있습니다

 

이 메서드를 통해서 간단한 Model를 생성합니다.

 

keras.wrapper.scikit_learn.KerasRegressor() 

케라스 모델을 감싸는 간단한 래퍼를 통해서 사이킷런 회귀 추정기처럼 객체를 사용가능합니다

 

추정기를 fit() 메서드를 통해서 훈련- callback을 사용하여 조기중단을 가능하도록 설정

 

다음은 RandomizedSearchCV를 통해서 최적의 하이퍼파라미터를 찾는 코드입니다.

찾을 파라미터는 은닉층개수,뉴런수,학습률입니다

 

최적의 파라미터를 출력해보면,

다음과 같이 출력되는 것을 알수 있습니다.