Python-deep-learning-deep-neural-networks

提供:Dev Guides
移動先:案内検索

ディープニューラルネットワーク

ディープニューラルネットワーク(DNN)は、入力層と出力層の間に複数の隠れ層を持つANNです。 浅いANNと同様に、DNNは複雑な非線形関係をモデル化できます。

ニューラルネットワークの主な目的は、入力のセットを受け取り、それらに対して徐々に複雑な計算を実行し、出力を提供して分類などの現実の問題を解決することです。 ニューラルネットワークのフィードフォワードを制限します。

ディープネットワークには、入力、出力、およびシーケンシャルデータのフローがあります。

ディープネットワーク

ニューラルネットワークは、教師あり学習および強化学習の問題で広く使用されています。 これらのネットワークは、相互に接続された一連のレイヤーに基づいています。

深層学習では、ほとんどが非線形である隠れ層の数が多くなる可能性があります。約1000層と言います。

DLモデルは、通常のMLネットワークよりもはるかに優れた結果をもたらします。

ネットワークの最適化と損失関数の最小化には、主に勾配降下法を使用します。

数百万のデジタル画像のリポジトリである Imagenet を使用して、データセットを猫や犬などのカテゴリに分類できます。 DLネットは、静的なイメージから離れた動的なイメージ、および時系列およびテキスト分析にますます使用されています。

データセットのトレーニングは、ディープラーニングモデルの重要な部分を形成します。 さらに、バックプロパゲーションは、DLモデルのトレーニングにおける主要なアルゴリズムです。

DLは、複雑な入出力変換を伴う大規模なニューラルネットワークのトレーニングを扱います。

DLの1つの例は、ソーシャルネットワークで行うように、写真を写真に写っている人物の名前にマッピングすることです。また、写真をフレーズで記述することも、DLの最近のアプリケーションです。

DLマッピング

ニューラルネットワークは、x1、x2、x3…のような入力を持つ関数で、z1、z2、z3などの出力に2つ(浅いネットワーク)またはレイヤーとも呼ばれるいくつかの中間操作(深いネットワーク)に変換されます。

重みとバイアスはレイヤーごとに変化します。 「w」と「v」は、ニューラルネットワークのレイヤーの重みまたはシナプスです。

ディープラーニングの最適なユースケースは、教師あり学習の問題です。ここでは、目的の出力セットを持つ大量のデータ入力セットがあります。

バックプロパゲーションアルゴリズム

ここでは、正しい出力予測を得るために逆伝播アルゴリズムを適用します。

ディープラーニングの最も基本的なデータセットは、手書き数字のデータセットであるMNISTです。

このデータセットから手書き数字の画像を分類するために、Kerasで畳み込みニューラルネットワークを深くトレーニングできます。

ニューラルネット分類子の起動またはアクティブ化により、スコアが生成されます。 たとえば、患者を病気で健康なものとして分類するために、身長、体重、体温、血圧などのパラメーターを考慮します。

高得点は患者が病気であることを意味し、低得点は患者が健康であることを意味します。

出力層と非表示層の各ノードには、独自の分類子があります。 入力層は入力を受け取り、そのスコアを次の非表示層に渡し、さらにアクティブ化します。これは出力に達するまで続きます。

入力から出力へのこの進行を左から右へ順方向に進行することを*前方伝播*と呼びます。

ニューラルネットワークのクレジット割り当てパス(CAP)は、入力から出力への一連の変換です。 CAPは、入力と出力の間の考えられる因果関係を詳しく説明します。

与えられたフィードフォワードニューラルネットワークのCAPの深さ、またはCAPの深さは、出力層が含まれているため、隠れ層の数に1を加えたものです。 信号が層を数回伝播する可能性のあるリカレントニューラルネットワークの場合、CAPの深さは無限に広がる可能性があります。

ディープネットとシャローネット

浅い学習と深い学習を分ける明確な深さのしきい値はありません。ただし、複数の非線形層を持つディープラーニングでは、CAPを2より大きくする必要があるという点でほぼ一致しています。

ニューラルネットの基本ノードは、生物学的ニューラルネットワークのニューロンを模倣した知覚です。 次に、多層の知覚またはMLPがあります。 入力の各セットは、重みとバイアスのセットによって変更されます。各エッジには一意の重みがあり、各ノードには一意のバイアスがあります。

ニューラルネットの予測精度は、その重みとバイアスに依存します。

