機器學習理論篇1:機器學習的數學基礎

機器學習理論篇1:機器學習的數學基礎

 

1、概述

咱們知道,機器學習的特色就是:以計算機爲工具和平臺,以數據爲研究對象,以學習方法爲中心;是機率論、線性代數、數值計算、信息論、最優化理論和計算機科學等多個領域的交叉學科。因此本文就先介紹一下機器學習涉及到的一些最經常使用的的數學知識。算法

2、線性代數

2-一、標量

一個標量就是一個單獨的數,通常用小寫的的變量名稱表示。數組

2-二、向量

一個向量就是一列數,這些數是有序排列的。用過次序中的索引,咱們能夠肯定每一個單獨的數。一般會賦予向量粗體的小寫名稱。當咱們須要明確表示向量中的元素時,咱們會將元素排
列成一個方括號包圍的縱柱:框架

咱們能夠把向量看做空間中的點,每一個元素是不一樣的座標軸上的座標。機器學習

2-三、矩陣

矩陣是二維數組,其中的每個元素被兩個索引而非一個所肯定。咱們一般會賦予矩陣粗體的大寫變量名稱,好比A。 若是一個實數矩陣高度爲m,寬度爲n,那麼咱們說函數

2-四、張量

幾何代數中定義的張量是基於向量和矩陣的推廣,通俗一點理解的話,咱們能夠將標量視爲零階張量,矢量視爲一階張量,那麼矩陣就是二階張量。工具

例如,能夠將任意一張彩色圖片表示成一個三階張量,三個維度分別是圖片的高度、寬度和色彩數據。將這張圖用張量表示出來,就是最下方的那張表格: 
學習

其中表的橫軸表示圖片的寬度值,這裏只截取0~319;表的縱軸表示圖片的高度值,這裏只截取0~4;表格中每一個方格表明一個像素點,好比第一行第一列的表格數據爲[1.0,1.0,1.0],表明的就是RGB三原色在圖片的這個位置的取值狀況(即R=1.0,G=1.0,B=1.0)。

固然咱們還能夠將這必定義繼續擴展,即:咱們能夠用四階張量表示一個包含多張圖片的數據集,這四個維度分別是:圖片在數據集中的編號,圖片高度、寬度,以及色彩數據。

張量在深度學習中是一個很重要的概念,由於它是一個深度學習框架中的一個核心組件,後續的全部運算和優化算法幾乎都是基於張量進行的。優化

2-五、範數

有時咱們須要衡量一個向量的大小。在機器學習中,咱們常用被稱爲範數(norm) 的函數衡量矩陣大小。Lp 範數以下:網站

因此:編碼

L1範數:爲x向量各個元素絕對值之和;

L2範數:爲x向量各個元素平方和的開方。

2-六、特徵分解

許多數學對象能夠經過將它們分解成多個組成部分。特徵分解是使用最廣的矩陣分解之一,即將矩陣分解成一組特徵向量特徵值

方陣A的特徵向量是指與A相乘後至關於對該向量進行縮放的非零向量:

標量被稱爲這個特徵向量對應的特徵值。 

使用特徵分解去分析矩陣A時,獲得特徵向量構成的矩陣V和特徵值構成的向量,咱們能夠從新將A寫做:

2-七、奇異值分解(SVD)

除了特徵分解,還有一種分解矩陣的方法,被稱爲奇異值分解(SVD)。將矩陣分解爲奇異向量和奇異值。經過奇異分解,咱們會獲得一些相似於特徵分解的信息。然而,奇異分解有更普遍的應用。

每一個實數矩陣都有一個奇異值分解,但不必定都有特徵分解。例如,非方陣的矩陣沒有特徵分解,這時咱們只能使用奇異值分解。
奇異分解與特徵分解相似,只不過這回咱們將矩陣A分解成三個矩陣的乘積:

假設A是一個mn矩陣,那麼U是一個mm矩陣D是一個mn矩陣V是一個nn矩陣

這些矩陣每個都擁有特殊的結構,其中U和V都是正交矩陣,D是對角矩陣(注意,D不必定是方陣)。對角矩陣D對角線上的元素被稱爲矩陣A的奇異值。矩陣U的列向量被稱爲左奇異向量,矩陣V 的列向量被稱右奇異向量

