?

閃爍的神經網絡

2024-04-15 08:37陳凱
中國信息技術教育 2024年7期
關鍵詞:神經網絡

陳凱

摘要:本文給出了一種基于數字邏輯電路的模擬神經元行為以及構建簡單神經網絡的方法,主要圍繞非線性的異或運算的實現,完整呈現了基于隨機發生器、計數器、數字比較器和邏輯門等數字邏輯元件模擬神經元行為和構建神經網絡的過程,并討論了其在基礎教育領域人工智能教學中的可能用途。

關鍵詞:感知機;神經網絡;異或門;數字邏輯電路

中圖分類號:G434? 文獻標識碼:A? 論文編號:1674-2117(2024)07-0023-05

“羅森布拉特認為,人的智能行為以人類對世界的整體了解為基礎,很多智能行為很難被形式化。在20世紀50年代,羅森布拉特提出了一種新的實現智能行為的思路,即構建一種能夠自動學習并恰當辨別模式、作出響應的神經網絡,他首次引入了感知機的概念,這是一種模擬人腦感知和學習能力的模型,可以對感知機進行訓練,使之能實現特定的分類識別功能。不過,明斯基對感知機的看法則相對悲觀,他認為感知機作為線性模型,無法表示非線性的函數,即便是簡單的如異或(XOR)邏輯運算也難以實現。1969年,明斯基和西摩·佩珀特寫作出版了《感知機》一書,用數學證明感知機的局限性,他們的觀點對神經網絡的研究造成了嚴重的打擊,使得神經網絡研究陷入了長達10年的低潮期?!?/p>

以上文字主要由某人工智能語言工具生成,筆者略微做了一些整理。羅森布拉特和明斯基都是人工智能研究界巨擘,兩人圍繞感知機的爭論儼然成為一樁公案。從今天所知回顧歷史,便知羅森布拉特和明斯基都受制于歷史局限,現在的人們知道,具有多層感知機的神經網絡可以表示用單層的感知機無法表示的非線性函數。在基礎教育階段,學生在學習神經網絡時,可能會因為無法直觀地看到模擬神經元的工作過程,而對整體神經網絡的原理缺乏真切的理解,也就難以體驗到多層感知機在解決表示非線性函數這個問題上的思維方法的突破。正因為這樣,筆者希望能找到具有如下特性的工具:用某種模型實現神經元和突觸行為的底層的模擬,提供將虛擬神經元搭建成神經網絡并展現運行過程與效果的平臺,神經元的生成和連接方便,神經網絡的架構過程最好能通過在圖形化的環境中拖拽圖標來完成,且有一定的可定制性;能使用可視化工具將神經網絡的結構和工作過程顯現出來,并提供一定的神經網絡架構、訓練參數、訓練指標的設定的人機交互接口;獲取和安裝方便,軟件是開放的,沒有版權上的限制,較少依賴特殊的工作環境。

然而,能滿足以上要求的現成工具卻很難找到,這就促使筆者思考,如何“親手打造”這樣一種神經網絡實驗環境。本文要介紹的項目名為“閃爍的神經網絡”,在這個神經網絡中,虛擬神經元對來自輸入信號的總體的閃爍的頻率進行計數,當計數達到閾值時,該虛擬神經元也開始以閃爍來對外發送信號,其行為如圖1所示。

之所以通過閃爍頻率計數來判定閾值,是因為能夠在教學演示中展現出直觀形象的動態效果:閃爍的頻率能體現出神經元的運動狀態,而且因為對閃爍的計數需要一定的時間,信號的傳遞過程和神經元的變化過程能被頭腦注意并觀察到,神經網絡工作的內部因果關系也就清晰地呈現出來了。

將這樣的多個行為簡單的神經元連接組合到一起,就可以涌現出復雜的行為。而用來制作神經元和神經網絡的工具,則出乎意料地使用了數字邏輯模擬器(數字邏輯仿真軟件)。對已有文獻的考察可知,很少有人將數字邏輯模擬器用于神經網絡的搭建和運用,其中可能有多方面的原因,如數字邏輯模擬器較難實現浮點數的運算、無法批量生成神經元和快速搭建神經網絡(這里不考慮采用硬件描述語言生成神經網絡的情況,類似的神經網絡實現方法所需要的知識技能超出基礎教育階段絕大部分學習者的水平)、很難用數字電路本身來進行基于機器學習的調參(稍微復雜一些的基于數字電路的神經網絡,其中的諸多工作參數仍然需要計算機環境下的神經網絡算法來計算獲得)。所以,數字邏輯模擬器并不是一種值得推薦的作為生產工具的神經網絡架設環境。但對于人工智能的初學者來說,數字邏輯模擬器提供了一個圖形化的實驗環境,除了剛才提到的神經網絡的運行過程能直觀顯現出來之外,神經網絡從構想到架設再到運行驗證,都能由學習者親手操作把控。本文使用Logisim數字邏輯模擬器來構造神經網絡,其中的電路當然也能遷移到其他功能完備的數字邏輯模器中,甚至可以采用真實的元件替代虛擬元件來實現神經網絡電路。實際上,使用圖形化的編程工具也能實現與“閃爍的神經網絡”類似的效果,但數字邏輯模擬器提供了一個純粹硬件的構造平臺,更能凸顯出基于底層物理現實的“造物”特性。

