Gradient Descent를 옵티 마이저로 사용하여 학습률을 체계적으로 조정하는 방법은 무엇입니까?


12

외부 / ML / DL 필드 Tensorflow를 기반으로 Udacity Deep Learning 과정을 시작했습니다. 과제 3 문제 4 수행; 다음 구성으로 학습 속도를 조정하려고합니다.

  • 배치 크기 128
  • 걸음 수 : 2 개의 에포크를 채우기에 충분
  • 숨겨진 레이어의 크기 : 1024, 305, 75
  • 가중치 초기화 : 표준에서 잘림 sqrt (2 / n)의 편차. 여기서 n은 이전 레이어의 크기입니다.
  • 탈락 유지 확률 : 0.75
  • 정규화 : 적용되지 않음
  • 학습 속도 알고리즘 : 지수 붕괴

학습 속도 매개 변수와 함께 놀았습니다. 그들은 대부분의 경우 효과가없는 것 같습니다. 여기에 코드 ; 결과 :

Accuracy    learning_rate   decay_steps     decay_rate      staircase
93.7        .1              3000            .96             True
94.0        .3              3000            .86             False
94.0        .3              3000            .96             False
94.0        .3              3000            .96             True
94.0        .5              3000            .96             True
  • 학습률을 체계적으로 조정하려면 어떻게해야합니까?
  • 학습 속도는 걸음 수와 어떤 관련이 있습니까?

1
tpot은 자동 ML 튜닝 파이프 라인을 제공합니다
denfromufa

답변:


4

그라디언트 디센트 옵티 마이저를 사용하십시오. 이것은 매우 좋은 개요입니다.

코드와 관련 하여이 자습서를 살펴보십시오 . 이것이것은 몇 가지 예입니다.

개인적으로 ADAM 또는 RMSprop를 사용하는 것이 좋습니다. 아직 설정해야 할 하이퍼 파라미터가 있지만 99 % 작동하는 "표준"것이 있습니다. ADAM의 경우이 슬라이드 에서 해당 논문 과 RMSprop를 볼 수 있습니다 .

편집하다

그래, 이미 그라디언트 최적화 프로그램을 사용하고 있습니다. 그런 다음 일부 하이퍼 파라미터 최적화를 수행하여 최상의 학습 속도를 선택할 수 있습니다. 최근 에는 자동화 된 접근 방식이 제안되었습니다 . 또한 Frank Hutter 는 자동화 된 하이퍼 파라미터 튜닝과 관련 하여 많은 유망한 작업을 수행하고 있습니다.

일반적으로 팀이 소스 코드를 찾을 수 있는 AutoML Challenge를 살펴보십시오 . 이 과제에서 목표는 하이퍼 파라미터 튜닝을 포함한 기계 학습을 자동화하는 것입니다.

마지막으로 LeCun의이 백서DeepMin의 최신 자습서 (8 장 확인)는 질문에 유용한 통찰력을 제공합니다.

어쨌든 (특히 쉬운 문제의 경우) 그래디언트 디센트 옵티 마이저를 사용할 때 학습 속도가 학습에 많은 영향을 미치지 않는 것이 일반적입니다. 일반적으로 이러한 옵티마이 저는 매우 안정적이며 다른 매개 변수와 함께 작동합니다.


코드에서 이미 Gradient Descent Optimizer를 사용하고 있습니다. 링크 주셔서 감사합니다!
Thoran

@Thoran Ok, 코드 : D를 읽지 않았습니다 (질문은 최적화 프로그램을 언급하지 않습니다). 좀 더 도움을주기 위해 답을 편집했습니다 :)
Simon

멋진 개발로 <와 같은 외부인이 작업을 더 쉽게 만듭니다. 단계 수와 학습 속도가 얼마나 관련되어 있는지 아십니까? 내 직감은 더 많은 단계가 있으면 학습 과정이 느려질 것이라고 말합니다.
Thoran

@Thoran 일반적으로 가능합니다. 단계 수가 많을수록 프로세스 속도가 느려집니다 (그러나 더 안정적입니다). 하이퍼 파라미터를 수동으로 튜닝하는 데 유용한 몇 가지 "트릭"에 대한 참조를 추가하여 답변을 추가로 편집했습니다.
Simon

아주 멋진 것들, 그것을 소화하는 데 시간이 좀 걸릴 것입니다 : D
Thoran

1

많은 머신 러닝 알고리즘 자체에서 하이퍼 파라미터 튜닝을 자동화하거나 Gradient Descent 최적화 프로그램 (예 : 학습 속도)에 대한 하이퍼 파라미터 만 자동화 할 수 있습니다.

이 작업에 인기있는 라이브러리 중 하나는 스피어민트입니다.

https://github.com/JasperSnoek/spearmint


1

가장 최근의 자동 학습률 튜너는 Hypergradient Descent를 사용한 온라인 학습률 적응에 제공됩니다

이 방법은 구현이 매우 간단하며 SGD의 핵심 결과는 다음과 같습니다.

αt=αt1+βf(θt1)Tf(θt2)

βe.g.f(θt2)α

βα0


0

하이퍼 파라미터를 조정하려면 (학습 속도, 쇠퇴 속도, 정규화 등) 보류 된 데이터 세트를 설정해야합니다. 이 데이터 세트는 훈련 데이터 세트와 분리되어 있습니다. 구성이 서로 다른 여러 모델을 조정 한 후 (구성 = 각 하이퍼 파라미터의 특정 선택) 홀드 아웃 정확도를 최대화하는 모델을 선택하여 구성을 선택합니다.


홀드 아웃 데이터 세트와 테스트 또는 검증 데이터 세트는 어떻게 다릅니 까?
Thoran

heldout은 유효성 검사의 다른 이름입니다. 기본적으로 훈련, 보류 및 테스트의 세 가지 분리 된 데이터 세트가 있습니다. Train은 모델 가중치 학습에만 사용됩니다 (예 : 경사 하강 사용). Heldout은 모델 매개 변수를 조정하는 데 사용됩니다. 테스트는 일반화 성능을 측정하는 데만 사용됩니다 (예 : 보이지 않는 데이터에서 모델이 어떻게 수행 될 것으로 예상 할 수
있습니까

시간을내어 설명해 주셔서 감사합니다 @Alireza. 유효성 검사 데이터 세트를 이미 사용하고 있습니다. 테스트 없이는 정확도를 측정 할 수 없습니다!
Thoran

글쎄, 원래 질문은 학습 속도를 결정하는 것에 관한 것입니다. 원래 게시물의 첫 번째 열이 훈련이 아닌 정확도로 유지되면 0.5가 0.1보다 낫다고 말할 수 있습니다 (값을 0.5 이상 계속 시도해야 함). [참고 : 실험을 다시 수행하는 경우 테스트를 위해 일부 데이터를 분할하십시오]
Alireza
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.