diff --git a/sources/optimizers.md b/sources/optimizers.md index a8835ad3..d446d77e 100644 --- a/sources/optimizers.md +++ b/sources/optimizers.md @@ -1,6 +1,6 @@ -## 옵티마이저의 사용법 +## 최적화 함수의 사용법Usage of optimizers -옵티마이저는 Keras 모델을 컴파일하기 위해 필요한 두 개의 매개변수(parameter) 중 하나입니다. +최적화 함수optimizer는 손실 함수loss와 더불어 케라스 모델을 컴파일compile하기 위한 인자입니다. ```python from keras import optimizers @@ -9,84 +9,77 @@ model = Sequential() model.add(Dense(64, kernel_initializer='uniform', input_shape=(10,))) model.add(Activation('softmax')) +# 최적화 함수의 객체를 만듭니다. sgd = optimizers.SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True) model.compile(loss='mean_squared_error', optimizer=sgd) ``` -옵티마이저는 위의 예제와 같이 객체를 만들어 `model.compile()`의 인자로 전달하거나, 아래와 같이 이름으로 사용할 수도 있습니다. 후자의 경우에는 해당 옵티마이저의 기본 설정이 사용됩니다. +최적화 함수는 위의 예시와 같이 객체를 만들어 `model.compile()`의 인자로 전달하거나, 아래와 같이 문자열 형태로 전달할 수 있습니다. +문자열을 전달할 경우, 해당 최적화 함수의 모든 인자는 기본값으로 사용됩니다. ```python -# 옵티마이저의 이름을 사용하는 경우에는 -# 기본 설정이 사용됩니다. +# 최적화 함수를 문자열 형태로 전달하는 경우는 +# 기본값이 사용됩니다. model.compile(loss='mean_squared_error', optimizer='sgd') ``` --- -## 모든 Keras 옵티마이저에 공통적인 매개변수 +## 모든 케라스 최적화 함수에 사용되는 공통 인자 -모든 옵티마이저는 `clipnorm`과 `clipvalue` 매개변수를 통해 그래디언트 클리핑(gradient clipping)을 조절할 수 있습니다. +모든 최적화 함수는 `clipnorm`과 `clipvalue` 인자를 통해 그래디언트 클리핑(gradient clipping)을 조절할 수 있습니다. ```python from keras import optimizers -# All parameter gradients will be clipped to -# a maximum norm of 1. +# 모든 그래디언트의 노름의 크기는 최대 1입니다. sgd = optimizers.SGD(lr=0.01, clipnorm=1.) ``` ```python from keras import optimizers -# All parameter gradients will be clipped to -# a maximum value of 0.5 and -# a minimum value of -0.5. +# 모든 그래디언트의 노름의 크기는 최소 -0.5, 최대 0.5로 제한됩니다. sgd = optimizers.SGD(lr=0.01, clipvalue=0.5) ``` --- -[[source]](https://github.com/keras-team/keras/blob/master/keras/optimizers.py#L157) +[[source]](https://github.com/keras-team/keras/blob/master/keras/optimizers.py#L164) ### SGD ```python -keras.optimizers.SGD(lr=0.01, momentum=0.0, decay=0.0, nesterov=False) +keras.optimizers.SGD(learning_rate=0.01, momentum=0.0, nesterov=False) ``` -확률적 경사 하강법(Stochastic Gradient Descent, SGD) 옵티마이저. +확률적 경사 하강법Stochastic Gradient Descent 최적화 함수 -모멘텀과 네스테로프 모멘텀(Nesterov momentum), 그리고 학습률 감소 기법(learning rate decay)을 지원합니다. +모멘텀과 네스테로프 모멘텀nesterov momentum 인자를 지정할 수 있습니다. __인자__ -- __lr__: 0보다 크거나 같은 float 값. 학습률. -- __momentum__: 0보다 크거나 같은 float 값. - SGD를 적절한 방향으로 가속화하며, 흔들림(진동)을 줄여주는 매개변수입니다. -- __decay__: 0보다 크거나 같은 float 값. 업데이트마다 적용되는 학습률의 감소율입니다. -- __nesterov__: 불리언. 네스테로프 모멘텀의 적용 여부를 설정합니다. +- __learning_rate__: `float`>=0. 학습률. +- __momentum__: `float`>=0. 적절한 방향으로 SGD의 학습 속도를 가속화하며, +흔들림(진동)oscillations을 줄여줍니다. +- __nesterov__: `boolean`. 네스테로프 모멘텀의 적용 여부를 설정합니다. ---- -[[source]](https://github.com/keras-team/keras/blob/master/keras/optimizers.py#L220) +[[source]](https://github.com/keras-team/keras/blob/master/keras/optimizers.py#L229) ### RMSprop ```python -keras.optimizers.RMSprop(lr=0.001, rho=0.9, epsilon=None, decay=0.0) +keras.optimizers.RMSprop(learning_rate=0.001, rho=0.9) ``` -RMSProp 옵티마이저. +RMSProp 최적화 함수. -RMSProp을 사용할 때는 학습률을 제외한 모든 인자의 기본값을 사용하는 것이 권장됩니다. - -일반적으로 순환 신경망(Recurrent Neural Networks)의 옵티마이저로 많이 사용됩니다. +이 최적화 함수를 사용할 때, 학습률을 제외한 모든 인자에서 기본값 사용을 권장합니다. __인자__ -- __lr__: 0보다 크거나 같은 float 값. 학습률. -- __rho__: 0보다 크거나 같은 float 값. -- __epsilon__: 0보다 크거나 같은 float형 fuzz factor. - `None`인 경우 `K.epsilon()`이 사용됩니다. -- __decay__: 0보다 크거나 같은 float 값. 업데이트마다 적용되는 학습률의 감소율입니다. +- __learning_rate__: `float`>=0. 학습률. +- __rho__: `float`>=0. __참고__ @@ -94,27 +87,24 @@ __참고__ ---- -[[source]](https://github.com/keras-team/keras/blob/master/keras/optimizers.py#L288) +[[source]](https://github.com/keras-team/keras/blob/master/keras/optimizers.py#L303) ### Adagrad ```python -keras.optimizers.Adagrad(lr=0.01, epsilon=None, decay=0.0) +keras.optimizers.Adagrad(learning_rate=0.01) ``` -Adagrad 옵티마이저. +Adagrad 최적화 함수. -Adagrad는 모델 파라미터별 학습률을 사용하는 옵티마이저로, -파라미터의 값이 업데이트되는 빈도에 의해 학습률이 결정됩니다. -파라미터가 더 자주 업데이트될수록, 더 작은 학습률이 사용됩니다. +Adagrad는 매개변수마다 다르게 적용되는 학습률이 사용되며, +매개변수의 값이 갱신되는 빈도에 따라 학습률이 결정됩니다. +매개변수가 더 자주 갱신될수록, 더 작은 학습률이 사용됩니다. -Adagrad를 사용할 때는 모든 인자의 기본값을 사용하는 것이 권장됩니다. +이 최적화 함수를 사용하는 경우, 기본값 사용을 권장합니다. __인자__ -- __lr__: 0보다 크거나 같은 float 값. 학습률. -- __epsilon__: 0보다 크거나 같은 float 값. - `None`인 경우 `K.epsilon()`이 사용됩니다. -- __decay__: 0보다 크거나 같은 float 값. 업데이트마다 적용되는 학습률의 감소율입니다. +- __learning_rate__: `float`>=0. 학습률. __참고__ @@ -123,32 +113,28 @@ __참고__ ---- -[[source]](https://github.com/keras-team/keras/blob/master/keras/optimizers.py#L353) +[[source]](https://github.com/keras-team/keras/blob/master/keras/optimizers.py#L376) ### Adadelta ```python -keras.optimizers.Adadelta(lr=1.0, rho=0.95, epsilon=None, decay=0.0) +keras.optimizers.Adadelta(learning_rate=1.0, rho=0.95) ``` -Adadelta 옵티마이저. +Adadelta 최적화 함수. -Adadelta는 Adagrad를 확장한 보다 견고한 옵티마이저로 -과거의 모든 그래디언트를 축적하는 대신, 그래디언트 업데이트의 이동창(moving window)에 기반하여 학습률을 조절합니다. -이 방법을 사용하면 Adadelta는 많은 업데이트가 이뤄진 후 일지라도 학습을 계속할 수 있습니다. +Adadelta는 Adagrad를 확장하여 더욱 견고한 최적화함수입니다. +이전의 모든 그래디언트를 축적하는 대신, 그래디언트 갱신의 이동창moving window에 기반하여 학습률을 조절합니다. +이 방법을 사용함으로써 많은 갱신이 이뤄지더라도 학습을 계속할 수 있습니다. Adagrad와 비교해 볼 때, Adadelta의 기존 버전에서는 초기 학습률을 설정할 필요가 없었습니다. -하지만 현재의 버전에서는 다른 Keras 옵티마이저들처럼 초기 학습률과 감소율을 설정할 수 있습니다. +하지만 현재 버전에서는 다른 케라스 최적화함수와 같이 초기 학습률을 설정할 수 있습니다. -Adadelta를 사용할 때는 모든 인자의 기본값을 사용하는 것이 권장됩니다. +이 최적화 함수를 사용하는 경우, 기본값 사용을 권장합니다. __인자__ -- __lr__: 0보다 크거나 같은 float 값. 초기 학습률로, 기본값은 1입니다. - 기본값을 사용하는 것이 권장됩니다. -- __rho__: 0보다 크거나 같은 float 값. - 학습률 감소에 쓰이는 인자로, 각 시점에 유지되는 그래디언트의 비율에 해당합니다. -- __epsilon__: 0보다 크거나 같은 float형 fuzz factor. - `None`인 경우 `K.epsilon()`이 사용됩니다. -- __decay__: 0보다 크거나 같은 float 값. 초기 학습률 감소율입니다. +- __learning_rate__: `float`>=0. 학습률. 초기 학습률은 1이며, 기본값 사용을 권장합니다. +- __rho__: `float`>=0. 학습률 감소에 쓰이는 값으로서, +해당 시점에 유지되는 그래디언트 비율을 나타냅니다. __참고__ @@ -157,26 +143,23 @@ __참고__ ---- -[[source]](https://github.com/keras-team/keras/blob/master/keras/optimizers.py#L436) +[[source]](https://github.com/keras-team/keras/blob/master/keras/optimizers.py#L467) ### Adam ```python -keras.optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=None, decay=0.0, amsgrad=False) +keras.optimizers.Adam(learning_rate=0.001, beta_1=0.9, beta_2=0.999, amsgrad=False) ``` -Adam 옵티마이저. +Adam 최적화 함수. -매개변수들의 기본값은 논문에서 언급된 내용을 따릅니다. +제공되는 모든 인자의 기본값은 논문에서 언급된 내용을 따릅니다. __인자__ -- __lr__: 0보다 크거나 같은 float 값. 학습률. -- __beta_1__: 0보다 크고 1보다 작은 float 값. 일반적으로 1에 가깝게 설정됩니다. -- __beta_2__: 0보다 크고 1보다 작은 float 값. 일반적으로 1에 가깝게 설정됩니다. -- __epsilon__: 0보다 크거나 같은 float형 fuzz factor. - `None`인 경우 `K.epsilon()`이 사용됩니다. -- __decay__: 0보다 크거나 같은 float 값. 업데이트마다 적용되는 학습률의 감소율입니다. -- __amsgrad__: 불리언. Adam의 변형인 AMSGrad의 적용 여부를 설정합니다. +- __learning_rate__: `float`>=0. 학습률. +- __beta_1__: `float`, 0 < beta_1 < 1. 일반적으로 1에 가까운 수를 지정합니다. +- __beta_2__: `float`, 0 < beta_2 < 1. 일반적으로 1에 가까운 수를 지정합니다. +- __amsgrad__: `boolean`. Adam의 변형된 형태인 AMSGrad의 적용 여부를 설정합니다. AMSGrad는 "On the Convergence of Adam and Beyond" 논문에서 소개되었습니다. __참조__ @@ -188,26 +171,24 @@ __참조__ ---- -[[source]](https://github.com/keras-team/keras/blob/master/keras/optimizers.py#L527) +[[source]](https://github.com/keras-team/keras/blob/master/keras/optimizers.py#L567) ### Adamax ```python keras.optimizers.Adamax(lr=0.002, beta_1=0.9, beta_2=0.999, epsilon=None, decay=0.0) ``` -Adam 논문의 섹션 7에 소개된 Adamax 옵티마이저. +Adam 논문의 섹션 7에 소개된 Adamax 최적화 함수. -무한 노름(infinity norm)에 기반한 Adam의 변형입니다. -매개변수들의 기본값은 논문에서 언급된 내용을 따릅니다. +무한 노름(infinity norm)에 기반한 Adam의 변형된 형태입니다. +제공되는 모든 인자의 기본값은 논문에서 언급된 내용을 따릅니다. __인자__ -- __lr__: 0보다 크거나 같은 float 값. 학습률. -- __beta_1__: 0보다 크고 1보다 작은 float 값. 일반적으로 1에 가깝게 설정됩니다. -- __beta_2__: 0보다 크고 1보다 작은 float 값. 일반적으로 1에 가깝게 설정됩니다. -- __epsilon__: 0보다 크거나 같은 float형 fuzz factor. - `None`인 경우 `K.epsilon()`이 사용됩니다. -- __decay__: 0보다 크거나 같은 float 값. 업데이트마다 적용되는 학습률의 감소율입니다. +- __learning_rate__: `float`>=0. 학습률. +- __beta_1__: `float`, 0 < beta_1 < 1. 일반적으로 1에 가까운 수를 지정합니다. +- __beta_2__: `float`, 0 < beta_2 < 1. 일반적으로 1에 가까운 수를 지정합니다. + __참고__ @@ -216,28 +197,26 @@ __참고__ ---- -[[source]](https://github.com/keras-team/keras/blob/master/keras/optimizers.py#L605) +[[source]](https://github.com/keras-team/keras/blob/master/keras/optimizers.py#L645) ### Nadam ```python -keras.optimizers.Nadam(lr=0.002, beta_1=0.9, beta_2=0.999, epsilon=None, schedule_decay=0.004) +keras.optimizers.Nadam(learning_rate=0.002, beta_1=0.9, beta_2=0.999) ``` -네스테로프 Adam 옵티마이저. +네스테로프 Adam 최적화 함수. Adam이 본질적으로는 모멘텀이 적용된 RMSprop인 것처럼, Nadam은 네스테로프 모멘텀이 적용된 RMSprop입니다. -매개변수들의 기본값은 논문에서 언급된 내용을 따릅니다. -Nadam을 사용할 때는 모든 인자의 기본값을 사용하는 것이 권장됩니다. +제공되는 모든 인자의 기본값은 논문에서 언급된 내용을 따릅니다. +이 최적화 함수를 사용하는 경우, 기본값 사용을 권장합니다. __인자__ -- __lr__: 0보다 크거나 같은 float 값. 학습률. -- __beta_1__: 0보다 크고 1보다 작은 float 값. 일반적으로 1에 가깝게 설정됩니다. -- __beta_2__: 0보다 크고 1보다 작은 float 값. 일반적으로 1에 가깝게 설정됩니다. -- __epsilon__: 0보다 크거나 같은 float형 fuzz factor. - `None`인 경우 `K.epsilon()`이 사용됩니다. +- __learning_rate__: `float`>=0. 학습률. +- __beta_1__: `float`, 0 < beta_1 < 1. 일반적으로 1에 가까운 수를 지정합니다. +- __beta_2__: `float`, 0 < beta_2 < 1. 일반적으로 1에 가까운 수를 지정합니다. __참고__