如何用初中知識理解機器學習到底在干什么事情
前言
百度百科搜索“機器學習”,映入眼簾的是我無法企及的高度:
- 機器學習是一門多領域交叉學科,涉及概率論、統計學、逼近論、凸分析、算法復雜度理論等多門學科。專門研究計算機怎樣模擬或實現人類的學習行為,以獲取新的知識或技能,重新組織已有的知識結構使之不斷改善自身的性能。
讓我在懷疑自己智商的同時也在思考:這段話除了闡述了機器學習很牛X,能夠模擬人類學習行為以外,好像并沒有讓我明白這四個詞的含義,反而加重了我的思想負擔,帶著我越加沉重的大腦繼續往下看,找到了我認為本詞條最為重要的定義:

然而并卵!!!
就像是看著笑傲江湖里的《葵花寶典》,由于沒有自宮,看了再怎么高深的劍法招式,也只是流于片面,除了牛批,還是牛批。至此我終于明白,原來是打開方式不對,從一開始就錯了(要自宮)!
所以,需要換個方式,這一次我們用初中數學打開:
從一次函數說起
在初中的數學中,我們常常遇到類似這樣題目:
- 給定平面內的三個點坐標(x,y): A(1,3)、B(2,5)、C(3,7)求x=5時,y的值。
面對如此問題,我們可以先把三個點放到坐標軸上看看,如圖:

可以發現三個點在一條直線上,符合一次函數的性質,那我們只需要求出這條直線的方程式,將x=5代入方程式,就可以求出此時y的值。
此時,問題就變成了:
- 已知A(1,3)、B(2,5)、C(3,7)三個點,橫坐標和縱坐標的關系符合一次函數

求x=5時,y的值。
問題到此就進入了我初中知識水平的層面,只需要將A、B、C三個點代入y=kx+b得到關于k和b的一個方程組,求解可得:

那么x=5時,y等于2*5+1=11(放著我來,這個我會算)。
問題思考
機器學習無非就是類似于上面的一個過程,在給定一定量的輸入(x)和輸出(y)數據的前提下,找出一個函數來表示這些x和y之間的關系,根據這個函數,我們可以在知道x的條件下輕松求出y,例如我們在網購之后輸入評論,系統就能自動識別出是好評還是差評。
上述案例的這個函數我們可以稱之為模型,x稱之為特征,y就是機器學習要預測的結果,而已知的x和y的組合稱之為訓練數據,訓練的過程也就是找出x和y的關系的過程(而不是用皮鞭抽的過程)。
然而真實的機器學習案例中往往沒這么簡單,只有一個特征x的函數怎么滿足更為復雜的業務需求呢?
“一個不行就兩個,兩個不行就三個,三個不行還可以加呀,只要給錢,不好意思,扯遠了!”
當特征數量為多個,我們依舊可以基于上面的一次函數基礎,進行模型假設

那么問題也可以得到解決,這就是機器學習里面較為基礎的線性回歸。
如果你覺得這些函數都只能求出一個值,沒啥意思,能否幫我識別出評論區里哪些是好評,哪些是差評呢?
“當然是沒問題的!只需要把y的結果映射到0-1之間,然后對y進行判斷,y>=0.5表示好評,y<0.5表示差評就行,然后這個映射函數我們稱之為激活函數,怎么實現的先不管,理解為主”

這樣就實現了機器學習中分類任務邏輯回歸。
如果你覺得一個特征對應一個權重有點low,而且很多事情都并非是線性相關,如何解決這個問題呢?
“一層權重不夠,那就加唄,如果再不夠,那就再加!”

你還要嗎?我再加點
上面的過程跑得有點遠,一不小心已經到了深度學習的層面,路漫漫其修遠兮,我的智商有點跟不上...(所以用省略號代替)
總結
以上案例僅僅是機器學習中監督學習的過程,真正的機器學習往往比這個復雜得多,還分為非監督學習,半監督學習,在此不做多余贅述,有機會再寫,再見!