SVD最有用的一個性質多是拓展矩陣求逆到非方矩陣上。另外,SVD可用於推薦系統中。

2-八、Moore-Penrose僞逆

對於非方矩陣而言,其逆矩陣沒有定義。假設在下面問題中,咱們想經過矩陣A的左逆B來求解線性方程:

等式兩邊同時左乘左逆B後,獲得:

是否存在惟一的映射將A映射到B取決於問題的形式。

若是矩陣A的行數大於列數,那麼上述方程可能沒有解;若是矩陣A的行數小於列數,那麼上述方程可能有多個解。

Moore-Penrose僞逆使咱們可以解決這種狀況,矩陣A的僞逆定義爲:

可是計算僞逆的實際算法沒有基於這個式子,而是使用下面的公式:

其中,矩陣U,D 和V 是矩陣A奇異值分解後獲得的矩陣。對角矩陣D 的僞逆D+ 是其非零元素取倒以後再轉置獲得的。

2-九、幾種經常使用的距離

設有兩個n維變量和,則下面能夠定義一些經常使用的距離公式:

一、曼哈頓距離

曼哈頓距離也稱爲城市街區距離,數學定義以下:


曼哈頓距離的Python實現:

from numpy import *
vector1 = mat([1,2,3])
vector2 = mat([4,5,6])
print sum(abs(vector1-vector2))

二、歐氏距離

歐氏距離其實就是L2範數,數學定義以下: 

歐氏距離的Python實現:

from numpy import *
vector1 = mat([1,2,3])
vector2 = mat([4,5,6])
print sqrt((vector1-vector2)*(vector1-vector2).T)

三、閔可夫斯基距離

從嚴格意義上講,閔可夫斯基距離不是一種距離,而是一組距離的定義:

實際上,當p=1時,就是曼哈頓距離;當p=2時,就是歐式距離。

四、切比雪夫距離

切比雪夫距離就是,即無窮範數,數學表達式以下:

切比雪夫距離額Python實現以下:

from numpy import *
vector1 = mat([1,2,3])
vector2 = mat([4,5,6])
print sqrt(abs(vector1-vector2).max)

五、夾角餘弦

夾角餘弦的取值範圍爲[-1,1],能夠用來衡量兩個向量方向的差別;夾角餘弦越大,表示兩個向量的夾角越小;當兩個向量的方向重合時,夾角餘弦取最大值1;當兩個向量的方向徹底相反時,夾角餘弦取最小值-1。

機器學習中用這一律念來衡量樣本向量之間的差別,其數學表達式以下:

夾角餘弦的Python實現:

from numpy import *
vector1 = mat([1,2,3])
vector2 = mat([4,5,6])
print dot(vector1,vector2)/(linalg.norm(vector1)*linalg.norm(vector2))

六、漢明距離

漢明距離定義的是兩個字符串中不相同位數的數目。

例如:字符串‘1111’與‘1001’之間的漢明距離爲2。

信息編碼中通常應使得編碼間的漢明距離儘量的小。

漢明距離的Python實現:

from numpy import *
matV = mat([1,1,1,1],[1,0,0,1])
smstr = nonzero(matV[0]-matV[1])
print smstr

七、傑卡德類似係數

兩個集合A和B的交集元素在A和B的並集中所佔的比例稱爲兩個集合的傑卡德類似係數,用符號J(A,B)表示,數學表達式爲:

傑卡德類似係數是衡量兩個集合的類似度的一種指標。通常能夠將其用在衡量樣本的類似度上。

八、傑卡德距離

與傑卡德類似係數相反的概念是傑卡德距離,其定義式爲:

傑卡德距離的Python實現:

from numpy import *
import scipy.spatial.distance as dist
matV = mat([1,1,1,1],[1,0,0,1])
print dist.pdist(matV,'jaccard')

3、機率

3-一、爲何使用機率? 

機率論是用於表示不肯定性陳述的數學框架,即它是對事物不肯定性的度量。

在人工智能領域,咱們主要以兩種方式來使用機率論。首先,機率法則告訴咱們AI系統應該如何推理,因此咱們設計一些算法來計算或者近似由機率論導出的表達式。其次,咱們能夠用機率和統計從理論上分析咱們提出的AI系統的行爲。

