시작이유
최근에 감성분석이 하고 싶어 해보았는데, 많은 사람들이 각기 다른 Optimizers를 사용하여 각각의 Optimizer결과가 어떻게 다르게 나오는지 궁금하게 되어 시작하였습니다.
그래서 이번에 많은 사람들이 감성분석에사용하였던 4가지의 Optimizers로 비교해보려고 합니다.
Optimizers 소개
그림출처 : https://ganghee-lee.tistory.com/24
실험
전처리 과정을 동일하게 한 상태에서 아무것도 바꾸지 않고 순전히 Optimizers만 바꿨습니다.
4가지의 Optimizers값은 Keras에서 제공하고 있는 default 값을 사용하였습니다.
Dataset - 네이버 영화리뷰 200k
데이터출처:
GitHub - e9t/nsmc: Naver sentiment movie corpusKeras Optimizers:
https://keras.io/api/optimizers/
Adam
Python
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
Python
tf.keras.optimizers.Nadam(
learning_rate=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-07, name="Nadam", **kwargs
)
RMSProp
Python
tf.keras.optimizers.RMSprop(
learning_rate=0.001,
rho=0.9,
momentum=0.0,
epsilon=1e-07,
centered=False,
name="RMSprop",
**kwargs
)
SGD
Python
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에 비해 성능이 좋지 않았습니다. 호기심으로 시작해여 단순히 성능비교를 해보았지만 좀 더 디테일 하게 보려면 다양한 상황에 따라 여러번의 비교분석을 시도해볼 필요가 있다고 생각합니다.