硬核科普:只用一句話,告訴你被吹爆的「神經網絡」到底是什么?
為了表現誠意,先把這句短小精悍的真理放在這里:
神經網絡是一種由大量的神經元相互連接構成的運算模型。
很復雜?其實特別簡單,相信看完之后,你會感嘆一句——不過如此。
神經網絡是什么?運算模型。
什么是運算模型?描述如何根據一組輸入值計算得出一組輸出值的模型。
比如,二元一次方程z=2x+3y+5就是一種運算模型,輸入是x和y,輸出是z。根據z=2x+3y+5,給定x和y,我們可以得到z,這就是一種運算模型。
注意啦,輸出可以是多個值。比如,輸入是x和y,輸出可以是z1和z2兩個值,其中,z1=2x+3y+5,z2=6x+8y+8,這也算是一個運算模型。
神經網絡如何表征運算模型?大量的神經元,相互連接。
下圖展示了一個神經網絡。最左側的一豎排神經元(藍色節點)被稱為輸入層,負責導入輸入值。最右側一豎排神經元(綠色節點)被稱為輸出層,負責導出輸出值。中間兩豎排神經元(黑色節點)被稱為隱藏層,這些神經元與它們之間的連接一起,共同表征運算模型。
比如,二元一次方程z=2x+3y+5就可以用下圖的神經網絡表示。
圖中,2和3被稱為權重值,5被稱為偏置值。
一般來講,只有指向隱藏層神經元的連接(如標有2和3的連接)有權重值,只有隱藏層的神經元(標有5的神經元)有偏置值。權重值和偏移值一般不會被標注在神經網絡中。
神經網絡中,神經元的數量可以是任意的,神經元之間的連接也可以是多種多樣的。
神經元及其連接與數學公式的轉換,這里就不具體介紹了。只需要記得,神經網絡本質上就是一種運算模型,只要神經元數量足夠多,可以表征非常復雜的運算,也就是非常復雜的輸入與輸出之間的關系。
到這里,「神經網絡是一種由大量的神經元相互連接構成的運算模型」這個定義,應該已經很清楚了。
為什么要使用神經網絡表征運算模型?直接用數學公式不香嗎?
神經網絡針對的情況,是我們只知道輸入值與輸出值,但不知道輸入值與輸出值的相互關系。比如,我們只知道x=1, y=2時,z=13, 以及x=2, y=1時,z=12,但我們不知道根據x和y計算z的公式。
面對簡單的輸入輸出的關系,我們也許可以直接解方程。但是面對極其復雜的輸入輸出呢?比如,如果輸入是這張圖片的像素點,輸出是圖片中所有的字母。這也是一個典型的圖像識別任務。
在這個時候,神經網絡是必要的。只要神經網絡足夠復雜(足夠多的神經元,以及適當的神經元連接),我們就可以相信,這個神經網絡有能力表征我們希望獲得的輸入值與輸出值的相互關系。
「有能力」意味著,存在特定的權重值和偏置值,使得這個神經網絡可以準確的表征輸入值與輸出值之間的關系。但,我們可能并不知道這些權重值和偏置值。
假設神經網絡夠有能力了,如何獲得權重值和偏置值?
這就要請出人工智能最重要的技術了,機器學習中監督學習!
首先隨機猜測權重值和偏置值,之后使用迭代的方式逐步更新這些參數,使得在給定輸入值下,神經網絡的輸出值和實際已知的輸出值的差別逐漸減小。直到這個神經網絡可以大致準確地表征輸入值到輸出值的關系,也就是我們所希望獲得的運算模型。