❶ 程序員必備的一些數學基礎知識
作為一個標準的程序員,應該有一些基本的數學素養,尤其現在很多人在學習人工智慧相關知識,想抓住一波人工智慧的機會。很多程序員可能連這樣一些基礎的數學問題都回答不上來。
作為一個傲嬌的程序員,應該要掌握這些數學基礎知識,才更有可能碼出一個偉大的產品。
向量 向量(vector)是由一組實數組成的有序數組,同時具有大小和方向。一個n維向量a是由n個有序實數組成,表示為 a = [a1, a2, · · · , an]
矩陣
線性映射 矩陣通常表示一個n維線性空間v到m維線性空間w的一個映射f: v -> w
註:為了書寫方便, X.T ,表示向量X的轉置。 這里: X(x1,x2,...,xn).T,y(y1,y2,...ym).T ,都是列向量。分別表示v,w兩個線性空間中的兩個向量。A(m,n)是一個 m*n 的矩陣,描述了從v到w的一個線性映射。
轉置 將矩陣行列互換。
加法 如果A和B 都為m × n的矩陣,則A和B 的加也是m × n的矩陣,其每個元素是A和B相應元素相加。 [A + B]ij = aij + bij .
乘法 如A是k × m矩陣和B 是m × n矩陣,則乘積AB 是一個k × n的矩陣。
對角矩陣 對角矩陣是一個主對角線之外的元素皆為0的矩陣。對角線上的元素可以為0或其他值。一個n × n的對角矩陣A滿足: [A]ij = 0 if i ̸= j ∀i, j ∈ {1, · · · , n}
特徵值與特徵矢量 如果一個標量λ和一個非零向量v滿足 Av = λv, 則λ和v分別稱為矩陣A的特徵值和特徵向量。
矩陣分解 一個矩陣通常可以用一些比較「簡單」的矩陣來表示,稱為矩陣分解。
奇異值分解 一個m×n的矩陣A的奇異值分解
其中U 和V 分別為m × m和n×n 的正交矩陣,Σ為m × n的對角矩陣,其對角 線上的元素稱為奇異值(singular value)。
特徵分解 一個n × n的方塊矩陣A的特徵分解(Eigendecomposition)定義為
其中Q為n × n的方塊矩陣,其每一列都為A的特徵向量,^為對角陣,其每一 個對角元素為A的特徵值。 如果A為對稱矩陣,則A可以被分解為
其中Q為正交陣。
導數 對於定義域和值域都是實數域的函數 f : R → R ,若f(x)在點x0 的某個鄰域∆x內,極限
存在,則稱函數f(x)在點x0 處可導, f'(x0) 稱為其導數,或導函數。 若函數f(x)在其定義域包含的某區間內每一個點都可導,那麼也可以說函數f(x)在這個區間內可導。連續函數不一定可導,可導函數一定連續。例如函數|x|為連續函數,但在點x = 0處不可導。
加法法則
y = f(x),z = g(x) 則
乘法法則
鏈式法則 求復合函數導數的一個法則,是在微積分中計算導數的一種常用方法。若 x ∈ R,y = g(x) ∈ R,z = f(y) ∈ R ,則
Logistic函數是一種常用的S形函數,是比利時數學家 Pierre François Verhulst在 1844-1845 年研究種群數量的增長模型時提出命名的,最初作為一種生 態學模型。 Logistic函數定義為:
當參數為 (k = 1, x0 = 0, L = 1) 時,logistic函數稱為標准logistic函數,記 為 σ(x) 。
標准logistic函數在機器學習中使用得非常廣泛,經常用來將一個實數空間的數映射到(0, 1)區間。標准 logistic 函數的導數為:
softmax函數是將多個標量映射為一個概率分布。對於 K 個標量 x1, · · · , xK , softmax 函數定義為
這樣,我們可以將 K 個變數 x1, · · · , xK 轉換為一個分布: z1, · · · , zK ,滿足
當softmax 函數的輸入為K 維向量x時,
其中,1K = [1, · · · , 1]K×1 是K 維的全1向量。其導數為
離散優化和連續優化 :根據輸入變數x的值域是否為實數域,數學優化問題可以分為離散優化問題和連續優化問題。
無約束優化和約束優化 :在連續優化問題中,根據是否有變數的約束條件,可以將優化問題分為無約束優化問題和約束優化問題。 ### 優化演算法
全局最優和局部最優
海賽矩陣
《運籌學裡面有講》,前面一篇文章計算梯度步長的時候也用到了: 梯度下降演算法
梯度的本意是一個向量(矢量),表示某一函數在該點處的方向導數沿著該方向取得最大值,即函數在該點處沿著該方向(此梯度的方向)變化最快,變化率最大(為該梯度的模)。
梯度下降法
梯度下降法(Gradient Descent Method),也叫最速下降法(Steepest Descend Method),經常用來求解無約束優化的極小值問題。
梯度下降法的過程如圖所示。曲線是等高線(水平集),即函數f為不同常數的集合構成的曲線。紅色的箭頭指向該點梯度的反方向(梯度方向與通過該點的等高線垂直)。沿著梯度下降方向,將最終到達函數f 值的局部最優解。
梯度上升法
如果我們要求解一個最大值問題,就需要向梯度正方向迭代進行搜索,逐漸接近函數的局部極大值點,這個過程則被稱為梯度上升法。
概率論主要研究大量隨機現象中的數量規律,其應用十分廣泛,幾乎遍及各個領域。
離散隨機變數
如果隨機變數X 所可能取的值為有限可列舉的,有n個有限取值 {x1, · · · , xn}, 則稱X 為離散隨機變數。要了解X 的統計規律,就必須知道它取每種可能值xi 的概率,即
稱為離散型隨機變數X 的概率分布或分布,並且滿足
常見的離散隨機概率分布有:
伯努利分布
二項分布
連續隨機變數
與離散隨機變數不同,一些隨機變數X 的取值是不可列舉的,由全部實數 或者由一部分區間組成,比如
則稱X 為連續隨機變數。
概率密度函數
連續隨機變數X 的概率分布一般用概率密度函數 p(x) 來描述。 p(x) 為可積函數,並滿足:
均勻分布 若a, b為有限數,[a, b]上的均勻分布的概率密度函數定義為
正態分布 又名高斯分布,是自然界最常見的一種分布,並且具有很多良好的性質,在很多領域都有非常重要的影響力,其概率密度函數為
其中, σ > 0,µ 和 σ 均為常數。若隨機變數X 服從一個參數為 µ 和 σ 的概率分布,簡記為
累積分布函數
對於一個隨機變數X,其累積分布函數是隨機變數X 的取值小於等於x的概率。
以連續隨機變數X 為例,累積分布函數定義為:
其中p(x)為概率密度函數,標准正態分布的累計分布函數:
隨機向量
隨機向量是指一組隨機變數構成的向量。如果 X1, X2, · · · , Xn 為n個隨機變數, 那麼稱 [X1, X2, · · · , Xn] 為一個 n 維隨機向量。一維隨機向量稱為隨機變數。隨機向量也分為離散隨機向量和連續隨機向量。 條件概率分布 對於離散隨機向量 (X, Y) ,已知X = x的條件下,隨機變數 Y = y 的條件概率為:
對於二維連續隨機向量(X, Y ),已知X = x的條件下,隨機變數Y = y 的條件概率密度函數為
期望 對於離散變數X,其概率分布為 p(x1), · · · , p(xn) ,X 的期望(expectation)或均值定義為
對於連續隨機變數X,概率密度函數為p(x),其期望定義為
方差 隨機變數X 的方差(variance)用來定義它的概率分布的離散程度,定義為
標准差 隨機變數 X 的方差也稱為它的二階矩。X 的根方差或標准差。
協方差 兩個連續隨機變數X 和Y 的協方差(covariance)用來衡量兩個隨機變數的分布之間的總體變化性,定義為
協方差經常也用來衡量兩個隨機變數之間的線性相關性。如果兩個隨機變數的協方差為0,那麼稱這兩個隨機變數是線性不相關。兩個隨機變數之間沒有線性相關性,並非表示它們之間獨立的,可能存在某種非線性的函數關系。反之,如果X 與Y 是統計獨立的,那麼它們之間的協方差一定為0。
隨機過程(stochastic process)是一組隨機變數Xt 的集合,其中t屬於一個索引(index)集合T 。索引集合T 可以定義在時間域或者空間域,但一般為時間域,以實數或正數表示。當t為實數時,隨機過程為連續隨機過程;當t為整數時,為離散隨機過程。日常生活中的很多例子包括股票的波動、語音信號、身高的變化等都可以看作是隨機過程。常見的和時間相關的隨機過程模型包括貝努力過程、隨機遊走、馬爾可夫過程等。
馬爾可夫過程 指一個隨機過程在給定現在狀態及所有過去狀態情況下,其未來狀態的條件概率分布僅依賴於當前狀態。
其中X0:t 表示變數集合X0, X1, · · · , Xt,x0:t 為在狀態空間中的狀態序列。
馬爾可夫鏈 離散時間的馬爾可夫過程也稱為馬爾可夫鏈(Markov chain)。如果一個馬爾可夫鏈的條件概率
馬爾可夫的使用可以看前面一篇寫的有意思的文章: 女朋友的心思你能猜得到嗎?——馬爾可夫鏈告訴你 隨機過程還有高斯過程,比較復雜,這里就不詳細說明了。
資訊理論(information theory)是數學、物理、統計、計算機科學等多個學科的交叉領域。資訊理論是由 Claude Shannon最早提出的,主要研究信息的量化、存儲和通信等方法。在機器學習相關領域,資訊理論也有著大量的應用。比如特徵抽取、統計推斷、自然語言處理等。
在資訊理論中,熵用來衡量一個隨機事件的不確定性。假設對一個隨機變數X(取值集合為C概率分布為 p(x), x ∈ C )進行編碼,自信息I(x)是變數X = x時的信息量或編碼長度,定義為 I(x) = − log(p(x)), 那麼隨機變數X 的平均編碼長度,即熵定義為
其中當p(x) = 0時,我們定義0log0 = 0 熵是一個隨機變數的平均編碼長度,即自信息的數學期望。熵越高,則隨機變數的信息越多;熵越低,則信息越少。如果變數X 當且僅當在x時 p(x) = 1 ,則熵為0。也就是說,對於一個確定的信息,其熵為0,信息量也為0。如果其概率分布為一個均勻分布,則熵最大。假設一個隨機變數X 有三種可能值x1, x2, x3,不同概率分布對應的熵如下:
聯合熵和條件熵 對於兩個離散隨機變數X 和Y ,假設X 取值集合為X;Y 取值集合為Y,其聯合概率分布滿足為 p(x, y) ,則X 和Y 的聯合熵(Joint Entropy)為
X 和Y 的條件熵為
互信息 互信息(mutual information)是衡量已知一個變數時,另一個變數不確定性的減少程度。兩個離散隨機變數X 和Y 的互信息定義為
交叉熵和散度 交叉熵 對應分布為p(x)的隨機變數,熵H(p)表示其最優編碼長度。交叉熵是按照概率分布q 的最優編碼對真實分布為p的信息進行編碼的長度,定義為
在給定p的情況下,如果q 和p越接近,交叉熵越小;如果q 和p越遠,交叉熵就越大。
❷ 離散數學:一對一函數和映上函數,求答案,詳細解答
數學是任何當代科學學科的基石。現代數據科學的幾乎所有技術,包括機器學習,都有深厚的數學基礎。
毫無疑問,想要成為一個頂級的數據科學家,需要在各個方面都具有優勢如編程能力、一定的商業智慧、以及獨特的分析能力等。但了解「引擎蓋下的機械原理」總是有好處的。對演算法背後的數學機制有一個深入的理解,將使你在同行中具有優勢。
對於從其他行業(硬體工程、零售、化學加工工業、醫葯和衛生保健、商業管理等)進入數據科學領域的新人來說,這一基本數學知識尤為重要。雖然這類領域可能需要電子表格、數值計算和投影方面的經驗,但數據科學所需的數學技能可能有很大的不同。
考慮web開發人員或業務分析人員。他們可能每天都要處理大量的數據和信息。數據科學應該是關於科學而不是數據。遵循這一思路,某些工具和技術就變得不可或缺。
通過探測底層動態來建模一個過程
形成假設
嚴格評估數據源的質量
量化數據和預測的不確定性
從信息流中識別隱藏的模式
理解模型的局限性
理解數學證明及其背後的抽象邏輯
對數,指數,多項式函數,有理數
基本幾何和定理,三角恆等式
實數和復數,基本性質
系列、金額、不平等
作圖和繪圖,笛卡爾坐標和極坐標,圓錐截面
數據匯總和描述性統計,集中趨勢,方差,協方差,相關性
基本概率:期望,概率微積分,貝葉斯定理,條件概率
概率分布函數:均勻、正態、二項式、卡方、中心極限定理
采樣,測量,誤差,隨機數生成
假設檢驗,A/B檢驗,置信區間,p值
方差分析、t檢驗
線性回歸,正規化
矩陣和向量的基本性質:標量乘法,線性變換,轉置,共軛,秩,行列式
內積和外積,矩陣乘法規則和各種演算法,矩陣逆
特殊矩陣:方陣,單位矩陣,三角矩陣,單位向量,對稱矩陣,厄米矩陣,斜厄米矩陣和酉矩陣
矩陣分解概念/LU分解,高斯/高斯-約當消去,解Ax=b線性方程組的方程
向量空間,基底,空間,正交性,正交性,線性最小二乘法
特徵值,特徵向量,對角化,奇異值分解
函數的單變數、極限、連續性、可微性
中值定理,不定式,洛必達法則
最大值和最小值
乘積與鏈式法則
泰勒級數,無窮級數求和/積分的概念
積分學的基本定理和中值定理,定積分和反常積分的計算
函數
多元函數,極限,連續性,偏導數
常微分方程和偏微分方程基礎
集合,子集
計數函數,組合學,可數性
基本的證明技巧:歸納法、反證法
歸納、演繹和命題邏輯的基礎
基本數據結構:堆棧、隊列、圖形、數組、哈希表、樹
圖的性質:連接的組成部分,程度,最大流量/最小切割的概念,圖著色
遞推關系與方程
優化的基礎,如何制定問題
極大值,極小值,凸函數,全局解
線性規劃,單純形演算法
整數規劃
約束規劃,背包問題
數據科學,就其本質而言,並不局限於某一特定的學科領域,它可以處理各種各樣的現象,如癌症診斷和社會行為分析。這就產生了令人眼花繚亂的n維數學對象數組、統計分布、優化目標函數等的可能性。
函數、變數、方程和圖形
這一領域的數學涵蓋了基礎,從方程的二項式定理和一切之間:
可能用到的地方
如果您想了解在對百萬條目的資料庫進行排序之後,搜索是如何更快地運行的,那麼您將會遇到「二分查找」的概念。要理解它的機制,你需要理解對數和遞歸方程。或者,如果你想分析一個時間序列,你可能會遇到「周期函數」和「指數衰減」這樣的概念。
統計數據
掌握統計和概率的基本概念的重要性怎麼強調都不過分。該領域的許多實踐者實際上認為經典(非神經網路)機器學習只不過是統計學習。有重點的規劃對於涵蓋最基本的概念至關重要:
如果你已經掌握了這些概念,你將很快給人留下深刻印象。作為一名數據科學家,你幾乎每天都會用到它們。
線性代數
這是數學的一個基本分支,用來理解機器學習演算法如何在數據流上工作。從QQ上的好友推薦,到酷狗上的歌曲推薦,再到用深度轉移學習將你的自拍照轉換成薩爾瓦多·達利式的肖像,所有這些都涉及到矩陣和矩陣代數。以下是需要學習的基本數學:
如果你用過降維技術(主成分分析),那麼你可能已經使用奇異值分解以更少的參數實現了數據集的緊湊維數表示。所有的神經網路演算法都使用線性代數技術來表示和處理網路結構和學習操作。
微積分
不管你在大學里喜歡還是討厭它,微積分在數據科學和機器學習中都有很多應用。這是一項極有價值的技能:
想知道邏輯回歸演算法是如何實現的嗎?它很有可能使用一種叫做「梯度下降」的方法來尋找最小損失函數。要理解它是如何工作的,您需要使用微積分的概念:梯度、導數、極限和鏈式法則。
離散數學
這一領域在數據科學中並不常見,但所有現代數據科學都是在計算系統的幫助下完成的,而離散數學是這些系統的核心。
在任何社會網路分析中,你需要知道一個圖的屬性和快速演算法來搜索和遍歷網路。在任何演算法的選擇中,你都需要理解時間和空間的復雜性。
優化和運營研究課題
這些主題在理論計算機科學、控制理論或操作研究等專業領域最為相關。但是對這些強大技術的理解也可以在機器學習的實踐中取得豐碩的成果。實際上,每一種機器學習演算法的目標都是使受各種約束的某種估計誤差最小化,這是一個優化問題。以下是需要學習的數學:
使用最小二乘損失函數的簡單線性回歸問題通常有精確的解析解,但是邏輯回歸問題沒有。要理解其中的原因,您需要熟悉優化中的「凸性」概念。這一系列的研究也將闡明為什麼我們必須對大多數機器學習問題的「近似」解決方案保持滿意。
雖然有很多東西要學習,網上有很好的資源。在復習這些主題和學習新概念之後,你將有能力在日常數據分析和機器學習項目中聽到隱藏的「音樂」。這是成為一個了不起的數據科學家的巨大飛躍。
想了解更多精彩內容,快來關注老胡說科學