Andrej Karpathy は、ディープラーニング コンピューター ビジョン、生成モデル、強化学習の分野の研究者です。博士課程在学中、彼は李菲菲の指導を受けた。博士課程在学中、私は Google で 2 回インターンシップを行い、YouTube 動画の大規模な特徴学習を研究しました。また、2015 年には DeepMind でインターンシップを行い、深層強化学習を研究しました。卒業後、カルパシー氏はOpenAIの研究科学者となり、その後2017年6月に人工知能および自動運転ビジョン担当ディレクターとしてテスラに入社した。 彼が本日公開したブログは、ディープラーニング研究者にとって非常に明確な洞察を提供しており、Twitter で大きな注目を集めています。 1. ニューラル ネットワークのトレーニングは簡単だと誰が言ったのでしょうか? 多くの人は、ニューラル ネットワークのトレーニングを始めるのは簡単だと考えています。多数のライブラリやフレームワークが、30 行のコードでデータの問題を解決できると主張しています。そのため、ニューラル ネットワークのトレーニングは非常にシンプルで、さまざまなモジュールをプラグ アンド プレイで使用してディープ モデルを構築できるという (誤った) 印象を誰もが持っています。 単純なモデリング プロセスは通常、次のようになります。
これらのライブラリと例は、クリーンな API と抽象化が利用できることが多い、使い慣れた標準ソフトウェアとモジュールを思い起こさせます。 たとえば、Request ライブラリの使用方法は次のとおりです。
すごいですね! これらのライブラリやフレームワークの開発者は、ユーザーのクエリ文字列、URL、GET/POST リクエスト、HTTP 接続などを理解するという大きな負担を担っており、複雑さは数行のコードの背後に隠されています。これは私たちがよく知っていて期待していることです。 しかし、ニューラル ネットワークは異なります。既成のテクノロジではありません。私は2016年に書いたブログ記事でこの点を指摘しようとしましたが、今では状況はさらに悪化しているようです。 Backprop + SGD は魔法ではないので、ネットワークを実行することはできません。バッチ正規化では、ネットワークの収束を魔法のように速くすることはできません。RNN では、テキストを直接処理する魔法はありません。問題を強化学習として定式化できるからといって、そうすべきだと決めつけないでください。テクノロジーがどのように機能するかを理解せずにそれを使い続けると、失敗する可能性が高くなります。 2. 背後で機能しないニューラルネットワーク コードを壊したり、誤って構成したりすると、通常は何らかの例外が発生します。文字列があるべき場所に整数を挿入した、インポートが失敗した、キーワードが存在しない... さらに、デバッグを容易にするために、機能の単体テストを作成することがほとんどです。 これはほんの始まりに過ぎません。ニューラル ネットワークをトレーニングする場合、すべてのコードの構文が正しいが、トレーニング全体が正しくない可能性があります。おそらく問題は(構文ではなく)ロジックにあり、ユニットテストでは見つけるのが難しいのでしょう。 たとえば、勾配ではなく損失をクリッピングしようとすると、トレーニング中に外れ値が無視されますが、構文や次元などのエラーは検出されません。または、正規化の強度、学習率、減衰率、モデル サイズなどを間違って設定した場合、運が良ければネットワークはエラーを報告しますが、ほとんどの場合、トレーニングは継続され、静かに悪化していきます... したがって、ニューラル ネットワークをトレーニングするための「高速かつ激しい」アプローチは役に立たず、困難を招くだけです。さて、これらの経験的な困難は、ニューラル ネットワークを適切に動作させるための障害であり、困難を軽減するには、ネットワークをより慎重かつ徹底的にデバッグする必要があり、すべてを理解するには多くの視覚化が必要です。 私の経験では、ディープラーニングで成功するための重要な要素は、忍耐と細部への注意です。 解決方法 これら 2 つの事実に基づいて、私はニューラル ネットワークを新しい問題に適用するための特定のプロセスを開発しました。このプロセスでは、忍耐と細部への注意という上記の 2 つの原則を重視します。 具体的には、単純なものから複雑なものへと構築し、各ステップで何が起こるかについて正確な仮定を立て、実験を使用して仮定を検証したり、問題が見つかるまで調査したりします。私たちは、多くの「テストされていない」複雑さが一度に導入され、決して発見されないバグや誤った構成につながるのを防ぐよう努めています。ニューラル ネットワークをトレーニングしているようにコード化する場合は、非常に小さい学習率を使用して推測し、各反復後にテスト セット全体を評価する必要があります。 1. データを整理する ニューラル ネットワークをトレーニングするときはコードに触れず、まずデータを徹底的にチェックしてください。このステップは非常に重要です。私は何千ものサンプルを調べ、その分布を理解し、パターンを探すことに多くの時間を費やすのが好きです。幸いなことに、人間の脳はこの点では非常に優れています。あるケースでは、データ内に重複した例が見つかり、別のケースでは、破損した画像/ラベルが見つかりました。データの不均衡や偏りを探します。私は通常、データ分類プロセスにも注意を払います。これにより、最終的に探索するアーキテクチャが明らかになります。たとえば、ローカルな特徴だけで十分でしょうか、それともグローバルなコンテキストが必要でしょうか? ラベルにはどの程度のノイズがあるでしょうか? さらに、ニューラル ネットワークはデータセットの圧縮/コンパイルされたバージョンであるため、ネットワークの予測 (誤った予測) を確認し、その予測がどこから来たのかを理解できます。ネットワークの予測がデータで見つかったものと一致しない場合は、何かが間違っています。 データについてある程度理解できたら、ラベルの種類、注釈のスケール、注釈の数などで検索/フィルタリング/並べ替えを行う簡単なコードを記述し、任意の軸に沿ってデータの分布と外れ値を視覚化できます。外れ値により、データ品質や前処理のバグが明らかになることがよくあります。 2. エンドツーエンドのトレーニング/評価アーキテクチャを構成し、ベースライン結果を取得する データが理解できたので、ハイエンドのマルチスケール ASPP FPN ResNet の構築を開始し、強力なモデルをトレーニングできるでしょうか? もちろんまだ無理です。これは困難な道です。次のステップは、完全なトレーニングおよび評価アーキテクチャを構築し、一連の実験を通じて精度に対する信頼性を判断することです。 この段階では、線形分類器や非常に単純な ConvNet など、間違いのない単純なモデルを選択します。これらのモデルをトレーニングし、トレーニング損失、モデル予測、その他のメトリック (精度など) を視覚化したいと考えています。もちろん、このプロセスでは、いくつかの明確な仮説に基づいた一連のアブレーション実験も実行する必要があります。 この段階でのヒントと注意事項:
3. 過剰適合 この段階では、データセットを理解し、トレーニングと評価のプロセスを完了している必要があります。任意のモデルに対して、信頼の尺度を計算できます。また、入力に依存しないベースラインのパフォーマンス、いくつかのダム ベースラインのパフォーマンス (これらを超えることをお勧めします) も準備しており、人間のパフォーマンスの大まかな概要を把握しています (これに匹敵することを望んでいます)。これで、適切なモデルを反復する準備が整いました。 適切なモデルを見つけるために私が使用するアプローチには、2 つの段階があります。まず、過剰適合できるほど十分に大きなモデルを取得し (つまり、トレーニング損失に焦点を当てます)、次にそれを適切に正規化します (トレーニング損失の一部を破棄して、検証損失を改善します)。私がこの 2 つのフェーズを好んでいる理由は、どのモデルでも低いエラー率を達成できない場合、何らかの問題、バグ、構成ミスを示している可能性があるからです。 この段階でのヒントと注意事項:
4. 正規化 理想的には、トレーニング セットに適合する大規模なモデルが少なくとも 1 つあることになります。ここで、これを正規化し、トレーニング精度の一部を放棄して検証精度を向上させます。ヒントは次のとおりです:
ネットワークが適切な分類器であることを確認するために、ネットワークの 1 つのレイヤーの重みを視覚化して、意味のあるエッジを取得していることを確認します。レイヤーのフィルターがノイズのように見える場合は、何かを削除する必要があります。同様に、ネットワーク内の活性化関数によって問題が明らかになることもあります。 5. 微調整 これで、データセット内で、検証損失が低いアーキテクチャのモデル空間を探索する段階に到達したはずです。このステップに関するヒントは次のとおりです。
6. 絞る 適切なアーキテクチャ タイプとハイパーパラメータを見つけたら、システムをさらに改善するために使用できるトリックがまだあります。
結論は これを実行すると、ニューラル ネットワーク、データセット、問題に対する十分な理解、完全なトレーニング/評価システムの構成、信頼性の高い精度、段階的に複雑なモデルを探索し、各ステップでパフォーマンスを向上させることなど、成功に必要な要素がすべて揃います。これですべての準備が整いましたので、多くの論文を読み、多くの実験を試し、SOTA 結果を達成することができます。 オリジナルリンク: https://karpathy.github.io/2019/04/25/recipe/ [この記事は51CTOコラム「Machine Heart」、WeChatパブリックアカウント「Machine Heart(id:almosthuman2014)」によるオリジナル翻訳です] この著者の他の記事を読むにはここをクリックしてください |
<<: 驚きですか、それともショックですか?機械学習アルゴリズムの「高エネルギー」な瞬間を評価する
9月24日、中国聯通の「ネットワークAIフォーラム」が北京で開催された。フォーラムは5GとAI技術の...
人工知能 (AI) と機械学習 (ML) は、職場でも家庭でも、私たちの生活に欠かせないものになりつ...
電気による輸送はますます多様化しています。そして、それは地球規模の持続可能な開発の文脈において重要な...
序文ちょうど夏休み中に、KaggleのZillow Prizeコンペに参加し、データマイニングと機械...
画像操作は、コンピュータービジョンと画像処理において重要な役割を果たします。これらの操作は、前処理、...
ネットワーク技術やグリッドコンピューティングの発展により、組み込み型モバイル機器を中核とした「ユビキ...
IT Homeは2月9日、「高齢者のデジタル適応力に関する調査報告」によると、スマートフォンを使用...
民間ドローン産業は2010年頃から勢いを増し始め、特に2014年から2017年にかけて民生用ドローン...
人工知能は世界を変えようとしていますが、問題は、それがどのように起こるのか誰も正確には知らないことで...
セキュリティ オペレーション センター (SOC) のアナリストは推論と意思決定に優れていますが、2...
AI兵器は歴史の流れとともに進化し、今日では危険な一歩となっている。 [[406883]] AIは...