參加Google Cloud Summit 19 好累...
感知器演算法,這項演算法就是未來Neural Network的基礎。除此之外,此項演算法也有很多可以切入的討論點,下面再一一介紹。
首先,此項演算法是一種二元分類(Binary Classification)的模型,也就是將資料集中兩種不同的Label分類。同時,原始的Perceptron還是一種在線學習(Online Learning)的機器學習方法。
什麼意思呢?前面的Linear Regression有討論到Closed Form,這是需要將所有的資料集看過一遍,才去計算更新權重(Weight)參數。反之,在線學習(Online Learning)不需要一次看所有資料,只要一次看一筆資料,若這筆資料被分錯了,就進行權重的更新成能把這筆資料分對,這樣不斷重複的迭代,將資料集一遍又一遍的看過,最後,找出最佳的參數。
從最佳化問題的角度去看,這樣是可行的嗎?真的能找出最佳解嗎?會不會把新的資料分對後,舊的資料又被分錯了呢?這項擔心是能夠理解的,畢竟有可能函數就這樣來回震盪,陷入無窮的循環之中停止不了。
事實上,如果給定一些前提假設條件,這件事情就能夠用數學簡單證明。假設資料集是線性可分(Linear Separable)的,意思是能夠用線性函數將資料分成兩邊不同的Label。從最簡單的平面來看,就是能夠用一條線將資料分成兩邊,相同Label的資料都會在同側,這樣就是線性可分。
在這樣的條件之下,必定存在最佳解的參數(w_opt),利用每次迭代的參數與最佳解參數的向量相似度進行推導,最終就能得到收斂的結果。(這邊可以自行去搜尋林軒田老師的機器學習基石中PLA的證明)
有趣的是從Perceptron演算法之中,利用番外篇的分解方式,竟然能夠發現SGD(Stochastic Gradient Descent)的身影。
今天真的很累懶著打公式,最後面SGD的關聯性,其實也不難,但要講清楚真的需要花太多時間了,原本還想講一下跟Kernel的關聯性,但說下去就沒完沒了,認真講大概可以占一學期三分之一接近二分之一的機器學習基礎課程的內容了。