Keras-overview-of-deep-learning

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

Keras-深層学習の概要

ディープラーニングは、機械学習の進化するサブフィールドです。 ディープラーニングでは、レイヤーごとに入力を分析します。各レイヤーでは、入力に関するより高いレベルの情報を徐々に抽出します。

画像を分析する簡単なシナリオを見てみましょう。 入力画像がピクセルの長方形グリッドに分割されていると仮定します。 現在、最初のレイヤーはピクセルを抽象化しています。 2番目のレイヤーは、画像のエッジを理解します。 次のレイヤーは、エッジからノードを構築します。 次に、次はノードからブランチを見つけます。 最後に、出力層はオブジェクト全体を検出します。 ここで、特徴抽出プロセスは、1つのレイヤーの出力から次の後続レイヤーの入力に進みます。

このアプローチを使用すると、大量の機能を処理できるため、ディープラーニングは非常に強力なツールになります。 深層学習アルゴリズムは、非構造化データの分析にも役立ちます。 この章では、ディープラーニングの基本について説明します。

人工ニューラルネットワーク

深層学習の最も一般的で主要なアプローチは、「人工ニューラルネットワーク」(ANN)を使用することです。 彼らは私たちの体の最も複雑な器官である人間の脳のモデルから発想を得ています。 人間の脳は、「ニューロン」と呼ばれる900億個以上の小さな細胞で構成されています。 ニューロンは、「軸索」および「樹状突起」と呼ばれる神経線維を介して相互に接続されています。 軸索の主な役割は、ニューロンから、ニューロンが接続されているニューロンに情報を伝達することです。

同様に、樹状突起の主な役割は、それが接続されている別のニューロンの軸索によって伝達されている情報を受信することです。 各ニューロンは小さな情報を処理し、その結果を別のニューロンに渡し、このプロセスが続行されます。 これは、人間の脳が音声や視覚などの膨大な情報を処理し、そこから有用な情報を抽出するために使用する基本的な方法です。

このモデルに基づいて、最初の人工ニューラルネットワーク(ANN)は心理学者*フランクローゼンブラット*によって1958年に発明されました。 ANNは、ニューロンに似た複数のノードで構成されています。 ノードは密接に相互接続され、さまざまな非表示レイヤーに編成されます。 入力層は入力データを受け取り、データは1つ以上の非表示層を順番に通過し、最後に出力層が入力データについて有用なものを予測します。 たとえば、入力は画像で、出力は画像で識別されたもの、たとえば「猫」とすることができます。

単一のニューロン(ANNではパーセプトロンと呼ばれる)は以下のように表すことができます-

人工ニューラルネットワーク

ここに、

  • 重量とともに複数の入力が樹状突起を表します。 入力とアクティベーション関数の合計はニューロンを表します。 Sum は実際にはすべての入力の計算値を意味し、アクティベーション関数は *Sum 値を0、1、または0から1に変更する関数を表します。
  • 実際の出力は軸索を表し、出力は次の層のニューロンによって受信されます。

このセクションでは、さまざまなタイプの人工ニューラルネットワークについて説明します。

多層パーセプトロン

多層パーセプトロンはANNの最も単純な形式です。 単一の入力層、1つ以上の非表示層、そして最後に出力層で構成されます。 レイヤーは、パーセプトロンのコレクションで構成されます。 入力層は基本的に、入力データの1つ以上の機能です。 すべての非表示層は1つ以上のニューロンで構成され、機能の特定の側面を処理し、処理された情報を次の非表示層に送信します。 出力層プロセスは、最後の非表示層からデータを受け取り、最終的に結果を出力します。

多層パーセプトロン

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

