AIに単純なことを教える: ゼロから最初のニューラルネットワークを構築する

AIに単純なことを教える: ゼロから最初のニューラルネットワークを構築する

この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)から転載したものです。

私は長い間ニューラル ネットワークを構築したいと思っていましたが、ようやくそれを研究する機会ができました。ニューラル ネットワークの背後にある数学を完全に理解していないと思うので、まずは AI に簡単なことを教えることから始めましょう。

[[360266]]

コード原則

ニューラル ネットワークは新しい概念ではありません。1943 年に Warren McCulloch と Walter Pitts によって初めて提案されました。

隠れ層やパーセプトロンのない単層ニューラル ネットワークを構築します。これは、トレーニング例、シナプスまたは重み、ニューロンを含む入力層と、正解を含む出力層で構成されます。ニューラル ネットワーク グラフを以下に示します。

さらに、ニューロンがどのように学習するかを理解するには、シグモイドや微分などの数学的概念を理解する必要があります。ニューロンは単に入力値を受け取り、それをシナプスの重みで乗算します。その後、これらの乗算結果がすべて合計され、シグモイド関数を使用して 0 から 1 の間の出力値が得られます。

ニューロン表現:

シグモイド関数:

問題の定義

入力層には一連の数字が含まれます。期待される理想的な結果は、データセット サンプルで、最初の入力数値が 1 の場合、ニューラル ネットワークは 1 を返し、最初の数値が 0 の場合、ニューラル ネットワークは 0 を返すことです。結果は出力レイヤーに表示されます。問題セットは次のとおりです。

前提条件

コーディングを開始するための前提条件は、ある程度の概念的理解に達することです。

NumPYのインストール:

  1. pip インストール numpy

インストールが成功したら、エンコード部分に入ることができます。まず、NumPy を Python ファイルにインポートします。

  1. numpyをnpとしてインポートする

ニューラルネットワークのトレーニング

まず、シグモイド関数を作成します。

次に、トレーニング例、入力 (4×5 行列)、および出力を定義します。

次に、ランダムな値を生成し、その結果を 4×1 行列に配置することでシナプスの重みを初期化します。

最後に、トレーニング モデルを構築します。 for ループを使用すると、すべてのトレーニングはこのループ内で実行されます。シグモイド関数が呼び出され、すべての入力の合計にシグモイド重みが掛けられます。次に、Np.dot を使用して行列の乗算を実行します。プロセスは次のとおりです。

出力は次のようになります。

ここで、シグモイド関数の出力と実際の出力の差を計算して、ニューラル ネットワーク モデルをトレーニングします。その後、エラーの重大度に応じて重みを調整できます。このプロセスを何度も繰り返します(たとえば 10,000 回)。シグモイド導関数を定義します。

重みの計算と調整方法は次のとおりです。

勉強を始めて、勉強時間の長さが結果にどのような影響を与えるかを確認してください。 100 回の反復から開始します。

物事は順調に始まりました。AI はパターンを認識することを学習しましたが、エラー率は依然として高いままでした。次に 1000 回の反復を実行します。

状況は改善しており、10,000 回の反復を続けます。

100,000回の反復:

学習の反復をさらに続けることもできますが、これには無限の計算が必要になるため、100% の精度に到達することは決してありません。しかし、最悪の場合でも精度は 99.77% であり、かなり良好です。

最終的なコードでは、かなりきれいに書いて、機能ごとに分離しました。これに加えて、重みをテキスト ファイルに保存する非常に複雑な方法も追加しました。この方法では、学習は一度だけ実行すればよく、AI を使用する必要があるときは、重みをインポートしてシグモイド関数を使用するだけで済みます。

  1. numpyをnpとしてインポートする
  2. 一時ファイルから一時ファイルをインポートする
  3. シグモイド(x)を定義します:
  4. 1 / (1 + np.exp(-x)) を返します。
  5. sigmoid_der(x)を定義します:
  6. x * (1 - x) を返す
  7. トレーニング()を定義します:
  8. トレーニング入力= np.array([[0,0,1,0], [1,1,1,0], [1,0,1,0], [0,1,1,1], [0,1,0,1]])
  9. トレーニング出力= np .array([[0,1,1,0,0]]).T
  10. np.ランダムシード(1)
  11. シナプス重み= 2 * np.random.random((4,1)) - 1
  12. iが範囲(50000)内にある場合:
  13. 入力=トレーニング入力 
  14. 出力=シグモイド(np.dot(入力, シナプス重み))
  15. エラー= trainign_outputs - 出力
  16. 調整=誤差* sigmoid_der(出力)
  17. synaptic_weights += np.dot(inputs.T, 調整)
  18. data_file =開く("data.txt", "w")
  19. synaptic_weightsの行について:
  20. np.savetxt(データファイル、行)
  21. データファイルを閉じる()
  22. def 思考(入力):
  23. synaptic_weights = np .loadtxt("data.txt").reshape(4, 1)
  24. 出力=シグモイド(np.dot(入力, シナプス重み))
  25. print(出力)
  26. 出力を返す
  27. トレーニング()
  28. 思考(np.array([1,1,0,1]))

[[360273]]

画像出典: Pixabay

私の最初の AI は生産準備が整いました。非常に小さなデータセット上の非常に単純なパターンしか認識できませんが、これを拡張して、たとえば、画像に何が写っているかを AI に認識させることもできます。学習と継続的な改善に終わりはありません!

<<:  2021 年の優れた 5 つの人工知能フレームワーク

>>:  インテリジェント衛生の開発が加速しており、衛生ロボットは応用の「先駆者」となっている。

ブログ    
ブログ    
ブログ    
ブログ    
ブログ    

推薦する

...

マイクロソフトは言語モデルをより調和のとれたものにするために複数のツールとデータセットをオープンソース化

Microsoft は最近、AI 駆動型コンテンツ モデレーション システムを監査し、AI モデルの...

ChatGPT は最近、Microsoft によって内部的に無効化されました。 GPT の新しいバグ: たった 2 つのプロンプトでデータが盗まれる可能性があります

知らせ! GPT を作成するときにアップロードしたデータは、誰でも簡単にダウンロードできます...た...

...

AI搭載マシンが製造業の産業自動化を加速させる方法

今日、人工知能と機械学習は製造業界における変化の重要な原動力となっています。人工知能と機械学習により...

AIの終末: 人間は本当の自己認識を持っていない

この記事は公開アカウント「Reading Core Technique」(ID: AI_Discov...

科学記事:強化学習後、ロボット学習のボトルネックをどう突破するのか?

[[340407]]この記事はLeiphone.comから転載したものです。転載する場合は、Lei...

...

Googleの華博士がICCV2021で新モデルを発表、卵を泡立てるだけでパンケーキを作りたいかどうかがわかる

機械学習モデルが現実世界でますます使用され、導入されるようになると、AI の意思決定は人々の日常生活...

これら5つのコアテクノロジーを理解すれば、人工知能はもうあなたの身近な存在に

人工知能は現在最も注目されている産業であり、将来的にはロボット、スマートセンサー、ウェアラブルデバイ...

...

Google の最新のオープンソース Gemma モデルが Llma-2 を数秒で上回りました。

ジェマとはジェマ軽量で最先端のオープンモデルシリーズで、 ジェミニ同じ研究と技術をモデル化します。 ...

JavaScript による機械学習の例 10 選

年を追うごとに、機械学習用のライブラリはより高速かつ使いやすくなっています。 Python は長い間...

PyTorch でシンプルな分類器を実装する

[[328922]]私自身の PyTorch の学習過程を思い出すと、最初はいろいろな情報を見つけ、...