ニューラル ネットワークの仕組みを理解する最良の方法は、自分でニューラル ネットワークを作成することです。この記事では、その方法を説明します。 ニューラル ネットワーク (NN) は、人工ニューラル ネットワーク (ANN) とも呼ばれ、生物学的ニューラル ネットワークの概念に基づいた機械学習分野の学習アルゴリズムのサブセットです。 5 年以上の経験を持つドイツの機械学習の専門家、Andrey Bulezyuk 氏は、次のように主張しています。「ニューラル ネットワークは、幅広い分野や業界にわたって抽象的なオブジェクトを効率的にモデル化できるため、機械学習に革命をもたらしています。」 人工ニューラル ネットワークは基本的に次のコンポーネントで構成されます。
ニューラルネットワークには多くの種類があります。このプロジェクトでは、フィードフォワードまたはパーセプトロン ニューラル ネットワークを作成します。このタイプの ANN は、データを前方から後方へ直接渡します。 フィードフォワード ニューロンのトレーニングには、多くの場合、ネットワークに対応する入力と出力のセットを提供するバックプロパゲーションが必要です。入力データがニューロンに送信されると、処理されて出力が生成されます。 次の図は、単純なニューラル ネットワークの構造を示しています。 ニューラル ネットワークの仕組みを理解する最良の方法は、ライブラリを使用せずに、ニューラル ネットワークをゼロから構築する方法を学ぶことです。 この記事では、Python プログラミング言語を使用して単純なニューラル ネットワークを作成する方法を説明します。 質問 以下に問題を示す表を示します。 新しいデータセットを提供し、それを使用してニューラル ネットワークをトレーニングし、正しい出力値を予測できるようにします。 上記の表に示すように、出力値は常に入力セクションの最初の値と等しくなります。したがって、出力値は 1 になると予想されます。 Python コードを使用して同じ結果を得られるかどうか確認してみましょう (このプロジェクトを続ける前に、この記事の最後でこのプロジェクトのコードを確認できます)。 NeuralNetworkクラスを作成する 正確な予測ができるようにニューロンをトレーニングするために、Python で NeuralNetwork クラスを作成します。このクラスには他のヘルパー関数も含まれます。 この単純なニューラル ネットワークの例ではニューラル ネットワーク ライブラリを使用しませんが、計算を支援するために numpy ライブラリをインポートします。 numpy ライブラリは、次の 4 つの重要なメソッドを提供します。
1. シグモイド関数を適用する ニューラル ネットワークの活性化関数として、シグモイド関数を使用して特徴的な「S」曲線を描画します。 この関数は、任意の値を 0 から 1 の間の値にマッピングすることができ、入力の重み付けと正規化に役立ちます。 この後、重みの調整パラメータを計算するために、シグモイド関数の導関数を作成します。 シグモイド関数の出力は、その導関数を生成するために使用できます。たとえば、出力変数が「x」の場合、その導関数は x*(1-x) になります。 2. モデルのトレーニング これは、ニューラル ネットワークに正確な予測を行うように教える段階です。各入力には重みがあり、重みは正または負になります。つまり、正または負の重みが大きい入力は、結果の出力に大きな影響を与えます。最初に、各乱数に重みを割り当てることから始めたことを思い出してください。 この例のニューラル ネットワークのトレーニング プロセスは次のとおりです。 ステップ 1: トレーニング データセットから入力を抽出し、トレーニング データセットの重みに応じて調整し、ニューラル ネットワークの出力を計算する方法を通じてフィルタリングします。 ステップ 2: バックプロパゲーション エラー率を計算します。この場合、それはニューロンの予測出力とトレーニング データセットの予想出力の差です。 ステップ 3: 誤差加重微分式を使用して、得られた誤差範囲に基づいて、いくつかの小さな重み調整が行われました。 ステップ 4: このプロセスを 15,000 回繰り返します。各反復では、トレーニング セット全体が同時に処理されます。 マトリックスを水平位置から垂直位置に変換するには、「.T」関数を使用します。したがって、数値は次のように保存されます。 最終的に、ニューロンの重みは提供されたトレーニング データに基づいて最適化されます。その後、ニューロンに以前の状態と同じ新しい状態を考慮するように要求すると、正確な予測を行うことができます。これがバックプロパゲーションの仕組みです。 パッケージ化して実行 ***、NeuralNetwork クラスが正常に初期化されたら、コードを実行できます。 Python プロジェクトでニューラル ネットワークを作成する方法の完全なコードは次のとおりです。
コードを実行した後の出力: このようにして、単純なニューラル ネットワークを作成することに成功しました。 ニューロンは最初にランダムな重みを割り当て、次にトレーニング例を使用して自分自身をトレーニングします。 その後、新しい状態[1,0,0]が出現すると、0.9999584と評価されます。 正解は 1 にしたかったことを覚えていますか? この値は非常に近く、シグモイド関数の出力値は 0 から 1 の間になります。 もちろん、この例では、単純なタスクを実行するために単一のニューラル ネットワークのみを使用します。何千もの人工ニューラルネットワークを接続すると何が起こるでしょうか?人間の思考方法を完全に模倣することはできるでしょうか? |
<<: Baidu AIは素晴らしいキャンパスライフに新たなタッチを加え、新学期をより技術的に
>>: 自動運転、ニューメディア、農業、エネルギー、医療、工業などの垂直産業における 5G の重要な役割をシンプルかつ深く理解するにはどうすればよいでしょうか。
[[435977]]現在、AI技術は急速に進歩しており、毎年多くの優れた論文が発表されています。 2...
人間とは異なり、人工ニューラル ネットワークは新しいことを学習するときに以前に学習した情報をすぐに忘...
[[443263]]人工知能の将来の発展の方向性を真に理解するには、まだ長い道のりが残っています。 ...
AR テクノロジーは消費者向け分野ではそれほど優れた成果を上げていませんが、ビジネス界では好まれてい...
機械学習はよく話題になりますが、「機械の忘却」について聞いたことがありますか?機械学習の目的は誰もが...
近年、飛行制御、ナビゲーション、通信などの技術が継続的に進歩し、私たちの生産や生活におけるドローンの...
2年間チャートを独占し、4年連続で優勝した日本の富士山が、ついに「台座」から転落した。先日発表された...
インターネットとモバイルインターネット時代の「ビジネスモデルの革新」がもたらす投資配当は、マクロ経済...
「汎用人工知能」は、今や2020年代の「水から石油」の技術になりつつあります。ほぼ2週間ごとに、大規...