Python-deep-learning-artificial-neural-networks
人工ニューラルネットワーク
人工ニューラルネットワーク、または単にニューラルネットワークは、新しいアイデアではありません。 約80年前からあります。
Deep Neural Networksが新しい手法、膨大なデータセットの可用性、強力なコンピューターの使用で人気を博したのは2011年まででした。
ニューラルネットワークは、樹状突起、核、軸索、および末端軸索を持つニューロンを模倣します。
ネットワークには、2つのニューロンが必要です。 これらのニューロンは、1つの樹状突起と別の樹状突起の軸索との間のシナプスを介して情報を転送します。
人工ニューロンの推定モデルはこのように見えます-
ニューラルネットワークは次のようになります-
円はニューロンまたはノードであり、それらの機能はデータにあり、それらを接続する線/エッジは重み/情報が渡されます。
各列はレイヤーです。 データの最初のレイヤーは入力レイヤーです。 次に、入力レイヤーと出力レイヤーの間のすべてのレイヤーが非表示レイヤーになります。
1つまたはいくつかの隠れ層がある場合、浅いニューラルネットワークがあります。 多くの隠れ層がある場合、ディープニューラルネットワークがあります。
このモデルでは、入力データがあり、それを重み付けして、しきい値関数または活性化関数と呼ばれるニューロン内の関数に渡します。
基本的に、特定の値と比較した後のすべての値の合計です。 シグナルを発する場合、結果は(1)であるか、何も発しないで、(0)です。 次に、それが重み付けされて次のニューロンに渡され、同じ種類の関数が実行されます。
アクティベーション関数としてシグモイド(s形状)関数を使用できます。
重みについては、開始するのはランダムであり、ノード/ニューロンへの入力ごとに一意です。
最も基本的なタイプのニューラルネットワークである典型的な「フィードフォワード」では、作成したネットワークを直接情報が通過し、出力をサンプルデータを使用して期待したものと比較します。
ここから、出力を目的の出力に一致させるために重みを調整する必要があります。
ニューラルネットワークを介して直接データを送信する行為は、「フィードフォワードニューラルネットワーク」と呼ばれます。
データは、入力からレイヤー、順番に出力されます。
後方に移動して、損失/コストを最小限に抑えるために重みの調整を開始する場合、これは*逆伝播*と呼ばれます
これは*最適化の問題*です。実際には、ニューラルネットワークでは、数十万、または数百万以上の変数を処理する必要があります。
最初の解決策は、確率的勾配降下法を最適化方法として使用することでした。 現在、AdaGrad、Adam Optimizerなどのオプションがあります。 いずれにせよ、これは大規模な計算操作です。 それが、ニューラルネットワークがほぼ半世紀以上棚に放置されていた理由です。 ごく最近になって、これらの操作の実行を検討するためのマシンの能力とアーキテクチャ、および一致する適切なサイズのデータセットさえ用意されました。
単純な分類タスクの場合、ニューラルネットワークのパフォーマンスは、K最近傍のような他の単純なアルゴリズムに比較的近いです。 ニューラルネットワークの真の有用性は、他の機械学習モデルよりもはるかに大きなデータとはるかに複雑な質問がある場合に実現されます。