何?ニューラルネットワークは新しい知識も生み出せるのでしょうか?

何?ニューラルネットワークは新しい知識も生み出せるのでしょうか?

作業を実行するための明示的なアルゴリズムを知らなくても、特定のタスク用にニューラル ネットワーク (NN) を設計し、トレーニングできるという事実に、多くの人が驚嘆しています。たとえば、有名な手書き数字認識のチュートリアルはわかりやすいですが、その背後にあるロジックはニューラル ネットワーク内に隠されており、階層構造、重み、および活性化関数を通じてのみ垣間見ることができます。

[[269379]]

画像ソース: Unsplash

この論文では、ニューラル ネットワークの透明性原理を通じて、ニューラル ネットワークの「ブラック ボックス知識」を明らかにします。この目的のために、ブール XOR 関数を備えたニューラル ネットワークを検証します。まず、既知の代数関係を明確に含む既知の XOR プロパティ プロセスを使用して、ボトムアップ ニューラル ネットワークが構築されます。 2 番目のステップでは、TensorFlow Keras を使用して、シンプルなグラフィカル プログラミング ツールから XOR ロジック演算までニューラル ネットワークをトレーニングします。

*** 2 つの方法を比較します。 Keras ニューラル ネットワークをブール コンポーネントに分解すると、論理設定が最初のステップで構築されたニューラル ネットワークと異なることがわかります。トレーニングされたニューラル ネットワークは、異なるブール関数を使用して XOR 演算の代替表現を発見しました。

この代替 XOR 式は数学では知られていないわけではありませんが、少なくとも新しいものです。これは、ニューラル ネットワークが新しい知識を生み出せることを示唆している可能性があります。しかし、それを抽出するには、ニューラル ネットワークの設定とパラメーターを明示的なルールに変換できなければなりません。

XOR ニューラル ネットワーク (XOR NN) のボトムアップ構築

XOR演算はマッピングによって定義されるブール関数であり、

  1. 排他的論理和 (0,0) = 排他的論理和 (1,1) = 0
  2. 排他的論理和 (1,0) = 排他的論理和 (0,1) = 1

XOR演算用の既知のニューラルネットワークまたはGoogle ID列を構築する

  1. XOR (x,y) = AND ( NAND (x,y) 、 OR (x,y) )

これは、演算子 AND、NAND (AND ではない)、および OR がよく知られており、これらはすべて、2 つの入力ノードと 1 つの出力ノード、バイアス、およびシグモイド活性化関数を持つ単純なニューラル ネットワークで表現できるため役立ちます。

ブール関数演算子のニューラル ネットワーク

これを基に、NAND、AND、OR NN を接続することで XOR ニューラル ネットワークを構築できます。したがって、XOR は 3 層のニューラル ネットワークになります。

XOR演算によるニューラルネットワーク

可能な入力構成を入力し、出力を調べます (この記事で使用されている Excel ワークシート)。実効値は、(0,0)と(1,1)の場合はそれぞれ0.0072、(0,1)と(1,0)の場合は0.9924です。

他のニューラル ネットワークは、XOR 演算の次の表現を使用して構築できます。

  1. XOR (x,y) = OR ( AND ( NOT(x) , y ) , AND ( x , NOT(y) ) )
  2. XOR (x,y) = NAND ( NAND ( x 、 NAND ( x,y) ) 、 NAND ( y 、 NAND ( x,y) ) )

ただし、これらの ID 列により、ネットワークはより複雑になります。

さらに、XOR 演算は線形に分離可能ではないため (活性化関数は厳密に単調であるため)、2 層ニューラル ネットワークを構築することはできません。

しかし、XOR 演算を実行するニューラル ネットワークを構築する他の方法があるかもしれません。次のセクションでは、ニューラル ネットワークをトレーニングして別のソリューションを探します。

TensorFlow Keras を使用した XOR ニューラル ネットワークの構築

Keras は強力で使いやすいニューラル ネットワーク ライブラリです。前のセクションでは、3 層の 2-2-1 モデルを構築し、以前に構築したニューラル ネットワークと比較しました。

