對機器學習名詞的一些個人理解

接觸Python和機器學習也有一段時間了,也看了不少人的心得體會,綜合自己的實際經歷,想談談個人的看法。

首先,我一直認爲,機器學習,算法、語言通通不重要,哪怕你的代碼是完全拷貝別人的,也不代表你的能力就是很低。當初學習機器學習的時候,我看過吳恩達的教程,也看過李飛飛的博士生的公開課,得到的領悟是,決定是否成爲大師的,不是你對算法、工具包用得多熟練,而是你對整個過程的整體把控,包括每一種工具的意義、對數據的理解,這些纔是機器學習的核心價值。

一、大數據

什麼是大數據,通用的定義“4V”我也就不重複了,但我覺得,並沒有很多人真正理解透徹。大數據的核心價值到底是什麼?兩個字就可以概括:“分佈”。大數據,就是分佈足夠全、足夠貼合現實的情況、足夠覆蓋所有的可能性。只有這樣,做機器訓練的時候,纔可以採集足夠通用的特徵。至於數據量的多寡,我認爲屬於多樣性的附屬品,我的理解是,只要你覆蓋夠全部的可能性,每個可能性在樣本中的概率跟在全體數據中的概率相同,哪怕每種可能性只有1條數據也沒關係,因爲可以通過迭代足夠的次數來解決。而至於數據的價值,我認爲當人爲地去定義數據有沒有價值的時候,就失去了機器學習的意義了,數據是否有價值,是機器學習過後才能判斷的。最後是快速,我覺得這個定義基本上跟數據本身無關。

二、特徵

什麼是特徵?在機器學習裏面就是數據在每個維度上的值。但大家有沒有想過,其實機器學習的結果,我們所說的Y值,也不過是另一個特徵?那機器學習的過程是什麼?就是數據從一個特徵空間旋轉到另一個特徵空間,換種說法就是用不同的座標軸來表示這些數據。而我們要求的Y值,其實也就是其中一個座標軸的取值。那如果你的思維足夠抽象,那麼在特徵空間轉換的過程中,全體數據便要乘以一個轉換矩陣,而這個矩陣,也就是我們需要求解的東西。我們知道新特徵空間裏面每個特徵,都是由舊的特徵空間的全體特徵共同決定的,當然每個特徵影響的幅度不一樣,而當我們舊的特徵空間缺失了一部分的維度的時候,新的特徵空間的屬性值跟真實值就會有差別,這也就是錯誤率的本質。有的維度在真實轉換矩陣中對應的係數小,缺失後對錯誤率影響不大,而有的維度在真實轉換矩陣中對應的係數大,缺失後影響就很大了。所以,源數據的維度很重要,某個維度有沒有價值應該由機器去判斷。

三、過擬合

如果說錯誤率主要跟特徵的維度,其實也就是權重矩陣W的維度有關,那麼過擬合跟偏離值b的關係就比較大了。數據爲什麼會過擬合,就是數據在某個維度上的方差跟真實的方差差別太多,這個維度上的可能性捕捉得不夠。舉個例子,人是有兩個性別的,但如果你的調查只針對男性的時候,你的數據就會過擬合,比如男女這個屬性的影響可能佔20%,也許你的模型在訓練時和測試時的差別就有20%。好了,這跟b值有什麼關係?你可以這樣想,假如男的屬性值是1,女的屬性值是-1,而真實的權重是0.5,假如你的數據只有男,那是否訓練的時候根本不用改變性別對應的權重,只需要在b值上面增加一個0.5(1*0.5)就可以了?其實同樣的理由,當我們訓練的數據維度比真實維度少的時候,我們少了那部分維度得出的結果值就會用b來替代,如果那部分維度的方差足夠小,那麼b的真實偏差也會比較小,我們的準確率相對來說也就高,反之亦然。

四、正則化、dropout、稀疏懲罰

這些工具的意義,其實就是人以自己的猜想給模型增加的約束,來彌補數據在分佈上與真實集合的差異。因爲我們相信,數據在每個維度上都有差異,應該每個維度都考慮到,但我們的數據又不是在每個維度上有着足夠的方差,來反應真實的情況,因此我們要求我們的特徵矩陣足夠平均來考慮到每個維度,以此彌補數據的不足。

五、mini-batch、激活函數、各種梯度下降的方法、深層網絡的使用

這些方法不過是彌補計算能力的不足。事實上,如果計算能力足夠,在全數據上進行梯度下降,效果肯定是最理想的,同時,每一層有足夠多的神經元去進行特徵提取,也足夠保證稀疏性,這樣也可以減少梯度衰減和爆炸產生的影響,如果神經元足夠,還可以直接定義每個神經元只有1和0兩種輸出,這樣就直接可以進行信號的縮放了。而激活函數只是爲了配合深層網絡,來減少每次特徵轉換的計算量。當然,激活函數也保證了深層網絡的非線性,使其不等同一層網絡。如果計算能力足夠,不使用激活函數的一層網絡是最理想的。當然,目前的計算能力還不能滿足這些要求,大腦也做不到。

六、線性與非線性

上述的理解和猜想,甚至我們的模型工程,大多建立在線性上的,但真實的世界是非線性的,至少在我們能採集到的維度內是非線性的,但非線性的高維空間,我必須承認我的抽象能力不足。

七、數據、數據、還是數據

至今受到傳統的統計思想,大部分人都還是堅持使用抽樣和人工篩選特徵來作爲準備工作。而事實上,機器學習提倡的是端到端的學習,直接對全量數據全部維度(足夠貼近真實數據的分佈)來進行訓練,以可以分辨全部特徵維度上的差異。還有一點就是數據的標籤,我們在進行有監督機器學習的時候一定要清楚自己的目標,然後把訓練數據打上真實的標籤,而這個標籤的準確率,直接決定了我們能達到的準確率,如果這個標籤是人工打的,那麼我們能夠達到的準確率就是人的極限。

以上就是我對機器學習的一些見解,大部分都是猜想,但都希望證明一點,就是訓練數據分佈的重要性,也很期待讀者來糾錯,在共同碰撞中提升對數據和機器學習的認識

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章