ニューラルネットワークの精度を向上させるプロセスは「トレーニング」と呼ばれます。フォワードプロップネットからの出力は、正しいことがわかっている値と比較されます。

  • コスト関数または損失関数*は、生成された出力と実際の出力の差です。

トレーニングのポイントは、数百万のトレーニング例にわたってトレーニングのコストを可能な限り小さくすることです。これを行うために、ネットワークは、予測が正しい出力に一致するまで重みとバイアスを調整します。

よく訓練されると、ニューラルネットは毎回正確な予測を行う可能性があります。

パターンが複雑になり、コンピューターに認識させるには、ニューラルネットワークを使用する必要があります。このような複雑なパターンのシナリオでは、ニューラルネットワークは他のすべての競合アルゴリズムよりも優れています。

現在、GPUを使用して、これまで以上に高速にトレーニングできます。 ディープニューラルネットワークはすでにAIの分野に革命をもたらしています

コンピューターは繰り返し計算を実行し、詳細な指示に従うことは得意であることが証明されていますが、複雑なパターンを認識することはそれほど得意ではありません。

単純なパターンの認識に問題がある場合は、サポートベクターマシン(svm)またはロジスティック回帰分類器がうまく機能しますが、パターンの複雑さが増すにつれて、ディープニューラルネットワークに進むしかありません。

したがって、人間の顔のような複雑なパターンの場合、浅いニューラルネットワークは失敗し、より多くの層を持つ深いニューラルネットワークを使用する以外に選択肢がありません。 ディープネットは、複雑なパターンをより単純なパターンに分解することで、仕事をすることができます。 たとえば、人間の顔。 adeep netは、エッジを使用して唇、鼻、目、耳などの部分を検出し、これらを再結合して人間の顔を形成します

正しい予測の精度は非常に正確になったため、最近のGoogleパターン認識チャレンジでは、ディープネットが人間を打ち負かしました。

層状パーセプトロンのウェブというこの考えは、しばらく前から存在しています。この領域では、ディープネットは人間の脳を模倣しています。 しかし、これの欠点の1つは、トレーニングに時間がかかることです。これはハードウェアの制約です

しかし、最近の高性能GPUは、このようなディープネットを1週間未満でトレーニングできました。一方、高速CPUは同じことをするのに数週間またはおそらく数ヶ月かかる可能性があります。

ディープネットの選択

ディープネットの選び方 分類器を構築するのか、データのパターンを見つけようとするのか、および教師なし学習を使用するのかを決定する必要があります。 ラベルのないデータのセットからパターンを抽出するには、制限付きボルツマンマシンまたは自動エンコーダーを使用します。

ディープネットを選択しながら、次の点を考慮してください-

  • テキスト処理、センチメント分析、解析、および名前エンティティの認識には、リカレントネットまたは再帰ニューラルテンソルネットワークまたはRNTNを使用します。
  • 文字レベルで動作する言語モデルでは、リカレントネットを使用します。
  • 画像認識には、深い信念ネットワークDBNまたは畳み込みネットワークを使用します。
  • オブジェクトの認識には、RNTNまたは畳み込みネットワークを使用します。
  • 音声認識には、リカレントネットを使用します。

一般に、深い信念ネットワークと整流線形ユニットまたはRELUを備えた多層パーセプトロンはどちらも分類に適しています。

時系列分析では、リカレントネットを使用することを常にお勧めします。

ニューラルネットは50年以上前から使用されています。しかし、今や彼らは目立つようになった。 その理由は、トレーニングが難しいからです。バックプロパゲーションと呼ばれる方法でそれらをトレーニングしようとすると、勾配の消失または爆発と呼ばれる問題が発生します。それが発生すると、トレーニングに時間がかかり、精度に後部座席がかかります。 データセットをトレーニングするとき、ラベル付きトレーニングデータのセットからの予測出力と実際の出力の差であるコスト関数を絶えず計算しています。次に、最小値まで重みとバイアス値を調整することにより、コスト関数を最小化します。取得されます。 トレーニングプロセスは勾配を使用します。勾配とは、重みまたはバイアス値の変化に対してコストが変化する割合です。

制限付きボルツマンネットワークまたはオートエンコーダー-RBN

2006年には、勾配の消失の問題に取り組み、ブレークスルーが達成されました。 Geoff Hintonは、 Restricted Boltzman Machine-RBM (浅い2層ネット)の開発につながる新しい戦略を考案しました。