畳み込みニューラルネットワークは、最も人気のあるANNの1つです。 画像認識や動画認識の分野で広く使用されています。 これは、数学的概念である畳み込みの概念に基づいています。 完全に接続された隠れニューロン層の前に一連の畳み込み層とプーリング層が含まれていることを除いて、多層パーセプトロンとほとんど同じです。 それは3つの重要な層を持っています-

  • 畳み込み層-これは主要なビルディングブロックであり、畳み込み関数に基づいて計算タスクを実行します。
  • プーリングレイヤー-畳み込みレイヤーの隣に配置され、不要な情報を削除して入力のサイズを削減し、計算をより高速に実行するために使用されます。
  • 完全に接続されたレイヤー-一連の畳み込みおよびプーリングレイヤーの隣に配置され、入力をさまざまなカテゴリに分類します。

単純なCNNは以下のように表すことができます-

CNN

ここに、

  • 2シリーズのコンボリューションとプーリングレイヤーが使用され、入力を受信して​​処理します(例: 画像)。
  • 完全に接続された単一のレイヤーが使用され、データの出力に使用されます(例: 画像の分類)

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

Recurrent Neural Networks(RNN)は、他のANNモデルの欠陥に対処するのに役立ちます。 まあ、ほとんどのANNは以前の状況からのス​​テップを覚えておらず、トレーニングのコンテキストに基づいて意思決定を行うことを学びました。 一方、RNNは過去の情報を保存し、そのすべての決定は過去から学んだことから行われます。

このアプローチは主に画像分類に役立ちます。 時々、過去を修正するために未来を見つめる必要があるかもしれません。 この場合、双方向RNNは過去から学び、未来を予測するのに役立ちます。 たとえば、複数の入力に手書きのサンプルがあります。 1つの入力に混乱があり、他の入力をもう一度確認して、過去の決定を行う正しいコンテキストを認識する必要があるとします。

ANNのワークフロー

最初にディープラーニングのさまざまなフェーズを理解してから、ディープラーニングのプロセスでKerasがどのように役立つかを学習します。

必要なデータを収集する

ディープラーニングでは、結果を正常に学習および予測するために多くの入力データが必要です。 したがって、最初にできるだけ多くのデータを収集します。

データを分析する

データを分析し、データを十分に理解します。 正しいANNアルゴリズムを選択するには、データをよりよく理解する必要があります。

アルゴリズム(モデル)を選択する

学習プロセスのタイプ(画像分類、テキスト処理など)と利用可能な入力データに最適なアルゴリズムを選択します。 アルゴリズムは、Kerasでは Model で表されます。 アルゴリズムには1つ以上のレイヤーが含まれます。 ANNの各レイヤーは、Kerasの Keras Layer で表すことができます。

  • データの準備-データから必要な情報のみを処理、フィルタリング、および選択します。
  • データの分割-データをトレーニングデータセットとテストデータセットに分割します。 テストデータは、アルゴリズム/モデルの予測を評価し(機械学習が完了すると)、学習プロセスの効率をクロスチェックするために使用されます。
  • モデルのコンパイル-アルゴリズム/モデルをコンパイルします。これにより、トレーニングによってさらに学習し、最終的に予測を行うことができます。 このステップでは、損失関数とオプティマイザーを選択する必要があります。 損失関数とオプティマイザーは、エラー(実際の出力からの偏差)を見つけて最適化を行うための学習フェーズで使用され、エラーが最小化されます。
  • モデルの適合-実際の学習プロセスは、トレーニングデータセットを使用してこのフェーズで実行されます。
  • 不明な値の結果を予測-不明な入力データ(既存のトレーニングおよびテストデータ以外)の出力を予測
  • モデルの評価-テストデータの出力を予測し、予測をテストデータの実際の結果と相互比較して、モデルを評価します。
  • フリーズ、変更、または新しいアルゴリズムの選択-モデルの評価が成功したかどうかを確認します。 はいの場合、将来の予測のためにアルゴリズムを保存します。 そうでない場合は、新しいアルゴリズム/モデルを変更または選択し、最後にもう一度モデルをトレーニング、予測、評価します。 最適なアルゴリズム(モデル)が見つかるまで、このプロセスを繰り返します。

上記のステップは、以下のフローチャートを使用して表すことができます-

ANN