この記事は、Caiyun Technology のトップ ビッグ データ サイエンティストである Zheng Zeyu 氏が QCon2016 Global Software Development Conference (上海) で行った講演に基づいています。TensorFlow を通じてディープラーニング アルゴリズムを実装し、ディープラーニングをエンタープライズの実践に適用する方法を皆さんに理解していただければ幸いです。
講師紹介 Zheng Zeyu 氏は Google のシニア エンジニアです。 Zheng Zeyu は 2013 年に Google に入社して以来、主要な技術スタッフ メンバーとして複数のビッグ データ プロジェクトに参加し、それを主導しており、機械学習、データ マイニング業界、科学研究プロジェクトで豊富な経験を持っています。 2014 年、彼は Google ショッピングと Google ナレッジグラフのデータを接続する商品クラスタリング プロジェクトを提案し、ナレッジ カード スタイルの広告が徐々に従来の商品リスト広告に取って代わり、検索ページに Google ショッピング広告が配信される新しい時代の先駆けとなりました。 2013年5月にカーネギーメロン大学(CMU)でコンピュータサイエンスの修士号を取得。この間、国際学術会議でいくつかの学術論文を発表し、Siebel奨学金を受賞しました。 ディープラーニングとは何ですか? ディープラーニングという言葉は何度も耳にしてきました。ディープラーニングとはいったい何でしょうか? その背後にあるテクノロジーは、実はニューラル ネットワークから生まれたものです。ニューラル ネットワークは、人間の脳の働きの原理から着想を得たものです。人間の脳は非常に複雑な構造をしており、聴覚中枢や視覚中枢など、多くの領域に分けられることがわかっています。私が研究センターで勉強していたとき、ビデオ用のコンピューター ビジョン研究所、言語用の言語研究所、音声用の音声研究所がありました。分野を分けることでさまざまな機能が分離されており、これは多かれ少なかれ、人間の脳に対する理解に関係しています。その後、科学者たちは人間の脳が普遍的な計算モデルであることを発見しました。 科学者たちは、マウスの聴覚中枢の神経と耳の経路を切断し、視覚入力を聴覚中枢に接続する実験を行った。数か月後、マウスは聴覚中枢を通じて視覚信号を処理できるようになった。これは、人間の脳の動作原理は同じであり、ニューロンの動作原理も同じであるが、継続的なトレーニングが必要であることを示しています。この仮説に基づき、神経科学者たちは、盲人が再び世界を見る希望を持てるよう願って、このような試みを行なった。彼らは舌に電極を取り付け、カメラを通してさまざまなピクセルを舌に送信し、盲人が舌を通して世界を見ることを可能にした。人間の神経の働きについての理解が深まったことで、ディープラーニングが普遍的な学習モデルになるだろうという期待が生まれました。
上の図はニューラル ネットワークの一般的な構造を示しています。写真の左側は人間のニューロン、右側はニューラル ネットワーク内のニューロンです。ニューラル ネットワークのニューロンは、もともと人間のニューロンの構造にヒントを得て、人間のニューロンの働きをモデル化しようとしたものです。具体的な技術についてはここでは詳しく説明しません。上の図の下部は、人間のニューラル ネットワークと人工ニューラル ネットワークの比較を示しています。コンピューター ニューラル ネットワークでは、入力層と出力層を明確に定義する必要があります。人工ニューラル ネットワークの入力と出力を適切に使用することで、実用的な問題を解決することができます。 ニューラル ネットワークの中心的な動作原理は、与えられた入力信号を出力信号に変換し、出力信号が解決する必要のある問題を解決できるようにすることです。たとえば、テキスト分類の問題を解くときは、記事をスポーツや芸術に分類する必要があります。次に、記事内の単語をニューラル ネットワークへの入力として提供し、出力ノードが異なるカテゴリを表すようにします。記事がどのカテゴリに属するかは、対応する出力ノードの出力値が 1 で、その他の出力値が 0 であることを期待します。ニューラル ネットワークの構造を適切に設定し、ニューラル ネットワーク内のパラメータをトレーニングすることで、トレーニングされたニューラル ネットワーク モデルは、記事がどのカテゴリに属するかを判断するのに役立ちます。 画像認識におけるディープラーニングの応用 ディープラーニングの最初の応用分野は画像認識です。最も古典的なアプリケーションは Imagenet データセットです。 ImageNet は 1,500 万枚の画像を含む非常に大規模なデータセットです。下の図はデータセットのサンプル画像を示しています。 ディープラーニングアルゴリズムが適用される前は、従来の機械学習手法では画像処理の能力が限られていました。 2012 年以前は、最先端の機械学習アルゴリズムのエラー率は 25% であり、新たなブレークスルーを実現することは困難でした。 2012 年には、ImageNet データセットにディープラーニングが適用され、エラー率が直接 16% に削減されました。その後、ディープラーニングのアルゴリズムが改良され、エラー率は 2016 年に 3.5% まで低下しました。 ImageNet データセットでは、人間による分類エラー率は約 5.1% です。機械のエラー率は人間よりも低いことがわかります。これはディープラーニングがもたらした技術的な進歩です。 TensorFlowとは TensorFlow は、Google が昨年 11 月にオープンソース化したディープラーニング フレームワークです。冒頭でAlphaGoについて触れましたが、その開発チームであるDeepMindは、今後のすべてのシステムをTensorFlowに基づいて実装すると発表しました。 TensorFlow は非常に強力なオープンソースのディープラーニング ツールです。携帯電話、CPU、GPU、分散クラスターをサポートできます。 TensorFlow は学術界と産業界の両方で広く使用されています。業界では、TensorFlowをベースに開発されたGoogle TranslateやGoogle RankBrainなどのシステムがすでに登場しています。学術の世界では、CMU や北京大学のクラスメートの多くが、TensorFlow はディープラーニング アルゴリズムを実装するための最良のツールだと言っています。 上記の ppt は、ベクトル加算の機能を実装する簡単な TensorFlow プログラムの例を示しています。 TensorFlow は Python と C++ API を提供していますが、Python API の方が包括的であるため、ほとんどの TensorFlow プログラムは Python で実装されています。上記のプログラムの最初の行では、import を通じて TensorFlow をロードします。 TensorFlow では、すべてのデータはテンソルの形式で保存されます。テンソル内のデータの特定の値を計算するには、セッションが必要です。 上記のコードの 2 行目は、セッションを作成する方法を示しています。セッションは、TensorFlow プログラムを実行するために必要な計算リソースを管理します。 TensorFlow の特別なテンソルは変数 (tf.Variable) です。変数を使用する前に、変数初期化プロセスを明示的に呼び出す必要があります。上記のコードの最後の行を見ると、結果のテンソル出力の値を取得するには、テンソル値を計算するプロセスを明示的に呼び出す必要があることがわかります。 TensorFlow を使用したニューラル ネットワークの実装は非常に簡単です。 MNIST 手書き数字認識問題は、TFLearn または TensorFlow-Slim を使用して 10 行で実装できます。上記の ppt は、TensorFlow がさまざまなニューラル ネットワーク構造をサポートしていることを示しています。TensorFlow は、非常に短いコードでさまざまな主要なニューラル ネットワーク構造をサポートできることがわかります。 TensorFlow はニューラル ネットワークの機能を迅速に実装できますが、TensorFlow のスタンドアロン バージョンでは大規模なディープ ニューラル ネットワークをトレーニングすることが困難です。 この図は、Google が 2015 年に提案した Inception-v3 モデルを示しています。このモデルは、ImageNet データセットで 95% の精度を達成できます。ただし、このモデルには 2,500 万のパラメーターがあり、1 つの画像を分類するには 50 億回の加算または乗算が必要です。このような大規模なニューラル ネットワークを使用するだけでも、非常に大きな計算能力が必要になります。ディープ ニューラル ネットワークをトレーニングする必要がある場合は、さらに多くの計算能力が必要になります。ニューラル ネットワークの最適化は比較的複雑です。直接的な数学的解決法はなく、繰り返し反復する必要があります。単一のマシンで Inception-v3 モデルを 78% の精度までトレーニングするには 5 か月以上かかります。 95% の精度までトレーニングするには何年もかかります。これは実際の生産環境ではまったく耐えられないことです。 Kubernetes 上の TensorFlow 前述したように、単一のマシン環境で大規模なニューラル ネットワークをトレーニングすることは不可能です。 Google では、Google Brain と TensorFlow はどちらも、Google の社内クラスタ管理システムである Borg 上で実行されます。私が Google e コマースにいた頃、私たちが使用していた製品分類アルゴリズムは 1,000 台以上のサーバーで実行されていました。 Google 以外では、Kubernetes 上で TensorFlow を実行できます。 Kubernetes 上で TensorFlow を実行する方法を紹介する前に、まずはディープラーニング モデルを並列でトレーニングする方法を紹介しましょう。 ディープラーニング モデルには、一般的な分散トレーニング方法が 2 つあります。 1 つは同期更新であり、もう 1 つは非同期更新です。上記の ppt に示されているように、同期更新モードでは、すべてのサーバーがパラメータ値を均一に読み取り、パラメータの勾配を計算し、均一に更新します。非同期更新モードでは、異なるサーバーが他のサーバーと同期せずに、パラメーターを読み取り、勾配を計算し、パラメーターを独自に更新します。同期更新の最大の問題は、異なるサーバーがすべての操作を同期的に完了する必要があるため、高速サーバーは低速サーバーを待機する必要があり、リソースの使用率が比較的低くなることです。非同期モードでは、パラメータを更新するために古い勾配が使用される可能性があり、トレーニング効果に影響する可能性があります。更新モードにはそれぞれ長所と短所があり、どれが優れているかは一概には言えません。特定の問題については、具体的な分析が必要です。 使用する更新方法に関係なく、分散 TensorFlow を使用してディープラーニング モデルをトレーニングするには、パラメーター サーバーおよびコンピューティング サーバーの 2 種類のサーバーが必要です。パラメータ サーバーはニューラル ネットワーク パラメータの値を管理および保存し、コンピューティング サーバーはパラメータの勾配を計算する役割を担います。 TensorFlow で分散ディープラーニング モデルのトレーニング タスクを起動するためのモードも 2 つあります。 1 つはグラフ内レプリケーションです。このモードでは、ニューラル ネットワークのパラメーターは同じ TensorFlow 計算グラフに保存され、計算のみが異なるコンピューティング サーバーに割り当てられます。もう 1 つは、グラフ間のレプリケーションです。このモードでは、すべてのコンピューティング サーバーもパラメーターを作成しますが、パラメーターは統一された方法でパラメーター サーバーに配布されます。グラフ内レプリケーションは大量のデータを処理する能力が弱いため、グラフ間レプリケーションの方が一般的に使用されるモードです。 ***質問です。先ほど TensorFlow が分散クラスター モードでの実行をサポートしていると述べましたが、なぜ Kubernetes が必要なのでしょうか。TensorFlow と Hadoop システムを簡単に類推すると、この問題を非常に明確に説明できます。ご存知のとおり、Hadoop システムは主に Yarn、HDFS、MapReduce コンピューティング フレームワークに分けられるため、TensorFlow は Hadoop システムの Mapreduce コンピューティング フレームワーク部分に相当します。 TensorFlow には、YARN のようなスケジューリング システムも、HDFS のようなストレージ システムもありません。ここで Kubernetes が登場します。 Kubernetes は、タスクのスケジュール設定、監視、障害時の再起動などの機能を提供できます。これらの機能がなければ、各マシンで TensorFlow サーバーを手動で起動し、実行中のタスクのステータスを常に監視することは困難です。さらに、分散 TensorFlow は現在ライフサイクル管理をサポートしておらず、完了したトレーニング プロセスは自動的に閉じられないため、追加の処理も必要になります。 |
<<: Microsoft EdgeブラウザがGoogleのオープンソース圧縮アルゴリズムをサポート
[[187791]]機械学習は広く使用されており、チュートリアル、記事、オープンソース コードが至...
AI は教育テクノロジーの分野では以前から使われてきましたが、その導入は遅れています。しかし、COV...
アクティベーション、重み、勾配を 4 ビットに量子化すると、ニューラル ネットワークのトレーニングが...
[[441513]]この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI...
予測分析ツールとは何ですか?予測分析ツールは、人工知能とビジネスレポートを融合します。これらのツール...
この記事のタイトルは少し大まかです。私の意見では、実際には 2 つの意味が含まれています。1 つ目は...
この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...
[[377773]]人工知能は、業界団体によって大々的に宣伝され、推進されている用語の 1 つになっ...