數(shù)學(xué)基礎(chǔ)

程序員學(xué)習(xí)人工智能,繞不開的第一道坎就是數(shù)學(xué)慨仿。

最美歐拉恒等式

人工智能(機(jī)器學(xué)習(xí))是一個非常大的領(lǐng)域所坯,那就代表每個人在其中的分工各不相同:有人負(fù)責(zé)開發(fā)模型做優(yōu)化解恰,那自然對數(shù)學(xué)要求較高;有人負(fù)責(zé)產(chǎn)品落地浙于,更多的時間都在處理數(shù)據(jù)及調(diào)用現(xiàn)成的API护盈。

不要把自己埋到無邊無際的數(shù)學(xué)海洋里面去,人生苦短羞酗。

本文不打算全面系統(tǒng)地介紹機(jī)器學(xué)習(xí)中的數(shù)學(xué)知識和概念腐宋。只介紹最少的,能夠支持機(jī)器學(xué)習(xí)入門的數(shù)學(xué)知識和概念檀轨,更多的數(shù)學(xué)請在入門后自行惡補(bǔ)胸竞。

1. 線性代數(shù)

機(jī)器學(xué)習(xí)中大量的用到線性代數(shù),如向量参萄、矩陣計算等卫枝。

1.1 標(biāo)量

一個標(biāo)量就是一個單獨的數(shù),一般用小寫的的變量名稱表示讹挎。

1.2 向量

一個向量就是一列數(shù)校赤,這些數(shù)是有序排列的。通過序列中的索引淤袜,我們可以確定每個單獨的數(shù)痒谴。通常會賦予向量粗體的小寫名稱。當(dāng)我們需要明確表示向量中的元素時铡羡,我們會將元素排列成一個方括號包圍的縱柱积蔚。我們可以把向量看作空間中的點,每個元素是不同的坐標(biāo)軸上的坐標(biāo)烦周。

向量

1.3 矩陣

矩陣是二維數(shù)組尽爆,其中的每一個元素被兩個索引而非一個所確定。我們通常會賦予矩陣粗體的大寫變量名稱读慎,比如A漱贱。

矩陣

矩陣這東西在機(jī)器學(xué)習(xí)中實在是太重要了!實際上夭委,如果我們現(xiàn)在有N個用戶的數(shù)據(jù)幅狮,每條數(shù)據(jù)含有M個特征,那其實它對應(yīng)的就是一個N*M的矩陣株灸;再比如崇摄,一張圖由16*16(256個)的像素點組成,那這就是一個16*16的矩陣了慌烧。

N個用戶M個特征逐抑,也可以說是一張有N行M列的數(shù)據(jù)庫(用戶)表。

1.4 張量

線性代數(shù)中定義的張量是基于向量和矩陣的推廣屹蚊,通俗一點理解的話厕氨,我們可以將標(biāo)量視為零階張量进每,矢量視為一階張量,那么矩陣就是二階張量命斧。

例如田晚,可以將任意一張彩色圖片表示成一個三階張量,三個維度分別是圖片的高度国葬、寬度和色彩數(shù)據(jù)肉瓦。將這張圖用張量表示出來,就是最下方的那張表格:

圖片張量

其中表的橫軸表示圖片的寬度值胃惜,這里只截取0~319;表的縱軸表示圖片的高度值哪雕,這里只截取0~4船殉;表格中每個方格代表一個像素點,比如第一行第一列的表格數(shù)據(jù)為[1.0,1.0,1.0]斯嚎,代表的就是RGB三原色在圖片的這個位置的取值情況(即R=1.0利虫,G=1.0,B=1.0)堡僻。

當(dāng)然我們還可以將這一定義繼續(xù)擴(kuò)展糠惫,即:我們可以用四階張量表示一個包含多張圖片的數(shù)據(jù)集,這四個維度分別是:圖片在數(shù)據(jù)集中的編號钉疫,圖片高度硼讽、寬度,以及色彩數(shù)據(jù)牲阁。

張量在深度學(xué)習(xí)中是一個很重要的概念固阁,因為它是一個深度學(xué)習(xí)框架中的一個核心組件,TensorFlow的所有運算和優(yōu)化算法幾乎都是基于張量進(jìn)行的城菊。

