2019-07-31

[人工智慧] 人工智慧簡介


作者:夏肇毅 2019-07-29 初版


人工智慧簡介

現在人工智慧已經可以開始做很多有用的事情。最大的貢獻是在影像識別方面,現在的精確度已經比以前好很多。很多像文字的識別已經可以到95%以上的正確率。在多國語言的翻譯上面,已經進行相當不錯的進展。經過多國語言的訓練,人工智慧可以做多國語言間的互譯。人工智慧主要運作方式,就是把你所需要的資料和想要的結果,一起丟給電腦來學習。看它出來結果跟你有想要的結果中間的誤差來調整裡面的參數。經過不斷的修正之後最後,可以把人工智慧的參數訓練成能產生跟你想要差不多的結果。
類神經網路裡面有相當龐大的節點或是神經元能夠記憶參數。在訓練的過程中,就好像會把訓練的資料轉換再記憶到神經元裡面,以做為識別樣本。所以類似的資料再次出現時,它就可以很會連結到相似樣本的神經元上面去,並以此來做分類的判斷。另一方面,它也可以跟據儲存的樣本,再重新產生出相似的資料輸出。所以類神經網路本身就是一個龐大的記憶庫,把所有的樣本轉化後再儲存起來。類神經網路是模擬人類的神經細胞結構。一個神經細胞,輸入到細胞體的就像一棵樹一樣的叫樹突。從細胞體輸出一根細細長長到下一個細胞的叫做軸突。樹突接受所有的訊號進入細胞體,然後累積起來。一旦這個些訊號的累積量超過一個觸發的水準,它就會送出一個輸出訊號經軸突給下一個細胞。所以類神經網路的神經元,可以接收輸入信號,再將每一個輸入訊號乘上一個權重,然後加總起來。再跟裡面儲存的偏移數相加,以後看看有沒有超過觸發的水準再輸出。
一個類神經網路就是由多個神經元組成一層。同一層的各個神經元都接到相同的輸入端。下一層的神經元,就會將上一層的各個輸出端當成自己的輸入。所以同一層的神經元大家都有一樣的輸入。然後經過自己的權重處理,所以會產生不同的輸出。類神經網路是依照輸出層的錯誤來調整各個層級的權重。我們將輸出層的錯誤的梯度,依照微分的連鎖律推導,由輸出端算出應分配到個輸入端的大小,然後將這個梯度向前面各層一步一步地傳遞過去。每一層的神經元收到這個倒遞傳回來的梯度大小之後,就根據它來調整本身的權重。這種反向傳播演算法(Rumelhart, Hinton,Williams, 1986)的發明,是類神經網路近年來大幅進步的主要原因。
學習過程中使用梯度下降法,就是根據誤差的梯度(類似斜率)來找出誤差的下降方向,並一直往最小值的方向來修正參數。好比在自動駕駛上面的路況識別,把實際路況一直餵給人工智慧。其中並標示每一個畫面哪邊是車子,哪邊是道路,哪邊是行人。經過重複訓練之後,人工智慧就就可以了解每一個畫面中,每個路況裡面可能什麼地方有行人,什麼地方是道路,什麼地方有障礙物等等。
檢測信號有沒有超過觸發水準的函數叫做活化函數。在訊號沒有超過度發水準的時候,活化函數的輸出值是0。一旦輸入超過了觸發水準,活化函數的輸出值就會變成1。一般常用觸發信號的活化函數有幾種。最簡單的,是一個階梯函數。這個階梯函數在輸入小於0的時候,輸出為0。而輸入大於0的時候,輸出為1。所以它的觸發點就是零。如果我們希望它的觸發點不是零的話,例如,我們希望它的出發點是2。那麼我們就可以把輸入先減2,然後再送進這活化函數去。這一個減2的動作,就是讓偏移數為-2一樣。
比較複雜的活化函數像sigmoid,它就不是像階梯函數一樣不連續變化,而是慢慢的變。sigmoid的問題是計算很慢,而且在輸出遠離出發點為最大值或最小值的時候,它的梯度都會趨近於零,也就是梯度會消失。另一種函數relu,它在輸入小於0的時候,輸出就等於零。而當輸入大於0的時候,輸出就等於輸入。這是常用的活化函數,它的好處是不會造成梯度消失。

沒有留言:

張貼留言