Deep learning 一 基礎知識 1

2022-03-23 00:46:16 字數 4303 閱讀 7675

前言:

最近打算稍微系統的學習下deep learing的一些理論知識,打算採用andrew ng的網頁教程ufldl tutorial,據說這個教程寫得淺顯易懂,也不太長。不過在這這之前還是複習下machine learning的基礎知識,見網頁:內容其實很短,每小節就那麼幾分鐘,且講得非常棒。

教程中的一些術語:

model representation:

其實就是指學習到的函式的表達形式,可以用矩陣表示。

vectorized implementation:

指定是函式表示式的向量實現。

feature scaling:

指是將特徵的每一維都進行乙個尺度變化,比如說都讓其均值為0等。

normal equations:

這裡指的是多元線性回歸中引數解的矩陣形式,這個解方程稱為normal equations.

optimization objective:

指的是需要優化的目標函式,比如說logistic中loss function表示式的公式推導。或者多元線性回歸中帶有規則性的目標函式。

gradient descent、newton』s method:

都是求目標函式最小值的方法。

common variations:

指的是規則項表達形式的多樣性。

一些筆記:

vectorized implementation指的是向量實現,由於實際問題中很多變數都是向量的,所有如果要把每個分量都寫出來的話會很不方便,應該盡量寫成向量的形式。比如上面的梯度下降法的引數更新公式其實也是可以用向量形式實現的。向量形式的公式簡單,且易用matlab程式設計。由於梯度下降法是按照梯度方向來收斂到極值的,如果輸入樣本各個維數的尺寸不同(即範圍不同),則這些引數的構成的等高線不同的方向胖瘦不同,這樣會導致引數的極值收斂速度極慢。因此在進行梯度下降法求引數前,需要先進行feature scaling這一項,一般都是把樣本中的各維變成0均值,即先減掉該維的均值,然後除以該變數的range。

接下來就是學習率對梯度下降法的影響。如果學習速率過大,這每次迭代就有可能出現超調的現象,會在極值點兩側不斷發散,最終損失函式的值是越變越大,而不是越來越小。在損失函式值——迭代次數的曲線圖中,可以看到,該曲線是向上遞增的。當然了,當學習速率過大時,還可能出現該曲線不斷**的情形。如果學習速率太小,這該曲線下降得很慢,甚至在很多次迭代處曲線值保持不變。那到底該選什麼值呢?這個一般是根據經驗來選取的,比如從…0.0001,0.001,.0.01,0.1,1.0…這些引數中選,看那個引數使得損失值和迭代次數之間的函式曲線下降速度最快。

同乙個問題可以選用不同的特徵和不同的模型,特徵方面,比如單個面積特徵其實是可以寫成長和寬2個特徵的。不同模型方面,比如在使用多項式擬合模型時,可以指定x的指數項最多到多少。當用訓練樣本來進行資料的測試時,一般都會將所有的訓練資料整理成乙個矩陣,矩陣的每一行就是乙個訓練樣本,這樣的矩陣有時候也會叫做是「design matrix」。當用矩陣的形式來解多項式模型的引數時,引數w=inv(x』*x)*x』*y,這個方程也稱為normal equations. 雖然x』*x是方陣,但是它的逆不一定存在(當乙個方陣的逆矩陣不存在時,該方陣也稱為sigular)。比如說當x是單個元素0時,它的倒數不存在,這就是個sigular矩陣,當然了這個例子太特殊了。另乙個比較常見的例子就是引數的個數比訓練樣本的個數還要多時也是非可逆矩陣。這時候要求解的話就需要引入regularization項,或者去掉一些特徵項(典型的就是降維,去掉那些相關性強的特徵)。另外,對線性回歸中的normal equations方程求解前,不需要對輸入樣本的特徵進行feature scale(這個是有理論依據的)。

上面講的函式一般都是回歸方面的,也就是說**值是連續的,如果我們需要**的值只有2種,要麼是要麼不是,即**值要麼是0要麼是1,那麼就是分類問題了。這樣我們需要有乙個函式將原本的**值對映到0到1之間,通常這個函式就是logistic function,或者叫做sigmoid function。因為這種函式值還是個連續的值,所以對logistic函式的解釋就是在給定x的值下輸出y值為1的概率。

convex函式其實指的是只有乙個極值點的函式,而non-convex可能有多個極值點。一般情況下我們都希望損失函式的形式是convex的。在分類問題情況下,先考慮訓練樣本中值為1的那些樣本集,這時候我的損失函式要求我們當**值為1時,損失函式值最小(為0),當**值為0時,此時損失函式的值最大,為無窮大,所以這種情況下一般採用的是-log(h(x)),剛好滿足要求。同理,當訓練樣本值為0時,一般採用的損失函式是-log(1-h(x)).因此將這兩種整合在一起時就為-y*log(h(x))-(1-y)*log(1-h(x)),結果是和上面的一樣,不過表示式更緊湊了,選這樣形式的loss函式是通過最大釋然估計(mle)求得的。這種情況下依舊可以使用梯度下降法來求解引數的最優值。在求引數的迭代公式時,同樣需要求損失函式的偏導,很奇怪的時,這時候的偏導函式和多元線性回歸時的偏導函式結構類似,只是其中的**函式乙個是普通的線性函式,乙個是線性函式和sigmoid的復合的函式。

