Kerasによるディープラーニング-ディープラーニング

冒頭で述べたように、ディープラーニングは大量のデータを使用して人工ニューラルネットワークをトレーニングするプロセスです。トレーニングが完了すると、ネットワークは目に見えないデータの予測を提供できるようになります。ディープラーニングとは何かを説明する前に、ニューラルネットワークのトレーニングで使用されるいくつかの用語について簡単に説明します。

ニューラルネットワーク

人工ニューラルネットワークのアイデアは、私たちの脳のニューラルネットワークから派生しました。典型的なニューラルネットワークは、下の図に示すように、入力、出力、および隠れ層の3つの層で構成されています。

これは、 shallow隠れ層が1つしかないニューラルネットワーク。上記のアーキテクチャに隠しレイヤーを追加して、より複雑なアーキテクチャを作成します。

ディープネットワーク

次の図は、入力層と出力層の4つの隠れ層で構成される深いネットワークを示しています。

隠れ層の数がネットワークに追加されると、そのトレーニングは、必要なリソースとネットワークを完全にトレーニングするのにかかる時間の点でより複雑になります。

ネットワークトレーニング

ネットワークアーキテクチャを定義したら、特定の種類の予測を行うためにネットワークアーキテクチャをトレーニングします。ネットワークのトレーニングは、ネットワーク内の各リンクの適切な重みを見つけるプロセスです。トレーニング中、データは入力レイヤーから出力レイヤーにさまざまな非表示レイヤーを介して流れます。データは常に入力から出力へ一方向に移動するため、このネットワークをフィードフォワードネットワークと呼び、データ伝播をフォワード伝播と呼びます。

活性化関数

各レイヤーで、入力の加重和を計算し、それを活性化関数にフィードします。活性化関数は、ネットワークに非線形性をもたらします。出力を離散化するのは、単に数学関数です。最も一般的に使用される活性化関数には、シグモイド、双曲線、タンジェント(tanh)、ReLU、およびSoftmaxがあります。

誤差逆伝播法

バックプロパゲーションは、教師あり学習のアルゴリズムです。バックプロパゲーションでは、エラーは出力層から入力層に逆方向に伝播します。誤差関数が与えられると、各接続で割り当てられた重みに関する誤差関数の勾配を計算します。勾配の計算は、ネットワークを逆方向に進みます。重みの最後の層の勾配が最初に計算され、重みの最初の層の勾配が最後に計算されます。

各レイヤーで、勾配の部分的な計算は、前のレイヤーの勾配の計算で再利用されます。これは最急降下法と呼ばれます。

このプロジェクトベースのチュートリアルでは、フィードフォワードディープニューラルネットワークを定義し、バックプロパゲーションと勾配降下法を使用してトレーニングします。幸い、Kerasは、ネットワークアーキテクチャを定義し、勾配降下法を使用してトレーニングするためのすべての高レベルAPIを提供します。次に、Kerasでこれを行う方法を学習します。

手書き数字認識システム

このミニプロジェクトでは、前述の手法を適用します。手書き数字を認識するためのトレーニングを受ける深層学習ニューラルネットワークを作成します。機械学習プロジェクトでは、最初の課題はデータの収集です。特に、深層学習ネットワークの場合、膨大なデータが必要です。幸い、私たちが解決しようとしている問題について、誰かがすでにトレーニング用のデータセットを作成しています。これはmnistと呼ばれ、Kerasライブラリの一部として利用できます。データセットは、手書き数字のいくつかの28x28ピクセル画像で構成されています。このデータセットの大部分でモデルをトレーニングし、残りのデータはトレーニングしたモデルの検証に使用されます。

プロジェクトの説明

ザ・ mnistデータセットは、手書き数字の70000枚の画像で構成されています。参考までに、いくつかのサンプル画像をここに複製します

各画像のサイズは28x 28ピクセルで、さまざまなグレースケールレベルの合計768ピクセルになります。ほとんどのピクセルは黒の色合いになる傾向がありますが、白のピクセルはごくわずかです。これらのピクセルの分布を配列またはベクトルに配置します。たとえば、4桁目と5桁目の典型的な画像のピクセルの分布を次の図に示します。

各画像のサイズは28x 28ピクセルで、さまざまなグレースケールレベルの合計768ピクセルになります。ほとんどのピクセルは黒の色合いになる傾向がありますが、白のピクセルはごくわずかです。これらのピクセルの分布を配列またはベクトルに配置します。たとえば、4桁目と5桁目の典型的な画像のピクセルの分布を次の図に示します。

明らかに、ピクセルの分布(特に白いトーンになりがちなピクセル)が異なることがわかります。これにより、ピクセルが表す数字が区別されます。この784ピクセルの分布を、入力としてネットワークにフィードします。ネットワークの出力は、0から9までの数字を表す10のカテゴリで構成されます。

私たちのネットワークは、1つの入力レイヤー、1つの出力レイヤー、2つの非表示レイヤーの4つのレイヤーで構成されます。各隠れ層には512ノードが含まれます。各レイヤーは次のレイヤーに完全に接続されています。ネットワークをトレーニングするとき、各接続の重みを計算します。前に説明したバックプロパゲーションと勾配降下法を適用して、ネットワークをトレーニングします。