2. 微積分

微積分在機(jī)器學(xué)習(xí)中也是無處不在的备燃。

2.1 導(dǎo)數(shù)

導(dǎo)數(shù)(Derivative)是微積分中的重要基礎(chǔ)概念。當(dāng)函數(shù)y=f(x)的自變量x在一點x0上產(chǎn)生一個增量Δx時凌唬,函數(shù)輸出值的增量Δy與自變量增量Δx的比值在Δx趨于0時的極限a如果存在并齐,a即為在x0處的導(dǎo)數(shù),記作f'(x0)或df(x0)/dx客税。

導(dǎo)數(shù)簡單點說况褪,就是函數(shù)的斜率。比如說y=x這個函數(shù)霎挟,圖像你應(yīng)該很清楚吧窝剖,雖然y是隨著x的正加而增大的,但是其變化率也就是斜率是一直不變的酥夭。那么你能猜出來y=x的導(dǎo)數(shù)是多少么赐纱?

y=x的導(dǎo)數(shù)y'=1脊奋,同理y=2x時,則y'=2疙描,這是最簡單的诚隙。

當(dāng)函數(shù)是2次函數(shù)的時候,其斜率會忽大忽小起胰,甚至忽正忽負(fù)久又,這時y'不再是一個固定的數(shù),而是一個根據(jù)x值變化的數(shù)(說白了也是一個函數(shù))效五。

不確切的說地消,導(dǎo)數(shù)是變化率、是切線的斜率畏妖、是速度脉执、是加速度。

2.2 梯度

在一元函數(shù)中戒劫,導(dǎo)數(shù)就是函數(shù)隨自變量的變化率半夷。一般一元函數(shù)的自變量使用字母x,那么函數(shù)f(x)的導(dǎo)數(shù)其實就是它在x軸上的變化率迅细。

在微積分里面巫橄,對多元函數(shù)的參數(shù)求?偏導(dǎo)數(shù),把求得的各個參數(shù)的偏導(dǎo)數(shù)以向量的形式寫出來茵典,就是梯度湘换。

在多元函數(shù)中,自變量是多個標(biāo)量敬尺,或者理解成一個多維的向量枚尼。那么,函數(shù)隨自變量的變化怎么刻畫呢砂吞?一個方法署恍,就是衡量函數(shù)在給定方向上的變化率,這就是方向?qū)?shù)蜻直。方向?qū)?shù)的特例盯质,就是函數(shù)隨各個自變量(標(biāo)量)的變化率,即函數(shù)的偏導(dǎo)數(shù)概而,也就是函數(shù)沿各個坐標(biāo)軸正方向的方向?qū)?shù)呼巷。

假如一個多元函數(shù)是可微的,它在各個方向上都有方向?qū)?shù)赎瑰。那么王悍,函數(shù)可能在一些方向上增長的快(方向?qū)?shù)的值比較大),一些方向上增長的慢餐曼。所有這些方向中压储,會有一個增長最快的鲜漩。梯度就是一個向量,其模為這個增長最快的速率(方向?qū)?shù)值)集惋,其方向為這個最快增長方向孕似。

3. 損失函數(shù)

損失函數(shù)(loss function)是用來估量你模型的預(yù)測值f(x)與真實值Y的不一致程度,它是一個非負(fù)實值函數(shù)刮刑,通常使用L(Y, f(x))來表示喉祭,損失函數(shù)越小,模型的效果就越好雷绢。

例如泛烙,線性回歸算法用到的平方損失函數(shù)。

損失函數(shù)

4. 凸函數(shù)

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

凸函數(shù)

如果一個函數(shù)是凸函數(shù)胶惰,則其局部最優(yōu)點就是它的全局最優(yōu)點。這個性質(zhì)在機(jī)器學(xué)習(xí)算法優(yōu)化中有很重要的應(yīng)用霞溪,因為機(jī)器學(xué)習(xí)模型最后就是在求某個函數(shù)的全局最優(yōu)點,一旦證明該函數(shù)(機(jī)器學(xué)習(xí)里面叫“損失函數(shù)”)是凸函數(shù)中捆,那相當(dāng)于我們只用求它的局部最優(yōu)點了鸯匹。

