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=αt−1+β∇f(θt−1)T∇f(θt−2)

βe.g.∇f(θt−2)α

βα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.