ディープラーニングの専門家になるにはどうすればいいですか?このアリ天池大会の優勝者はあなたのためにプロとしての成長の道を計画しました

ディープラーニングの専門家になるにはどうすればいいですか?このアリ天池大会の優勝者はあなたのためにプロとしての成長の道を計画しました

[[209722]]

ディープラーニングは本質的には深層人工ニューラルネットワークです。これは孤立した技術ではなく、数学、統計的機械学習、コンピューターサイエンス、人工ニューラルネットワークなどの複数の分野を統合したものです。ディープラーニングの理解は、学部数学における最も基本的な数学的分析(高度な数学)、線形代数、確率論、凸最適化と切り離せないものであり、ディープラーニング技術の習得は、プログラミングを中核とした実践的な実践と切り離せないものです。数学とコンピューターサイエンスの確固たる基盤がなければ、ディープラーニングにおける技術的な進歩は空想に過ぎません。

したがって、ディープラーニング技術で成功したい初心者にとっては、ディープラーニングに対するこれらの基礎知識の重要性を理解する必要があります。さらに、私たちのプロフェッショナルパスでは、構造と最適化の理論的側面からディープラーニングの基礎を紹介し、ディープラーニングフレームワークの実践に基づいて高度なパスを簡単に分析します。

***、この記事ではディープラーニングの実践体験やディープラーニングに関する最先端の情報を入手した体験もシェアします。

数学の基礎

ディープラーニングの論文の数式を流暢に理解し、独自に新しい手法を導き出すことができれば、必要な数学的基礎を身に付けていることになります。

数学解析、線形代数、確率論、凸最適化の 4 つの数学コースに含まれる数学的知識を習得し、機械学習の基本的な理論と手法に精通することが、ディープラーニング技術を始めるための前提条件です。なぜなら、ディープネットワークの各層の動作と勾配導出を理解するにしても、問題を形式化するにしても、損失関数を導出するにしても、数学と機械学習の確固たる基礎と切り離せないからです。

  • 数学的分析: 工学専攻の学生が受講する上級数学コースでは、主に微積分を学びます。一般的なディープラーニングの研究や応用においては、関数と極限、導関数(特に合成関数の導関数)、微分、積分、べき級数展開、微分方程式などの基礎知識の復習に重点を置く必要があります。ディープラーニングの最適化プロセスでは、関数の 1 次導関数を解くことが最も基本的なタスクです。平均値定理、テイラーの公式、ラグランジュ乗数に関しては、単に馴染みがあるだけでは十分ではありません。ここでは同済大学の『上級数学』教科書第5版をお勧めします。
  • 線形代数: ディープラーニングにおける演算は、多くの場合、ベクトル演算と行列演算として表現されます。線形代数はベクトルと行列を研究する数学の分野です。復習する必要がある重要なポイントには、ベクトル、線形空間、線形方程式のシステム、行列、行列演算とその特性、ベクトル計算などがあります。ヤコビ行列とヘッセ行列に関しては、正確な数学的形式を知る必要があります。損失関数が行列形式で与えられている場合は、勾配を簡単に解くことができます。ここでは同済大学の「線形代数」教科書の第6版をお勧めします。
  • 確率論: 確率論は、ランダム現象の量的法則を研究する数学の分野です。ランダム変数は、ディープラーニングで多くの用途があります。確率的勾配降下法、パラメータ初期化法 (Xavier など)、ドロップアウト正規化アルゴリズムなど、それらはすべて確率論の理論的サポートに依存しています。ランダム現象(ランダム実験、サンプル空間、確率、条件付き確率など)、ランダム変数とその分布の基本概念を習得することに加えて、大数の法則と中心極限定理、パラメータ推定、仮説検定などについてもある程度理解している必要があり、さらにいくつかのランダムプロセスとマルコフランダムチェーンを学習することもできます。浙江大学版『確率論と数理統計』をお勧めします。
  • 凸最適化:上記の 3 つの基礎数学コースを組み合わせた、凸最適化は応用コースと言えます。しかし、ディープラーニングの場合、一般的に使用されるディープラーニング最適化手法では、確率的勾配降下法の 1 次勾配情報のみを使用することが多いため、実践者は実際には「高度な」凸最適化の知識をあまり必要としません。凸集合、凸関数、凸最適化の基本概念を理解し、双対問題の一般概念を習得し、勾配降下法、確率的勾配降下法、ニュートン法などの一般的な制約のない最適化手法を習得し、いくつかの等式制約最適化法と不等式制約最適化法を理解することで、ディープラーニングにおける最適化手法の理解に対する理論的要件を満たすことができます。ここでは、Stephen Boyd 著の教科書「Convex Optimization」をお勧めします。
  • 機械学習: 結局のところ、ディープラーニングは機械学習手法の 1 つのタイプにすぎず、統計的機械学習は機械学習の分野における事実上の方法論です。教師あり学習を例にとると、線形モデル回帰と分類、サポートベクターマシンとカーネル法、ランダムフォレスト法などの代表的な機械学習手法を習得し、モデル選択とモデル推論、モデル正則化技術、モデル統合、ブートストラップ法、確率的グラフィカルモデルなどを理解する必要があります。さらに一歩進むと、半教師あり学習、教師なし学習、強化学習などの専門的な手法も理解する必要があります。ここでは古典的な教科書「統計学習の要素」をお勧めします。

