2019年のディープラーニングツールの概要

2019年のディープラーニングツールの概要

ディープラーニングツール

ディープラーニングの進歩は、ソフトウェア インフラストラクチャの進歩にも大きく依存しています。 Torch (2011)、Theano (2012)、DistBelief (2012)、PyLearn2 (2013)、Caffe (2013)、MXNet (2015)、TensorFlow (2015) などのソフトウェア ライブラリはすべて、重要な研究プロジェクトや商用製品をサポートできます。

ディープラーニングといえば、私が個人的に触れたのは2015年です。実はこの技術は長らく隠れていたのですが、2012年に爆発的に普及し、AI分野の主流となりました。今日は、最も実用的かつ最もよく遭遇する側面、つまりフレームワーク、つまりツールについてお話ししましょう。

あなたが知っているツールにはどのようなものがありますか? ? ?

今日は私が使用したツールを皆さんと共有したいと思います。お気に入りのツールを見つけて、それを使って「エリクサーを作る」ことができればと思います(意味がわからない場合は、Baiduで検索してください)笑!

[[256719]]

大学院に入ってから、私が出会ったディープラーニングツールの数は片手で数えられるほどです。興味のある方は深く検索してみてください。インターネット上にはまだまださまざまな意見があります。次に、私自身の実践経験に基づいたディープラーニングツールについてお話します。マトラボ

マトラボ

私がディープラーニングを学び始めたとき、最初に使用したツールはディープラーニング用の Matlab ツールボックスである DeepLearnToolbox でした。 ディープラーニングは機械学習の新しい分野です。ディープデータモデルの学習に重点を置いています。その主なインスピレーションは、人間の脳の表面にある深い階層構造にあります。ディープラーニング理論の優れた概要は、人工知能のディープアーキテクチャの学習です。このツールボックスは比較的シンプルです。当時は手書き数字と顔の分類(AR顔データベース)を作っていました。主に以下の内容が含まれます。

NN: フィードフォワード BP ニューラル ネットワークのライブラリ

CNN: 畳み込みニューラルネットワークのライブラリ

DBN: ディープビリーフネットワークのライブラリ

SAE: スタック型オートエンコーダのライブラリ

CAE: 畳み込みオートエンコーダのライブラリ

Util : ライブラリで使用されるユーティリティ関数

データ:データ保存

テスト: ツールキットが動作していることを確認するためのテスト

ケースは以下のとおりです

  1. rand( '状態' , 0 )
  2.   
  3. cnn.レイヤー = {
  4.   
  5. 構造体( 'type' , 'i' )% 入力
  6.   
  7. struct( 'type' , 'c' , 'outputmaps' , 6 , 'kernelsize' , 5 )%畳み込み層
  8.   
  9. struct( 'type' , 's' , 'scale' , 2 )% ダウンサンプリングレイヤー
  10.   
  11. struct( 'type' , 'c' , 'outputmaps' , 12 , 'kernelsize' , 5 )%畳み込み層
  12.   
  13. struct( 'type' , 's' , 'scale' , 2 )% ダウンサンプリングレイヤー
  14.   
  15. };
  16.   
  17. cnn = cnnsetup(cnn, train_x, train_y); opts.alpha = 1 ;
  18.   
  19. バッチサイズ = 50 ;
  20.   
  21. opts.numepochs = 5 ;
  22.   
  23. cnn = cnntrain(cnn, train_x, train_y, opts); CNN_5 cnnを保存します。
  24.   
  25. CNN_5をロードします。
  26.   
  27. [er、bad] = cnntest(cnn、test_x、test_y); 図; プロット(cnn.rL);
  28.   
  29. assert (er< 0.12 , 'エラーが大きすぎます' );

操作インターフェースは比較的シンプルです。

パイトーチ

Pytorch ライブラリについては、実はあまり使っていません。気軽に試した程度です。個人的には触らないほうがいいと思います。面白くないですから。以下で簡単に触れるだけにします。 これは、2 種類のユーザーを対象とした Python ベースの科学計算パッケージです。 1 つは GPU を使用して numpy を置き換えることです。もう 1 つは、最大限の柔軟性と速度を提供するディープラーニング レスキュー プラットフォームです。

ディープラーニングの場合、torch.nn パッケージを使用してニューラル ネットワークを構築できます。 autograd パッケージはすでに知られています。nn パッケージは、モデルの定義と導関数の実行に autograd パッケージに依存しています。 nn.Module には、レイヤーと、出力を返す faward(input) メソッドが含まれています。

