2015年11月9日、Googleは人工知能システムTensorFlowをリリースし、オープンソース化を発表しました。この動きはディープラーニングの分野に大きな影響を与え、多くのディープラーニング開発者から大きな注目を集めました。もちろん、人工知能の分野については依然として多くの疑問が残っていますが、人工知能が依然として将来の発展のトレンドであることは否定できません。 TensorFlow は、GitHub でリリースされたその日に最も人気のあるプロジェクトになりました。ディープラーニング モデルを構築する最良の方法であり、ディープラーニング フレームワークのリーダーとして、リリースの週に 10,000 を超える星評価を簡単に獲得しました。これは主に、Google の人工知能分野における目覚ましい研究開発の成果と、神レベルの技術人材プールによるものです。もちろん、囲碁で初めて人間に勝利し、その後60戦無敗の記録を維持したAlphaGoも、TensorFlowの高レベルAPIをベースにした強化学習フレームワークを使用していたという点もポイントです。 TensorFlow: なぜですか?データフローグラフを計算に利用するTensorFlowは、Googleの第2世代DLフレームワークとして、機械学習やディープラーニングの分野で最も人気のあるフレームワークの1つとなっています。 TensorFlowはリリース以来、継続的に改善され、新機能が追加されてきました。今年2月26日、マウンテンビューで開催された第1回TensorFlow Developer Summitで、TensorFlow 1.0が正式にリリースされました。その最大のハイライトは、モデルの最適化によって最速の速度を実現し、信じられないほど高速であることです。さらに予想外なのは、多くの支持者がTensorFlow 1.0のリリースをAI元年の定義としていることです。
TensorFlow は過去に次のような成果を達成しています。
Google の第 1 世代の分散型機械学習フレームワーク DistBelief は、Google の社内ニーズを満たさなくなりました。Google の同僚は DistBelief を再設計して、CPU/GPU/TPU を含むさまざまなコンピューティング デバイスのサポートを導入し、Android デバイス、iOS、Raspberry Pi などのモバイル デバイスで適切に実行でき、さまざまな言語をサポートしました (さまざまな高レベル API のため、トレーニングは Python のみをサポートし、推論は C++、Go、Java などを含むサポート)。また、TensorBoard などの優れたツールも含まれており、ディープラーニング研究者の効率を効果的に向上できます。 Google の社内プロジェクトにおける TensorFlow の応用も急速に拡大しており、Gmail、Google Play のおすすめ、検索、翻訳、マップなど、多くの Google 製品で使用されており、関連作業に TensorFlow を使用しているプロジェクトや論文は 100 件近くあります。 TensorFlow は、公式リリース前の過去 14 か月間で、475 人以上の非 Google コントリビューター、14,000 件以上のコミット、タイトルに TensorFlow が含まれる 5,500 件以上の github プロジェクト、Stack Overflow での 5,000 件以上の回答済み質問、週平均 80 件以上の問題提出など、多くの成果を達成しており、いくつかのトップクラスの学術研究プロジェクトで使用されています: – ニューラル機械翻訳 – ニューラル アーキテクチャ検索 – Show and Tell。 もちろん、最終的には、ディープラーニングは、教師なしまたは半教師ありの特徴学習、階層的特徴抽出、大学のアルゴリズムを使用して、手動の特徴取得を置き換えることになります。現在、ディープラーニングに携わる研究者や開発者が使用するディープラーニングフレームワークは TensorFlow だけではありません。視覚、言語、自然言語処理、バイオインフォマティクスの分野でも、Torch、Caffe、Theano、Deeplearning4j など、優れたフレームワークが数多く存在します。 以下では、ネットワーク ニューラル モデルとアルゴリズムの詳細な分析を提供する Duan Shishi のブログ投稿の一部を編集者がまとめ、オープンソースのディープラーニング フレームワークである TensorFlow の威力を理解できるようにしています。 ニューラルスタイルへの深い理解この記事では、主に Tensorflow の CNN メソッドを使用して、芸術的な写真に対して Neural Style 関連の作業を実行します。まず、著者は論文「芸術的スタイルのニューラルアルゴリズム」がどのように作られたかを詳しく説明し、次にオープンソースの Tensorflow Neural Style バージョンを組み合わせて、偉大な神のスタイルを鑑賞します。 芸術スタイルのニューラルアルゴリズム 芸術、特に絵画の分野では、アーティストはさまざまなコンテンツやスタイルを作成し、それらを融合したり影響を与えたりすることで、独立した視覚体験を生み出します。現在の技術では、2 つの画像が与えられた場合、コンピューターが画像の特定の内容を認識できるようにすることが十分に可能です。スタイルは非常に抽象的なものです。コンピューターの目には、もちろん数ピクセルに過ぎませんが、人間の目は、異なる画家の異なるスタイルや、より複雑な特徴があるかどうかを効果的に区別することができます。私が初めてディープラーニングの論文を研究したとき、多層ネットワークの本質は、実際にはより複雑で本質的な特徴を見つけることであるため、理論的には、画像のスタイルを多層ネットワークを通じて抽出し、いくつかの興味深いものを抽出できます。この記事では、畳み込みニューラル ネットワーク (事前トレーニング済みの VGG ネットワーク モデルを使用) を使用してコンテンツとスタイルをそれぞれ再構築し、合成中のコンテンツ損失とスタイル損失 (実際にはノイズ除去損失も含む) を最小限に抑えることを検討します。このようにして、合成された画像は、コンテンツとスタイルのより正確な再構築を保証します。
方法上記 2 つのポイントを理解した後、残る問題はモデリングのデータの問題です。ここでは、コンテンツとスタイルに応じて損失を個別に計算します。コンテンツ損失の方法は比較的簡単です。 ここで、F^l は l 番目のレイヤーで生成されたコンテンツ表現のデータ表現、P^l は l 番目のレイヤーでの元の画像のデータ表現、二乗誤差損失は 2 つの特徴表現間の誤差として定義されます。 スタイル損失は基本的にコンテンツ損失と同じですが、各レイヤーによって出力されるエラーの合計が含まれる点が異なります。 ここで、A^l は l 番目のレイヤーの元のスタイル イメージのデータ表現であり、G^l は l 番目のレイヤーで生成されたスタイル表現の表現です。 損失を定義した後、最適化手法を使用してモデル損失を最小限に抑えます (論文ではコンテンツ損失とスタイル損失のみがあることに注意してください)。ソース コードにはノイズ低減損失も含まれています。 Tensorflow にはこれを処理するための Adam などの組み込みメソッドがあるため、ここでは最適化方法については説明しません。 AlexNetの深い理解これまでに Tensorflow のドキュメントや興味深いプロジェクトをいくつか読んだことがありますが、非常に複雑であることがわかりました。最初から理解するには、特に興味のある cv の部分について、もっと時間をかけて理解する必要があります。今後は、ImageNet コンテストで良い結果を出したモデル、AlexNet、GoogLeNet、VGG (そうです、これは以前のニューラル ネットワークで使用された事前トレーニング済みモデルです)、およびディープ残差ネットワークについてさらに学習し始めます。 深層畳み込みニューラルネットワークによる ImageNet 分類 ディープ畳み込みニューラルネットワークによる ImageNet 分類は、2012 年の ImageNet チャレンジで Hinton 氏と彼の学生 Alex Krizhevsky 氏が使用したモデル構造であり、画像分類の可能性を一新しました。それ以来、ディープラーニングは画像分野の最先端技術を何度も上回り、人間に勝つところまで到達しました。この記事を読んでいると、以前から散発的に目にしていた最適化手法が数多く見つかりましたが、その多くは深く理解されていませんでした。この記事では、Alexnet がどのようにしてこのような優れた結果を達成できるかを説明します。さて、これ以上前置きせずに、記事を読み始めましょう。 この図は、caffe の alexnet の基本的なネットワーク構造です。ここでは比較的抽象的です。著者は、caffe の draw_net を使用して alexnet のネットワーク構造を描画します。 AlexNetの基本構造Alexnet は合計 8 つの層で構成されており、最初の 5 つは畳み込み層、最後の 3 つは完全接続層です。記事によると、畳み込みを減らすと結果が非常に悪くなるとのことです。以下は、各層の構成の詳細な説明です。
論文では、この図は2つのGPUで作成されたものであり、CaffeのAlexnetといくつかの違いがあるかもしれないが、これは重要ではないかもしれないと指摘しています。使用時には、CaffeのAlexnetのネットワーク結果を直接参照できます。各レイヤーは非常に詳細であり、基本的な構造の理解は上記と一致しています。 AlexNetが優れた成果を達成した理由これまでAlexNetの基本的なネットワーク構造についてお話ししてきました。LRN、Relu、ドロップアウトなど、いくつか疑問に思う点があるかと思います。dlに触れたことのある方なら聞いたことがある、もしくは理解したことがあると思います。ここでは、論文に記載されているように、これらのことが最終的なネットワークのパフォーマンスを向上させることができる理由を詳しく説明します。 ReLU非線形性一般的に、ニューラル ネットワークに触れたばかりで、ディープラーニングをまだ深く理解していない人にとっては、これはあまり馴染みのないものです。一般的には、他の 2 つの活性化関数 (ニューラル ネットワークに非線形関係を導入して、ニューラル ネットワークが非線形関数を効果的に適合できるようにするもの) tanh(x) と (1+e^(-x))^(-1)、および ReLU (Rectified Linear Units) f(x)=max(0,x) の方が馴染みがあります。 ReLU に基づく深層畳み込みネットワークのトレーニングには、tanh に基づくネットワークよりも数倍の時間がかかります。次の図は、CIFAR-10 に基づく 4 層畳み込みネットワークが tanh と ReLU の 25% のトレーニング エラーに到達するまでにかかる反復回数を示しています。 実線と破線はそれぞれReLUとtanhのトレーニング誤差を表しています。ReLUはtanhよりも速く収束できることがわかります。 ローカルレスポンスの正規化ReLU f(x)=max(0,x) を使用すると、活性化関数後の値は tanh 関数やシグモイド関数のような値の範囲を持たないことがわかります。そのため、通常は ReLU 後に正規化が行われます。LRU は、この記事で提案されている方法です (ここではよくわかりませんが、提案するべきでしょうか?)。神経科学には、「側方抑制」と呼ばれる概念があり、これは、アクティブなニューロンが周囲のニューロンに与える影響について説明しています。 ドロップアウトドロップアウトもよく言及される概念であり、ニューラル ネットワークの過剰適合を効果的に防ぐことができます。 正規化を使用してモデルの過剰適合を防ぐ一般的な線形モデルと比較して、ニューラル ネットワークのドロップアウトは、ニューラル ネットワーク自体の構造を変更することによって実現されます。あるニューロン層では、入力層と出力層の個々のニューロンは変更せずに、定義された確率で一部のニューロンがランダムに削除され、その後、ニューラル ネットワークの学習方法に従ってパラメータが更新されます。次の反復では、トレーニングが完了するまで、一部のニューロンが再びランダムに削除されます。 データ拡張実際、モデルのパフォーマンスを向上させ、モデルのオーバーフィッティングを防ぐ最も簡単な方法は、データを追加することです。ただし、データを追加するための戦略があります。論文では、256 * 256(論文では224 * 224)から227 * 227のパッチをランダムに提案し、PCAを通じてデータセットを拡張します。これにより、データ セットが効果的に拡張されます。実際、明るさの増減などの基本的な画像変換や、フィルタリング アルゴリズムなど、ビジネス シナリオに応じて使用できる方法は他にもあります。これは、特にデータ量が十分でない場合に特に効果的な方法です。 GoogLeNetの深い理解GoogLeNetはILSVRC 2014のチャンピオンです。これは主に古典的なLeNet-5アルゴリズムへのオマージュです。これは主にGoogleチームのメンバーによって完成されました。論文Going Deeper with Convolutionsを参照してください。関連する作業には主にLeNet-5、ガボールフィルター、Network-in-Networkが含まれます。Network-in-Networkは従来のCNNネットワークを改良し、少数のパラメータでAlexNetネットワークを簡単に打ち負かしました。Network-in-Networkを使用したモデルの最終的なサイズは約29MNetwork-in-Network caffeモデルです。GoogLeNetはNetwork-in-Networkのアイデアを借用しました。これについては以下で詳しく説明します。 1) ネットワークインネットワーク左側は CNN の線形畳み込み層です。一般的に、線形畳み込み層は線形に分離可能な特徴を抽出するために使用されます。ただし、抽出された特徴が高度に非線形である場合、さまざまな潜在的な特徴を抽出するために、より多くのフィルターが必要になります。これにより、フィルターが多すぎるとネットワーク パラメーターが多くなりすぎて、ネットワークが複雑になりすぎて、計算に過度の負担がかかるという問題が発生します。 この記事では、主に次の 2 つの点で改善を行っています。
最後に、著者は、イメージネット分類問題を解決するために、4 層のネットワークインネットワーク + グローバル平均プーリング層を設計しました。
ネットワークの基本的な結果は上記の通りで、コードは https://github.com/ethereon/caffe-tensorflow にあります。著者の最近の転職により、この記事を実行するマシンが無く、基本的なネットワーク構造図を描くことができません。後ほど補う予定です。ここで提案されているのは、中間の cccp1 と ccp2 (クロス チャネル プーリング) が 1*1 カーネル サイズの畳み込み層と同等であるということです。 Caffe での NIN の実装 (省略しました。原文を読んでください) NIN の導入は、実はネットワークの深さを深くすることとみなすことができます。ネットワークの深さを深くし (単一の NIN の特徴表現能力を高める)、元の完全接続層を aver_pool 層に変換することで、本来必要だったフィルターの数が大幅に減り、モデルのパラメータも減ります。論文の実験では、パフォーマンスはAlexnetと同じであり、最終的なモデルサイズはわずか29Mであることが示されています。 NIN を理解すれば、GoogLeNet を見るときに混乱することはなくなります。 問題点:
インセプションモジュールInception モジュールは、主に、異なるサイズの複数の畳み込みカーネルが画像内の異なるクラスターの情報を保持できることを考慮して提案されています。計算の便宜上、この論文ではそれぞれ 1*1、3*3、5*5 を使用し、3*3 最大プーリング モジュールを追加しています。 ただし、ここでは大きな計算リスクがあります。Inception モジュールの各レイヤーの出力フィルターは、すべてのブランチのフィルターの数の合計になります。複数のレイヤーの後、最終モデルの数は膨大になり、ナイーブな Inception はコンピューティング リソースに大きく依存するようになります。 前述のように、1×1 モデルである Network-in-Network モデルは次元を効果的に削減できる (少ない次元でできるだけ多くの情報を表現できる) ため、この記事では、モデルの機能表現能力を失うことなくフィルターの数を最小限に抑え、モデルの複雑さを軽減する「次元削減機能を備えたインセプション モジュール」を提案しています。 GoogLeNetの全体GoogLeNet を tensorflow で構築するための基本コードは https://github.com/ethereon/caffe-tensorflow にあります (探すのが面倒な場合は、元のテキストに示されています)。著者はいくつかの基本的な操作をカプセル化しています。ネットワーク構造を理解すれば、GoogLeNet を構築するのは簡単です。新会社が設立された後、著者はtflearnをベースにGoogLeNetのネットワークコードを作成しようとします。 Tensorflow 上の GoogLeNet実装の都合上、著者はGoogLeNetをtflearnで書き直した。コードとcaffeモデルの違いは、一部パディングの位置のみ。変更が面倒なので、inception部分のconcatは一貫性を保たなければならない。ここ(caffe prototxt)のパディング値の変更方法が分からないので、パディングは同じにしている。具体的なコード(省略、原文はそのまま) ご興味があれば、caffe モデルの prototxt のこの部分をご覧ください。問題がないか確認してください。コード作成者は tflearn の公式ライブラリに提出しており、例に GoogLeNet(Inception) を追加してください。tensorflow をお持ちの場合は、tflearn を直接インストールして、問題がないか確認してください。ここには GPU マシンがないため、動作が遅いです。TensorBoard グラフは次のとおりです。以前の Alexnet ほど明白ではありません (主に、それほど多くのエポックを実行していないためです。ここに書いているときに、ホストにディスク領域がないことがわかりました。恥ずかしかったので、restore を run に書き直しました。TensorBoard グラフにも問題があるようです。ロードするたびに同じではないようです。しかし、基本的なログから、徐々に収束しています。ここにグラフがありますのでご覧ください) ネットワーク構造、ここにバグがあります、それは TensorBoard かもしれません、googlenet グラフが大きすぎるかもしれません、約 1.3M、Chrome ではダウンロードできません、Firefox を試してみましたが、できるようです: VGG\Residual Networkの深い理解私は新しい会社に入社したばかりで、仕事で DeepLearning と TensorFlow を勉強し始めました。とても忙しいです。しばらく前に VGG と deep residual に関する論文を読みましたが、それを書く時間がありませんでした。今日は、これら 2 つの関連論文を注意深く読み直すつもりです。 VGGネットVGGnet は、オックスフォード大学の Visual Geometry Group チームが ILSVRC 2014 で行った関連研究です。主な研究は、ネットワークの深さを増やすと、ネットワークの最終的なパフォーマンスにある程度影響を与えることができることを証明することです。下の図に示すように、この記事では、ネットワークの深さを徐々に増やすことでパフォーマンスを向上させています。少し乱暴に見え、トリックもあまりありませんが、確かに効果的です。多くの事前トレーニング済みメソッドは、VGG モデル (主に 16 と 19) を使用します。他のメソッドと比較して、VGG はパラメーター空間が大きくなっています。最終モデルは 500 m 以上、alnext は 200 m のみ、googlenet はさらに少ないため、通常、vgg モデルのトレーニングには時間がかかります。幸いなことに、非常に便利に使用できる公開事前トレーニング済みモデルがあります。以前のニューラル スタイルの記事で使用した事前トレーニング済みモデルは次のとおりです。 図からわかるように、Aから最後のEまで、各畳み込みグループ内の畳み込み層の数を増やしています。最後に、DとEは、共通のVGG-16とVGG-19モデルです。Cでは、著者は1*1の導入は線形変換を考慮するためであると説明しています(ここではチャネルは一貫しており、次元削減は行われません)。その後、最終データの分析では、CはBよりもある程度の改善が見られますが、Dほどではありません。VGGの主な利点は次のとおりです。
VGG-16 tflearn 実装tflearnの公式githubは、将来のインポート分割、print_function、absolute_importからtflearnに基づいたVGG-16の実装を提供しています。
VGG-16 グラフは次のとおりです。 VGGに関しては、筆者は個人的には目玉となる点があまりないと感じています。事前学習済みのモデルも十分使えますが、GoogLeNetほど目を引くものではありません。 ディープ残差ネットワーク一般的に、ネットワークが深くなるほど、トレーニングが難しくなります。画像認識のための Deep Residual Learning は、モデル ネットワークのトレーニング時間を大幅に簡素化できる残差学習フレームワークを提案しており、許容時間内にモデルをより深く (1000 回試行しても 152 回) することができます。この方法は、ILSVRC2015 で最高の結果を達成しました。 モデルの深さが増すにつれて、次の問題が発生します。
深さの増加によって引き起こされるパフォーマンス低下の問題を解決するために、著者は残差学習に次の構造を提案します。 潜在的なマッピングが H(x) であると仮定して、積み重ねられた非線形レイヤーを使用して F(x):=H(x)-x を適合させます。残差の最適化は H(x) の最適化よりも簡単です。 F(x)+xは「ショートカット接続」を通じて簡単に実装できます。 この記事の主な改良点は、従来の畳み込みモデルに残差学習を追加し、残差最適化を通じてほぼ最適な恒等マッピングを見つけることです。 論文中のネットワーク構造: Deep Residual Network tflearn の実装については、元の論文で詳しく説明されています。 高速ニューラルスタイルを理解する前回の記事では、コンピュータ ビジョンの分野でよく使用されるモデルについて説明しました。次の期間では、著者は主に関連論文とソース コードを分析しながら、コンピュータ ビジョンの分野での TensorFlow のいくつかのアプリケーションを学習します。今日は、高速ニューラル スタイルの関連作業について詳しく学習します。ニューラル スタイルのコンテンツを分析した以前の記事もあります。その記事はニューラル スタイルの起源と見なされていますが、実際の作業には適用できません。なぜでしょうか。毎回コンテンツの画像とスタイルの画像を指定してから、画像を生成し、特定のスタイルのモデルを保存することはできません。現在、多くの大規模なインターネット企業、特にビデオウェブサイトで使用されています。 紙の原則数ヶ月前、私は神経スタイル、Tensorflow:神経スタイルの詳細な理解、多層畳み込みネットワークを構築し、定義されたコンテンツの損失とスタイルの損失を使用することで非常に興味深いものを最小限に抑えることで、コンテンツとスタイルを組み合わせた画像を生成しました。 GGモデルは、元の損失計算を簡素化し、変換ネットワークを追加し、以下の図をどのように確認してください。 ネットワーク全体は、画像変換ネットワークで構成されています。イメージは、入力画像(コンテンツ画像)をスタイルで直接変換するために使用されます。変換された画像を取得すると、対応する損失が計算されます。 損失の計算は、以前のコンテンツ損失と非常に似ています。 スタイルの損失: スタイル損失のグラムマトリックス: グラムマトリックスは非常に重要なものであり、y^hatとyが同じ形状を確実にすることができます。グラムの説明はこの論文で詳しく説明していますが、読者はそれを一目で理解すると思います。 私はこれを読んだ後、あなたは基本的にこの論文が速いニューラルスタイルでどのように行われるかを理解していると信じています。
注:この記事の技術コンテンツは、ディープラーニングエンジニアのデュアンシシによる公開を許可されています。ディープラーニングプラクティスについて詳しく知りたい場合は、 Xiao Shitouのコードキャンプにアクセスして読んでください。 【編集者のおすすめ】
[編集者:林世寿 TEL: (010) 68476606] |
<<: ロボットにとっては、這う方が移動には良い方法かもしれない
>>: 人工知能が人間の仕事の6%を奪い、置き換える可能性がある
インテリジェントロボットはインテリジェント製品の代表的なものです。知能ロボットには、少なくとも以下の...
著者 | 崔昊レビュー | Chonglou一般的なモデルは優れていますが、技術者は、独自の大規模な...
JLLの新しいグローバルデータセンター展望によると、クラウドコンピューティングと人工知能(AI)の大...
OpenAI 開発者関係の専門家 Logan Kilpatrick 氏は、ソーシャル メディアに「...
大企業がこのビジネスに参入し始めています! ByteDance と Alibaba のツールが人気を...
実のところ、誰もが詐欺防止を必要としているわけではありません。金融機関が最新の犯罪手法に追いつこうと...
ChatGPTはリリースされてから9か月が経ちました。この 9 か月間、この驚異的なアプリケーショ...
太陽光発電と風力発電は急成長しているが、世界の再生可能電力への移行は、気候目標を迅速に達成するにはま...
機械学習では、モデルをトレーニングするために大量のデータが必要であり、通常、このトレーニング データ...
顔認識技術は人間の顔の特徴に基づいています。まず、入力された顔画像またはビデオ ストリームに顔がある...
AIがさまざまな科学分野と融合するにつれ、可能性と課題に満ちた技術革命が起こっています。 AI は...