The Nature of Code閱讀心得與Python實作:10.1 Introducing ...

更新 發佈閱讀 13 分鐘
這一節的標題是
10.1 Introducing Artificial Neural Networks
因為方格子標題字數限制,所以沒完整顯現

類神經網路(artificial neural network, ANN),也稱為人工神經網路,簡稱神經網路(neural network, NN),可說是AI的基石;少了它,應該就看不到現在AI發展的盛況了。

電腦科學家很久以來就一直從人腦的運作方式中獲得靈感,並從中取得不錯的研究成果;類神經網路就是其中之一。類神經網路的發展相當早。早在1943年,神經科學家Warren S. McCulloch及邏輯學家Walter Pitts,在他們所發表的論文〈A Logical Calculus of the Ideas Immanent in Nervous Activity〉中,就提出了類神經網路的概念模型(conceptual model)。在這個模型中,他們把神經元描述為存在於細胞網路中,會接收輸入、將其處理後產生輸出的單一計算細胞。

類神經網路的研究目的,並不是想要精確地描述生物的大腦是如何運作的,而是想要根據大腦的運作方式,設計出一種計算模型,用來解決那些用傳統電腦難以解決的問題。

傳統電腦難以解決的問題?電腦這麼厲害,居然還會有它難以解決的問題?!事實上這種問題還不少,而且妙的是,有些是連三歲小孩都可以輕易解決的。例如,三歲的小孩可以馬上告訴你,在圖片中有哪幾隻是小貓、哪幾隻是小狗;但是傳統電腦卻辦不到。電腦可以輕易地在極短的時間內算出1000個1000位數字相加的結果,但就是認不出圖片中哪隻是小貓、哪隻是小狗。所以,就像我們讀書時有些科目比較強、有些科目比較弱一樣,電腦也一樣有它的強項和弱項,而類神經網路就是科學家們窮盡畢生之力所發展出來,想要讓電腦的弱項變強的一道解方。

經過多年的發展,類神經網路已經應用到許多對人腦而言很容易,但對電腦而言很困難的問題上。例如

  • 模式識別(pattern recognition): 類神經網路特別適合用於檢測、解釋、分類資料集中所存在的特徵或模式(pattern);這些包括從圖片中識別出如人臉等任何物件、光學字元辨識(OCR),乃至於更複雜的,像是手勢辨識(gesture recognition)等。
  • 時間序列(time series)預測與異常檢測: 類神經網路現在不僅用於預測股市趨勢及天氣模式,它能夠檢測異常的能力,也被用來偵測網路攻擊以及防詐。
  • 控制系統及適應性決策系統(adaptive decision-making system): 從自駕車、無人機等的自動控制,到電玩、定價模型、媒體平台上的推薦系統等的適應性決策,這些都是類神經網路的應用範圍。
  • 訊號處理與軟體感測器(soft sensor): 類神經網路在人工耳蝸、助聽器等設備中,發揮著過濾噪音及放大關鍵聲音的重要作用。類神經網路也被用在軟體感測器中;軟體感測器是一種軟體系統,它可以處理來自多個來源的數據,以進行對環境的全面性分析。
  • 自然語言處理(natural language processing, NLP): 近年來,在處理及了解人類語言方面,類神經網路的應用取得了非常大的進展;這些包括機器翻譯、情感分析、文字摘要等。類神經網路也是許多數位助理、聊天機器人的關鍵底層技術。
  • 生成式模型(generative model): 利用不同的神經網路架構,這些系統可以合成影像、增強影像解析度、轉換影像風格,甚至於可以生成音樂及影片。

類神經網路的應用當然不止原書列出來的那些。現在AI紅透半邊天,而且越來越多具備AI功能的東西不斷滲透進我們的生活當中;連微軟的小畫家都可以用AI生成圖片了。這個趨勢會繼續下去,只是,盡信AI不如無AI,了解類神經網路是怎麼運作的,會有助於我們在使用AI相關的產品時,不至於把AI當成永不出錯的神兵利器。