エラーバックプロパゲーションは、ニューラル ネットワークを構築するための標準的なアプローチである、学習率 1 と平均二乗誤差損失関数を持つ勾配降下法オプティマイザーを使用して実行されました。

以下は Python コード スニペットです。

  1. # XOR演算用のNNを生成する
  2. # 入力層: < NODES >ノード、各ビットに 1 つ ( 0 = false 、 + 1 = true )
  3. # 出力層: 結果用のノード 1 つ ( 0 = false 、+ 1 = true )
  4. # シグモイド活性化関数、勾配降下法オプティマイザー、平均二乗誤差損失関数を使用する
  5. # 最終更新日: 2019年5月28日
  6.   
  7. テンソルフローをtfとしてインポートする
  8. numpyをnpとしてインポートする
  9. matplotlib.pyplot を plt としてインポートします。
  10.   
  11. # モデルを定義する
  12. ノード= 2  
  13. モデル= tf .keras.Sequential()
  14. model.add(tf.keras.layers.Dense(ノード、 input_dim = 2 アクティベーション= tf .nn.sigmoid))
  15. モデルを追加します(tf.keras.layers.Dense(1, activation = tf.nn.sigmoid ))
  16. model.compile(オプティマイザー= tf .train.GradientDescentOptimizer(1),損失= tf .keras.losses.mean_squared_error,メトリック= ['binary_accuracy'])
  17. モデル.要約()
  18.   
  19. # トレーニングデータとテストデータを生成する
  20. エポック= 10000  
  21. データ入力= np .array([[0,0],[0,1],[1,0],[1,1]])
  22. data_out = np.array ([0,1,1,0])
  23.   
  24. # 列車モデル
  25. history = model .fit(data_in, data_out, epochs epochs =epochs, verbose = 0 )
  26.   
  27. # トレーニング履歴の分析
  28. history.history.keys() のキーの場合:
  29. plt.scatter(範囲(エポック), history.history[キー], s = 1 )
  30. plt.ylabel(キー)
  31. plt.xlabel('エポック')
  32. plt.show()
  33.   
  34. # モデルで予測する
  35. 結果= model.predict (data_in)
  36.   
  37. # 結果を印刷
  38. def printarray(arr):
  39. np.array2string(arr).replace('\n','') を返します。
  40.   
  41. 印刷()
  42. print('input', printarray(data_in))
  43. print('出力(計算)', printarray(data_out))
  44. print('出力 (予測) ', printarray(結果))
  45. print('出力 (予測ノルム)', printarray(np.round(結果)))
  46.   
  47. # モデルの重みを取得
  48. 印刷()
  49. 印刷(model.get_weights())

XOR 演算の利点は、教えることができる構成が 4 つしかないため、パラメーター空間全体をトレーニングできることです。ただし、モデルを駆動して損失ゼロと 100% の精度を達成するには、データセットをニューラル ネットワークに渡す何らかのプロセスが必要です。つまり、出力はゼロに近づき、それぞれ (0,1)、(1,0)、(0,0)、(1,1) になります。

XOR ニューラル ネットワークの損失とエポックの比較

XORニューラルネットワークの精度とエポックの比較

しかし、トレーニング期間が停滞し、接続できなくなる可能性もあります。すると、精度は 75% または 50% で止まります。つまり、1 つまたは 2 つのバイナリ タプルのマッピングが正しくありません。この場合、適切なソリューションが得られるまでニューラル ネットワークを再構築する必要があります。

分析と結論

ここで、Keras ニューラル ネットワークが構築されたものと同様の構造を持っていることを確認します。重みを返すことによって (コード スニペットの最後を参照)、重みとバイアス値を取得します。

Pythonスクリプトの出力

これらのパラメータを使用して、ニューラル ネットワークを再構築します (この場合も Excel を使用)。 3 つの演算子で構成されます。

Keras でトレーニングされた XOR ニューラル ネットワーク

可能なすべての構成を入力することで、H1、H2、および O 演算子に関連付けられたブール関数を識別できます。

Keras XOR ニューラル ネットワークのブール関数