數字邏輯的神經網絡基本組件

組成神經網絡的幾個基本組件是信號發生器、信號比較器、信號觸發器、信號累加器、信號削減器和信號顯示器。這些部件的基礎元件是隨機數發生器、計數器、數字比較器和邏輯門等。

1.信號發生器

最簡單的信號發生器是由一個隨機數發生器和一個計數器組成的,計數器每次在計滿之后,都會產生一個溢出信號1,然后在重新開始計數后溢出信號又變為0,相當于在每次計數計滿時發出一個閃爍信號。由于隨機數發生器的作用,計數器發出溢出信號的時間是不規律的,這樣就能產生出持續重復但又不太規律的閃爍信號。計數器的位數決定了閃爍的總體頻率,如3位計數器要計滿8個數后才閃爍,4位計數器則要計滿16個數后才閃爍。

可以為信號發生器增加一些元件,使它能產生出更多效果,如:增加一個輸入,通過與門來控制信號發生器是否發生信號,這樣就能切換信號發生器的閃爍和靜默兩種狀態;為隨機數發生器設定不同的隨機種子,加強隨機效果;用多套隨機數發生器和計數器,來產生不同頻率的信號,這樣就能設定神經網絡中信號的權重。為了便于后續神經網絡的搭建,可以將電路封裝起來,形成抽象的模塊。信號發生器的電路與封裝后的模塊如上頁圖2所示。后面將要提到的幾個電路也都可以封裝成抽象的模塊,這里就不一一贅述了。在教學中,可以直接提供封裝好的模塊,降低學習的難度,同時將模塊內部的工作原理作為拓展的學習內容,豐富教學內容的難度層次。

2.信號比較器

信號比較器用來判斷在一段時間內,閃爍的計數是否超過閾值。信號比較器由兩個計數器和一個數字比較器組成,左面的計數器在計滿數后向右面的計數器發送一個清零信號,所以,當輸入的閃爍信號頻率足夠高時,數字比較器就能判別出閃爍頻率是否高于一定的閾值,圖3是信號比較器的組成電路,其中所示的閾值是6,這個閾值是神經網絡中可以通過人機交互進行調整的一個重要參數。

3.信號顯示器

信號顯示器的結構其實和信號比較器很相近,只是將數字比較器換成一個輸出信號的顯示,這樣能在實驗中,觀察在一定時間周期里閃爍的次數,電路如圖4所示。顯示器僅用于調試,在最終運行的神經網絡中不是必需的。

4.信號觸發器

信號觸發器模擬了神經元的運行工作過程,只有當輸入信號閃爍的頻率達到閾值時,神經元才被觸發向外發送閃爍信號,它是由計數器、非門、或門、驅動器共同組成的,電路如圖5所示。信號觸發器的結構稍微復雜一些,不過只要運行起來,它的作用就是顯而易見的:當輸入信號(來自信號比較器)為1時,計數器就開始計數,在計數過程中,時鐘信號能夠順利通過驅動器傳輸到計數器。當計數器計滿后,如果輸入信號仍然是1,則繼續下一輪計數,如果輸入信號是0,則驅動器關閉,時鐘信號被阻止傳輸到計數器,于是停止計數。

5.信號累加器

信號累加器可以是一個簡單的或門,也可以是幾個或門的組合,如圖6所示,它能將幾組信號的閃爍合并成一組信號的閃爍。如果神經網絡比較簡單,就可以直接用或門充當信號累加器,如果神經網絡比較復雜,如需要對很多個信號進行或運算,則仍然有必要將其封裝成模塊。

6.信號削減器

信號削減器由一個非門和一個與門組成,當下端的輸入不閃爍時,上端的閃爍信號就能順利通過與門,當下端輸入閃爍時,就會削減掉上端的閃爍信號。電路如下頁圖7所示。

神經網絡實現異或門運算

這里有必要簡單說明一下基于多層感知機的神經網絡實現異或邏輯運算的原理(實現與、或、非邏輯運算的感知機結構比較簡單,有興趣的讀者可自行查閱相關資料)。這個實現異或邏輯運算神經網絡由如圖8所示的兩個輸入神經元(最左列)、兩個隱藏層神經元(中間列)、一個輸出神經元(最右列)組成。在圖8中,深色箭頭代表信號累加,淺色箭頭代表信號削減。神經元的觸發閾值用橫杠的高低來表示。