梯度下降法是用來求函式值最小處的引數值,而牛頓法是用來求函式值為0處的引數值,這兩者的目的初看是感覺有所不同,但是再仔細觀察下牛頓法是求函式值為0時的情況,如果此時的函式是某個函式a的導數,則牛頓法也算是求函式a的最小值(當然也有可能是最大值)了,因此這兩者方法目的還是具有相同性的。牛頓法的引數求解也可以用向量的形式表示,表示式中有hession矩陣和一元導函式向量。

下面來比較梯度法和牛頓法,首先的不同之處在於梯度法中需要選擇學習速率,而牛頓法不需要選擇任何引數。第二個不同之處在於梯度法需要大量的迭代次數才能找到最小值,而牛頓法只需要少量的次數便可完成。但是梯度法中的每一次迭代的代價要小,其複雜度為o(n),而牛頓法的每一次迭代的代價要大,為o(n^3)。因此當特徵的數量n比較小時適合選擇牛頓法,當特徵數n比較大時,最好選梯度法。這裡的大小以n等於1000為界來計算。

如果當系統的輸入特徵有多個,而系統的訓練樣本比較少時,這樣就很容易造成over-fitting的問題。這種情況下要麼通過降維方法來減小特徵的個數(也可以通過模型選擇的方法),要麼通過regularization的方法,通常情況下通過regularization方法在特徵數很多的情況下是最有效,但是要求這些特徵都只對最終的結果**起少部分作用。因為規則項可以作用在引數上,讓最終的引數很小,當所有引數都很小的情況下,這些假設就是簡單假設,從而能夠很好的解決over-fitting的問題。一般對引數進行regularization時,前面都有乙個懲罰係數,這個係數稱為regularization parameter,如果這個規則項係數太大的話,有可能導致系統所有的引數最終都很接近0,所有會出現欠擬合的現象。在多元線性回歸中,規則項一般懲罰的是引數1到n(當然有的也可以將引數0加入懲罰項,但不常見)。隨著訓練樣本的增加,這些規則項的作用在慢慢減小,因此學習到的系統的引數傾向而慢慢增加。規則項還有很多種形式,有的規則項不會包含特徵的個數,如l2-norm regularization(或者叫做2-norm regularization).當然了,還有l1-norm regularization。由於規則項的形式有很多種,所以這種情形也稱為規則項的common variations.

在有規則項的線性回歸問題求解中,如果採用梯度下降法,則引數的更新公式類似(其中引數0的公式是一樣的,因為規則項中沒有懲罰引數0),不同之處在於其它引數的更新公式中的更新不是用本身的引數去減掉後面一串,而是用本身引數乘以(1-alpha*lamda/m)再減掉其它的,當然了這個數在很多情況下和1是相等的,也就很前面的無規則項的梯度下降法類似了。它的normal equation也很前面的類似,大致為inv(x』*x+lamda*a)*x』*y,多了一項,其中a是乙個對角矩陣,除了第乙個元素為0外,其它元素都為1(在通用規則項下的情形)。這種情況下前面的矩陣一般就是可逆的了,即在樣本數量小於特徵數量的情況下是可解的。當為logistic回歸的情況中(此時的loss函式中含有對數項),如果使用梯度下降法,則引數的更新方程中也和線性回歸中的類似,也是要乘以(1-alpha*lamda/m),nomal equation中也是多了乙個矩陣,這樣同理就解決了不可逆問題。在牛頓法的求解過程中,加了規則項後的一元導向量都隨著改變,hession矩陣也要在最後加入lamda/m*a矩陣,其中a和前面的一樣。

logistic回歸與多充線性回歸實際上有很多相同之處,最大的區別就在於他們的因變數不同,其他的基本都差不多,正是因為如此,這兩種回歸可以歸於同乙個家族,即廣義線性模型(generalized linear model)。這一家族中的模型形式基本上都差不多,不同的就是因變數不同,如果是連續的,就是多重線性回歸,如果是二項分布,就是logistic回歸,如果是poisson分布,就是poisson回歸,如果是負二項分布,就是負二項回歸,等等。只要注意區分它們的因變數就可以了。logistic回歸的因變數可以是二分類的,也可以是多分類的,但是二分類的更為常用,也更加容易解釋。所以實際中最為常用的就是二分類的logistic回歸。

Deep learning 七 基礎知識 2

前面的文章已經介紹過了2種經典的機器學習演算法 線性回歸和logistic回歸,並且在後面的練習中也能夠感覺到這2種方法在一些問題的求解中能夠取得很好的效果。現在開始來看看另一種機器學習演算法 神經網路。線性回歸或者logistic回歸問題理論上不是可以解決所有的回歸和分類問題麼,那麼為什麼還有其它...

深度學習 Deep Learning簡介 (一)

從一到八 1 機器學習 在解釋深度學習之前,我們需要了解什麼是機器學習 ml,machine learning 機器學習是人工智慧 ai,artificial intelligence 的乙個分支,而在很多時候,幾乎成為人工智慧的代名詞。簡單來說,機器學習就是通過演算法,使得機器能從大量歷史資料中學...

深度學習Deep Learning

概述 deep feedforward network 深度前饋網路 又名feedforward neural network 前饋神經網路 或 multilayer perceptron 多層感知器 是深度學習模型的精髓 前饋網路的目的是逼近某種方程f 比如乙個分類器,y f x 將輸入x對映到類...