학습률 선택


85

저는 현재 SGD역 전파를 사용하는 신경망에 대해 확률 적 그라디언트 디센트 (Stochastic Gradient Descent)를 구현 하고 있으며 그 목적을 이해하는 동안 학습률에 대한 값을 선택하는 방법에 대한 몇 가지 질문이 있습니다.

  • 학습률은 하강 률을 지시하므로 오차 기울기의 모양과 관련이 있습니까?
  • 그렇다면이 정보를 어떻게 사용하여 가치에 대한 결정을 내립니까?
  • 어떤 종류의 값을 선택하지 않으면 어떻게 선택해야합니까?
  • 오버 슈팅을 피하기 위해 작은 값을 원할 것 같지만 로컬 최소값에 걸리지 않거나 하강하는 데 걸리지 않는 값을 어떻게 선택합니까?
  • 일정한 학습 속도를 갖는 것이 합리적입니까, 아니면 그래디언트에서 최소에 가까워 질 때 일부 메트릭을 사용하여 값을 변경해야합니까?

간단히 말해서 : SGD의 학습률을 어떻게 선택합니까?

답변:


69
  • 학습률은 하강 률을 지시하므로 오차 기울기의 모양과 관련이 있습니까?

    • 평범한 SGD에서 대답은 '아니요'입니다. 에러 그래디언트와 무관 한 글로벌 학습 속도가 사용됩니다. 그러나 직관에 따라 다양한 SGD 업데이트 규칙이 수정되었습니다.
  • 그렇다면이 정보를 어떻게 사용하여 가치에 대한 결정을 내립니까?

    • Adagrad 가장 널리 알려진 이러한 정보이며 글로벌 학습율 비늘 η 에러 구배의 이력의 L2 놈에 기초하여 각각의 차원에 있다 각 차원 온 :

      여기에 이미지 설명을 입력하십시오

    • Adadelta 는 adagrad와 같은 오류 그라디언트 히스토리와 가중치 업데이트 히스토리를 모두 사용하는 학습 알고리즘이며 학습 속도를 전혀 설정할 필요가 없다는 장점이 있습니다.

  • 어떤 종류의 값을 선택하지 않으면 어떻게 선택해야합니까?

    • 신경망에서 일반 SGD에 대한 학습률을 설정하는 것은 보통 0.01과 같은 제정신 값으로 시작한 다음 교차 검증을 수행하여 최적의 값을 찾는 프로세스입니다. 일반적인 값의 범위는 0.0001에서 1까지입니다.
  • 오버 슈팅을 피하기 위해 작은 값을 원할 것 같지만 로컬 최소값에 걸리지 않거나 너무 오래 걸리지 않는 값을 어떻게 선택합니까? 일정한 학습 속도를 갖는 것이 합리적입니까, 아니면 그래디언트에서 최소에 가까워 질 때 일부 메트릭을 사용하여 값을 변경해야합니까?

    • 일반적으로 가장 좋은 값은 가장 안정적인 학습 속도에 가깝고 학습 과정의 쇠퇴 / 어닐링 (선형 또는 지수)이 훈련 과정에서 사용됩니다. 그 이유는 초기에 명확한 학습 신호가 있기 때문에 공격적인 업데이트는 탐색을 장려하는 반면, 학습 속도가 작을수록 로컬 오류 영역을보다 섬세하게 활용할 수 있기 때문입니다.

1
실제로는 adadelta와 함께 학습 속도를 사용합니다. 어떤 문제에서는 그것이 없으면 작동하지 않습니다.
바이어

요즘 에는 Adam 옵티마이 저가 Adagrad 또는 Adadelta보다 일반적입니다.
E_net4 파업에 여전히

22

다음은 Andrew Ng의 Neural Nets (Back Propagation) 학습 속도에 대한 매우 유용한 참고 사항입니다 (12 페이지). 학습 속도와 관련된 세부 정보를 찾을 수 있습니다.

http://web.stanford.edu/class/cs294a/sparseAutoencoder_2011new.pdf

네 번째로, 일반적으로 오버 슈트 나 너무 느리게 수렴하지 않아야하는 "균형"학습 속도를 선택해야합니다. 비용 함수의 하강을 통한 학습률을 도표화하여 튜닝을 진단 / 미세화 할 수있다. 실제로 Andrew는 일반적으로 L-BFGS 알고리즘 (12 페이지 참조)을 사용하여 "충분히 좋은"학습 속도를 얻습니다.


9

학습 속도 선택은 하이퍼 파라미터 최적화 로 알려진 "메타 문제"의 한 예입니다 . 최고의 학습 속도는 현재 문제가있을뿐만 아니라 최적화되는 모델의 아키텍처 및 현재 최적화 프로세스의 모델 상태에 따라 달라집니다! 스피어민트 ( spearmint)하이퍼 옵트 ( hyperopt) 와 같은 하이퍼 파라미터 최적화에 전념하는 소프트웨어 패키지도 있습니다 (몇 가지 예만 있습니다).

풀 스케일 하이퍼 파라미터 최적화 외에도, 지금까지 언급되지 않은 학습 속도를 선택하는 데 일반적으로 사용되는 기술 중 하나를 언급하고 싶었습니다. 시뮬레이션 어닐링 은 큰 학습 속도로 시작하여 최적화가 진행됨에 따라 점차 학습 속도를 감소시키는 모델을 최적화하는 기술입니다. 일반적으로 학습 속도가 큰 (0.1 정도) 모델을 최적화 한 다음이 비율을 점진적으로 줄입니다 (0.01, 0.001, 0.0001 등).

