프로젝트/리뷰집

rmsprop vs adam 나에게는 어떤 optimizer가 더 좋을까?

발전생 2021. 2. 13. 22:52

[정정] 어떤 optimizer가 좋다고 확정하기 어렵다. 모델이 다른 가중치, 다른 테스트 케이스를 사용했기 때문에 정확하다고 말할 수 없다.

 

[참고로 konlpy tag 중 Okt를 사용해 감성 분류, Kkma를 사용해 키워드 추출을 했다]

 

keras의 optimizer 중에 rmsprop과 adam이 그나마 단점을 잘 보완한 애들이라고 배웠다.

adam은 rmsprop에 학습 step까지 조절한 꽤나 훌륭한 optimizer라고 알고 있었다.

그래서 당연히 adam(아담) 짱을 외치며 adam을 optimizer로 선택했었다.

그런데 긍정, 부정 예측에 있어서 만족스럽지 못한 결과를 금방 얻어 버렸다.

캡처를 깜빡했지만 adam으로 학습한 결과 아래 문장 '오버핏이라 핏은 이쁘게 촤악 나오긴한다.'을 거의 100%에 가까운 확률로 부정 리뷰라고 예측해 버렸었다. 그래서 실망이 이만저만이 아니었다. 

 

아래 스크린샷은 rmsprop을 optimizer로 채택했을 때의 예측 결과이다.

 

 

몇 개의 문장을 더 시험해봤다. 이 결과 역시 rmsprop을 사용했을 때이다.

맨 마지막 문장을 제외하고는 adam 역시 정답을 맞혔다. 하지만 마지막 문장을 포함해 몇 가지 더 테스트해본 결과 adam보다는 rmsprop이 리뷰 분석에 있어서는 더 적합하다는 결론에 이르렀다. 

 

한창 optimizer를 검색해보다가 어디에서인가 rmsprop은 자주 등장하지 않는 단어들이 많이 섞여 있을 때 효율이 좋다는 글을 본 적이 있다. 리뷰라는 도메인은 여러 제품군, 특징이 있기 때문에 rmsprop이 더 훌륭한 결과를 내나 보다.

 

adam은 모델 저장(h5) 시 49M를 조금 넘었고

rmsprop은 모델 저장(h5) 시 32M를 조금 넘었다.

메모리 면에서나 성능 면에서나 현재 프로젝트에서는 rmsprop을 적용한 모델이 win이다.

 

아래는 rmsprop 모델을 프로젝트에 적용시켜 리뷰 분석을 한 결과이다.

많은 테스트를 해보지는 않았지만 현재로서는 가장 나은 성능을 보여주고 있다.