異或邏輯運算的規則是,當輸入信號是一個0或一個1時,輸出信號為1,當輸入信號相同時,輸出信號為0。設想一下,如果兩個輸入神經元均靜默,則神經網絡中沒有任何信號傳輸,輸出神經元自然也是靜默;如果兩個輸入神經元中有一個活躍,則會觸發隱藏層上側閾值較低的神經元,然后輸出信號傳輸給輸出神經元,則輸出神經元活躍;如果兩個輸入神經元均活躍,則同時觸發隱藏層上側閾值較低的神經元和下側閾值較高的神經元,隱藏層下側神經元發送權重較高的削減信號,將隱藏層上側神經元發送的信號大部分消除,則輸出神經元無法達到閾值,則輸出靜默。

基于數字邏輯元件的神經網絡

接下來,就可以用數字邏輯元件搭建神經網絡,使其實現異或邏輯運算。一個輸入神經元不需要進行閾值判斷,所以直接用信號發生器表示即可;隱藏層神經元和輸出神經元需要進行閾值判斷,可以用信號比較器、信號觸發器和信號發生器組合成神經元模塊,模塊用多個不同的輸出表示不同的輸出信號權重,在實際應用中,可以選用模塊的某一路信號輸出,也可以同時使用多路信號輸出,具體如圖9所示。

最后,將神經元和信號累加器、信號削減器組合起來,成為一個可以實現異或運算的神經網絡,如圖10所示??梢钥闯?,隱藏層上側的神經元閾值較低,為二進制數00110,也就是十進制數6,隱藏層下側的神經元閾值較高,為二進制數01010,也就是十進制數10。當只有一個輸入神經元閃爍時,只有隱藏層上側神經元被觸發,最終使得輸出神經元收到的閃爍信號頻率超過閾值被觸發;而當兩個輸入神經元均閃爍時,兩個隱藏層神經元均被觸發,下側神經元的削減信號權重大(通過多個輸出累加增加權重),將上側神經元輸出的閃爍大部分削減,則輸出神經元收到的閃爍信號頻率未超過閾值而保持靜默。

用這種基于數字邏輯的神經元當然也可以用來實現更復雜的運算,如判別一個簡單的位圖到底是數字0還是數字1、進行一位的二進制數加法等。關于實現二進制加法的神經網絡結構值得一提,其組成幾乎和實現異或運算的神經網絡結構一樣,僅僅是在輸入神經元的信號累加器后接入了一個閾值較高的輸出神經元而已(如圖11)。只要調整閾值,就能將這個結構用于與邏輯以及或邏輯的運算。至于非邏輯運算,甚至不需要調整閾值,只要直接將兩個輸入中的一個錨定為1即可。在這里可以看出神經網絡實現運算和傳統的算法實現運算在方法思路上的區別。

穿越時空的遐想

這里有一個引人遐想的問題,如果將與門和非門串聯,則可模擬與非門的功能,繼而將四個與非門組合起來就能模擬異或門的功能,那么自然可以先用神經元模擬與非門,再組合起來實現異或門,如圖12所示。在20世紀60年代圍繞感知機的論戰中,是否有人想到用這樣簡單的方法,就能證明可以使用多個神經元來實現非線性的異或門運算呢?對于這個問題,筆者尚未查找到相關文獻,但可以肯定的是,羅森布拉特曾經明確地提出,多層感知機具有單層感知機所不具備的強大的能力。但明斯基卻認為“我們尚未發現任何一類真正讓人感興趣的多層機”[1],其中隱含的意味,大概是認為即便能實現異或運算,也無法實現其他更復雜一些的運算。

羅森布拉特的觀點基于一種自然而然的直覺——既然人腦依賴神經元的工作實現智能,那么機器當然也能模仿這一過程,但他既不能嚴謹地對此加以證明,也難以在現實中加以實施(受制于軟硬件條件,當時只能用神經網絡解決很簡單的問題),羅森布拉特的“非嚴謹”研究在當時被主流人工智能學界排斥,如今看來是一種很大的損失。直到20世紀80年代,關于多層神經網絡是一種普適的模擬器(可以模擬任何函數)的證明才真正完成。[2]還有更多尚沒有確切答案但值得展開討論的問題,如人的直覺是否僅僅是神經元(或其他基礎的物理組件)工作過程的產物?未來機器是否可能擁有像人那樣的直覺?到底在多大程度上,直覺是可以被信賴的?

參考文獻:

[1]Marvin Minsky and Seymour A.Papert.PerceptronsAn Introduction to Computational Geometry[M].Cambridge:The MIT Press,1969:231.

[2]Hornik, Kurt,Maxwell B.Stinchcombe and Halbert L.White.Multilayer feedforward networks are universal approximators[J].Neural Networks,1989:359-366.

猜你喜歡
神經網絡
基于遞歸模糊神經網絡的風電平滑控制策略
BP神經網絡在路標識別上的應用研究
神經網絡抑制無線通信干擾探究
基于Alexnet神經網絡的物體識別研究
基于BP神經網絡的旋轉血泵生理控制
基于神經網絡MRAS的速度辨識仿真研究
基于神經網絡的拉矯機控制模型建立
復數神經網絡在基于WiFi的室內LBS應用
基于支持向量機回歸和RBF神經網絡的PID整定
基于神經網絡分數階控制的逆變電源
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合