陳凱



在人工智能教學中,大概很難繞過人工神經網絡這部分內容。神經網絡的搭建和訓練既抽象又繁雜,在基礎教育階段,教學課時以及學習者的技能水平有限,教師需要仔細權衡如何選擇教學重點和教學方式。本文介紹一個名叫“神經網絡訓練營”的活動項目,該活動以“MemBrain”軟件為工具,讓學習者扮演神經元的教官,親自體驗搭建并訓練神經網絡的整個過程,高效地完成“神經網絡怎么搭建”與“神經網絡怎么訓練”的學習目標。在達成此學習目標后,便可比較平滑地進階到神經網絡框架和神經網絡算法的學習。
● 訓練營開班啦
考慮到教官能力有限,神經網絡訓練營初級班的學員不多,來到本班的共有四個神經元,先給神經元們安排下座位吧,如圖1所示。
工具欄里有一個畫著正方形的“Insert new neurons”按鈕,用這個按鈕來安排學員座位。學員的學號默認為從1到4。
● 教官布置任務
默認情況下,神經元們非常“笨”,不知道要做些什么。教官的訓練任務挺簡單,名稱叫“謙虛友善而又不浪費機會的決策者”,任務情境如下:假設有兩張游樂園的票,若已經有兩個人舉手搶票,那么決策者就決定不參與搶票,如果只有一人舉手搶票或沒有人搶票,那么決策者就拿下這張票。用表格呈現出來就如表1所示。
如果把不搶票標為0,搶票標為1,則可發現,這其實是與非門(NAND)的邏輯關系。所以說,教官的任務,就是讓四個神經元能相互合作,表現出與非門的運算過程。
● 給學員分配角色
將1號神經元和2號神經元作為輸入A和輸入B,4號神經元作為輸出O,分配角色的方法很簡單,雙擊神經元,打開“Edit Object Properties”對話框,在“Type”下拉菜單里選擇“Input”或“Output”即可,如圖2所示。
3號神經元的作用比較特殊,將它也設置為“Input”類型,但它在后面的訓練過程中,起的并不是輸入的作用,而是協助計算的作用,稍后就可知道原因。除了“Input”和“Output”類型之外,還有一種“Hidden”類型,在將來解決分類識別問題時極其有用。
● 學員手拉手
神經元沒有眼睛、耳朵、嘴巴、鼻子,為了讓它們之間能相互協作,可以將神經元連接起來,通過手拉手(觸手相連)的方式來傳遞信息,如圖3所示。
你是不是發現4號神經元有三只手?這不奇怪,它們是神經元,有再多只觸手都是可以的。通過觸手可以將一個神經元的信息傳遞給另一個神經元,不過所謂的信息,只是一個可正可負的強度值。好比一個人握住你的手,他可能握得很重也可能握得很輕,但你并不能知道某一次重重的握手代表的究竟是欣賞還是討厭。
如果雙擊4號神經元,可以發現,作為輸出類型的神經元,它有著更多可選項,用來決定接受到何種程度刺激后才被激活,如圖4所示。
選中“Lock Act. Thres. for Teacher”,表示將神經元受刺激的閾值固定下來,由于輸入的刺激信號有正有負,默認情況下,如果接受的刺激信號為正,則當前神經元被激活(模擬表現為閃閃發光),否則就不產生動作。神經元沒有被激活時保持靜默,被激活后就會對外界發送信息。在“MemBrain”中,被激活的神經元會閃閃發光。
雖然說,神經元發出信號只有1(發光)和0(不發光)兩種狀態,可在信號的傳遞中,由于觸手的強度不同,它傳出的以及對方神經元所接收到的信號的強度大小也會不同。觸手的強度值有一個專業的術語,稱為權重。點擊神經元之間的線條,就可以查看當前的權重值。
● 教官發放訓練要求
神經元各自的任務以及神經元之間的連接關系確立后,教官就可以發放訓練要求了。點擊工具欄里的書寫板形狀的“Show Lesson Editor”按鈕,填寫訓練要求,如圖5所示。
第一條訓練要求是,1號和2號神經元輸入為“0”和“0”,4號神經元輸出為“1”,然后點擊“New Pattern”按鈕輸入其他規則,由于3號神經元為協助運算,所以總是填寫“1”,輸入和輸出規則如表2所示。
● 開始訓練
點擊工具欄里的“燈泡”按鈕,就可以一步一步訓練神經元啦。所謂訓練,其實就是調整神經元之間的觸手強度值即權重,使得這個神經網絡的信號傳遞能夠越來越接近預先設定的訓練要求。可以點擊神經元之間的連線,觀察觸手的強度值,即權重是怎么一點一點發生變化的(至于權重是怎么一點一點發生變化的,就要深入學習神經網絡的算法了)。如果不喜歡反復點“燈泡”按鈕一步一步訓練,還可以點“感嘆號”按鈕自動執行批量的訓練。一般在訓練開始之前,可將初始的權重值設置為隨機值。
這一次的訓練結果如圖6所示,三條連線的權重分別是-23.4、-23.4和35.1。
如果1號和2號神經元數值分別為0和1,則4號神經元獲得強度值的計算過程是:0*-23.4+1*-23.4+ 1*35.1=11.7。結果是接受到一個強度為正的刺激,所以4號神經元被激活閃閃發光。如果1號和2號神經元數值都是0,因為3號神經元是正值,所以最后4號神經元接受到的也是正值,這里就可以看出3號神經元是如何促成邏輯運算結果成立的。
如果1號和2號神經元數值都是1,則4號神經元獲得強度值的計算過程是:1*-23.4+1*
-23.4+1*35.1=-11.7。接受到的是一個強度為負的刺激,所以4號神經元不發光。
到此為止,預定任務都已達成,神經元訓練營初級班順利結營。然而,這只是學習的開始。要想讓神經網絡做更多的事情,就還要:①了解不同的刺激函數,利用不同刺激函數以及不同的激發閾值,在接收信號強度和被激活狀況兩者間建立起對應關系;②嘗試在神經網絡中添加隱藏(Hiddeen)層,使其能完成復雜的分類任務,比如說,可以試著用兩個輸入神經元、三個隱藏層神經元、一個輸出神經元來實現異或運算;③了解神經元連線強度即信號傳遞權重以及神經元的被激活閾值是如何逐漸自動調整的,這就涉及不同的神經網絡算法,最終無疑要落實到程序設計上。
本文的例子,或許能夠用來說明一個較為有效的人工智能教學活動項目應該有的幾個特征:它具有比較強的直觀性和互動性,能夠很快為學習者提供反饋;它上手簡單,知識技能進階平緩;它能夠根據特定任務快速建立起學習框架,在框架中提供給學習者充分的自主探索的空間;它能將復雜的原理封裝成模塊,既能將這些模塊以黑箱的形式進行組裝實驗,又提供了打開黑箱深入了解內部原理的途徑;它能夠揭示知識和技能之間的邏輯關系,清晰地指明未來進階學習的路徑。