ケースは以下のとおりです

  1. torch.autogradからtorchをインポートします
  2.  
  3. 変数インポートtorch.nn
  4.  
  5. torch.nn.function を F としてインポートします
  6.  
  7. クラスNet(nn.Module):
  8.  
  9. def __init__(自己):
  10.  
  11. super(Net, self ).__init__()
  12.  
  13. # 入力画像チャネル 1 つ、出力チャネル 6 つ、5*5 平方畳み込み 
  14.  
  15. # カーネル 
  16.  
  17. 自己.conv1 = nn.Conv2d( 1 , 6 , 5 )
  18.  
  19. 自己.conv2 = nn.Conv2d( 6 , 16 , 5 )
  20.  
  21. # アフィン演算: y = Wx + b  
  22.  
  23. 自己.fc1 = nn.Linear( 16 * 5 * 5 , 120 )
  24.  
  25. 自己.fc2 = nn.Linear( 120 , 84 )
  26.  
  27. 自己.fc3 = nn.Linear ( 84,10 )
  28.  
  29. def forward(自己, x ):
  30.  
  31. # (2, 2) ウィンドウ上の最大プーリング 
  32.  
  33. x = F.max_pool2d(F.relu( self .conv1(x)), ( 2 , 2 ))
  34.  
  35. # サイズが正方形の場合は、1つの数値のみ指定できます 
  36.  
  37. x = F.max_pool2d(F.relu( self .conv2(x)), 2 )
  38.  
  39. x = x.view(- 1 ,自己.num_flat_features(x))
  40.  
  41. x = F.relu(自己.fc1(x))
  42.  
  43. x = F.relu(自己.fc2(x))
  44.  
  45. x =自分.fc3(x)
  46.  
  47. xを返す
  48.  
  49. num_flat_featuresを定義します( self , x):
  50.  
  51. サイズ = x.size()[ 1 :]
  52.  
  53. # バッチディメンションを除くすべてのディメンション 
  54.  
  55. 特徴数 = 1           
  56.  
  57. サイズs場合:
  58.  
  59. num_features *= s
  60.  
  61. num_featuresを返す
  62.  
  63. ネット = ネット()
  64.  
  65. 印刷(ネット)

具体的な操作や詳しい手順については、興味のある方は実際に触ってみてください!

カフェ

Caffe の作者はカリフォルニア大学バークレー校の Yangqing Jia です。 Caffe は、コマンドライン、Python、Matlab インターフェースをサポートし、CPU/GPU 上で実行できる C++/CUDA フレームワークです。

ディープラーニングは絶えず発展しており、それに対応する実験ツールも注目を集めています。 Caffe は、人気のディープラーニング フレームワークの 1 つです。ツールにはテンプレートがあらかじめ用意されているため、ツールには既製のプログラミング フレームワークがあり、現在人気のグラフィックス コンピューティング GPU と組み合わせて使用​​することで、ネットワーク トレーニングを高速化できます。人気のニューラル ネットワーク フレームワーク アルゴリズムはすべて Caffe で実行でき、Caffe ではさまざまな構造があらかじめ定義されているため、独自のフレームワークをセットアップできます。研究者は、独自の設計要件に基づいて対応する追加を行い、必要なタスクを完了するための新しいディープラーニング フレームワークを設計することもできます。

Caffe フレームワークには、 BlobsLayersNetsという 3 つの主要な構造があります。これらは事前定義された構造であるため、フレームワークを使用するときに変更することはできません。

ブロブ

Blob は Caffe フレームワークの主要な構造です。これはラッパーです。Caffe フレームワークを使用する場合、データをフォーマットする必要があります。このようなデータ形式のみが Caffe フレームワークで実行および処理できます。さらに、Caffe の設計時には、多くの関数とクラスが事前に設計されており、実行中にその構造を変更することはできず、そうしないとその中の関数を呼び出すことができず、ネットワークのトレーニングが失敗します。

Blob のフォーマットは、主に数値、チャンネル、高さ、幅の 4 つの要素で構成されています。画像処理を行う場合、画像チャンネルを表します (一般的に、カラー画像は 3 チャンネル データであり、高さと幅は入力データのサイズを表します)。要素に関しては、主にトレーニング プロセスに反映されます。トレーニング中に、一度にどのくらいのデータを入力するか、つまり、一度に入力するデータの数 (通常はバッチと呼ばれます) を選択する必要があるためです。このトレーニング方法は、メモリ不足を大幅に緩和することもできます。

レイヤー