計算機科學的許多分支處理的對象都是徹底肯定的實體,但機器學習卻大量使用機率論。實際上若是你瞭解機器學習的工做原理你就會以爲這個很正常。由於機器學習大部分時候處理的都是不肯定量或隨機量。

3-二、隨機變量

隨機變量能夠隨機地取不一樣值的變量。咱們一般用小寫字母來表示隨機變量自己,而用帶數字下標的小寫字母來表示隨機變量可以取到的值。例如, 和 都是隨機變量X可能的取值。

對於向量值變量,咱們會將隨機變量寫成X,它的一個值爲。就其自己而言,一個隨機變量只是對可能的狀態的描述;它必須伴隨着一個機率分佈來指定每一個狀態的可能性。

隨機變量能夠是離散的或者連續的。

3-三、機率分佈

給定某隨機變量的取值範圍,機率分佈就是致使該隨機事件出現的可能性。

從機器學習的角度來看,機率分佈就是符合隨機變量取值範圍的某個對象屬於某個類別或服從某種趨勢的可能性。

3-四、條件機率

不少狀況下,咱們感興趣的是某個事件在給定其它事件發生時出現的機率,這種機率叫條件機率。

咱們將給定時發生的機率記爲,這個機率能夠經過下面的公式來計算:

3-五、貝葉斯公式

先看看什麼是「先驗機率」和「後驗機率」,以一個例子來講明:

假設某種病在人羣中的發病率是0.001,即1000人中大概會有1我的得病,則有: P(患病) = 0.1%;即:在沒有作檢驗以前,咱們預計的患病率爲P(患病)=0.1%,這個就叫做"先驗機率"。 

再假設如今有一種該病的檢測方法,其檢測的準確率爲95%;即:若是真的得了這種病,該檢測法有95%的機率會檢測出陽性,但也有5%的機率檢測出陰性;或者反過來講,但若是沒有得病,採用該方法有95%的機率檢測出陰性,但也有5%的機率檢測爲陽性。用機率條件機率表示即爲:P(顯示陽性|患病)=95%

如今咱們想知道的是:在作完檢測顯示爲陽性後,某人的患病率P(患病|顯示陽性),這個其實就稱爲"後驗機率"。

而這個叫貝葉斯的人其實就是爲咱們提供了一種能夠利用先驗機率計算後驗機率的方法,咱們將其稱爲「貝葉斯公式」,以下:

在這個例子裏就是:

貝葉斯公式貫穿了機器學習中隨機問題分析的全過程。從文本分類到機率圖模型,其基本分類都是貝葉斯公式。

這裏須要說明的是,上面的計算中除了利用了貝葉斯公式外,還利用了「全機率公式」,即:

3-六、指望

在機率論和統計學中,數學指望是試驗中每次可能結果的機率乘以其結果的總和。它是最基本的數學特徵之一,反映隨機變量平均值的大小。

假設X是一個離散隨機變量,其可能的取值有:,各個取值對應的機率取值爲:,則其數學指望被定義爲:

假設X是一個連續型隨機變量,其機率密度函數爲則其數學指望被定義爲:

3-七、方差 

機率中,方差用來衡量隨機變量與其數學指望之間的偏離程度;統計中的方差爲樣本方差,是各個樣本數據分別與其平均數之差的平方和的平均數。數學表達式以下: 

3-八、協方差

在機率論和統計學中,協方差被用於衡量兩個隨機變量X和Y之間的整體偏差。數學定義式爲:

3-九、常見分佈函數

1)0-1分佈

0-1分佈是單個二值型離散隨機變量的分佈,其機率分佈函數爲:

2)幾何分佈

幾何分佈是離散型機率分佈,其定義爲:在n次伯努利試驗中,試驗k次才獲得第一次成功的機率。即:前k-1次皆失敗,第k次成功的機率。其機率分佈函數爲:

性質:

3)二項分佈

二項分佈即重複n次伯努利試驗,各次試驗之間都相互獨立,而且每次試驗中只有兩種可能的結果,並且這兩種結果發生與否相互對立。若是每次試驗時,事件發生的機率爲p,不發生的機率爲1-p,則n次重複獨立試驗中發生k次的機率爲:

性質:


 

4)高斯分佈

