什麼?神經網絡還能創造新知識?

2020-12-13 讀芯術

全文共3243字,預計學習時長10分鐘或更長

神經網絡(NNs)可以在不知道用顯式算法執行工作的情況下被設計和訓練於特定的任務,很多人都對此表示驚嘆。例如,著名的手寫體數字識別教程很容易執行,但其背後的邏輯還是隱藏在神經網絡下,僅能通過層次化結構、權值和激活函數略知一二。

本文通過神經網絡透明原則來揭示其「黑盒知識」,為此來檢驗一個布爾異或函數的神經網絡。首先,利用已知異或屬性過程構造了一個自底向上的神經網絡,即清晰包含已知的代數關係。在第二步中使用TensorFlow Keras從簡易圖形化編程工具到異或邏輯運算訓練神經網絡。

最後比較兩種方法。將Keras神經網絡分解為布爾組件,發現邏輯設置與第一步中構造的神經網絡不同。被訓練的神經網絡發現了使用不同布爾函數的另一種異或運算表示方法。

這另一種異或公式在數學領域不是未知的,但至少很新奇。這或許表明神經網絡可以創造新的知識。但要提取它,必須能夠將神經網絡的設置和參數轉化為顯式規則。

自底向上構造異或運算神經網絡(XOR NN)

異或運算是由映射定義的布爾函數,

XOR (0,0) = XOR (1,1) = 0

XOR (1,0) = XOR (0,1) = 1

為異或運算構造一個已知的神經網絡或谷歌標識列

XOR (x,y) = AND ( NAND (x,y) , OR (x,y) )

這很有幫助,因為操作符AND、NAND(而非AND)和OR是眾所周知的,並且都可以用簡單的神經網絡來表示,其中有2個輸入和1個輸出結點、偏移量和sigmoid激活函數。

布爾函數操作符的神經網絡

在此基礎上可通過連接NAND、AND和OR的NNs來構造異或運算神經網絡。所以異或變成了一個三層神經網絡。

異或運算的神經網絡

輸送可能的輸入配置並檢查輸出(本文使用Excel工作表)。分別得到有效的(0,0)、(1,1)的0.0072以及(0,1)、(1,0)的0.9924。

可以用以下異或運算的表示來建構其他的神經網絡:

XOR (x,y) = OR ( AND ( NOT(x) , y ) , AND ( x , NOT(y) ) )

XOR (x,y) = NAND ( NAND ( x , NAND ( x,y) ) , NAND ( y , NAND ( x,y) ) )

然而這些標識列導致了更複雜的網絡。

此外,由於異或運算不能通過線性可分(且激活函數嚴格單調),因此,不可能建立兩層的神經網絡。

但也許還有其他方法可以構建異或運算的神經網絡呢?下一節將通過訓練神經網絡來尋找另一種解決方案。

使用TensorFlow Keras構建異或神經網絡

Keras是一個功能強大且易於使用的神經網絡庫。上一節中建立了一個三層的2-2-1模型,並與之前建構的神經網絡進行了比較。

使用梯度下降優化器與學習率1和均方誤差損失函數的誤差反向傳播,這是建構神經網絡的標準方法。

以下是Python的代碼片段:

# Generate NN for XOR operation

# input layer: <NODES> nodes, one for each bit (0 = false and +1 = true)

# output layer: 1 node for result (0 = false and +1 = true)

# Use sigmoid activation function, gradient descent optimizer and mean squared error loss function

# Last update: 28.05.2019

import tensorflow as tf

import numpy as np

import matplotlib.pyplot as plt

# Define model

nodes = 2

model = tf.keras.Sequential()

model.add(tf.keras.layers.Dense(nodes, input_dim=2, activation=tf.nn.sigmoid))

model.add(tf.keras.layers.Dense(1, activation=tf.nn.sigmoid))

model.compile(optimizer=tf.train.GradientDescentOptimizer(1), loss=tf.keras.losses.mean_squared_error, metrics=['binary_accuracy'])