レイヤーは、Caffe フレームワークのネットワークの重要な構造の 1 つです。ネットワークは、入力データと出力データを受け取り、最終的に内部計算によって出力するレイヤーの役割によって構成されます。 Caffe がネットワーク層を使用する場合、その定義は特に単純かつ明確であり、おおよそ次の 3 つの小さなステップに分かれています。
1) ネットワーク層と層間の接続関係を確立します。ランダム初期化操作を通じて、一部のネットワーク層変数を初期化できます。
2) ネットワークのトレーニングプロセスでは、まず順方向伝播が計算されます。修正プロセスでは、レイヤーは前のレイヤーの出力データをこのレイヤーの入力データとして受け入れ、最後に内部の
計算結果が出力されます。
3) 順方向伝播後、得られた結果が期待と大きく異なるため、最良の結果を得るために、前述の逆方向伝播を通じてネットワークパラメータ値が調整されます。
メリット値、およびバックプロパゲーション計算中に、レイヤーは各計算の勾配値をこのレイヤーに保存します。

ネット

先ほど紹介したレイヤーはネットのサブ要素です。ネット全体は複数のレイヤーを組み合わせて接続することで得られます。この構造では、ネットはネットワークのレイヤー、入力、出力を定義します。

たとえば、Caffe の最も基本的な隠し層ネットワークは次のように定義されます。

  1. 名前: "LogReg"
  2. レイヤー
  3. 名前: 「mnist」
  4. タイプ: データ
  5. 上部:「データ」
  6. 上部:「ラベル」
  7. データパラメータ {
  8. ソース: "input_leveldb"
  9. バッチサイズ: 64   
  10. }}
  11.  
  12. レイヤー
  13. 名前: 「ip」
  14. タイプ: INNER_PRODUCT
  15. 下部:「データ」
  16. 上: 「ip」
  17. 内部製品パラメータ {
  18. 出力数: 2   
  19. }}
  20.  
  21. レイヤー
  22. 名前: 「損失」
  23. タイプ: SOFTMAX_LOSS
  24. 下部:「ip」
  25. 下部:「ラベル」
  26. 上:「損失」
  27. }

カフェのメリット

  • オープンソース フレームワークである Caffe の表現構造は、より多くの人々が革新、変更、改善し、実際に適用することを促進できるため、多くの研究者や学者に愛されています。このフレームワークでは、対応する操作を取得するためにハードコーディングを必要とする他のツール フレームワークとは異なり、ネットワーク モデル、設計、および最適化プロセスはすべて命令によって呼び出され、実行されます。さらに、Caffe アプリケーションでは、CPU 中央処理装置と GPU グラフィックス画像処理ユニットを学習に使用でき、GPU マシンにコマンドを設定することで 2 つのプロセッサを相互に切り替えることができます。また、ネットワークのトレーニング速度の向上、トレーニング時間の短縮、ネットワークのトレーニング効率の向上、ネットワークのさらなる微調整が可能になるため、GPU の使用は一般的に増加しています。

  • オープンソースフレームワークの利点は、誰でも拡張できることです。そのため、Caffe は独自の開発を推進してきました。Jia Yangqing が Caffe を作成した後、わずか 1 年で数千人の研究愛好家が開発に参加し、現在も最適化と開発が続けられている完璧なディープラーニングフレームワークに大きく貢献しました。

  • ネットワーク モデルはコード形式で表現する必要がなく、テキスト形式でのみ表現でき、モデルは Caffe フレームワークで定義されているため、簡単に始めることができます。

  • Caffe は学術機関や産業関連部門の研究室で使用されています。 Caffe は NVIDIA GPU で使用されるため、非常に高い効率を実現できます。 NVIDIA社製のK40グラフィックスイメージプロセッサを使用して画像のトレーニングを行った実験では、1日で6000万枚以上のトレーニング画像を実行できたとのこと。現在のパフォーマンス速度は、一般的に使用されているディープラーニング フレームワークの中で最も高速なフレームワークの 1 つと言えます。

  • Caffe では各レイヤーのタイプが定義されているため、他のタスクでも迅速かつ簡単に使用でき、簡単な呼び出しで独自の設計のネットワーク モデルを定義するだけで済みます。

TF

Google は 2011 年に人工ディープラーニング システムである DistBelief を立ち上げました。 DistBelief を使用すると、Google はデータセンター内の何千ものコアをスキャンし、より大規模なニューラル ネットワークを構築できます。このシステムにより、Google アプリの音声認識が 25% 向上し、Google フォトに画像検索機能が構築され、Google の画像キャプション マッチング実験が促進されます。 DistBelief にはまだ多くの欠点と制限があります。設定が難しく、Google の内部インフラストラクチャに密接に結び付けられていたため、研究コードの共有は不可能でした。

