4가지 옵티마이저에 따른 성능평가 비교 Adam vs Nadam vs RMSProp vs SGD

야 나두?!·2022년 1월 28일
1

꼬북이의 놀이터

목록 보기
2/5
post-thumbnail

시작이유

최근에 감성분석이 하고 싶어 해보았는데, 많은 사람들이 각기 다른 Optimizers를 사용하여 각각의 Optimizer결과가 어떻게 다르게 나오는지 궁금하게 되어 시작하였습니다.

그래서 이번에 많은 사람들이 감성분석에사용하였던 4가지의 Optimizers로 비교해보려고 합니다.

Optimizers 소개

그림출처 : https://ganghee-lee.tistory.com/24

실험

전처리 과정을 동일하게 한 상태에서 아무것도 바꾸지 않고 순전히 Optimizers만 바꿨습니다.

4가지의 Optimizers값은 Keras에서 제공하고 있는 default 값을 사용하였습니다.

Dataset - 네이버 영화리뷰 200k
데이터출처: GitHub - e9t/nsmc: Naver sentiment movie corpus
Keras Optimizers: https://keras.io/api/optimizers/

Adam

tf.keras.optimizers.Adam(
    learning_rate=0.001,
    beta_1=0.9,
    beta_2=0.999,
    epsilon=1e-07,
    amsgrad=False,
    name="Adam",
    **kwargs
)

Nadam

tf.keras.optimizers.Nadam(
    learning_rate=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-07, name="Nadam", **kwargs
)

RMSProp

tf.keras.optimizers.RMSprop(
    learning_rate=0.001,
    rho=0.9,
    momentum=0.0,
    epsilon=1e-07,
    centered=False,
    name="RMSprop",
    **kwargs
)

SGD

tf.keras.optimizers.SGD(
    learning_rate=0.01, momentum=0.0, nesterov=False, name="SGD", **kwargs
)

최종 결과
Nadam > Adam > RMSProp > SGD

개인적으로 Adam의 경우가 높을 줄 알았는데 Nadam의 성능이 조금 더 높아서 놀랐습니다. SGD의 경우에는 RMSProp, Adam, Nadam에 비해 성능이 좋지 않았습니다. 호기심으로 시작해여 단순히 성능비교를 해보았지만 좀 더 디테일 하게 보려면 다양한 상황에 따라 여러번의 비교분석을 시도해볼 필요가 있다고 생각합니다.

profile
"Hello World"

0개의 댓글