最初のレイヤーは*可視*レイヤーで、2番目のレイヤーは*非表示*レイヤーです。 可視レイヤーの各ノードは、非表示レイヤーのすべてのノードに接続されています。 ネットワークは、同じレイヤー内の2つのレイヤーが接続の共有を許可されていないため、制限付きとして知られています。

オートエンコーダーは、入力データをベクトルとしてエンコードするネットワークです。 それらは、生データの隠された、または圧縮された表現を作成します。 ベクトルは次元の削減に役立ちます。ベクトルは、生データをより少ない数の必須次元に圧縮します。 オートエンコーダーはデコーダーとペアになっているため、非表示の表現に基づいて入力データを再構築できます。

RBMは、双方向トランスレーターと数学的に同等です。 フォワードパスは入力を受け取り、入力をエンコードする一連の数値に変換します。 一方、バックワードパスはこの数値セットを取得し、再構成された入力に変換します。 よく訓練されたネットは、高精度でバックプロップを実行します。

どちらの手順でも、重みとバイアスは重要な役割を果たします。 RBMが入力間の相互関係をデコードし、どの入力がパターンの検出に不可欠であるかを決定するのに役立ちます。 フォワードパスとバックワードパスにより、RBMは、入力と再構築ができるだけ近くなるまで、異なる重みとバイアスで入力を再構築するようにトレーニングされます。 RBMの興味深い側面は、データにラベルを付ける必要がないことです。 これは、写真、ビデオ、音声、センサーデータなどの実世界のデータセットにとって非常に重要であることがわかりました。これらはすべてラベル付けされていない傾向があります。 人間が手動でデータにラベルを付ける代わりに、RBMはデータを自動的にソートします。重みとバイアスを適切に調整することにより、RBMは重要な特徴を抽出し、入力を再構築できます。 RBMは、データの固有のパターンを認識するように設計された特徴抽出ニューラルネットのファミリの一部です。 これらは、独自の構造をエンコードする必要があるため、自動エンコーダとも呼ばれます。

RBM構造

深い信念ネットワーク-DBN

深い信念ネットワーク(DBN)は、RBMを組み合わせて巧妙なトレーニング方法を導入することで形成されます。 勾配の消失の問題を最終的に解決する新しいモデルがあります。 Geoff Hintonは、逆伝播の代替手段としてRBMとDeep Belief Netを発明しました。

DBNの構造はMLP(多層パーセプトロン)に似ていますが、トレーニングに関しては非常に異なります。 DBNが浅いカウンターパートよりも優れているのを可能にするのはトレーニングです

DBNは、1つのRBMの隠れ層がその上のRBMの可視層であるRBMのスタックとして視覚化できます。 最初のRBMは、入力を可能な限り正確に再構築するようにトレーニングされます。

最初のRBMの隠れ層は2番目のRBMの可視層と見なされ、2番目のRBMは最初のRBMからの出力を使用してトレーニングされます。 このプロセスは、ネットワーク内のすべてのレイヤーがトレーニングされるまで繰り返されます。

DBNでは、各RBMは入力全体を学習します。 DBNは、カメラレンズがゆっくりと画像に焦点を合わせているようにモデルがゆっくりと改善されるため、入力全体を連続して微調整することでグローバルに機能します。 多層パーセプトロンMLPが単一のパーセプトロンよりも優れているため、RBMのスタックは単一のRBMよりも優れています。

この段階で、RBMはデータに固有のパターンを検出しましたが、名前やラベルはありません。 DBNのトレーニングを終了するには、ラベルをパターンに導入し、教師付き学習でネットを微調整する必要があります。

機能とパターンを名前に関連付けることができるように、非常に小さなラベル付きサンプルのセットが必要です。 この小さなラベルのデータセットは、トレーニングに使用されます。 このラベル付きデータのセットは、元のデータセットと比較すると非常に小さい場合があります。

重みとバイアスはわずかに変更されるため、パターンのネットの認識にわずかな変化が生じ、多くの場合、全体の精度がわずかに向上します。

トレーニングは、浅いネットと比較して非常に正確な結果を与えるGPUを使用することにより、妥当な時間で完了することができ、勾配の消失問題に対する解決策も見られます。

生成的敵対ネットワーク-GAN

生成的敵対ネットワークは、2つのネットで構成されるディープニューラルネットであり、一方が他方に対してピットインしているため、「敵対的な」名前です。