コンピュータの基礎

ディープラーニングには実際の練習が必要なので、GPU サーバーのハードウェア選択に関する知識、Linux システムとシェル プログラミングの熟練度、C++ と Python の知識は、ディープラーニングの専門家になるための前提条件です。現在、「フルスタックディープラーニングエンジニア」という用語がありますが、これはディープラーニングの実践者に求められる実践能力のレベルを反映したものでもあります。ディープラーニングには、数学と機械学習の強力な理論的基礎だけでなく、コンピュータープログラミングの熟練度と必要なアーキテクチャ知識も必要です。

  • プログラミング言語: ディープラーニングで最もよく使用される 2 つのプログラミング言語は C++ と Python です。今のところ、C++ は依然として高性能システムを実装するための最良の選択肢です。Tensorflow、Caffe、MXNet など、最も広く使用されているディープラーニング フレームワークはすべて、最下層で C++ で記述されています。上位レベルのスクリプト言語は通常 Python であり、データの前処理、ネットワーク モデルの定義、トレーニング プロセスの実行、データの視覚化などに使用されます。現在、MXNet コミュニティでは Lua、R、Scala、Julia などの言語向けの拡張パッケージが登場しており、盛況の傾向を示しています。ここでは 2 つの教科書が推奨されています。1 つは「C++ Primer Fifth Edition」、もう 1 つは「Python Core Programming Second Edition」です。
  • Linux オペレーティング システム: ディープラーニング システムは通常、オープン ソースの Linux システム上で実行されます。現在、ディープラーニング コミュニティで最も一般的に使用されている Linux ディストリビューションは Ubuntu です。 Linux オペレーティング システムの場合、主に習得する必要があるのは、Linux ファイル システム、基本的なコマンド ライン操作、およびシェル プログラミングです。また、VIM などのテキスト エディターにも精通している必要があります。基本的な操作に習熟している必要があります。ファイル内の文字列を一括置換したり、SCP コマンドを使用して 2 台のマシン間でファイルをコピーしたりする必要がある場合、急いで検索エンジンを開く必要はありません。ここで参考書「Bird Brother's Linux Private Recipes」をお勧めします。
  • CUDA プログラミング: ディープラーニングは GPU 並列コンピューティングから切り離すことはできず、CUDA は非常に重要なツールです。 CUDA 開発キットは、NVidia が提供する GPU プログラミング キットです。実際には CUDA-BLAS ライブラリが最もよく使用されます。ここでは、NVidia の公式オンライン ドキュメント http://docs.nvidia.com/cuda/ をお勧めします。
  • その他の基本的なコンピューター知識: ディープラーニング技術を習得するには、Python を使用していくつかの主流のディープラーニング フレームワークを呼び出すだけでは満足できません。ソース コードから始めて、ディープラーニング アルゴリズムの基礎となる実装を理解することが、前進する唯一の方法です。このとき、データ構造やアルゴリズム(特にグラフアルゴリズム)、分散コンピューティング(よく使われる分散コンピューティングモデルの理解)、必要なGPUやサーバーハードウェアの知識(例えば、CPUのPCI-Eチャネル数やGPU間のデータ交換ボトルネックについて話すとき、私の言っていることが理解できる)を習得すれば、間違いなく自分の能力に翼を添えることができるでしょう。