高斯分佈又叫正態分佈,其曲線呈鍾型,兩頭低,中間高,左右對稱因其曲線呈鐘形,以下圖所示:

若隨機變量X服從一個數學指望爲,方差爲的正態分佈,則咱們將其記爲:。其指望值決定了正態分佈的位置,其標準差(方差的開方)決定了正態分佈的幅度。

5)指數分佈

指數分佈是事件的時間間隔的機率,它的一個重要特徵是無記憶性。例如:若是某一元件的壽命的壽命爲T,已知元件使用了t小時,它總共使用至少t+s小時的條件機率,與從開始使用時算起它使用至少s小時的機率相等。下面這些都屬於指數分佈:

  • 嬰兒出生的時間間隔
  • 網站訪問的時間間隔
  • 奶粉銷售的時間間隔 

指數分佈的公式能夠從泊松分佈推斷出來。若是下一個嬰兒要間隔時間t,就等同於t以內沒有任何嬰兒出生,即:

則:

如:接下來15分鐘,會有嬰兒出生的機率爲:

指數分佈的圖像以下:

6)泊松分佈

平常生活中,大量事件是有固定頻率的,好比:

  • 某醫院平均每小時出生3個嬰兒
  • 某網站平均每分鐘有2次訪問
  • 某超市平均每小時銷售4包奶粉 

它們的特色就是,咱們能夠預估這些事件的總數,可是無法知道具體的發生時間。已知平均每小時出生3個嬰兒,請問下一個小時,會出生幾個?有可能一會兒出生6個,也有可能一個都不出生,這是咱們無法知道的。

泊松分佈就是描述某段時間內,事件具體的發生機率。其機率函數爲:

其中:

P表示機率,N表示某種函數關係,t表示時間,n表示數量,1小時內出生3個嬰兒的機率,就表示爲 P(N(1) = 3) ;λ 表示事件的頻率。

仍是以上面醫院平均每小時出生3個嬰兒爲例,則;

那麼,接下來兩個小時,一個嬰兒都不出生的機率能夠求得爲:

同理,咱們能夠求接下來一個小時,至少出生兩個嬰兒的機率:

【注】上面的指數分佈和泊松分佈參考了阮一峯大牛的博客:「泊松分佈和指數分佈:10分鐘教程」,在此說明,也對其表示感謝!

3-十、Lagrange乘子法

對於通常的求極值問題咱們都知道,求導等於0就能夠了。可是若是咱們不但要求極值,還要求一個知足必定約束條件的極值,那麼此時就能夠構造Lagrange函數,其實就是把約束項添加到原函數上,而後對構造的新函數求導

對於一個要求極值的函數,圖上的藍圈就是這個函數的等高圖,就是說 分別表明不一樣的數值(每一個值表明一圈,等高圖),我要找到一組,使它的值越大越好,可是這點必須知足約束條件(在黃線上)。

也就是說和相切,或者說它們的梯度▽和▽平行,所以它們的梯度(偏導)成倍數關係;那我麼就假設爲倍,而後把約束條件加到原函數後再對它求導,其實就等於知足了下圖上的式子。

3-十一、最大似然法

最大似然也稱爲最大概似估計,即:在「模型已定,參數θ未知」的狀況下,經過觀測數據估計未知參數θ 的一種思想或方法。

其基本思想是: 給定樣本取值後,該樣本最有可能來自參數爲什麼值的整體。即:尋找使得觀測到樣本數據的可能性最大。

舉個例子,假設咱們要統計全國人口的身高,首先假設這個身高服從服從正態分佈,可是該分佈的均值與方差未知。因爲沒有足夠的人力和物力去統計全國每一個人的身高,可是能夠經過採樣(全部的採樣要求都是獨立同分布的),獲取部分人的身高,而後經過最大似然估計來獲取上述假設中的正態分佈的均值與方差。

求極大似然函數估計值的通常步驟:

  • 一、寫出似然函數;

  • 二、對似然函數取對數;
  • 三、兩邊同時求導數;
  • 四、令導數爲0解出似然方程。

最大似然估計也是統計學習中經驗風險最小化的例子。若是模型爲條件機率分佈,損失函數定義爲對數損失函數經驗風險最小化就等價於最大似然估計

4、信息論