興味深いことに、Keras ニューラル ネットワークは構築されたものと同じロジックを持っていると思っていましたが、別のソリューションが作成されました。ニューラル ネットワークが見つけた式である演算子 NAND、OR、AND の代わりに、OR、AND、(比較的知られていない) INH を使用します。

  1. XOR (x,y) = INH ( OR (x,y)、 AND (x,y) )

これは、ニューラル ネットワークが以前にはなかった知識を獲得できることを示しています。もちろん、「新しい知識」は相対的なものであり、既知の程度によって異なります。つまり、XOR 演算のすべての表現を知っていれば、Keras ニューラル ネットワークには追加の価値はありません。

さらに、より複雑なニューラル ネットワークの場合、重みを明示的なアルゴリズムまたは数式に変換するのは簡単ではありません。しかし、おそらくこの種の専門知識こそが、将来の AI 専門家が備えていなければならないものなのでしょう。

<<:  求人検索サイトIndeedの統計:AI採用は減速、求職者の関心は低下

>>:  JavaScript チュートリアル: Web アプリケーションに顔検出機能を追加する

ブログ    
ブログ    
ブログ    

推薦する

5G時代の到来により、携帯電話はどのように人工知能を取り入れることができるのでしょうか?

最近、第51回国際コンシューマー・エレクトロニクス・ショーが米国ラスベガスで開催され、世界中の人工知...

キャッシュに関して最も懸念される問題は何ですか?種類は何ですか?リサイクル戦略とアルゴリズム?

[[342437]]著者は、正確なタイミング タスクと遅延キュー処理機能を備えた、高同時実行シナリ...

【専門家がここにいるエピソード6】インタラクションのための人工知能

[51CTO.comからのオリジナル記事] 今回のライブ番組「ビッグネームがやってくる」のゲストは、...

人工知能とニューラルネットワークの関係と違いは何ですか?

人工知能とニューラルネットワークの機能はどちらもイベント処理です。たとえば、人工知能は自動文書処理を...

次世代AIの成功は効果的なパイロット戦略から始まります

生成 AI は世界を席巻していますが、企業はどのようにしてこのテクノロジーの可能性を真に活用し、その...

効率的な整数計画法ソリューション、Kuaishouは多変量因果森林モデルを提案し、インテリジェントなマーケティング効果が顕著です

一定額以上の購入に対する Meituan のクーポンや Taobao のショッピング紅包などのスマー...

兵馬俑は「Subject Three」を演奏したが、これは予想外のことだった

ご家族の皆さん、世界中で人気の魔法のダンス「Subject Three」、まさか兵馬俑も踊り始めると...

NeuRAD: 自動運転のためのニューラル レンダリング (複数のデータセットでの SOTA)

論文「NeuRAD: 自動運転のためのニューラル レンダリング」は、Zenseact、チャルマース工...

中科世宇の王金橋氏:5Gは新しい警察アプリケーションを強化し、交通管理の「細かく科学的な」管理を改善します

最近、「つながりとインテリジェンス、より安全な世界の構築」をテーマにした2021年世界セキュリティ博...

ナレッジグラフをビッグモデルの仲間にしよう

大規模言語モデル (LLM) は、非常に流暢で一貫性のあるテキストを短時間で生成できるため、AI 会...

AIはどのようにして顧客の性格を判断できるのでしょうか?

AI を使用したソーシャル メディアの監視により、仕事、大学入学、賃貸住宅などを失う恐れがあり、本...

カンファレンスで GitHub のトップ 10 AI アップデートが発表されました。

著者 | タスミア企画 | ヤン・ジェン制作:51CTO テクノロジースタック(WeChat ID:...

データ構造とアルゴリズム: 奇数偶数による配列のソート II

[[429517]]簡単なシミュレーション問題、ぜひ挑戦してみてください!配列を偶数/奇数でソート...

Uber Ludwig は、ローコード機械学習用のオープンソース フレームワークです。

[[330500]] 【51CTO.com クイック翻訳】ディープラーニング モデルのトレーニング...

オフサイトのコンピューティング能力の使用率が 55% 向上し、オープンソースになりました。 「東洋のデータと西洋のコンピューティング」のAIインフラへの対応

AIの波の中で、企業や国を問わず、コンピューティング能力に対する需要は日々高まっています。最近立ち上...