一、什麼是機器學習
機器學習:透過從經驗中學習,使計算機能夠從資料中提取出規律、模式和知識,並利用這些知識來做出預測、做出決策或執行任務,而無需明確地程式設計規則。
二、機器學習常見概念
1.監督學習和無監督學習
1.1 監督學習
定義:提供輸入資料和其對應的標籤資料,然後搭建一個模型,模型經過訓練後準確的找到輸入資料和標籤資料之間的最優對映關係,從而對新的未標記資料進行預測或分類。
定義看懵逼了吧?接下來說人話!!!
假如有一群草泥馬和牛馬組成的馬群,這時候需要一個機器對馬群進行分類,但是這個機器不知道草泥馬和牛馬長什麼樣兒,所以我們首先拿一堆草泥馬和牛馬的照片給機器看,告訴機器草泥馬和牛馬長什麼樣兒。機器經過反覆的看,形成肌肉記憶,可以對草泥媽和牛馬形成自己的定義,然後機器就可以準確的對馬群進行分類。在這個過程中,草泥馬和牛馬的照片就叫做標籤,反覆的看理解為訓練,形成的肌肉記憶叫做模型,這就是監督學習的過程。
監督學習主要包括:線性迴歸、邏輯迴歸、決策樹、隨機森林、支援向量機、樸素貝葉斯、k近鄰演算法。
1.2 無監督學習
定義:訓練資料只包含輸入樣本,沒有相應的標籤或目標。
包裝一下:我們沒有拿草泥馬和牛馬的照片對機器進行系統的訓練,機器也不知道這兩個馬兒長什麼樣,而是直接讓機器對這兩個馬兒進行分類。這就是無監督學習。
如圖1所示,左圖是無監督學習的過程,雖然資料被分成了兩類,但是沒有對應的資料標籤,統一用藍色的圓點表示,這更像是把具有相同的特徵的資料聚集在一起,所以無監督學習實現分類的演算法又叫做聚類。右圖是監督學習中二分類的過程,標籤在圖中體現為三角和圓。
無監督學習主要包括:聚類、PCA、關聯規則挖掘。
2.半監督學習、弱監督學習、強化學習
半監督學習:利用同時包含標記樣本和未標記樣本的資料進行訓練。
弱監督學習:標籤資訊不完整或不準確的監督學習問題。
強化學習:透過與環境的互動學習來做出決策和執行動作,以最大化累積獎勵。
3.欠擬合和過擬合
3.1 欠擬合:機器學習模型對訓練資料的擬合程度不足或不夠好的情況。
如圖所示是房屋的大小和價格的關係,左圖是正常的資料對應關係。右圖就是一個欠擬合模型,這個模型雖然捕獲了部分的資料對應關係,但是對新的資料不能很好的預測,如果輸入的新資料的真實價格在改模型上下抖動,那麼相同面積房屋的預測價格和真實價格會有較大的誤差。
解決辦法:
增加模型的複雜度:可以嘗試增加模型的層數、增加神經元的數量或增加模型的引數量。
收集更多的訓練資料:增加訓練資料量可以提供更多的資訊。
特徵工程:透過特徵選擇、特徵變換等方法,提取更有效的特徵,有助於提高模型的表達能力。
正則化:透過新增正則化項(如L1正則化、L2正則化)來限制模型的複雜度。
模型整合:使用多個模型進行整合,如Bagging、Boosting等方法,可以提高模型的預測能力。
3.2 過擬合:模型過度學習了訓練資料中的噪聲和細節,導致對訓練樣本的擬合過於精確;
如圖所示是房屋的大小和價格的關係,左圖是正常的資料對應關係。右圖就是一個過擬合模型,我們通俗易懂的理解一下,就是群眾當中有壞人,有一些大大的顯眼包,那就是噪聲資料。噪聲資料嚴重偏離既定的資料軌道,擬合出來的模型會發生巨大的改變,一顆老鼠屎壞了一鍋湯。
解決辦法:
增加訓練資料:增加更多的訓練樣本可以提供更多的資訊。
使用正則化:透過新增正則化項(如L1正則化、L2正則化)來限制模型的複雜度。
提前停止(Early Stopping):在訓練過程中監控模型在驗證集上的效能,當效能不再提升時停止訓練,避免過擬合。
4.損失和最佳化
4.1 損失:模型得到的預測值和真實值的差距。
常見損失函式:
均方誤差函式(MSE):計算預測值與真實值之間差異的平方,並求取這些平方差的平均值。
均方根誤差函式(RMSE):均方誤差的平方根。
平均絕對誤差函式(MAE):計算預測值與真實值之間差異的絕對值,並求取這些絕對值的平均值
4.2 最佳化:儘可能在不過擬合的情況下降低損失值。
機器學習中最常用的是一階最佳化函式,典型的包括GD、SGD、Momentum、Adagrad、Adam等。一階最佳化函式在最佳化過程中求解的是引數的一階導數值。
常見最佳化函式:
梯度:多元函式的各個引數求得的偏導數以向量的形式展現出來,這就是多元函式的梯度。
梯度下降:透過迭代更新引數,沿著負梯度方向(即損失函式對引數的偏導數)逐步降低損失函式的值,直到達到區域性最優或全域性最優。
梯度下降演算法的步驟如下:
初始化模型引數:根據具體問題,初始化模型的引數,如權重和偏置。
計算損失函式:使用當前引數值計算損失函式的值,衡量模型預測結果與真實值之間的差異。
計算梯度:計算損失函式對每個引數的偏導數,得到引數的梯度。梯度表示了損失函式在當前引數值處的變化率和方向。
更新引數:根據學習率(learning rate)和梯度的方向,更新模型的引數。學習率控制了每次引數更新的步長,一般取一個較小的正數。
重複步驟2至4:反覆迭代執行步驟2至4,直到達到停止條件,如達到最大迭代次數或損失函式的變化不再顯著
常見梯度下降演算法:
批次梯度下降(Batch Gradient Descent):在每次迭代中,使用所有訓練樣本計算損失函式和梯度,並更新引數。
隨機梯度下降(Stochastic Gradient Descent):在每次迭代中,隨機選擇一個訓練樣本計算損失函式和梯度,並更新引數。相比批次梯度下降,隨機梯度下降的計算效率更高,但可能導致引數更新的方向不穩定。
小批次梯度下降(Mini-batch Gradient Descent):在每次迭代中,隨機選擇一小批訓練樣本計算損失函式和梯度,並更新引數。小批次梯度下降綜合了批次梯度下降和隨機梯度下降的優點,既能保持較穩定的引數更新方向,又能提高計算效率。
5.啟用函式
啟用函式:將線性模型轉化為非線性模型。
為什麼要用啟用函式? 舉例說明:
假如有一個單層神經網路模型:
如果搭建二層神經網路,加入啟用函式的二層神經網路表示式如下:
如果是一個多層次的神經網路模型,比如一個三層神經網路模型,並且每層的神經輸出都使用相同的啟用函式,表示式如下
可以看出,無論我們加深多少層,它仍舊是一個線性模型,如果不引入啟用函式,線性模型在應對非線性問題會存在很大的侷限性,所以要引入啟用函式得到複雜多變的深度神經網路,從而解決更復雜的問題。
以下是幾個常見的啟用函式:
1.Sigmoid函式:常用於二分類問題或需要將輸出限制在0到1之間的場景。
公式
影像
範圍:Sigmoid函式的輸出範圍在0到1之間,可以將其視為機率值。
2.雙曲正切函式(Tanh函式):常用於二分類問題或需要將輸出限制在-1到1之間的場景。
公式
影像
範圍:Tanh函式的輸出範圍在-1到1之間,相對於Sigmoid函式,Tanh函式曲線更加對稱。
3.ReLU函式(Rectified Linear Unit):深度神經網路主流啟用函式。
公式
影像
範圍:ReLU函式在輸入大於0時輸出等於輸入值,而在輸入小於等於0時輸出為0。它的主要優點是計算簡單,不會引入梯度消失問題。
4.Leaky ReLU函式:對ReLU函式的改進,用於解決ReLU函式在輸入小於等於0時輸出為0的問題。
公式
影像
5.Softmax函式:常用於多分類問題,可以將神經網路的輸出轉化為機率分佈。
公式
範圍:Softmax函式對每個輸入進行指數運算,然後將結果歸一化,使得所有輸出值的和為1。