이를 조기 중지 와 결합하여 진행중인 한 학습 속도로 모델을 최적화 한 다음 진행률이 느려지면 더 작은 학습 속도로 전환 할 수 있습니다. 학습률이 높을수록 모델이 일반적인 대규모 옵티마 영역을 찾는 데 도움이되는 반면, 비율이 낮을수록 모델이 특정 지역 최적에 초점을 맞출 수 있습니다.


6

석사 논문 에서 복사하여 붙여 넣기 :

  • 여러 시대 동안 손실이 감소하지 않으면 학습 속도가 너무 느려질 수 있습니다. 최적화 프로세스도 로컬 최소값에 머물러있을 수 있습니다.
  • NAN 손실은 학습률이 너무 높기 때문일 수 있습니다. 또 다른 이유는 0으로 나누거나 로그를 0으로하는 것입니다.
  • 체중 업데이트 추적 : Andrej Karpathy는 CS231n의 5 번째 강의에서 체중 업데이트를 추적하여 학습률이 잘 선택되었는지 확인하도록 제안했습니다. 그는 체중 업데이트가 10-3의 순서로 이루어져야한다고 제안합니다. 가중치 업데이트가 너무 높으면 학습 속도를 줄여야합니다. 가중치 업데이트가 너무 낮 으면 학습 속도를 높여야합니다.
  • 일반적인 학습 속도는 [0.1, 0.00001]입니다.

4

반복 과정에서 "단계 크기"로 변형 된 학습 속도는 수년 동안 뜨거운 이슈였으며 앞으로도 계속 될 것입니다.

내 단계 크기에는 세 가지 옵션이 있습니다.

  • 하나는 " 시간 " 과 관련이 있으며 각 차원은 동일한 단계 크기를 공유해야합니다. 당신은 같은 것을 알아 차렸을 것입니다

αt

t는 현재 반복 수를 보여 주지만 alpha는 hyper 모수입니다.

  • 다음은 그래디언트 와 연결되며 각 차원에는 고유 한 단계 크기가 있습니다. 당신은 같은 것을 알아 차렸을 것입니다

1αβ+s=1t1gs2αβ+s=1tgs2

알파와 베타는 하이퍼 파라미터이지만 g는 기울기를 나타냅니다

  • 마지막 하나는 인 시간 및 그라데이션의 조합 , 그리고 같아야

1αβ+s=1t1gs2αβ+s=1tgs2+γt

또는

1αβ+s=1t1gs2αβ+s=1tgs2γt

이것이 도움이되기를 바랍니다, 행운을 빕니다-)


이에 대한 참조가 있습니까?
Jon

FTRL의 학습률 부분을 참조 할 수 있으며 TIME 및 GRADIENT로 공식화 할 수 있습니다.
joe

3

신경망은 종종 가중치에 대한 경사 하강에 의해 훈련됩니다. 이는 각 반복에서 역 전파를 사용하여 각 가중치에 대한 손실 함수의 미분을 계산하고 해당 가중치에서 뺍니다. 그러나 실제로 시도하면 가중치가 각 반복마다 너무 많이 변경되어 가중치가 "과도하게 잘못"되어 손실이 실제로 증가 / 분할됩니다. 실제로 사람들은 일반적으로 각 파생 상품에 해당 학습 가중치를 빼기 전에 "학습률"이라는 작은 값을 곱합니다.

신경망 손실 함수를 표면으로 생각할 수도 있습니다. 여기서 이동 가능한 각 방향은 가중치 값을 나타냅니다. 그라데이션 하강은 현재 경사 방향으로 도약하는 것과 같으며 학습 속도는 도약의 길이와 같습니다.


3

fastai에서 David의 답변에 덧붙여 특정 아키텍처를 사용하여 해당 데이터에 대한 최상의 학습 속도를 찾는 개념을 찾았습니다.

그러나 그 것은 fastai / pytorch에만 있습니다. 최근에 누군가가 keras를 구현했습니다 .

다음은이 논문을 기반으로합니다.

도움이 되었기를 바랍니다.


2

Jeremy Howard의 딥 러닝 과정 1을 기반으로 학습 속도 선택에 대한 또 다른 접근 방식에 대해 간략하게 소개하겠습니다 . 더 자세히 알아 보려면 이 블로그 게시물을 참조하십시오 .

Jeremy Howard의 과정에서 제안 된 학습 속도는 다른 학습 속도를 시도하고 손실 기능을 가장 많이 줄이는 학습 방법을 선택하는 체계적인 방법을 기반으로합니다. 미니 배치 그라디언트 디센트 방법에 많은 배치를 공급하고 메소드에 공급하는 새로운 배치마다 학습 속도를 높이면됩니다. 학습률이 매우 낮 으면 손실 기능이 매우 느리게 감소합니다. 학습 속도가 매우 크면 손실 기능이 증가합니다. 이 두 체제 사이에는 손실 함수가 가장 빠르게 감소하는 최적의 학습 속도가 있습니다. 다음 그림에서 볼 수 있습니다.

여기에 이미지 설명을 입력하십시오

103

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.