深層ニューラルネットワークトレーニングの加速(高速オプティカル(光学式)ドライブ)


深層ニューラルネットワーク訓練速度の向上
:重み付け初期化、関数のアクティブ化、構成の正規化、事前トレーニング層の再利用(全学習、非指導的事前トレーニング、補助的事前トレーニング)、高速オプティカル(光学式)ドライブ
高速光学ドライブ
1)アニメーションの最適化

  • 標準傾斜降下法:斜面に沿って一定の大きさのステップで緩やかに降下し、底部に達するにはより長い時間がかかる.
  • 重み付け<-重み付け-重み付けの費用関数の学習率
  • 以前のグラデーション値がどれだけx
  • であるかを考慮する

  • データム最適化データムさいてきか:開始時間が遅く、下部に到達すると加速
  • 重み付け<-重み付け+運動量ベクトル
  • 基準ベクトル<-基準ベクトル*基準-グラデーションx学習率
  • スーパーパラメータ=0.9(default)
  • 0(高摩擦抵抗)~1(摩擦抵抗なし)
  • 以前の声明重要
    optimizer = keras.optimizers.SGD(lr, momentum = 0.9)
  • 2)ネストロフ加速傾斜
  • は常に基本基準最適化よりも速い
  • である.
  • ランプを計算すると、ランプは現在位置に対する方向ではなく、現在位置に対する方向として計算されます.
    optimizer = keras.optimizers.SGD(lr, momentum, nesterov = True)
    3) AdaGrad
  • の最適点に正確に配向し、最も急な次元に沿ってグラデーションベクトルのスケーリング
  • を減少させる.
  • は学習率を減少させるが,勾配の緩やかな次元では急峻な次元がより速く減少する=適応学習率
  • ニューラルネットワーク訓練時に早すぎる停止があった.したがって,単純な線形回帰において非常に有効である)
  • 4) RMS Prop
  • AdaGradの速度が遅すぎて最適点に収束できないという欠点を補う
  • ランプのみ(最近の繰り返し)累計
  • パラメータrho=>減少率
  • optimizer = keras.optimizers.RMSprop(lr, rho = 0.9)
    常に
  • Ada Gradよりも
  • のパフォーマンスが向上
    5) Adam
  • 動機最適化+RMSProp
  • ベンチマーク最適化のように、古いグラデーションの指数は平均
  • 減少した.
  • RMSPropのように,過去のグラデーション二乗指数は平均
  • 減少した.
  • beta 1:運動量減衰スーパーパラメータ
    beta 2:スケーリングスーパーパラメータ
    optimizer = keras.optimizers.Adam(lr, beta_1 = 0.9, beta_2 = 0.999)
  • 6)学習率の手配

  • より高い学習率(固定的な学習率ではなく)から始まり、学習速度が遅くなると、学習率を低下させることで迅速に良い解決策を見つけることができます.

  • インデックスベースのスケジューリング
  • 学習率=初期学習率*0.1 t/s
  • sステップあたり10倍
  • 減少
       #현재 에포크를 받아 학습률 반환
       def exponential_decay(lr, s):
       	def exponential_decay_fn(epoch):
       		return lr*0.1**(epoch/s)
           return exponential_decay_fn
       
       
       #스케줄링 함수 전달하여 LearningRateScheduler 콜백 만들어 fit()에 전달
       lr_sched = keras.callbacks.LearningRateScheduler(exponential_decay(lr, s))
       history = model.fit(x,y, .. , callbacks = [lr_sched])

  • パフォーマンスベースのスケジューリング
  • 各ステップは検証誤差を測定し、誤差を減少しなければ学習率はx倍減少し、

  • 1サイクルスケジューリング
  • 訓練の半分では初期学習率が線形に増加し,残りの半分では線形が再び減少した.n 0はn 1の10倍、
  • を選択

  • 繰返し二乗スケジューリング
  • 学習率と繰返し回数の関数
    n(t) = n0/(1+t/s)c
    t:繰り返し回数
    n 0:初期学習率
    c:繰返し平方数
    s:ステップ数
  • sステップ後学習率はn 0/2,もう1つのsステップ後n 0/3,...
    optimizer = keras.optimizers.SGD(lr, decay = 0.0001)
    # decay = s의 역수