機器學習概念梳理(無公式)
1.機器學習是幹什麼的
(1)分類
如:輸入大量的動物圖片進行訓練後,使機器能夠區分哪隻是狗,哪隻是貓。
(2)標註
標註是分類問題的推廣。和分類問題不同的地方在於,其輸出結果不是簡單的一個類別(如這是一條狗),而是一個標註序列。如:輸入一個英文句子,輸出該句子中每個單詞的詞性。
(3)預測
也叫回歸。如通過往年某地房價資料,學習出一個模型,使得該模型可預測未來房價的趨勢。
2.機器學習的基本步驟
李航老師在《統計學習方法》中總結,統計方法的三要素可表示為:方法=模型+策略+演算法。
更通俗的講,
(1)模型,即訓練所用的演算法結構。如耳熟能詳的感知機,支援向量機,神經網路,都屬於“模型”。這一步很關鍵,舉個栗子:二維平面上兩類資料若有明顯的界限,則可選用線性模型進行分類,但若是完全混合在一起,再選用線性 模型,無論怎麼訓練,也無法得出滿意的效果
(2)策略,策略即學習的準則。假設我們第一步模型選用了線性模型:WX+b=0,其中W為未知引數,我們需要通過對輸入的資料的不斷地訓練,來糾正模型(即調整“直線”的位置),此時需要一個準則來指導究竟如何調整,我們稱之為策略。如線性模型中,我們可以將減小誤分類點到直線的總距離來作為我們更新引數的準則,我們目標就是通過不斷的學習使得這個距離越來越小,當其為0時,說明此時已經沒有誤分類點了。這個目標函式通常叫“損失函式”或“經驗風險”,目標是使他最小。
(3)演算法,演算法即更新引數使用的方法。如梯度下降法,牛頓法等等。使用這些方法是為了最快、最好的使引數調整到最優狀態。
3.其他概念
(1)過擬合
這個很好理解,就是模型對訓練資料能夠很好很正確的分類,而對新的資料卻誤差很大。比如二維平面中,有一堆資料大致是線性分佈的,若過擬合的話,最終學習出的模型可能是一個很高次的函式,雖然使得已有的資料全都落在這個函式上,但新來一個數據,其預測值會跑偏很多。
(2)正則化
為了防止過擬合,引出正則化的概念。前面提到,我們的目標就是使得損失函式最小化。我們在損失函式加上正則項,正則項一般隨著模型複雜度遞增,模型越複雜,正則項越大。這樣,我們目標是最小化風險函式,而隨著模型複雜度越來越高,風險函式反之會變大,所以該方法可有效防止過擬合。
(3)交叉驗證
另一種防止過擬合的方法是交叉驗證。通常用於神經網路。為什麼只用正則項不行,私以為神經網路是個大黑盒子,過於複雜,有些東西很難用一個公式概括,所以神經網路防止過擬合多采用交叉驗證。
交叉驗證就是:我們將資料集分成三部分:訓練集、驗證集、測試集。訓練和測試很好理解,驗證集是幹嘛的呢?在模型學習到不同程度時候,用驗證集進行測試,選擇使用對驗證集有最小誤差的模型。通俗的講就是:模型差不多的時候,用驗證集去試一試,如果模型表現特差,則說明過擬合了。
(4)監督模型和無監督模型
監督模型指的是,訓練資料有類別資訊,比如,有有監督模型的訓練資料長這樣:“汪汪,搖尾巴,天熱伸舌頭—狗”,“喵喵,高冷,抓老鼠—貓”最後一定要告訴模型這是狗和貓的特徵,下次模型遇見類似症狀便會反饋資訊“這是一條狗/貓”。而無監督模型,就只有前面那些特徵,並無類別標籤。模型通過學習,可自動提取高階特徵從而發現狗和貓的區別,因此也可進行分類,稱為無監督模型。
4.一般步驟
(1)定義演算法公式
(2)定義損失函式,選定優化演算法
(3)迭代地對資料進行訓練
(4)在測試集或驗證集上對準確率進行評測
5.總結
機器學習的終極目標就是學得一個模型,模型包括有:判別模型有k緊鄰、感知機、決策樹、邏輯迴歸、SVM等。生成模型有樸素貝葉斯,馬爾科夫鏈。判別模型和生成模型的區別現在也不是太理解,日後理解了再來補充。
為了學得這個模型(確定模型中的未知引數),我們需要一些策略,即最小化損失函式,不同場景使用不同型別的損失函式,如0-1損失函式、平方損失函式、絕對損失函式、對數損失函式。為了防止過擬合,又引出正則化的概念。
最後,要最小化損失函式,又引出最優化演算法,如梯度下降法、牛頓法等。
想要使得模型有比較好的效果,就要做好以上三部分內容,其中會設計諸多細節。上述只是非常巨集觀粗略地概括,因為要解決一件事,必然會出現矛盾,如使用梯度下降法演算法收斂很慢該怎麼辦,引數如何初始化可以使演算法儘快收斂等等小問題,每個問題都有相應的解決辦法,但我們只要時刻牢記目標是什麼就不會陷入泥潭,就不會不知所云,就會很快理解演算法的精髓。
最後,學機器學習也有數月了,中間跌跌撞撞,多次終止,究其原因,多是因為被過於專業的詞彙搞得一頭霧水,亦或是被一望無際的公式嚇得望而卻步,從而無法從巨集觀上把握整個知識脈絡,一直領會不到要旨。因此將自己走的彎路做一小小總結,希望能夠幫助到徘徊在機器學習大門前,同樣迷茫的同學吧。因為內容多是自己的想法,如有不嚴謹或是錯誤之處,還請指正!