ディープラーニング入門

次に、ディープラーニングの入門を理論と実践の両面から紹介します。

  • ディープラーニング理論の紹介: 図 (図 1) を使用して、ディープラーニングの主要な理論と手法を確認します。 MCP ニューロン モデルから始めて、まず畳み込み層やプーリング層などの基本的な構造単位、シグモイドなどの活性化関数、ソフトマックスなどの損失関数、パーセプトロンや MLP などの古典的なネットワーク構造を習得する必要があります。次に、BP、ミニバッチ SGD、LR ポリシーなどのネットワーク トレーニング方法を習得します。 ***また、ディープ ネットワークのトレーニングにおける 2 つの重要な理論的問題、勾配消失と勾配オーバーフローについても理解する必要があります。

畳み込みニューラル ネットワークを例に、図 2 を使用して、開始するために習得する必要がある知識を示します。出発点はヒューベルとヴィーゼルによる猫の視覚皮質の研究であり、その後、日本の学者福島邦彦の神経認知機械モデル(畳み込み構造はすでに登場していた)へとつながっていったが、最初のCNNモデルが誕生したのは1989年、そして後に誰もが知ることになるLeNetが誕生したのは1998年であった。 ReLU と Dropout の導入、そして GPU とビッグデータによってもたらされた歴史的な機会により、CNN は 2012 年に歴史的なブレークスルー、つまり AlexNet ネットワーク構造の誕生をもたらしました。 2012 年以降、CNN の進化の道筋は、1. より深いネットワーク、2. 畳み込みモジュールの機能強化と、上記 2 つのアイデア、ResNet とそのバリエーションの統合、3. 分類から検出まで、最も重要な進歩は ICCV 2017 の Best Paper Mask R-CNN でした、4. 新しい機能モジュールの追加、の 4 つの部分にまとめることができます。

  • ディープラーニング実践入門: オープンソースのディープラーニング フレームワークの使い方を習得し、さらにコードを学習することが、ディープラーニング テクノロジーを実際に習得する唯一の方法です。現在最も広く使用されているディープラーニング フレームワークには、Tensorflow、Caffe、MXNet、PyTorch などがあります。フレームワークの学習に近道はありません。公式ウェブサイトのドキュメントに従ってステップごとに設定と操作を行い、GitHub コミュニティでのディスカッションに参加し、答えられない質問に遭遇したときには Google で検索してください。これはすぐに始めるのに適した方法です。

最初にフレームワークを習得した後は、特定の研究問題に基づいてさらに改善する必要があります。迅速かつ簡単な戦略としては、まず自分の分野の権威あるベンチマークをざっと確認してみることです。たとえば、顔認識の分野ではLFWやMegaFace、画像認識や物体検出の分野ではImageNetやMicrosoft COCO、画像セグメンテーションの分野ではPascal VOCなどが挙げられます。他の人の手法を再現または改良し、データの準備、モデルのトレーニング、パラメータの調整を自分で実践することで、自分の分野のベンチマークで現在の最高の結果を達成でき、実践への導入が最初に完了します。

その後の進歩には、実際の戦闘での継続的な探求と改善が必要です。たとえば、大規模なトレーニング データの処理に熟練していること、精度と速度のバランスに熟練していること、パラメーター調整技術を習得していること、他の人の作業を迅速に再現または改善できること、新しい方法を実装できることなどです。

ディープラーニングの実践経験

ここでは、ディープラーニングの実践的な経験を 4 つの側面から共有します。