5. 凸優(yōu)化

機(jī)器學(xué)習(xí)中的大多數(shù)問題可以歸結(jié)為最優(yōu)化問題。

人在面臨選擇的時候重視希望自己能夠做出“最好”的選擇泄伪,如果把它抽象成一個數(shù)學(xué)問題殴蓬,那么“最好的選擇”就是這個問題的最優(yōu)解。優(yōu)化問題蟋滴,就是把你考慮的各個因素表示成為一組函數(shù)(代價函數(shù))染厅,解決這個問題就是在一集備選解中選擇最好的解。

那么津函,為什么我們要討論凸優(yōu)化而不是一般的優(yōu)化問題呢肖粮?那時因為凸優(yōu)化問題具有很好的性質(zhì)——局部最優(yōu)就是全局最優(yōu),這一特性讓我們能夠迅速有效的求解問題尔苦。

在求解機(jī)器學(xué)習(xí)算法的模型參數(shù)涩馆,即無約束優(yōu)化問題時,梯度下降(Gradient Descent)是最常采用的方法之一允坚,另一種常用的方法是最小二乘法魂那。

另外還有牛頓法和擬牛頓法。

5.1 梯度下降

首先來看看梯度下降的一個直觀的解釋稠项。比如我們在一座大山上的某處位置涯雅,由于我們不知道怎么下山,于是決定走一步算一步展运,也就是在每走到一個位置的時候活逆,求解當(dāng)前位置的梯度精刷,沿著梯度的負(fù)方向,也就是當(dāng)前最陡峭的位置向下走一步划乖,然后繼續(xù)求解當(dāng)前位置梯度贬养,向這一步所在位置沿著最陡峭最易下山的位置走一步。這樣一步步的走下去琴庵,一直走到覺得我們已經(jīng)到了山腳误算。當(dāng)然這樣走下去,有可能我們不能走到山腳迷殿,而是到了某一個局部的山峰低處儿礼。

梯度下降

本文不對梯度下降做進(jìn)一步的講解。

5.2 最小二乘法

最小二乘法庆寺,又稱最小平方法蚊夫,是一種數(shù)學(xué)優(yōu)化技術(shù)。

它通過最小化誤差的平方和尋找數(shù)據(jù)的最佳函數(shù)匹配懦尝。利用最小二乘法可以簡便地求得未知的數(shù)據(jù)知纷,并使得這些求得的數(shù)據(jù)與實際數(shù)據(jù)之間誤差的平方和為最小。

線性回歸

所有實際值與預(yù)測值(擬合曲線上的點)差的平方求和陵霉,越小越好琅轧。

最小二乘損失函數(shù)

5.3 牛頓法

牛頓法的基本思想是利用迭代點處的一階導(dǎo)數(shù)(梯度)和二階導(dǎo)數(shù)(Hessen矩陣)對目標(biāo)函數(shù)進(jìn)行二次函數(shù)近似,然后把二次模型的極小點作為新的迭代點踊挠,并不斷重復(fù)這一過程乍桂,直至求得滿足精度的近似極小值。

牛頓法的速度相當(dāng)快效床,而且能高度逼近最優(yōu)值睹酌。

牛頓法分為基本的牛頓法和全局牛頓法。

5.3.1 基本牛頓法

基本牛頓法是一種是用導(dǎo)數(shù)的算法剩檀,它每一步的迭代方向都是沿著當(dāng)前點函數(shù)值下降的方向憋沿。

5.3.2 全局牛頓法

牛頓法最突出的優(yōu)點是收斂速度快,具有局部二階收斂性沪猴,但是卤妒,基本牛頓法初始點需要足夠“靠近”極小點,否則字币,有可能導(dǎo)致算法不收斂则披。這樣就引入了全局牛頓法。

5.4 擬牛頓法

