최근에 감성분석이 하고 싶어 해보았는데, 많은 사람들이 각기 다른 Optimizers를 사용하여 각각의 Optimizer결과가 어떻게 다르게 나오는지 궁금하게 되어 시작하였습니다.
그래서 이번에 많은 사람들이 감성분석에사용하였던 4가지의 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/
tf.keras.optimizers.Adam(
learning_rate=0.001,
beta_1=0.9,
beta_2=0.999,
epsilon=1e-07,
amsgrad=False,
name="Adam",
**kwargs
)
tf.keras.optimizers.Nadam(
learning_rate=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-07, name="Nadam", **kwargs
)
tf.keras.optimizers.RMSprop(
learning_rate=0.001,
rho=0.9,
momentum=0.0,
epsilon=1e-07,
centered=False,
name="RMSprop",
**kwargs
)
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에 비해 성능이 좋지 않았습니다. 호기심으로 시작해여 단순히 성능비교를 해보았지만 좀 더 디테일 하게 보려면 다양한 상황에 따라 여러번의 비교분석을 시도해볼 필요가 있다고 생각합니다.