天天看點

深度學習線性代數基礎

基于DL4J和ND4J API的學習代碼:

https://github.com/deeplearning4j/oreilly-book-dl4j-examples

什麼是機器學習?

通過算法從原始資料中擷取結構描述。

結構描述的形式有哪些?

包括:

1.決策樹(規則)

2.線性回歸(參數)

3.神經網絡(權重)

什麼是資料挖掘?

從資料中抽取資訊。

關系:機器學習重在指在資料挖掘過程中使用的算法,是資料挖掘中最關鍵的一環。

生物學小常識:大腦大約有860億個神經元和500萬億個連接配接。

當資訊經過神經元時,神經元會把資訊做些處理,隻前轉那些對建構更大的目标有用的信号,沒用的資訊被過濾掉。

螞蟻是通過何種算法,在分布式的環境做出近拟最優方案,完成協作類任務的?這個問題很有意思。

什麼是深度學習?

神經元網絡超過2層就算是深度學習,比較以前的模型,神經元更多,連接配接方式更複雜,需要更多的計算資源,能自動抽取特征。

深度學習四種基本架構:

1.無監督的預訓練網絡;

2.卷積網

3.循環網(Recurrent neural networks)

4.遞歸網(Recursive neural networks)

可以是以上四種的組合,那就複雜了。

什麼是特征抽取?

決定資料的哪些特點可以做為可靠辨別這些資料的名額或訓示器。深度學習強大之處,在于可以自動抽取這些名額。

自動分類是深度學習最擅長的。

讓機器去學習某著名畫家的畫作,創作相拟風格的畫作,也是個有趣的例子。

資料+模型=機器學習

線性代數基礎:

标量scalar:一個數,一個變量。

向量Vector:由n個元素或标量組成的元組(n-tuple)、有序集合或數組。n個标量組成向量的過程稱為向量化。

列向量:是一個 n×1 的矩陣,即豎着寫的向量。

向量長度:歐幾裡德距離(Euclidean distance),點到原點的距離。

矩陣Matrice:二維數組,也可以看成是具有相同長度的一組向量。

n*m: 有n行,m列,第一個數是行數,第二個數是列數。

張量Tensor:多元數組,其含義也包括了二維和一維。

rank:張量的次元數,标量是0,向量是1,矩陣是2等等。

超平面Hyperplanes:一維的超平面是一個一維的子空間,二維的超平面是一維,三維的超平面是二維。

百度百科對超平面的解釋:超平面是n維歐氏空間中餘次元等于一的線性子空間(也就是必須是(n-1)次元)。這是平面中的直線、空間中的平面之推廣(n大于3才被稱為“超”平面),是純粹的數學概念,不是現實的實體概念。因為是子空間,是以超平面一定經過原點。

一個n維空間,隻要有劃分,就分有超平面的概念。

比如一個平面必須用一條線(平面的超平面)去劃分,劃分是與分類相聯系的。優化這條直線的參數,即超平面的參數,是線性模型的核心概念。

點乘Dot product:也稱為标量乘或内乘,指兩個長度相同的向量,對應位置的元素相乘,再求和,傳回一個數。這個數含有很多資訊。

用法:

1.點乘是對每個向量中元素大小的一種度量,如大的元素會産生更大的點乘(2*2=4),小的元素(小數)會産生更小的點乘(0.2*0.2=0.04)。

2.在标準化後,點乘可以是兩個向量相似度的一種度量,在數學上稱為餘弦相似度(cosine similarity)。

标準化:向量内積的結果是沒有界限的,一種解決辦法是除以長度之後再求内積,這就是應用十分廣泛的餘弦相似度(Cosine similarity)。

直覺的解釋是:如果 x 高的地方 y 也比較高, x 低的地方 y 也比較低,那麼整體的内積是偏大的,也就是說 x 和 y 是相似的。

舉例,第一組比第二組相似性高:

[0.4,0.6],[0.3,0.7]的點乘為:0.504

[0.4,0.6],[0.7,0.3]的點乘為:0.264

元素級的乘element-wise product:又稱為哈達馬乘(Hadamard product),和内乘比較,隻是不求和,其它一樣,傳回一個shape相同的向量。

外乘Outer product:又稱張量乘,shape(m,k)乘shape(k,n)得到shape(m,n)。

在機器學習中,需要把文本,時間序列,音頻,視訊,圖檔等原如資料全部轉為浮點向量,才能使用線性代數。

svmlight檔案格式舉例:

1.0 1:0.7500000000000001 2:0.41666666666666663 3:0.702127659574468 4:0.5652173913043479

2.0 1:0.6666666666666666 2:0.5 3:0.9148936170212765 4:0.6956521739130436

2.0 1:0.45833333333333326 2:0.3333333333333336 3:0.8085106382978723 4:0.7391304347826088

第一列:lable. 其它列:features,每個feature前面有位置下标。這種格式适于稀疏矩陣。

Ax = b中,矩陣A的每個列向量都視為一個獨立的feature. x是參數向量。

如果x有解,則方程是一緻性方程。需要用到A的逆運算。并不是所有的矩陣都是可逆的。

可逆矩陣是線性代數中的一個矩陣,其定義為線上性代數中,給定一個 n 階方陣A,若存在一個n 階方陣B, 使得AB=BA=In(或AB=In、BA=In 任滿足一個),其中In 為n 階機關矩陣,則稱A 是可逆的,且B 是A 的逆陣,記作 A^(-1)。

若方陣A 的逆陣存在,則稱A 為非奇異方陣或可逆方陣。

A是可逆矩陣的充分必要條件是 |A|不等于0. (方陣A的行列式不等于0)。

給定一個 n 階方陣 A,則下面的叙述都是等價的:

A 是可逆的。

A 的行列式不為零。

A 的秩等于 n(A 滿秩)。

A 的轉置矩陣 AT也是可逆的。

AAT 也是可逆的。

存在一 n 階方陣 B 使得 AB = In。

存在一 n 階方陣 B 使得 BA = In。

如何求解線性方程?

直接計算:如高斯消元法(Gaussian Elimination)和正規方程法(Normal Equations)

疊代計算:如随機坡度下降(Stochastic Gradient Descent SDG),共轭斜量法(Conjugate Gradient Methods),交替最小二乘法(Alternating Least Squares)

我們得到的樣本資料,就是矩陣A,标簽就是b,訓練出來的參數就是系數x。

繼續閱讀