더북(TheBook)

INFO BOX 3.1 TensorFlow.js에서 제공하는 옵티마이저

다음 표는 TensorFlow.js에서 가장 많이 사용되는 옵티마이저의 API를 요약하고 직관적으로 간단히 설명합니다.20

▼ 표 3-1 TensorFlow.js에서 많이 사용되는 옵티마이저와 API

이름

API(문자열)

API(함수)

설명

확률적 경사 하강법(Stochastic Gradient Descent, SGD)

'sgd'

tf.train.sgd

가장 간단한 옵티마이저로, 항상 학습률을 그레이디언트에 곱합니다.

모멘텀(Momentum)

'momentum'

tf.train.momentum

가중치 파라미터에 대한 지난 그레이디언트가 동일한 방향에 있을 때 가중치 파라미터 업데이트가 더 빨라지고 방향이 많이 변경될 때 느려지도록 지난 그레이디언트를 누적합니다.21

RMSProp

'rmsprop'

tf.train.rmsprop

가중치 그레이디언트의 제곱평균제곱근(root mean square, RMS)의 최근 이력을 추적하여 모델의 가중치 파라미터마다 곱셈 계수를 조정합니다. 여기에서 이름(RMS)이 유래되었습니다.

AdaDelta

'adadelta'

tf.train.adadelta

RPSProp과 비슷한 방식으로 개별 가중치 파라미터를 위한 학습률을 조정합니다.22

ADAM

'adam'

tf.train.adam

AdaDelta의 적응적 학습률 방식과 모멘텀 방식을 조합한 것으로 이해할 수 있습니다.23

AdaMax

'adamax'

tf.train.adamax

ADAM과 비슷하지만 조금 다른 알고리즘을 사용해 그레이디언트를 추적합니다.

작업 중인 머신 러닝 문제와 모델에 어떤 옵티마이저를 사용해야 하는지 묻는 것이 당연합니다. 안타깝지만 딥러닝 분야는 아직 일치된 의견이 없습니다(앞의 표에서 TensorFlow.js가 여러 옵티마이저를 제공하는 이유입니다). 실전에서는 adamrmsprop 같은 인기가 높은 옵티마이저로 시작합니다. 시간과 계산 자원이 풍부하면 옵티마이저를 하이퍼파라미터처럼 생각해서 하이퍼파라미터 튜닝을 통해 가장 좋은 훈련 결과를 내는 것을 선택할 수 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.