線性迴歸邏輯迴歸以及梯度下降算法講解

梯度下降算法很久之前就看過了,近來想對這些知識做一個整體的梳理,一來是爲了便於對知識的回顧和總結,二來也希望可以幫助到大家更好地掌握到這些知識。

下圖是一個算法最基本的流程圖,接下來會講解爲什麼要使用梯度下降算法,梯度下降算法中步長的理解、分類問題和迴歸問題的區別、sigmoid和softmax的比較。如果文章有錯誤的地方,歡迎大家指出。
在這裏插入圖片描述

1、梯度下降算法

1.1、梯度下降算法

我們先來介紹最基本的訓練過程

現在我們假設只有一個輸入樣本和標籤,經過了一個簡單的變換,即求一個單變量線性迴歸
單變量線性迴歸表示方法:


在這裏插入圖片描述

單變量的代價函數J表示(均方誤差):


在這裏插入圖片描述

我們現在用數學公式總結一下我們的問題,即


在這裏插入圖片描述

我們的目的是找到合適的θ0,θ1使得代價函數最小,這時候我們列出所有的θ0,θ1 對應的J值,得到一個三維空間圖。


在這裏插入圖片描述

或者得到這種二維空間圖

在這裏插入圖片描述

在實際的求Loss最小值中,不可能像我們看到的三維圖或者二維圖那麼直觀,我的理解是可能有很多的山組合到一起,無法看清楚最低點在哪裏,我們能到的最低點只能是局部最低點


在這裏插入圖片描述

而且實際問題中的維度會很高,所以這裏就開始引進了梯度下降算法。
梯度下降算法的思想:開始時隨機選擇一個參數的組合(θ012,……θn ),計算代價函數,我們尋找到下一個能讓代價函數下降最快的參數組合。那麼我們持續這樣做就會得到一個局部最小值,選擇不同的初始參數,可能會得到不同的局部最小值。(這裏假設只有θ01
梯度法思想的三要素:出發點、下降方向、下降步長。


在這裏插入圖片描述

假設我們現在就在山上某一點(出發點),我們環顧360度,我們會發現最佳的下山方向(下降方向),然後我們朝最佳方向走幾步,再停下來看看新的最佳的下山方向,我們再朝新的最佳的下山方向繼續走,重複以上步驟,直到你接近局部最低的位置。

批量梯度下降算法:


在這裏插入圖片描述

α就是學習率,步長,它決定我們沿着梯度下降過程中邁開的步子有多大。在批量梯度下降中,我們每一次讓所有參數減去學習率乘以代價函數。


在這裏插入圖片描述

注意:θ01(參數)是求出來之後同時更新的。

那麼現在問題就轉變成了求偏導


在這裏插入圖片描述

首先梯度下降算法和線性迴歸算法的比較如圖:


在這裏插入圖片描述

對我們之前的線性迴歸問題運用梯度下降算法,關鍵在於求出代價函數的導數:


在這裏插入圖片描述

則算法改寫成:


在這裏插入圖片描述

這就是批量梯度下降算法!

1.2、梯度下降算法中的學習率

第二個內容就是梯度下降算法中的學習率啦。


在這裏插入圖片描述
在這裏插入圖片描述

學習率在梯度下降過程中還是挺重要的,學習率小就會像蝸牛一樣下降得慢,學習率大又會一次又一次越過最低點,如果太大的話,還會導致無法收斂,甚至發散。那麼我們在梯度下降中的實際步長=α*斜率,我們來看上圖中的ABCD四個點,可以發現從A點到D點斜率在逐漸減少,這時候實際的步長也在減少。那麼當到D點時,斜率已經爲0,說明已經到達了局部最優,實際步長也爲0了。

1.3、 梯度下降法的類型

1、批量梯度下降法(Batch Gradient Descent, BGD)
2、隨機梯度下降法(Stochastic Gradient Descent, SGD)
3、小批量梯度下降法(Mini-Batch Gradient Descent, MBGD)

1、批量梯度下降法(Batch Gradient Descent, BGD)
我們上面舉例就是用的批量梯度下降算法,這是梯度下降法的基本類型,這種方法使用整個數據集(the complete dataset)去計算代價函數的梯度。每次使用全部數據計算梯度去更新參數,批量梯度下降法會很慢,並且很難處理不能載入內存(don’t fit in memory)的數據集。

2、隨機梯度下降法(Stochastic Gradient Descent, SGD)
隨機梯度下降法達到更快的計算。隨機梯度下降法的第一步是隨機化整個數據集。在每次迭代僅選擇一個訓練樣本去計算代價函數的梯度,然後更新參數。即使是大規模數據集,隨機梯度下降法也會很快收斂。隨機梯度下降法得到結果的準確性可能不會是最好的,但是計算結果的速度很快。

3、小批量梯度下降法(Mini-Batch Gradient Descent, MBGD)
小批量梯度下降法是最廣泛使用的一種算法,該算法每次使用m個訓練樣本(稱之爲一批)進行訓練,能夠更快得出準確的答案。小批量梯度下降法不是使用完整數據集,在每次迭代中僅使用m個訓練樣本去計算代價函數的梯度。一般小批量梯度下降法所選取的樣本數量在50到256個之間,視具體應用而定。

2、分類問題和迴歸問題

不管是在深度學習還是機器學習中,我們一般都面臨兩個問題,一個就是分類問題,另外一個就是迴歸問題。

分類問題:主要判斷是與否的問題,比如:否垃圾郵件,是否患病等二分類問題,以及手寫數字識別,鳶尾花類別等多分類問題。
迴歸問題:預測某電影的票房,某地的房價

兩者聯繫
分類問題就是迴歸問題輸出的離散化

2.1、線性迴歸和邏輯迴歸

線性迴歸:輸出標量wx+b連續值,可以用來處理線性迴歸問題
邏輯迴歸:就是把線性迴歸通過sigmoid或其他函數映射到0~1上,通過劃分閾值比如0.5,大於閾值爲1類,小於閾值爲1類,通常用來處理分類問題。

2.2、邏輯迴歸中的二分類和多分類問題

二分類問題一般用sigmoid:預測值維度爲1,將預測值歸一化 [0~1]
多分類問題一般用softmax:預測值維度爲K,把 k 維的預測值(a1,a2….ak)映射成一個(b1,b2….bk)
其中 b1,b2….bk=1

sigmoid公式:


在這裏插入圖片描述
在這裏插入圖片描述

softmax:


在這裏插入圖片描述

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