model.summary()

# Generate train & test data

epochs = 10000

data_in = np.array([[0,0],[0,1],[1,0],[1,1]])

data_out = np.array([0,1,1,0])

# Train model

history = model.fit(data_in, data_out, epochs=epochs, verbose=0)

# Analysis of training history

for key in history.history.keys():

plt.scatter(range(epochs), history.history[key], s=1)

plt.ylabel(key)

plt.xlabel('epochs')

plt.show()

# Predict with model

result = model.predict(data_in)

# Print results

def printarray(arr):

return np.array2string(arr).replace('\n','')

print()

print('input', printarray(data_in))

print('output (calculation)', printarray(data_out))

print('output (prediction) ', printarray(result))

print('output (pred. norm.)', printarray(np.round(result)))

# Get weights of model

print()

print(model.get_weights())

異或運算的好處是可以訓練整個參數空間,因為只有四種可能的配置可以教。然而,需要一些在神經網絡中傳遞數據集的過程來驅動模型達到零損耗和100%精準,即輸出趨向於一個分別是(0,1)、(1,0)和(0,0)、(1,1)的零。

異或運算神經網絡的Loss和epochs對比

異或運算神經網絡的Accuracy 和epochs對比

然而,訓練期也可能陷入停滯,無法銜接。接著精準度停止在75%甚至50%,即一個或兩個二元元組的映射是不正確的。在這種情況下就要重新構建神經網絡,直到得到合適的解決方案。

分析和結論

現在驗證Keras神經網絡是否與建構的具有相似結構。通過返回權值(參見代碼片段的末尾),得到了權值和偏差值。

Python的腳本輸出

使用這些參數來重建神經網絡(再次使用Excel)。由三個操作符組成。

基於Keras訓練的異或運算神經網絡

通過輸入所有可能的配置,可以識別與H1、H2和O操作符關聯的布爾函數。

Keras在異或運算神經網絡中的布爾函數

有趣的是,本以為Keras 神經網絡與所建構的邏輯是一樣的,但它卻創建了另一種解決方案。使用OR,AND和(相對沒人知道的)INH,而非操作符NAND, OR 和AND,即神經網絡找到的公式。

XOR (x,y) = INH ( OR (x,y), AND (x,y) )

這表明神經網絡可以獲得以前沒有的知識!當然「新知識」是相對的,並且取決於知道的程度。也就是說,若一個人知道異或運算的所有表示形式,Keras 神經網絡就不會有其他價值。

此外,對於更複雜的神經網絡,將權值轉換為顯式算法或公式並不容易。但也許這種專業知識是未來人工智慧專家必須具備的能力。

留言 點讚 關注

我們一起分享AI學習與發展的乾貨

歡迎關注全平臺AI垂類自媒體 「讀芯術」

