機器學習的數學基礎一
一、概述
我們知道,機器學習的特點就是:以計算機為工具和平臺,以資料為研究物件,以學習方法為中心;是概率論、線性代數、數值計算、資訊理論、最優化理論和電腦科學等多個領域的交叉學科。所以本文就先介紹一下機器學習涉及到的一些最常用的的數學知識。
二、線性代數
2-1、標量
一個標量就是一個單獨的數,一般用小寫的的變數名稱表示。
2-2、向量
一個向量就是一列數,這些數是有序排列的。用過次序中的索引,我們可以確定每個單獨的數。通常會賦予向量粗體的小寫名稱。當我們需要明確表示向量中的元素時,我們會將元素排
列成一個方括號包圍的縱柱:
我們可以把向量看作空間中的點,每個元素是不同的座標軸上的座標。
2-3、矩陣
矩陣是二維陣列,其中的每一個元素被兩個索引而非一個所確定。我們通常會賦予矩陣粗體的大寫變數名稱,比如A。 如果一個實數矩陣高度為m,寬度為n,那麼我們說。
矩陣這東西在機器學習中就不要太重要了!實際上,如果我們現在有N個使用者的資料,每條資料含有M個特徵,那其實它對應的就是一個N*M的矩陣呀;再比如,一張圖由16*16的畫素點組成,那這就是一個16*16的矩陣了。現在才發現,我們大一學的矩陣原理原來這麼的有用!要是當時老師講課的時候先普及一下,也不至於很多同學學矩陣的時候覺得莫名其妙了。
2-4、張量
幾何代數中定義的張量是基於向量和矩陣的推廣,通俗一點理解的話,我們可以將標量視為零階張量,向量視為一階張量,那麼矩陣就是二階張量。
例如,可以將任意一張彩色圖片表示成一個三階張量,三個維度分別是圖片的高度、寬度和色彩資料。將這張圖用張量表示出來,就是最下方的那張表格:
其中表的橫軸表示圖片的寬度值,這裡只擷取0~319;表的縱軸表示圖片的高度值,這裡只擷取0~4;表格中每個方格代表一個畫素點,比如第一行第一列的表格資料為[1.0,1.0,1.0],代表的就是RGB三原色在圖片的這個位置的取值情況(即R=1.0,G=1.0,B=1.0)。
當然我們還可以將這一定義繼續擴充套件,即:我們可以用四階張量表示一個包含多張圖片的資料集,這四個維度分別是:圖片在資料集中的編號,圖片高度、寬度,以及色彩資料。
張量在深度學習中是一個很重要的概念,因為它是一個深度學習框架中的一個核心元件,後續的所有運算和優化演算法幾乎都是基於張量進行的。
2-5、範數
有時我們需要衡量一個向量的大小。在機器學習中,我們經常使用被稱為範數(norm) 的函式衡量矩陣大小。Lp 範數如下:
所以:
L1範數:為x向量各個元素絕對值之和;
L2範數:為x向量各個元素平方和的開方。
這裡先說明一下,在機器學習中,L1範數和L2範數很常見,主要用在損失函式中起到一個限制模型引數複雜度的作用,至於為什麼要限制模型的複雜度,這又涉及到機器學習中常見的過擬合問題。具體的概念在後續文章中會有詳細的說明和推導,大家先記住:這個東西很重要,實際中經常會涉及到,面試中也常會被問到!!!
2-6、特徵分解
許多數學物件可以通過將它們分解成多個組成部分。特徵分解是使用最廣的矩陣分解之一,即將矩陣分解成一組特徵向量和特徵值。
方陣A的特徵向量是指與A相乘後相當於對該向量進行縮放的非零向量:
標量被稱為這個特徵向量對應的特徵值。
使用特徵分解去分析矩陣A時,得到特徵向量構成的矩陣V和特徵值構成的向量,我們可以重新將A寫作:
2-7、奇異值分解(Singular Value Decomposition,SVD)
矩陣的特徵分解是有前提條件的,那就是隻有對可對角化的矩陣才可以進行特徵分解。但實際中很多矩陣往往不滿足這一條件,甚至很多矩陣都不是方陣,就是說連矩陣行和列的數目都不相等。這時候怎麼辦呢?人們將矩陣的特徵分解進行推廣,得到了一種叫作“矩陣的奇異值分解”的方法,簡稱SVD。通過奇異分解,我們會得到一些類似於特徵分解的資訊。
它的具體做法是將一個普通矩陣分解為奇異向量和奇異值。比如將矩陣A分解成三個矩陣的乘積:
假設A是一個mn矩陣,那麼U是一個mm矩陣,D是一個mn矩陣,V是一個nn矩陣。
這些矩陣每一個都擁有特殊的結構,其中U和V都是正交矩陣,D是對角矩陣(注意,D不一定是方陣)。對角矩陣D對角線上的元素被稱為矩陣A的奇異值。矩陣U的列向量被稱為左奇異向量,矩陣V 的列向量被稱右奇異向量。
SVD最有用的一個性質可能是拓展矩陣求逆到非方矩陣上。另外,SVD可用於推薦系統中。
2-8、Moore-Penrose偽逆
對於非方矩陣而言,其逆矩陣沒有定義。假設在下面問題中,我們想通過矩陣A的左逆B來求解線性方程:
等式兩邊同時左乘左逆B後,得到:
是否存在唯一的對映將A對映到B取決於問題的形式。
如果矩陣A的行數大於列數,那麼上述方程可能沒有解;如果矩陣A的行數小於列數,那麼上述方程可能有多個解。
Moore-Penrose偽逆使我們能夠解決這種情況,矩陣A的偽逆定義為:
但是計算偽逆的實際演算法沒有基於這個式子,而是使用下面的公式:
其中,矩陣U,D 和V 是矩陣A奇異值分解後得到的矩陣。對角矩陣D 的偽逆D+ 是其非零元素取倒之後再轉置得到的。