信息論是應用數學的一個分支,主要研究的是對一個信號可以提供信息的多少進行量化。若是說機率使咱們可以作出不肯定性的陳述以及在不肯定性存在的狀況下進行推理,那信息論就是使咱們可以量化機率分佈中不肯定性的總量。

1948年,香農引入信息熵,將其定義爲離散隨機事件的出現機率。一個系統越是有序,信息熵就越低;反之,一個系統越是混亂,信息熵就越高。因此說,信息熵能夠被認爲是系統有序化程度的一個度量。

4-一、熵

若是一個隨機變量X的可能取值爲,其機率分佈爲,則隨機變量X的熵定義爲H(X)

4-二、聯合熵

兩個隨機變量X和Y的聯合分佈能夠造成聯合熵,定義爲聯合自信息的數學指望,它是二維隨機變量XY的不肯定性的度量,用H(X,Y)表示:

4-三、條件熵

在隨機變量X發生的前提下,隨機變量Y發生新帶來的熵,定義爲Y的條件熵,用H(Y|X)表示:

條件熵用來衡量在已知隨機變量X的條件下,隨機變量Y的不肯定性。

實際上,熵、聯合熵和條件熵之間存在如下關係:

推導過程以下:

其中:

  • 第二行推到第三行的依據是邊緣分佈P(x)等於聯合分佈P(x,y)的和;
  • 第三行推到第四行的依據是把公因子logP(x)乘進去,而後把x,y寫在一塊兒;
  • 第四行推到第五行的依據是:由於兩個sigma都有P(x,y),故提取公因子P(x,y)放到外邊,而後把裏邊的-(log P(x,y) - log P(x))寫成- log (P(x,y) / P(x) ) ;
  • 第五行推到第六行的依據是:P(x,y) = P(x) * P(y|x),故P(x,y) / P(x) = P(y|x)。

4-四、相對熵

相對熵又稱互熵、交叉熵、KL散度、信息增益,是描述兩個機率分佈P和Q差別的一種方法,記爲D(P||Q)。在信息論中,D(P||Q)表示當用機率分佈Q來擬合真實分佈P時,產生的信息損耗,其中P表示真實分佈,Q表示P的擬合分佈。

對於一個離散隨機變量的兩個機率分佈P和Q來講,它們的相對熵定義爲:

注意:D(P||Q) ≠ D(Q||P)

4-五、互信息

兩個隨機變量X,Y的互信息定義爲X,Y的聯合分佈和各自獨立分佈乘積的相對熵稱爲互信息,用I(X,Y)表示。互信息是信息論裏一種有用的信息度量方式,它能夠當作是一個隨機變量中包含的關於另外一個隨機變量的信息量,或者說是一個隨機變量因爲已知另外一個隨機變量而減小的不願定性。

互信息、熵和條件熵之間存在如下關係: 

推導過程以下:

經過上面的計算過程發現有:H(Y|X) = H(Y) - I(X,Y),又由前面條件熵的定義有:H(Y|X) = H(X,Y) - H(X),因而有I(X,Y)= H(X) + H(Y) - H(X,Y),此結論被多數文獻做爲互信息的定義

4-六、最大熵模型

最大熵原理是機率模型學習的一個準則,它認爲:學習機率模型時,在全部可能的機率分佈中,熵最大的模型是最好的模型。一般用約束條件來肯定模型的集合,因此,最大熵模型原理也能夠表述爲:在知足約束條件的模型集合中選取熵最大的模型

前面咱們知道,若隨機變量X的機率分佈是,則其熵定義以下:

熵知足下列不等式

式中,|X|是X的取值個數當且僅當X的分佈是均勻分佈時右邊的等號成立也就是說,當X服從均勻分佈時,熵最大。

直觀地看,最大熵原理認爲:要選擇機率模型,首先必須知足已有的事實,即約束條件;在沒有更多信息的狀況下,那些不肯定的部分都是「等可能的」。最大熵原理經過熵的最大化來表示等可能性;「等可能」不易操做,而熵則是一個可優化的指標。

5、 數值計算

5-一、上溢和下溢