上記の問題に対応して、Google は 2015 年に Google Research Blog で新世代の人工知能学習システムである TensorFlow のリリースを発表しました。

TensorFlow は、異種分散システム向けの大規模機械学習フレームワークです。優れた移植性 (携帯電話のような小型のモバイル デバイスから大規模なクラスターまでサポート可能) を備え、さまざまなディープラーニング モデルをサポートしています。 Google によれば、TensorFlow は包括的、柔軟、移植性があり、使いやすく、さらに重要なことにオープンソースです。同時に、TensorFlow の速度は前世代の DistBelief と比べて大幅に向上しました。いくつかのベンチマークテストでは、TensorFlow のスコアは第 1 世代システムの 2 倍です。

それにもかかわらず、TensorFlow はまだ他のほとんどのオープンソース フレームワークほど効率的ではありません。しかし、TensorFlow のソースコードが徐々に公開されるにつれて、新しいハードウェア、新しいデバイス、cuDNN などの新しいアクセラレーションのサポートが増え続けており、現時点で最も有望なディープラーニング手法となっています。

ご興味があれば、PlayGround をお試しください。これは、教育目的でシンプルなニューラル ネットワークのオンライン デモンストレーションと実験を行うためのグラフィカル プラットフォームです。ニューラル ネットワークのトレーニング プロセスを非常に強力に視覚化します。ブラウザでニューラル ネットワークをトレーニングし、Tensorflow を知覚的に理解するために使用できます。

TFのデメリット

  • TensorFlow の各計算フローは静的グラフとして構築する必要があり、シンボリック ループがないため、計算上の困難が生じます。

  • ビデオ認識に非常に役立つ 3D 畳み込みがありません。

  • TensorFlow は初期バージョンより 58 倍高速になりましたが、実行パフォーマンスでは依然として競合他社に遅れをとっています。

今日はここまでにしましょう。たくさん話しましたが、あまり深くは話せませんでした。機会があれば、ディープラーニングツールに関する特別なトピックを設けて、一緒に話しましょう!

<<:  地下鉄も自動運転となり、国内最速の鉄道客車が北京で公開される。

>>:  Google Brain の公開: アルゴリズムのエラー修正と AI バイアスの解決に重点を置く

ブログ    
ブログ    
ブログ    

推薦する

...

機械学習とディープラーニングの5つの主な違い

前回のシリーズの記事「機械学習とディープラーニングの違いは何でしょうか?」に続き、簡単に説明した後、...

...

...

この AI 商用リストをお見逃しなく: 生産上の問題はアプリケーションで解決できるかもしれません (続き)

[[220537]]リアム・ヘーネル編纂者:趙怡雲、江宝尚、銭天培新年を前に、温翁氏は音声認識から...

北京が初の政策実験区を設置:自動運転は今年中に試験運用へ

車に乗り込み、コードをスキャンすると、運転手が操作しなくても黒い「タクシー」が動き出す。横断歩道では...

パイプラインロボットは都市の安全を守り、夏の雷雨も恐れない

夏がまたやって来て、雷雨がまた虫を追い払います。最近では、夏の気温が上昇し続けているため、雨天が多く...

Torch7 オープンソース PyTorch: Python ファーストのディープラーニング フレームワーク

PyTorch は、次の 2 つの高レベル機能を提供する Python パッケージです。強力な GP...

アルゴリズムの練習とプログラミング学習に最適な 6 つの Web サイト

Google や Facebook のアルゴリズムを理解しなければ、面接に合格することはできません。...

調査によると、中国の従業員の88%が人間の上司よりもロボットを信頼している

[[279631]]中国の従業員は職場でロボットをより信頼しているのでしょうか?調査によると、中国の...

顔認識ブームは沈静化すべきでしょうか?

北京地下鉄は昨年11月から、セキュリティチェックに顔認識技術を使用する試験運用を開始し、ブラックリス...

2021年の中国の医療人工知能産業の展望

医療用人工知能製品は多様化しており、下流の需要は強い医療人工知能産業の上流は、主に医療データマイニン...

超速い! ByteDanceが配列推論エンジンLightSeqをオープンソース化

これは、Transformer や GPT などの複数のモデルの高速推論を完全にサポートする業界初の...

Python を使用したソーシャル メディア感情分析の入門

[[265146]]自然言語処理の基礎を学び、2 つの便利な Python パッケージを調べます。自...