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 つの人工知能フレームワーク

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

ブログ    
ブログ    

推薦する

ネットワークデータセキュリティ管理に関する新たな規制が導入される

顔は機密性の高い個人情報です。一度漏洩すると、個人や財産の安全に大きな損害を与え、公共の安全を脅かす...

...

...

将来の顔認識技術の最大の問題は、それがほぼ間違いのないものであることだ

近年、顔認識技術は、女性や有色人種の誤検出率の高さや、個人の自由やプライバシーへの悪影響など、常に世...

ChatGPT は来週 6 つの主要なアップデートを予定しています。

公式発表では来週6つのメジャーアップデートが予定されているとのこと。早速見ていきましょう。写真1. ...

EfficientViT-SAM: 精度を変えずにその場で離陸!

著者らは、高速化された SAM モデル ファミリである EfficientViT-SAM を提案しま...

ブロックチェーンを使用して AI スマートエコノミーを構築するにはどうすればよいでしょうか?

人工知能(AI)は、機械によって発揮される知能であるという点で人間の知能とは異なります。しかし、直接...

調査によると、経営幹部はAIが職務記述書を時代遅れにしていると考えている

最近の調査によると、機械が仕事を奪っていくのを見ると、人間の従業員の士気が低下する可能性があることが...

...

不動産会社のデジタル変革は差し迫っています。これらの AI イノベーションは試してみる価値があるかもしれません。

不動産会社のデジタル変革は差し迫っています。試してみるべき革新的な方法をいくつかご紹介します。今日の...

沈興陽博士:30年間の科学研究で私が遭遇した落とし穴

先日開催されたX-Talkでは、米国工学アカデミーの外国人会員であり、XiaoIce会長でもあるハリ...

ジェネレーティブ AI がサプライ チェーンと調達の役割をどのように変革しているか

実際、生成 AI は近い将来、企業全体の販売、マーケティング、調達、サプライ チェーンにおける人間の...

たった2枚の写真でAIは完全なモーションプロセスを生成できる

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

サイバーセキュリティにおける AI: 誇大宣伝と現実

人工知能(AI)の可能性は魅力的です。セキュリティ管理者への警鐘。自律的な自己学習ソリューションの力...