Keras-ディープラーニングの概要
ディープラーニングは、機械学習の進化するサブフィールドです。ディープラーニングでは、入力をレイヤーごとに分析します。各レイヤーは、入力に関するより高いレベルの情報を段階的に抽出します。
画像を分析する簡単なシナリオを考えてみましょう。入力画像が長方形のピクセルグリッドに分割されていると仮定します。これで、最初のレイヤーがピクセルを抽象化します。2番目のレイヤーは、画像のエッジを理解します。次のレイヤーは、エッジからノードを構築します。次に、次はノードからブランチを見つけます。最後に、出力レイヤーはオブジェクト全体を検出します。ここで、特徴抽出プロセスは、あるレイヤーの出力から次の次のレイヤーの入力に進みます。
このアプローチを使用することで、膨大な量の機能を処理できるため、ディープラーニングは非常に強力なツールになります。深層学習アルゴリズムは、非構造化データの分析にも役立ちます。この章では、ディープラーニングの基本について説明します。
人工ニューラルネットワーク
ディープラーニングの最も一般的で主要なアプローチは、「人工ニューラルネットワーク」(ANN)を使用することです。それらは、私たちの体の最も複雑な器官である人間の脳のモデルから着想を得ています。人間の脳は「ニューロン」と呼ばれる900億個以上の小さな細胞で構成されています。ニューロンは、「軸索」および「樹状突起」と呼ばれる神経線維を介して相互接続されています。軸索の主な役割は、あるニューロンからそれが接続されている別のニューロンに情報を伝達することです。
同様に、樹状突起の主な役割は、樹状突起が接続されている別のニューロンの軸索によって送信されている情報を受信することです。各ニューロンは小さな情報を処理し、その結果を別のニューロンに渡し、このプロセスが続行されます。これは、人間の脳が音声や視覚などの膨大な情報を処理し、そこから有用な情報を抽出するために使用する基本的な方法です。
このモデルに基づいて、最初の人工ニューラルネットワーク(ANN)が心理学者によって発明されました Frank Rosenblatt、1958年。ANNはニューロンに似た複数のノードで構成されています。ノードは緊密に相互接続され、さまざまな隠れ層に編成されています。入力層は入力データを受け取り、データは1つ以上の非表示層を順番に通過し、最後に出力層は入力データについて有用な何かを予測します。たとえば、入力は画像であり、出力は画像で識別されるもの、たとえば「猫」である場合があります。
単一のニューロン(ANNではパーセプトロンと呼ばれます)は次のように表すことができます-
ここに、
重みとともに複数の入力は樹状突起を表します。
入力と活性化関数の合計はニューロンを表します。 Sum 実際には、すべての入力の計算値を意味し、活性化関数は関数を表し、 Sum 0、1、または0から1への値。
実際の出力は軸索を表し、出力は次の層のニューロンによって受信されます。
このセクションでは、さまざまなタイプの人工ニューラルネットワークについて理解しましょう。
多層パーセプトロン
多層パーセプトロンは、ANNの最も単純な形式です。これは、単一の入力レイヤー、1つ以上の非表示レイヤー、そして最後に出力レイヤーで構成されます。レイヤーは、パーセプトロンのコレクションで構成されます。入力層は、基本的に入力データの1つ以上の機能です。すべての隠れ層は1つ以上のニューロンで構成され、機能の特定の側面を処理し、処理された情報を次の隠れ層に送信します。出力層プロセスは、最後の非表示層からデータを受け取り、最後に結果を出力します。
畳み込みニューラルネットワーク(CNN)
畳み込みニューラルネットワークは、最も人気のあるANNの1つです。画像やビデオの認識の分野で広く使用されています。これは、畳み込みの概念、数学的概念に基づいています。完全に接続された隠れニューロン層の前に一連の畳み込み層とプーリング層が含まれていることを除けば、多層パーセプトロンとほぼ同じです。それは3つの重要な層を持っています-
Convolution layer −これは主要な構成要素であり、畳み込み関数に基づいて計算タスクを実行します。
Pooling layer −畳み込み層の隣に配置され、不要な情報を削除して入力のサイズを縮小し、計算を高速化するために使用されます。
Fully connected layer −一連の畳み込みおよびプーリング層の隣に配置され、入力をさまざまなカテゴリに分類します。
単純なCNNは次のように表すことができます-
ここに、
2シリーズの畳み込みおよびプーリングレイヤーが使用され、入力(画像など)を受信して処理します。
単一の完全に接続されたレイヤーが使用され、データの出力に使用されます(画像の分類など)
リカレントニューラルネットワーク(RNN)
リカレントニューラルネットワーク(RNN)は、他のANNモデルの欠陥に対処するのに役立ちます。さて、ほとんどのANNは以前の状況からのステップを覚えておらず、トレーニングのコンテキストに基づいて決定を下すことを学びました。一方、RNNは過去の情報を保存し、そのすべての決定は過去から学んだことから行われます。
このアプローチは、主に画像分類に役立ちます。時々、過去を直すために未来を見つめる必要があるかもしれません。この場合、双方向RNNは、過去から学び、将来を予測するのに役立ちます。たとえば、複数の入力に手書きのサンプルがあります。1つの入力に混乱があり、他の入力を再度チェックして、過去からの決定を行う正しいコンテキストを認識する必要があるとします。
ANNのワークフロー
まず、ディープラーニングのさまざまなフェーズを理解してから、Kerasがディープラーニングのプロセスでどのように役立つかを学びましょう。
必要なデータを収集する
ディープラーニングでは、結果を正しく学習して予測するために、多くの入力データが必要です。したがって、最初にできるだけ多くのデータを収集します。
データを分析する
データを分析し、データを十分に理解します。正しいANNアルゴリズムを選択するには、データをよりよく理解する必要があります。
アルゴリズムの選択(モデル)
学習プロセスのタイプ(画像分類、テキスト処理など)と利用可能な入力データに最適なアルゴリズムを選択します。アルゴリズムはで表されますModelケラスで。アルゴリズムには1つ以上のレイヤーが含まれます。ANNの各層は次のように表すことができますKeras Layer ケラスで。
Prepare data −データから必要な情報のみを処理、フィルタリング、および選択します。
Split data−データをトレーニングデータセットとテストデータセットに分割します。テストデータは、アルゴリズム/モデルの予測を評価し(マシンが学習した後)、学習プロセスの効率をクロスチェックするために使用されます。
Compile the model−アルゴリズム/モデルをコンパイルして、トレーニングによって学習し、最終的に予測を行うためにさらに使用できるようにします。このステップでは、損失関数とオプティマイザーを選択する必要があります。損失関数とオプティマイザーは、学習フェーズでエラー(実際の出力からの偏差)を見つけ、エラーが最小化されるように最適化を行うために使用されます。
Fit the model −実際の学習プロセスは、トレーニングデータセットを使用してこのフェーズで実行されます。
Predict result for unknown value −未知の入力データ(既存のトレーニングおよびテストデータを除く)の出力を予測します
Evaluate model −テストデータの出力を予測し、その予測をテストデータの実際の結果と相互比較することにより、モデルを評価します。
Freeze, Modify or choose new algorithm−モデルの評価が成功したかどうかを確認します。はいの場合、将来の予測のためにアルゴリズムを保存します。そうでない場合は、新しいアルゴリズム/モデルを変更または選択し、最後に、モデルを再度トレーニング、予測、および評価します。最適なアルゴリズム(モデル)が見つかるまで、このプロセスを繰り返します。
上記のステップは、以下のフローチャートを使用して表すことができます-