GANは2014年にモントリオール大学の研究者が発表した論文で紹介されました。 FacebookのAI専門家Yann LeCunは、GANについて言及し、敵対者トレーニングを「MLの過去10年間で最も興味深いアイデア」と呼びました。

ネットワークスキャンはデータの分布を模倣することを学習するため、GANの可能性は非常に大きいです。 GANは、画像、音楽、スピーチ、散文など、あらゆる分野で私たちの世界と驚くほど類似した並行世界を作成するように教えることができます。 彼らはある意味でロボットアーティストであり、彼らの成果は非常に印象的です。

GANでは、ジェネレーターと呼ばれる1つのニューラルネットワークが新しいデータインスタンスを生成し、もう1つの判別器が真正性を評価します。

実世界から取得したMNISTデータセットにあるような手書きの数字を生成しようとしているとしましょう。 識別者の仕事は、真のMNISTデータセットからのインスタンスを表示するときに、それらを本物として認識することです。

次に、GANの次の手順を検討します-

  • ジェネレーターネットワークは、乱数の形式で入力を受け取り、画像を返します。
  • この生成された画像は、実際のデータセットから取得された画像のストリームとともに、識別器ネットワークへの入力として与えられます。
  • 弁別器は、実際の画像と偽の画像の両方を受け取り、0〜1の数値を返します。1は真正性の予測を表し、0は偽を表します。
  • したがって、二重のフィードバックループがあります-
  • 弁別器は、画像のグラウンドトゥルースを含むフィードバックループ内にあります。
  • ジェネレーターは、弁別器とのフィードバックループ内にあります。

リカレントニューラルネットワーク-RNN

  • RNN *データが任意の方向に流れることができるニューラルネットワークです。 これらのネットワークは、言語モデリングや自然言語処理(NLP)などのアプリケーションに使用されます。

RNNの基礎となる基本概念は、シーケンシャル情報を利用することです。 通常のニューラルネットワークでは、すべての入力と出力が互いに独立していると想定されています。 文の次の単語を予測したい場合、どの単語がその前に来たかを知る必要があります。

RNNは、シーケンスのすべての要素に対して同じタスクを繰り返し、以前の計算に基づいて出力されるため、再帰と呼ばれます。 したがって、RNNには、以前に計算されたものに関する情報を取得する「メモリ」があると言えます。 理論的には、RNNは非常に長いシーケンスで情報を使用できますが、実際には数ステップしか振り返ることができません。

リカレントニューラルネットワーク

長期短期メモリネットワーク(LSTM)は、最も一般的に使用されるRNNです。

畳み込みニューラルネットワークと一緒に、RNNはモデルの一部として使用され、ラベルのない画像の説明を生成します。 これがうまく機能しているように見えるのは非常に驚くべきことです。

畳み込みディープニューラルネットワーク-CNN

ニューラルネットワークの層の数を増やしてネットワークを深くすると、ネットワークの複雑さが増し、より複雑な関数をモデル化できるようになります。 ただし、重みとバイアスの数は指数関数的に増加します。 実際、このような難しい問題を学習することは、通常のニューラルネットワークでは不可能になる可能性があります。 これは、畳み込みニューラルネットワークというソリューションにつながります。

CNNはコンピュータービジョンで広く使用されています。自動音声認識の音響モデリングにも適用されています。

畳み込みニューラルネットワークの背後にある考え方は、画像を通過する「移動フィルタ」の考え方です。 この移動フィルタ、または畳み込みは、ノードの特定の近傍に適用されます。ノードは、たとえばピクセルである場合があり、適用されるフィルタはノード値の0.5 xです-

著名な研究者Yann LeCunは、畳み込みニューラルネットワークの先駆者です。 Facebookは顔認識ソフトウェアとしてこれらのネットを使用しています。 CNNは、マシンビジョンプロジェクトのソリューションを提供しています。 畳み込みネットワークには多くの層があります。 Imagenetチャレンジでは、2015年のマシンはオブジェクト認識で人間を打ち負かすことができました。

一言で言えば、畳み込みニューラルネットワーク(CNN)は多層ニューラルネットワークです。 レイヤーは17個以上になることがあり、入力データが画像であると想定します。

畳み込みニューラルネットワーク

CNNは、調整が必要なパラメーターの数を大幅に削減します。 そのため、CNNは生画像の高次元性を効率的に処理します。