How Neural Networks Work

在某些層面上來看,類神經網路和其他的電腦程式有相當大的不同。到目前為止,我們寫的程式都是程序性的,也就是程式是一行接著一行的執行,完全是以線性的方式依序來執行指令。但類神經網路就不同了,它處理資訊的方式不是線性的,而是在網路節點,也就是神經元中,以平行處理的方式,整體性地來處理資訊。就因為類神經網路是以這樣的方式來處理資訊,所以才會被認為是一種連結員系統(connectionist system)。

儘管類神經網路的執行方式和其他的電腦程式有所不同,但在其他方面,卻又跟一些先前我們所介紹過的程式沒有那麼大的不同。就以細胞自動機及boid來說,個別的細胞及個別的boid都不複雜,很容易理解;但是一群細胞或者一群boid,卻都能展現出複雜系統的所有特徵。同樣的,單一一個神經元並不複雜,也很容易理解,它就只是接收輸入的資料,經過處理後,轉為輸出資料輸出而已;但由一群相連的神經元所組成的類神經網路,也會展現出複雜系統的所有特徵,。

事實上,類神經網路不單就只是複雜系統而已,它還是一種複雜適應性系統(complex adaptive system),它可以根據流經其中的資訊來改變其內在結構;換句話說,它會學習!

那類神經網路是怎麼學習的呢?回答這個問題之前,先來看看類神經網路的長相及運作方式:

raw-image

在圖中,圓圈代表神經元。從一個神經元到另一個神經元的箭頭,代表這兩個神經元是互相連結的,有資訊在其間流動,而箭頭的方向就是資訊流動的方向。每個連結都會包含一個權重(weight),用來控制兩個神經元之間的訊號。當類神經網路產生的輸出符合我們想要的結果時,連結的權重就維持原樣不調整;反之,如果產生的輸出不如人意,那就調整連結的權重,看看能不能產生讓人滿意的輸出。透過調整權重來產生想要的輸出,類神經網路就是靠這樣的運作方式來學習的。

類神經網路有許多不同的學習策略,例如

  • 監督式學習(supervised learning, SL): 這種學習方式,就像是有個知道標準答案的老師在監督、指導學習一樣。類神經網路在學習時,老師會告訴它標準答案,讓它去比較它的輸出和標準答案之間的差異,然後根據差異來調整權重,以使輸出更接近標準答案。例如人臉辨識。給類神經網路一堆人臉,讓它去辨識哪張人臉叫什麼名字。當類神經網路給出辨識結果之後,就把人臉正確的名字給它,讓它知道自己錯了多少,並調整權重,以使辨識結果更接近標準答案。隨著一次一次的調整,類神經網路最後就會知道人臉正確的名字。本章介紹的重點,就會放在這種學習方式上。
  • 非監督式學習(unsupervised learning, UL): 這種學習方式和監督式學習最大的不同點,就在於它沒有標準答案。沒有標準答案,那是要學什麼?學了又有什麼用?當沒有標準答案時,類神經網路可以自己運作來找出資料中隱藏的模式(pattern)。所以,非監督式學習的一種應用方式,是拿來進行資料的聚類(clustering)。聚類也翻譯成分群,就是把資料集中具有相同模式的資料分在同一組;說得通俗一點,就是把資料分類啦。
  • 增強式學習(reinforcement learning, RL):這種學習方式基本上是透過嘗試錯誤(trial-and-error)來學習制定決策。智能體(agent)在不斷變動的環境中做出決策,因為環境不斷變動的關係,所以決策的結果會有好有壞;結果好的決策會得到獎勵,而結果不好的決策則會得到懲罰。隨著時間的推移,智能體就靠著這樣不斷地嘗試錯誤而學到最佳策略。AlphaGo這個著名的圍棋軟體,就是靠著增強式學習,練就出打敗人類頂尖圍棋高手的本領。AlphaGo,也就是智能體,透過不斷的對弈來學習;不斷變化的棋盤盤面,就是智能體所在的、不斷變動的環境。當AlphaGo贏棋時,它在這盤棋所做的決策,也就是走法,會被鼓勵、加強;反之,輸棋時的走法,則會被懲罰、壓抑。隨著不斷地對弈,AlphaGo的棋力就這樣不斷地提升,成為數一數二的頂尖高手。關於增強式學習,在下一章會有更詳細的討論。