相關焦點

  • 一個被稱為「模式自適應神經網絡」的新神經網絡架構
    一個被稱為「模式自適應神經網絡」的新神經網絡架構 李倩 發表於 2018-06-04 10:11:07
  • 小白必看:神經網絡入門指南
    讀了這篇文章,你將能夠走進任何一個會議,用你新獲得的流行詞在午餐桌上大放異彩!如果你在過去幾年裡打開過瀏覽器,你一共見過「神經網絡」這個詞(幾百次)了。在這篇短文中,我將給你一些關於神經網絡和其領域的一些知識。在接下來的5分鐘裡,你可能不會成為這個領域的世界專家,但你會經歷一個不平凡的入門階段。
  • 神經網絡如同青蛙的智力
    目前,較為深層的神經網絡模型已經開發了出來,例如谷歌的阿爾法狗便是深層的神經網絡,其背後的算法支撐即為貝葉斯算法。其實,並不需要過多的了解、關注神經網絡模型背後的底層結構,工作中只需要會使用就可以了。神經網絡是黑箱項目過程中,很多人會問到使用的建模方法是什麼,通常,這個問題我真的很難回答。如果模型的中間層為神經網絡,那麼該層即為黑箱。
  • 深度學習教父辛頓:未來神經網絡可以重建人腦意識
    什麼時候它開始走上正軌,看起來越來越正確? 辛頓:80年代有一件事讓人很失望:如果你開發的網絡有很多隱藏層,你沒有辦法訓練它們。當然這種說法並不完全正確,因為有些簡單的任務還是可以訓練的,比如識別筆跡。至於大多的深度神經網絡,我們不知道如何訓練。 2005年時,我提出一種新方法,可以用無監督方式訓練深度網絡。
  • 《超智能體》作者講述深層神經網絡設計理念(附PPT+視頻) | 雷鋒網...
    並且每天都有大量新網絡結構被提出,無法學完所有技術的我們需要找出各類網絡結構的共性,嘗試歸類的理解其背後的設計理念。本期雷鋒網(公眾號:雷鋒網)硬創公開課邀請到《超智能體》一書作者於建國,分享的內容就是理解為何「深層」比「淺層」網絡要好,深度學習適用於什麼任務,並嘗試找出前饋神經網絡、循環神經網絡、卷及神經網絡、殘差網絡、預訓練、多任務學習、端到端學習、自動編碼器、遷移學習、distillation、dropout、regularization、batch-normalization
  • 什麼是神經網絡?工作原理是什麼?——AI算法必懂
    關注AI的同學一定都知道神經網絡,這是AI算法中模擬人的大腦所衍生出來的學科和算法。可以說,不了解神經網絡就不能說動算法,懂算法者必懂神經網絡。下面我們就對神經網絡的工作原理進行深入淺出的介紹。YQ0ednc
  • 打造發達的神經連結網絡是關鍵
    比如說,剛背過的字詞,過兩天就忘記一大半,記憶力不強;學了一個新知識,不知道和以前的知識聯繫起來,做題目的時候想不到兩者之間的關聯。相信家長都很想知道,怎麼能讓孩子更聰明,學知識更快更靈活呢? 聰明的人,擁有強大腦神經網絡神經學證明——大腦是否聰明,最重要的是神經連結網絡的發達程度。這個發達程度是依靠哪些參照物呢?
  • 神經網絡讓計算機自我進化,自我探索,超越深度學習算法
    從生物學中借鑑的神經網絡,其能力正在發生深刻的飛躍。神經網絡是製造真正智能機器的最佳方式嗎?該系統由一個神經網絡開始,它是一種被稱為神經元的小計算單元按照層狀連接排列。一層神經元的輸出通過具有不同「權重」的連接傳遞到下一層。在一個簡單的例子中,輸入數據,比如圖像,可能被輸入到神經網絡中。隨著來自圖像的信息從一層傳遞到另一層,網絡對其內容的提取越來越抽象。最後,最後一層計算最高級別的信息:圖像的標籤。
  • 人工智慧黑盒揭秘:深度神經網絡可視化技術
    但深度神經網絡又被稱為「黑盒」模型,多層隱藏結構,數據 / 特徵矢量化,海量決策關鍵元等因素讓模型使用者犯難:模型決策的依據是什麼?應該相信模型麼?特別是對於金融,醫藥,生物等關鍵型任務,深度學習模型的弱解釋性成為人工智慧項目落地的最大障礙。
  • 圖神經網絡的十大學習資源分享
    字幕組雙語原文:【乾貨】圖神經網絡的十大學習資源分享英語原文:Top 10 Learning Resources for Graph Neural Networks翻譯:雷鋒字幕組(聽風1996)圖神經網絡(GNNs)是深度學習的一個相對較新的領域,從最近開始越來越流行。
  • 神經網絡的叛離:32年前從心理學與生理學分離的瞬間
    從這個角度看的話,就會發現1986年的那篇論文的意義,並不單單只是提出了反向傳播,更是「神經網絡從心理學和生理學分離,轉向機器學習領域的一個重大轉折。」下面,我就基於自己的讀到的一些知識,簡單解釋一下。
  • 開源神經網絡框架Caffe2全介紹
    深度學習,和別的AI的算法,要為社會創造價值,還得落到產品中去。在工業界,我們訓練和部署深度學習算法的時候,通常有以下幾個環節你有數據你有模型你想要找到那個神器的函數fx。這個不斷嘗試和逼進的過程,我們稱為訓練你可能需要在移動端/伺服器端/物聯網設備/嵌入式系統上部署你的神經網絡算法那麼Caffe2作為一個神經網絡框架,為你提供了模型搭建、訓練、和跨平臺的部署。簡而言之,全包辦了。
  • 光神經網絡,正在照亮智能計算的未來
    如果問一個問題——能夠進行深度神經網絡計算的晶片有哪些?大家給出的答案可能五花八門:CPU、GPU、DSP、NPU……過去幾年裡,電子計算已經成為實現人工智慧算法——尤其是深度神經網絡模型——最重要的算力支撐。
  • Hinton等人新研究:如何更好地測量神經網絡表示相似性
    近期很多研究試圖通過對比神經網絡表示來理解神經網絡的行為。谷歌大腦 Simon Kornblith、Geoffrey Hinton 等人的一項新研究引入了 centered kernel alignment (CKA) 作為相似性指數,並分析 CKA、線性回歸、典型相關分析(CCA)等相關方法之間的關係,證明 CKA 優於其他相似性指數。
  • 用深度神經網絡求解『薛丁格方程』,AI開啟量子化學新未來|Nature...
    最近,來自柏林自由大學(Freie Universität Berlin) 的科學團隊取得了突破性進展,他們發表的一篇名為《利用深度神經網絡解電子薛丁格方程》的論文,登上了《Nature Chemistry》子刊。
  • 神經網絡訓練 trick 之 lr 設置
    長期以來,人們普遍認為,的神經網絡中包含很多局部極小值(local minima),使得算法容易陷入到其中某些點,這是造成神經網絡很難優化的原因,但是到 2014 年,一篇論文《Identifying and attacking the saddle point problem inhigh-dimensional non-convex
  • 吃什麼對神經恢復快速 恢復神經就吃這些
    在生活中如果不幸的出現了神經受損的情況,患者需要先去醫院進行檢查,然後配合醫生的治療。還需要注意很多的方面,那麼,吃什麼對神經恢復快速呢?如何預防神經損傷呢?一起來了解一下吧。  吃什麼對神經恢復快速綠豆能幫助排出侵入體內的各種毒物,包括各種重金屬及其他有害物質,促進人體的正常代謝。
  • 用深度神經網絡求解『薛丁格方程』,AI開啟量子化學新未來
    最近,來自柏林自由大學(Freie Universität Berlin) 的科學團隊取得了突破性進展,他們發表的一篇名為《利用深度神經網絡解電子薛丁格方程》的論文,登上了《Nature Chemistry》子刊。
  • 極驗發布全國首個專注於圖神經網絡的書籍,《深入淺出圖神經網絡...
    圖神經網絡是當前 AI 領域最為火爆的研究熱點之一,學術界與工業界各大公司紛紛投入大量資源研究。它在因果推理上擁有巨大潛力,有望解決深度學習無法處理的關係推理、可解釋性等一系列問題,而這些問題被業界認為是能夠推動 AI 出現實質性進展的關鍵。
  • 如何使用神經網絡彈奏出帶情感的音樂?
    而現在,由於 GPU 計算資源和可獲得的大數據,結果可以變得相當好,於是作者就希望使用像圖 1 中的神經網絡來進行一個音樂實驗,來實現音樂風格的神經轉換。在這篇文章中,作者給出了非常詳細的分析和什麼會這樣思考,本文也表明使用作者提出的方法,我們可以得到良好的結果。