微積分是一種以純粹形式發展起來的抽象理論。
微積分,更確切地說是分析學,是研究數量變化率(可以解釋為曲線的斜率)和物體的長度、面積和體積的數學分支。微積分分為微分學和積分學。
微積分這個詞來自拉丁語,意思是「小石頭」,因為這就像通過觀察小塊來理解一些東西。
微積分是數學的一個固有領域,尤其是在許多機器學習算法中,你不能想要跳過這門課來學習數據科學的本質。
微分學把一個東西切成小塊來研究它是如何變化的。
積分學把這些小塊連接起來,計算出有多少。
我希望你們已經理解了微分和積分的基礎知識。數據科學家幾乎對每一個模型都使用微積分,梯度下降是機器學習中微積分的一個基本但很好的例子。
梯度下降法
梯度測量的是如果你稍微改變一下輸入,函數的輸出會改變多少。
假設你有一個球和一個碗。無論你把球放在碗裡的什麼地方,它最終都會落在碗的底部。
正如你所看到的,這個球沿著一條直到碗底的路徑運動。我們也可以說,球是下降在碗的底部。從圖中可以看出,紅色的線是球的梯度,藍色的線是球的路徑,隨著球的斜率的下降,這被稱為梯度下降。
在我們的機器學習模型中,我們的目標是降低輸入數據的成本。成本函數用於監視ML模型預測中的錯誤。所以最小化這個,基本上意味著得到可能的最小誤差值或者增加模型的準確性。簡而言之,我們在調整模型的參數(權重和偏差)的同時,通過迭代訓練數據集來提高準確性。
讓我們假設我們有一個用戶數據集,其中包含用戶在某些主題中的標記和他們的職業。我們的目標是通過考慮一個人的標記來預測他的職業。
在這個數據集中,我們有張三和李四的數據。根據張三和李四的參考數據,我們必須預測王二麻的職業。
現在把學科中的分數看作是一個梯度,把職業看作是底部的目標。你必須優化你的模型,使它在底部預測的結果應該是準確的。使用張三和李四的數據,我們將創建梯度下降,並調整我們的模型,如果我們輸入張三的標記,那麼它應該在梯度的底部預測醫生的結果,對於李四也是如此。這是我們訓練過的模型。現在,如果我們給我們的模型打分數,那麼我們可以很容易地預測這個職業。
理論上這就是梯度下降法,但是要計算和建模,梯度下降法需要微積分,現在我們可以看到微積分在機器學習中的重要性。
首先讓我們從你現在知道的話題開始。線性代數。讓我們先用線性代數和它的公式來建立我們的模型。
我們可以在這個模型中使用的基本公式是y = m*x +b,其中y =預測變量,m =斜率,x =輸入,b= y截距。
解決這類問題的標準方法是定義一個誤差函數(也稱為成本函數)來度量給定行的「良好」程度。此函數將成(m,b)對出現,並根據該行與數據的匹配程度返回一個錯誤值。為了計算給定線的誤差,我們將遍歷(x,y)數據集中的每個點,並對每個點的y值與候選線的y值之間的平方距離求和(在處計算mx + b)。通常將此距離平方以確保它為正,並使我們的誤差函數可微。
更適合我們的數據的行(其中更好是由我們的錯誤函數定義的)將導致更小的誤差。如果我們最小化這個函數,我們將得到數據的最佳行數。由於誤差函數包含兩個參數(m和b),我們可以把它想像成一個二維曲面。這是我們的數據集的樣子:
這個二維空間中的每個點代表一條直線。函數在每個點處的高度是該行的誤差。您可以看到,有些行產生的誤差比其他行小(例如,以配合我們的數據)。當我們運行梯度下降搜索時,我們將從這個表面的某個位置開始,然後向下移動,找到誤差最小的直線。
在微積分的精髓視頻中你們已經看到,計算斜率,我們使用微分。
函數z=f(x,y)的圖像,z=f(x,y)是一個曲面,固定y=by=b得到一條曲線(綠色表示)。偏導數fx(a,b)fx(a,b)是在x = ax = a處該曲線的切線斜率。要對這個誤差函數運行梯度下降,我們首先需要計算它的梯度。梯度就像指南針一樣,總是指向下坡。為了計算它,我們需要微分誤差函數。因為我們的函數是由兩個參數(m和b)定義的,所以我們需要分別計算它們的偏導數。這些導數是:
現在,我們擁有運行梯度下降所需的所有工具。我們可以將搜索初始化為從任意對m和b值(即任意線)開始,然後讓梯度下降算法沿誤差函數向最佳線行進。每次迭代都會更新,m並b會產生一條比上一次迭代產生的錯誤略低的錯誤行。使用上面的兩個偏導數來計算每次迭代的進入方向。
學習率變量控制我們在每次迭代中向下走的步的大小。如果我們邁出太大的一步,我們可能會超過最小的一步。然而,如果我們採取小的一步,它將需要許多迭代達到最小。
雖然我們對學習梯度下降法有了初步的了解,但還有一些我們無法討論的概念值得注意。其中包括:
凸性-在我們的線性回歸問題中,只有一個最小值。我們的誤差曲面是凸的。不管我們從哪裡開始,最終都會得到絕對最小值。一般來說,情況不一定如此。梯度搜索可能會陷入局部極小值的問題。有幾種方法可以緩解這種情況(例如,隨機梯度搜索)。
收斂-我們沒有討論如何確定何時搜索找到一個解決方案。這通常是通過在錯誤迭代到迭代中尋找小的變化來完成的(例如,梯度接近於零)。
多元微積分
後面我們將深入研究多元變量演算,它將教我們如何在實際生活中最終獲得的多元數據演算。