擬牛頓法的本質(zhì)思想是改善牛頓法每次需要求解復(fù)雜的Hessian矩陣的逆矩陣的缺陷洗出,它使用正定矩陣來近似Hessian矩陣的逆士复,從而簡化了運算的復(fù)雜度。擬牛頓法和最速下降法一樣只要求每一步迭代時知道目標(biāo)函數(shù)的梯度。通過測量梯度的變化阱洪,構(gòu)造一個目標(biāo)函數(shù)的模型使之足以產(chǎn)生超線性收斂性便贵。這類方法大大優(yōu)于最速下降法,尤其對于困難的問題冗荸。另外承璃,因為擬牛頓法不需要二階導(dǎo)數(shù)的信息,所以有時比牛頓法更為有效蚌本。如今盔粹,優(yōu)化軟件中包含了大量的擬牛頓算法用來解決無約束,約束程癌,和大規(guī)模的優(yōu)化問題舷嗡。

5.5 凸優(yōu)化小結(jié)

從本質(zhì)上去看,牛頓法是二階收斂嵌莉,梯度下降是一階收斂进萄,所以牛頓法就更快。如果更通俗地說的話锐峭,比如你想找一條最短的路徑走到一個盆地的最底部中鼠,梯度下降法每次只從你當(dāng)前所處位置選一個坡度最大的方向走一步,牛頓法在選擇方向時沿癞,不僅會考慮坡度是否夠大兜蠕,還會考慮你走了一步之后绊袋,坡度是否會變得更大军熏。所以项滑,可以說牛頓法比梯度下降法看得更遠(yuǎn)一點,能更快地走到最底部盗舰。(牛頓法目光更加長遠(yuǎn),所以少走彎路桂躏;相對而言钻趋,梯度下降法只考慮了局部的最優(yōu),沒有全局思想剂习。)

從幾何上說蛮位,牛頓法就是用一個二次曲面去擬合你當(dāng)前所處位置的局部曲面,而梯度下降法是用一個平面去擬合當(dāng)前的局部曲面鳞绕,通常情況下失仁,二次曲面的擬合會比平面更好,所以牛頓法選擇的下降路徑會更符合真實的最優(yōu)下降路徑们何。

6. 繼續(xù)前行

初步認(rèn)識上面的概念后萄焦,就可以開始機(jī)器學(xué)習(xí)的學(xué)習(xí)了。

調(diào)包俠:現(xiàn)有機(jī)器學(xué)習(xí)算法已經(jīng)有大量的實現(xiàn),在工作中拂封,普通程序員只需要在理解概念的情況下調(diào)用其提供的API茬射,俗稱調(diào)包俠。

在后續(xù)的學(xué)習(xí)和工作中冒签,對數(shù)學(xué)會越來越有感覺在抛,就可以再進(jìn)一步的根據(jù)需要深入學(xué)習(xí),以加深對機(jī)器學(xué)習(xí)的理解萧恕。

Kevin刚梭,2018年4月24日,成都廊鸥。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末望浩,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子惰说,更是在濱河造成了極大的恐慌磨德,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吆视,死亡現(xiàn)場離奇詭異典挑,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)啦吧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門您觉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人授滓,你說我怎么就攤上這事琳水。” “怎么了般堆?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵在孝,是天一觀的道長。 經(jīng)常有香客問我淮摔,道長私沮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任和橙,我火速辦了婚禮仔燕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘魔招。我一直安慰自己晰搀,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布办斑。 她就那樣靜靜地躺著厕隧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上吁讨,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天髓迎,我揣著相機(jī)與錄音,去河邊找鬼建丧。 笑死排龄,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的翎朱。 我是一名探鬼主播橄维,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼拴曲!你這毒婦竟也來了争舞?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤澈灼,失蹤者是張志新(化名)和其女友劉穎竞川,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體叁熔,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡委乌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了荣回。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片遭贸。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖心软,靈堂內(nèi)的尸體忽然破棺而出壕吹,到底是詐尸還是另有隱情,我是刑警寧澤删铃,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布耳贬,位于F島的核電站,受9級特大地震影響泳姐,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜暂吉,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一胖秒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧慕的,春花似錦阎肝、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春沛硅,著一層夾襖步出監(jiān)牢的瞬間眼刃,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工摇肌, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留擂红,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓围小,卻偏偏與公主長得像昵骤,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子肯适,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354