在數字計算機上實現連續數學的基本困難是:咱們須要經過有限數量的位模式來表示無限多的實數,這意味着咱們在計算機中表示實數時幾乎都會引入一些近似偏差。在許多狀況下,這僅僅是舍入偏差。若是在理論上可行的算法沒有被設計爲最小化舍入偏差的累積,可能會在實踐中失效,所以舍入偏差是有問題的,特別是在某些操做複合時。

一種特別毀滅性的舍入偏差是下溢。當接近零的數被四捨五入爲零時發生下溢。許多函數會在其參數爲零而不是一個很小的正數時纔會表現出質的不一樣。例如,咱們一般要避免被零除

另外一個極具破壞力的數值錯誤形式是上溢(overflow)。當大量級的數被近似爲或時發生上溢。進一步的運算一般將這些無限值變爲非數字。

必須對上溢和下溢進行數值穩定的一個例子是softmax 函數。softmax 函數常常用於預測與multinoulli分佈相關聯的機率,定義爲:

當式中的都是很小的負數時,就會發生下溢,這意味着上面函數的分母會變成0,致使結果是未定的;同理,當式中的是很大的正數時,就會發生上溢致使結果是未定的。

5-二、計算複雜性與NP問題

一、算法複雜性

現實中大多數問題都是離散的數據集,爲了反映統計規律,有時數據量很大,並且多數目標函數都不能簡單地求得解析解。這就帶來一個問題:算法的複雜性

算法理論被認爲是解決各種現實問題的方法論。衡量算法有兩個重要的指標:時間複雜度和空間複雜度,這是對算法執行所須要的兩類資源——時間和空間的估算。

通常,衡量問題是否可解的重要指標是:該問題可否在多項式時間內求解,仍是隻能在指數時間內求解?在各種算法理論中,一般使用多項式時間算法便可解決的問題看做是易解問題,須要指數時間算法解決的問題看做是難解問題。

指數時間算法的計算時間隨着問題規模的增加而呈指數化上升,這類問題雖然有解,但並不適用於大規模問題。因此當前算法研究的一個重要任務就是將指數時間算法變換爲多項式時間算法。

二、肯定性和非肯定性 

除了問題規模與運算時間的比較,衡量一個算法還須要考慮肯定性和非肯定性的概念。

這裏先介紹一下「自動機」的概念。自動機其實是指一種基於狀態變化進行迭代的算法。在算法領域常把這類算法看做一個機器,比較知名的有圖靈機、玻爾茲曼機、支持向量機等。

所謂肯定性,是指針對各類自動機模型,根據當時的狀態和輸入,若自動機的狀態轉移是惟一肯定的,則稱肯定性;若在某一時刻自動機有多個狀態可供選擇,並嘗試執行每一個可選擇的狀態,則稱爲非肯定性

換個說法就是:肯定性是程序每次運行時產生下一步的結果是惟一的,所以返回的結果也是惟一的;非肯定性是程序在每一個運行時執行的路徑是並行且隨機的,全部路徑均可能返回結果,也可能只有部分返回結果,也可能不返回結果,可是隻要有一個路徑返回結果,那麼算法就結束。

在求解優化問題時,非肯定性算法可能會陷入局部最優。

三、NP問題

有了時間上的衡量標準和狀態轉移的肯定性與非肯定性的概念,咱們來定義一下問題的計算複雜度。

P類問題就是可以以多項式時間肯定性算法來對問題進行斷定或求解,實現它的算法在每一個運行狀態都是惟一的,最終必定可以肯定一個惟一的結果——最優的結果。

NP問題是指能夠用多項式時間非肯定性算法來斷定或求解,即這類問題求解的算法大可能是非肯定性的,但時間複雜度有多是多項式級別的。

可是,NP問題還要一個子類稱爲NP徹底問題,它是NP問題中最難的問題,其中任何一個問題至今都沒有找到多項式時間的算法。

機器學習中多數算法都是針對NP問題(包括NP徹底問題)的

5-三、數值計算

上面已經分析了,大部分實際狀況中,計算機其實都只能作一些近似的數值計算,而不可能找到一個徹底精確的值,這其實有一門專門的學科來研究這個問題,這門學科就是——數值分析(有時也叫做「計算方法」);運用數值分析解決問題的過程爲:實際問題→數學模型→數值計算方法→程序設計→上機計算求出結果。

