実験効果校正の経験
オーグメントを追加するタイミング、マルチスケールを追加するタイミング、学習率を設定する方法は?
データ強化
私の個人的な経験では、バリデーション段階が終わって、アブレーションスタディを始めるときには、データの妥当性に注意を払わなければなりません。
第一は、2つのケースで、まずいくつかの小さな実験をして、データAugmetの追加有無にかかわらず、提案手法のパフォーマンスがどのように変化するかを見て、より見栄えの良い結果を選択します。たとえば、私は最後の精神で、その後、すべてのトリックの一握りを追加するシャトルアップ少しアイデア、前の比較実験はどのような場合には見栄えではありません。しかし、データを豊かにオーグメントを追加した後、モデルの効果がアップしている、ベースラインも上がっていますが、あなたの仕事のより多くのテストは十分に強固であろう、あなたのフレームワークは、大きなデータや単一のデータを扱うのが得意ではない場合、それは追加することをお勧めします。
マルチスケールトレーニング
これは少しずつ着実に上がっていきますが、モデル効果を見せたり、水を濁さないためには、オーグメントで十分なので、最後に追加することをお勧めします。もちろん、ベースラインブラシが高くなりすぎて、IDEAのインクリメントが最小限でぎこちなくなることも避けられます。
学習率
これは非常に単純ですが、ケース間のギャップを凍結し、stoaを除いて、脳なしアダムは十分である、0.001、または0.0001、ステップを追加し、ウォームアップが行われます。実際のSOLID作業は、このことについてあまり気にしない、調整する方法は、より多くの目に見えることができます。
オプティマイザと学習率の最適化
- 収束はadamの方が速く、調整したパラメーターを検証するのに使えますが、細かく調整したsgdの方が良い傾向があります。
- bsはk倍に拡大され、lrもそれに対応してk倍に拡大されます。
- lrの選択:lrの選択はまだ効果に依存し、最初に勾配lrを使用し、突然変異の強化のポイントを見つけると、このlrは適切であり、その後、ベンチマークとしてこれを使用して、学習率の変更を設定します。
原則的に、損失がバグでない限り、基本的に損失が低いほど良い効果があるので、可能な限り損失を使用して効果的に学習率を低下させることができ、過度の振動を避けるために。 原理:cos lrは最適化のために使用され、最良の結果を得るために怠惰な検索;毎日のトレーニングチューニングパラメータまたは直接注文固定学習率。
損失関数の最適化
- exp、atanなどの関数を使用することで、最適化空間を平滑化、一般化し、収束を高速化することができます。
- 例えば、whとdxdyは一貫性のない数値スケールを予測し、clsはカテゴリのバランスが悪いなど。
⊙ バッチサイズ
より大きなbsを使用することで、ローカルミニマムに陥るのを避けるために最適化方向をより良く推定することができますが、より小さなbsの方がより正確な場合もあります; 累積勾配は1枚のカードに対しても同様に大きなbsを持つようにすることができますが、bn推定は不正確になる可能性があります。アルゴリズムがオーバーフィッティングを検証するとき、accumulate*bsがサンプルの総数より大きくなってはいけないことに注意してください!そうでないと収束が遅くなります。オーバーフィッティングの検証フェーズでは bs=1 を直接使用する方が速いですが、bsを大きくした方がよりスムーズに収束します。極端なケース: モデルがよりスムーズに収束する場合、bs=1 を設定してパフォーマンスをさらにゆっくりと最適化します。
速度の最適化
apex mixed precision training.数行のコードで完了し、スピードは数倍に、精度はわずかに低下します。
チュートリアルのインストール方法:
1. リネームされているので、直接 pip install ではない 2. 直接 setup install ではないので、python をコンパイルするだけで、加速効果は良くない): git clone apexpip install -v --no-cache- .dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./## 上記の3行目でコンパイルに失敗した場合は、環境変数をインポートしてから、 3export CUDA_HOME=/usr/local/cuda-10.0## を実行します。
あなたはまだ赤で終了した場合は、より安定したコミットバージョンに戻ることができます:1.クローンapexディレクトリに入ります。2.過去のコミットブランチを作成します:git checkout -b f3a960f80244cf9e80558ab30f7e8cbf03c0a03。4。警告の束は気にしない、正常にapex-0.1をインストールすることができます単語を参照してください。
注意事項
- アクセラレーションは1080Ti以上。
- 実際の現場テストによると、速度がないか、明白でない場合は使用できません。
- 半精度が使われているかどうかを確認する方法: dtypeメソッド 例: if a.dtype == torch.float16: xxx
- torch.float16のモデルとtorch.float32の計算対象で推論が相容れない問題が発生する可能性があるため、a = a.half( ) のようにhalf( )メソッドを使ってgtを半精度化します。
⊙ バリデーションとテスト
テストセットでテストを行うことで、モデルのパフォーマンスを確認し、結果を改善することができます。トレーニングセットでテストを行うことで、アルゴリズムが有効かどうか、バグがないかどうかを確認することができます。
⊙ データ強化
拡張+マルチスケールトレーニング。imgaugを使用することで補うことができます。
⊙ インサイト
シングルステージの指定学習は、より速く収束できるように、2ステージの最終的な回帰に向かう少数のアンカーだけでなく、適切により多くのアンカーを確保する必要があります。
本質:極端なサンプルの不均衡問題を緩和するために、トレーニング中に正と負のサンプルの分布を変更します。そのため、このアプローチは一意ではなく、少数のアンカーを使用するために損失の最適化によって達成することができ、また、学習することができます。