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

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

ブログ    
ブログ    
ブログ    

推薦する

情報セキュリティにおける機械学習の 5 つの主な使用例

簡単に言えば、機械学習とは「明示的にプログラムされなくても学習する(コンピュータの)能力」です。機械...

...

2021 年の AI イノベーション トレンド トップ 10

人工知能は、人々の日常の仕事や生活を変えるテクノロジーとイノベーションに関して、最もホットなトレンド...

金融保険業界における人工知能の3つの重要なトレンド

[51CTO.com クイック翻訳] 変化は常に起こっており、将来の変化は予測可能です。保険市場は大...

過去1年間、世界は人工知能の倫理について次のような考えを抱いてきた。

1月下旬に終了したCES 2019で、LGの社長兼最高技術責任者であるIP Park氏が、AIがど...

...

エッジコンピューティングの探究: プロセッサ、アルゴリズム、メモリ

エッジコンピューティングとは最近、エッジコンピューティングは、人工知能やモノのインターネットの分野で...

ケビン・ケリーがAIブームを解説:超人的なAIを暴く5つの神話

人工知能は非常に人気が高まっているため、ニュースで報道される超知能に関する予測が実現可能なものなのか...

人工知能とモノのインターネット:完璧な組み合わせ

IoT デバイスのデータ生成の基本的な能力と、さまざまなデバイスのインテリジェントな動作をシミュレー...

人工知能がスマートホームに加わり、未来が現実になる

[[262824]]スマートシティ建設が国家戦略となり、ハイテクが急速に発展するにつれて、スマートシ...

今年、データ サイエンティストはどのようなアルゴリズムを使用しましたか?

「データが王様」と言われる今日の世界では、データサイエンスに興味を持つ人が増えています。データ サ...

色を選ぶと、このAIシステムがロゴをデザインします

LoGANがデザインしたいくつかのロゴ画像提供: マーストリヒト大学[51CTO.com クイック翻...

「初の顔認証事件」の最終判決がこちら

[[392244]] 4月9日午後3時、「初の顔認識事件」は杭州市中級人民法院で二審判決を受けた。こ...

オントロジーから始める:オペレータ関係マップの構築と応用

[[258543]]人類学者ロビン・ダンバーは、人間が親密な人間関係を維持できる最大人数は 150 ...