1. 十分なデータ。大量のラベル付きデータは依然としてディープラーニング モデルの精度を本質的に左右するため、すべてのディープラーニング実践者はデータが非常に重要であることを認識する必要があります。データの入手方法は、オープンデータ(ImageNetやLFWなど、主に学術界向けに公開されているもの)、第三者データ企業からの有料データ、自社のビジネスと組み合わせて生成したデータの3つが主流です。

2. 優れたプログラミング実装能力。ディープラーニング アルゴリズムの実装には熟練したプログラミング スキルが必要であり、Python プログラミングの熟練がその基礎となります。基盤となる実装をさらに変更したり、新しいアルゴリズムを追加したりする場合は、基盤となるコードを変更する必要がある場合があります。このとき、熟練した C++ プログラミング スキルが不可欠になります。明らかな現象として、かつてはコンピューター ビジョンの研究者がこの分野で成功するために Matlab を習得するだけで済んだのに、今では Python と C++ を学ぶために追加のクラスを受講する必要があるということがあります。

3. 十分な GPU リソース。ディープラーニングモデルのトレーニングには、豊富な GPU リソースが必要です。複数のマシンと複数の GPU でモデルを並列実行することで、モデルの収束速度を効果的に向上させ、アルゴリズムの検証とパラメータの調整をより迅速に完了できます。ディープラーニングを専門とする企業や研究室では、数十から数百の GPU リソースを保有するのが一般的です。

4. 革新的な方法。ディープラーニングの分野で権威のあるImageNetコンペティションを例に挙げてみましょう。ディープラーニング技術が2012年にコンペティションで優勝してから2017年の最初のコンペティションまで、方法論の革新は常にディープラーニングの進歩の原動力となってきました。少しデータを追加したり、ネットワークを深くしたり、いくつかの SGD パラメータを調整したりするだけで満足する場合、真に優れた結果を達成することは困難です。

私自身の経験から言うと、方法論の革新は確かに驚くべき結果をもたらすことができます。アリババが主催する天地画像検索コンテストに参加した際、私はラベル付けされたノイズの多いデータに新しい損失関数を使用するという革新的な提案をしました。その結果、ディープモデルの精度が大幅に向上し、その年の優勝を果たしました。

ディープラーニングの最先端

【最先端情報の発信源】

実戦での技術力を向上させるには、ディープラーニングの最新の進歩を理解する必要があります。つまり、論文をブラッシュアップするということです。Arxivを定期的にブラッシュアップし、代表的著作のGoogle Scholar引用をブラッシュアップし、ICCV、CVPR、ECCVなどの主要なカンファレンスに注目するほか、ZhihuのDeep LearningコラムやRedditで主要な論文(または素晴らしい不満)について随時議論します。

Valse 最先端技術選抜、ディープラーニング講堂、Paper Weekly などの高品質な公開アカウントは、最先端のディープラーニング技術を頻繁に推進しており、情報源にもなります。同時に、LeCunやBengioなどの学術界の巨匠たちのFacebook/Quoraのホームページをフォローしたり、Weiboのアカウント「爱可可爱生活」などをフォローしたりすると、驚くような発見をすることがよくあります。