類神經網路能夠學習以及隨時間調整自身結構的能力,是它之所以在機器學習(machine learning, ML)領域如此有用的原因。機器學習一詞,可以追溯到1959年,由Arthur Lee Samuel這個電腦科學家所發表的文章〈Some Studies in Machine Learning Using the Game of Checkers〉。在這篇文章中,Samuel勾勒出一種可以自我學習下跳棋的程式。這種不需要把程式寫死,而能夠讓電腦自己學習的演算法概念,就是機器學習的基礎。

機器學習的做法和傳統程式的做法截然不同。傳統的程式在取得輸入後,會根據寫程式的人所設定的既定規則來產生輸出。但是機器學習則不然,它反過來做;它會利用所給的輸入和輸出的例子來產生規則。很多演算法都可以用來實作機器學習,而類神經網路就是其中之一。

有時候機器學習和人工智慧(artificial intelligence, AI)這兩個術語會被互換著使用;但事實上,機器學習只是人工智慧的一個分支。在《A People’s Guide to AI》這本由Mimi Onuoha及筆名賽博格之母(Mother Cyborg)的Diana Nucera所合著的條理清晰、通俗易懂的AI入門書中,他們把AI定義成

The theory and development of computer systems able to perform tasks that normally require human intelligence.

對於通常需要人類智慧才能完成的工作而言,機器學習演算法只是能用來完成這些工作的方法之一。所以,從上面的定義來看,機器學習領域很明顯是屬於人工智慧領域的一部分。而從實際的系統來看,並非所有的AI系統都如機器學習演算法般,具備自我學習的元件在其中;專家系統就是一例。

Machine Learning Libraries

現在在實作機器學習系統時,絕大部分的人都會使用第三方程式庫,這樣就不需要一磚一瓦從最基礎的元件打造起,而只需善用別人已經做好的元件,就可以很快地做出自己想要的系統。

使用機器學習程式庫的另一個好處是,可以使用它們來跑預訓練模型(pretrained model)。

在機器學習領域,模型(model)一詞,指的是以特定方式配置的神經元及連結;而預訓練模型,則是指已經完成訓練,可以拿來執行如影像分類、身體姿勢辨識、臉部特徵或手部位置識別、文句情感分析等特定工作的模型。

預訓練模型除了可以直接使用之外,還可以把它拿來再加以訓練,讓它也能夠執行其他不同,但類似的工作;例如把原本訓練來辨認汽車的模型,拿來訓練成辨認卡車的模型。這種把預訓練模型當成訓練起點,讓模型去學習新的技能的做法,就叫做轉移式學習(transfer learning, TL)。轉移式學習最大的好處,就是模型不需從頭訓練起,因而能夠大幅提高學習的效率。

機器學習的第三方程式庫非常多,各有各的優缺點與擅長的部分。原書所使用的程式庫是JavaScript程式庫ml5.js,是個簡單易於上手的深度學習程式庫。ml5.js是根據另一個功能強大,但需要較高技術能力才能駕馭的JavaScript程式庫tensorflow.js所建構而成的,主要的目的是要讓初學者能輕鬆上手,讓藝術家、創意程式設計師(creative coder)、學生等,也都能使用機器學習來創作。

那機器學習的python程式庫有哪些呢?比較知名的有PyTorch、TensorFlow、Keras等。PyTorch及TensorFlow是比較底層的機器學習架構,需要具備比較高的技術能力才能駕馭。Keras是根據TensorFlow所建立的,角色類似ml5.js,使用門檻較低;在其官網標題下方的第一句話是

Keras is a deep learning API designed for human beings, not machines.

從這句話就可以看出,Keras那種急切地想把使用者從PyTorch及TensorFlow所在的底層地獄給解救到人間的企圖心。