計算機在作這些數值計算的過程當中,常常會涉及到的一個東西就是「迭代運算」,即經過不停的迭代計算,逐漸逼近真實值(固然是要在偏差收斂的狀況下)。

6、最優化

本節介紹機器學習中的一種重要理論——最優化方法。

6-一、最優化理論

不管作什麼事,人們總但願以最小的代價取得最大的收益。在解決一些工程問題時,人們常會遇到多種因素交織在一塊兒與決策目標相互影響的狀況;這就促令人們創造一種新的數學理論來應對這一挑戰,也所以,最先的優化方法——線性規劃誕生了。

6-二、最優化問題的數學描述

最優化的基本數學模型以下:

它有三個基本要素,即:

  • 設計變量:x是一個實數域範圍內的n維向量,被稱爲決策變量或問題的解;
  • 目標函數:f(x)爲目標函數;
  • 約束條件:稱爲等式約束,爲不等式約束,

6-三、凸集與凸集分離定理

一、凸集

實數域R上(或複數C上)的向量空間中,若是集合S中任兩點的連線上的點都在S內,則稱集合S爲凸集,以下圖所示:

數學定義爲:

設集合,若對於任意兩點,及實數都有:

則稱集合D爲凸集。

二、超平面和半空間

實際上,二維空間的超平面就是一條線(可使曲線),三維空間的超平面就是一個面(能夠是曲面)。其數學表達式以下:

超平面:

半空間:

三、凸集分離定理

所謂兩個凸集分離,直觀地看是指兩個凸集合沒有交叉和重合的部分,所以能夠用一張超平面將二者隔在兩邊,以下圖所示:

四、凸函數

凸函數就是一個定義域在某個向量空間的凸子集C上的實值函數。

數學定義爲:

對於函數f(x),若是其定義域C是凸的,且對於∀x,y∈C,, 有: 



則f(x)是凸函數。

注:若是一個函數是凸函數,則其局部最優勢就是它的全局最優勢。這個性質在機器學習算法優化中有很重要的應用,由於機器學習模型最後就是在求某個函數的全局最優勢,一旦證實該函數(機器學習裏面叫「損失函數」)是凸函數,那至關於咱們只用求它的局部最優勢了。

6-四、梯度降低算法

一、引入 

前面講數值計算的時候提到過,計算機在運用迭代法作數值計算(好比求解某個方程組的解)時,只要偏差可以收斂,計算機最後通過必定次數的迭代後是能夠給出一個跟真實解很接近的結果的。

這裏進一步提出一個問題,若是咱們獲得的目標函數是非線性的狀況下,按照哪一個方向迭代求解偏差的收斂速度會最快呢?

答案就是沿梯度方向。這就引入了咱們的梯度降低法

二、梯度降低法

在多元微分學中,梯度就是函數的導數方向

梯度法是求解無約束多元函數極值最先的數值方法,不少機器學習的經常使用算法都是以它做爲算法框架,進行改進而導出更爲複雜的優化方法。

在求解目標函數的最小值時,爲求得目標函數的一個凸函數,在最優化方法中被表示爲:

根據導數的定義,函數的導函數就是目標函數在上的變化率。在多元的狀況下,目標函數在某點的梯度是一個由各個份量的偏導數構成的向量,負梯度方向是減少最快的方向

如上圖所示,當須要求的最小值時(機器學習中的通常就是損失函數,而咱們的目標就是但願損失函數最小化),咱們就能夠先任意選取一個函數的初始點(三維狀況就是),讓其沿着途中紅色箭頭(負梯度方向)走,依次到,,...,(迭代n次)這樣可最快達到極小值點。

梯度降低法過程以下:

輸入:目標函數,梯度函數,計算精度

輸出:的極小值點

  • 一、任取取初始值,置;
  • 二、計算;
  • 三、計算梯度,當時中止迭代,令;
  • 四、不然令,求使;
  • 五、置,計算,當或時,中止迭代,令 ;
  • 六、不然,置,轉3。

6-五、隨機梯度降低算法

上面能夠看到,在梯度降低法的迭代中,除了梯度值自己的影響外,還有每一次取的步長也很關鍵:步長值取得越大,收斂速度就會越快,可是帶來的可能後果就是容易越過函數的最優勢,致使發散;步長取過小,算法的收斂速度又會明顯下降。所以咱們但願找到一種比較好的方法可以平衡步長。