【おすすめフォーカス】

  • 新しいネットワーク構造。 SGD に代表されるディープラーニングの最適化手法に根本的な進歩がない中で、ネットワーク構造を変更することは、ネットワーク モデルの精度を迅速に向上できる方法です。 2015年以降、ResNetのさまざまな改良に代表されるさまざまな新しいネットワーク構造が雨後の筍のように登場しており、その代表的なものとしてはDenseNet、SENet、ShuffuleNetなどがあります。
  • 新しい最適化方法。 1943 年の MCP モデルから 2017 年までの人工ニューラル ネットワークの発展の歴史を見ると、最適化手法は常に進歩の魂となってきました。バックプロパゲーション (BP) や確率的勾配降下法 (SGD) に代表される最適化技術のブレークスルー、あるいは Sigmoid/ReLU に続く新世代の活性化関数の導入は、いずれも期待に値します。著者は、「勾配降下法による勾配降下法の学習」や SWISH 活性化関数などの最近の研究は注目に値すると考えています。しかし、根本的なブレークスルーが達成できるかどうか、つまり、現在の最適化手法や ReLU 活性化関数を完全に置き換えることができるかどうかは、まだ予測できません。
  • 新しい学習テクノロジー。深層強化学習と生成的敵対的ネットワーク (GAN)。ここ数週間、ニュースで話題になっているAlpha Zeroは、再び深層強化学習の強力な力を実証しました。人間の経験とはまったく無関係です。囲碁プロジェクトで深層強化学習を通じて開発したチェスのスキルは、数秒で人間の名人グループを打ち負かした前世代のAlghaGo Masterをはるかに上回っています。同様に、生成的敵対ネットワークとその変種は、学習アルゴリズムが独自のデータを生成する時代の始まりを常に告げています。私が勤務する会社も、深層強化学習と GAN を組み合わせて、クロスモーダル トレーニング データを増強しようとしています。
  • 新しいデータセット。データセットはディープラーニング アルゴリズムのトレーニングの場であるため、データセットの進化はディープラーニング テクノロジーの進歩の縮図となります。顔認識を例にとると、LFW 以降の時代では、MegaFace と Microsoft Celeb-1M データセットが、大規模な顔認識とデータラベルのノイズの多い条件下での顔認識を引き継いでいます。 ImageNet 以降の時代において、Visual Genome は、オブジェクト、属性、関係の説明、質問と回答のペアを含むビジュアルゲノムを構築しようとしています。

<<:  機械学習にはどのプログラミング言語を選択すればよいでしょうか?

>>:  それは大したことだ! Google によれば、人類は 2029 年に不死を達成するそうです。病気も老化も痛みも完全に消え去ります! ?

ブログ    
ブログ    

推薦する

RedditユーザーがAppleのCSAMツールをリバースエンジニアリングし、アルゴリズムがすでに存在していることを発見

[[418306]]今月初め、アップルはエコシステム全体に新たな子どもの安全機能を導入すると発表し...

Panda-Gym のロボットアームシミュレーションを使用したディープ Q 学習強化学習

強化学習 (RL) は、エージェントが試行錯誤を通じて環境内でどのように動作するかを学習できるように...

清華大学チームは、蛍光画像から自己教師あり方式でノイズを除去する空間冗長性ノイズ除去トランスフォーマー法を開発

高い信号対雑音比を備えた蛍光イメージングは​​、生物学的現象の正確な可視化と分析の基礎となっています...

転移学習とクロスドメイン推奨、およびクロスドメイン推奨のソリューション

この記事では、主にクロスドメインの推奨事項について詳しく紹介します。内容は以下のとおりですが、これら...

大型モデル全般において中国と米国の差を縮めるにはどうすればいいでしょうか? 全国人民代表大会でその答えが分かった

「一般的な大きなモデルは国家の運命をめぐる闘争に関連している」... 「人工知能+」が政府活動報告に...

...

数行のコードでUNetが安定!中山大学などが提案したScaleLong拡散モデル:スケーリングへの疑問からスケーリングへ

標準の UNet 構造では、ロング スキップ接続のスケーリング係数は通常 1 です。ただし、Imag...

...

年末コレクション!アンドリュー・ンが2020年に最も注目されたAIイベントをレビュー

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

AI の透明性とは何ですか? また、なぜそれが必要なのですか?

AI テクノロジーを利用する組織はますます増えていますが、多くの企業はまだ AI テクノロジーの仕...

大規模モデルはなぜこんなに遅いのか?考えすぎだったことが判明:新しい方向性は、人間と同じ思考アルゴリズムを使用することです

人間の直感は AI 研究者によって見落とされがちな能力ですが、非常に微妙なため、私たち自身でさえ完全...

...

...

...

アシモフのロボット工学三原則とモービルアイの自動運転五原則

テクノロジー・トラベラーは11月20日、北京から報道した(執筆者:ガオ・フェイ):多くのSF作家の想...