留言
avatar-img
ysf的沙龍
20會員
165內容數
寫點東西自娛娛人
你可能也想看
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
一個被蚊子激怒的夏夜,催生了我人生第一個程式專案!本文紀錄一個程式新手,如何靠著一股怨氣與勇氣,用Python打造出懷舊的「滅蚊大進擊」遊戲。分享從零到一的真實挑戰、充滿血淚的學習心得,以及最終戰勝BUG的喜悅。
Thumbnail
一個被蚊子激怒的夏夜,催生了我人生第一個程式專案!本文紀錄一個程式新手,如何靠著一股怨氣與勇氣,用Python打造出懷舊的「滅蚊大進擊」遊戲。分享從零到一的真實挑戰、充滿血淚的學習心得,以及最終戰勝BUG的喜悅。
Thumbnail
Pygame是什麼? 講到編寫遊戲你會想到什麼程式語言呢? 大多數人可能第一時間會想到Unity之類的程式,但其實Python也能寫遊戲喔。其中Pygame就是為了使用Python寫遊戲所開發的套件,它是一個輕量的遊戲套件,能夠完成大部分遊戲所需要的功能,包括音樂管理、圖形處理及事件處理等等。
Thumbnail
Pygame是什麼? 講到編寫遊戲你會想到什麼程式語言呢? 大多數人可能第一時間會想到Unity之類的程式,但其實Python也能寫遊戲喔。其中Pygame就是為了使用Python寫遊戲所開發的套件,它是一個輕量的遊戲套件,能夠完成大部分遊戲所需要的功能,包括音樂管理、圖形處理及事件處理等等。
Thumbnail
遊戲簡介: 《The Last Stand: Union City》的創作者推出全新的單人 Rogue-lite 動作冒險遊戲。受殭屍病毒感染的你將出發探索末日世界,並為你的殖民地找到希望。你可以帶來改變。別放棄。
Thumbnail
遊戲簡介: 《The Last Stand: Union City》的創作者推出全新的單人 Rogue-lite 動作冒險遊戲。受殭屍病毒感染的你將出發探索末日世界,並為你的殖民地找到希望。你可以帶來改變。別放棄。
Thumbnail
作品名稱:《心淵夢境》 遊戲類型:類銀河戰士惡魔城 遊玩時間:30+小時(單結局。全結局預估約40小時左右) 售價:698元
Thumbnail
作品名稱:《心淵夢境》 遊戲類型:類銀河戰士惡魔城 遊玩時間:30+小時(單結局。全結局預估約40小時左右) 售價:698元
Thumbnail
遊戲名稱:終結者莉莉:騎士救贖 遊戲類型:類銀河戰是惡魔城 試玩版遊玩時間:約24小時(僅全結局全破、約8成蒐集。含迷路。) 售價:400元
Thumbnail
遊戲名稱:終結者莉莉:騎士救贖 遊戲類型:類銀河戰是惡魔城 試玩版遊玩時間:約24小時(僅全結局全破、約8成蒐集。含迷路。) 售價:400元
Thumbnail
遊戲名稱:Carto 遊戲類型:拼圖x解謎(拼圖為主) 遊戲時數:官方定5~7小時(個人通關約4.7小時;體驗版約50分鐘以內) 遊戲售價:318元
Thumbnail
遊戲名稱:Carto 遊戲類型:拼圖x解謎(拼圖為主) 遊戲時數:官方定5~7小時(個人通關約4.7小時;體驗版約50分鐘以內) 遊戲售價:318元
Thumbnail
Banished 放逐之城 主機平台:PC 單機遊戲 發  行:Shining Rock Software 遊戲售價:NTD$468(Steam PC) 官方網站:http://www.shiningrocksoftware.com/
Thumbnail
Banished 放逐之城 主機平台:PC 單機遊戲 發  行:Shining Rock Software 遊戲售價:NTD$468(Steam PC) 官方網站:http://www.shiningrocksoftware.com/
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News