케 라스, SGD 학습률은 어떻게 작동합니까?


23

설명서 http://keras.io/optimizers/ 를 보면 SGD에 부패에 대한 매개 변수가 있습니다. 이것이 시간이 지남에 따라 학습 속도가 감소한다는 것을 알고 있습니다. 그러나 정확히 어떻게 작동하는지 알 수 없습니다. lr = lr * (1 - decay) 지수 등의 학습률을 곱한 값 입니까? 또한 모델에서 사용중인 학습 속도를 어떻게 확인할 수 있습니까? model.optimizer.lr.get_value()몇 번의 에포크 (epoch)에 맞추기 후에 인쇄 하면 부패를 설정하더라도 원래 학습 속도를 돌려줍니다.

또한 운동량을 사용하려면 nesterov = True를 설정해야합니까, 아니면 사용할 수있는 운동량 유형이 두 가지뿐입니까? 예를 들어 이것을 할 요점이 있습니까?sgd = SGD(lr = 0.1, decay = 1e-6, momentum = 0.9, nesterov = False)

답변:


24

당신이 언급하는 문서에는 파이썬 소스에 대한 참조가 포함되어 있습니다 ( [Source]적절한 곳에서 링크를 클릭하십시오 ). 질문에 대답 할 수 있습니다. decay학습률을 수정하는 방법을 보여주는 가장 관련성 높은 라인은 다음과 같습니다 .

lr = self.lr * (1. / (1. + self.decay * self.iterations))

nesterov옵션은 모멘텀이 사용하기위한 True로 설정 될 필요가 없다; 소스에서 다시 볼 수 있듯이 운동량은 다른 방식으로 사용됩니다.

v = self.momentum * m - lr * g  # velocity

if self.nesterov:
    new_p = p + self.momentum * v - lr * g
else:
    new_p = p + v

1
self.iterations개별 SGD 공정 수가 아닌 시대의 개수를 의미 rigt?
guillefix
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.