隨機梯度降低法並無新的算法理論,僅僅是引進了隨機樣本抽取方式,並提供了一種動態步長取值策略。目的就是又要優化精度,又要知足收斂速度。

也就是說,上面的批量梯度降低法每次迭代時都會計算訓練集中全部的數據,而隨機梯度降低法每次迭代只是隨機取了訓練集中的一部分樣本數據進行梯度計算,這樣作最大的好處是能夠避免有時候陷入局部極小值的狀況(由於批量梯度降低法每次都使用所有數據,一旦到了某個局部極小值點可能就中止更新了;而隨機梯度法因爲每次都是隨機取部分數據,因此就算局部極小值點,在下一步也仍是能夠跳出)

二者的關係能夠這樣理解:隨機梯度降低方法以損失很小的一部分精確度和增長必定數量的迭代次數爲代價,換取了整體的優化效率的提高。增長的迭代次數遠遠小於樣本的數量。

6-六、牛頓法

一、牛頓法介紹

牛頓法也是求解無約束最優化問題經常使用的方法,最大的優勢是收斂速度快

從本質上去看,牛頓法是二階收斂,梯度降低是一階收斂,因此牛頓法就更快通俗地說,好比你想找一條最短的路徑走到一個盆地的最底部,梯度降低法 每次只從你當前所處位置選一個坡度最大的方向走一步,牛頓法在選擇方向時,不只會考慮坡度是否夠大,還會考慮你走了一步以後,坡度是否會變得更大。因此, 能夠說牛頓法比梯度降低法看得更遠一點,能更快地走到最底部。
或者從幾何上說,牛頓法就是用一個二次曲面去擬合你當前所處位置的局部曲面,而梯度降低法是用一個平面去擬合當前的局部曲面,一般狀況下,二次曲面的擬合會比平面更好,因此牛頓法選擇的降低路徑會更符合真實的最優降低路徑。

二、牛頓法的推導

將目標函數 在處進行二階泰勒展開,可得:

由於目標函數有極值的必要條件是在極值點處一階導數爲0,即:

因此對上面的展開式兩邊同時求導(注意纔是變量,是常量都是常量),並令可得:

即:

因而能夠構造以下的迭代公式:

這樣,咱們就能夠利用該迭代式依次產生的序列才逐漸逼近的極小值點了。

牛頓法的迭代示意圖以下:

上面討論的是2維狀況,高維狀況的牛頓迭代公式是:

式中, ▽是的梯度,即:

H是Hessen矩陣,即:

三、牛頓法的過程

  • 一、給定初值和精度閾值,並令;
  • 二、計算和;
  • 三、若則中止迭代;不然肯定搜索方向:;
  • 四、計算新的迭代點:;
  • 五、令,轉至2。

6-七、阻尼牛頓法

一、引入

注意到,牛頓法的迭代公式中沒有步長因子,是定步長迭代。對於非二次型目標函數,有時候會出現的狀況,這代表,原始牛頓法不能保證函數值穩定的降低。在嚴重的狀況下甚至會形成序列發散而致使計算失敗。

爲消除這一弊病,人們又提出阻尼牛頓法。阻尼牛頓法每次迭代的方向仍然是,但每次迭代會沿此方向作一維搜索,尋求最優的步長因子,即:

二、算法過程

  • 一、給定初值和精度閾值,並令;
  • 二、計算(在處的梯度值)和;
  • 三、若則中止迭代;不然肯定搜索方向:;
  • 四、利用獲得步長,並令
  • 五、令,轉至2。

6-八、擬牛頓法

一、概述

因爲牛頓法每一步都要求解目標函數的Hessen矩陣的逆矩陣計算量比較大(求矩陣的逆運算量比較大),所以提出一種改進方法,即經過正定矩陣近似代替Hessen矩陣的逆矩陣,簡化這一計算過程,改進後的方法稱爲擬牛頓法

二、擬牛頓法的推導

先將目標函數在處展開,獲得:

兩邊同時取梯度,得:

取上式中的,得:

即:

可得:

上面這個式子稱爲「擬牛頓條件」,由它來對Hessen矩陣作約束。

相關文章
相關標籤/搜索