機器AI學習需要什麼數學基礎,學習這些數學需要會哪些基礎數學?
我在學習Java如果未來我想從事機器學習需要什麼基礎?這些基礎又需要哪些數學
我先說下自己平時工作的流程吧。
當拿到一個實際問題的時候,一般分為下面幾個階段:
1. 數據清洗:
這部分內容包括:數據的結構化,把非結構化數據轉換成結構化數據,比如最初的輸入是一組文本,那麼我們需要從中提取出各種特徵,生成結構化數據,或者說把數據向量化。這部分工作一般要跟資料庫打交道,因此sql語句是必選項。另外有些時候,也會寫一些簡單的腳本,shell腳本,或者python腳本等。
2. 當把數據結構化或者向量化之後,就是一個模型篩選的問題,好在現在有很多開源的工具,比如眼下比較火的tensorflow等。對於某些簡單的問題,可能用這些開源的軟體包,把數據導進去,直接出結果,輕鬆搞定。但往往我們需要不斷調優模型,優化參數,提高效率。對於一些複雜的問題,可能簡單用開源的工具解決不了,這個時候,可能需要做一些擴展開發,但往往也是基於開源的工具做擴展。
3. 當一個模型或者演算法上線後,接下來的還要不斷的根據上線後的效果,做優化,做調整。好多模型或者演算法,衰減很快,上線一段時間後,效果可能就不理想了,這個時候要根據線上反饋的結果反過來再優化模型。
上面這三個過程需要的基本技能:
a. sql 編程是必選項,我見過牛逼的人,能用sql語句實現很複雜的數據挖掘演算法的。
b. python語言,機器學習的好多工具都是基於python的。但假如你精通了一門編程語言,比如java,你再學習其他的語言,其實門檻很低。
c. 我上面寫的第三部分,其實是需要結合業務,行業和具體的應用場景的,但對目前的題主來說,可能這點並不重要。
d. 模型的調優不止是調參那麼簡單,需要一定的演算法理論功底,對於你用到的演算法,不僅要知其然,還要知其所以然。
說到數學基礎,其實,我在之前回答別人的問題中,曾經提到過,這裡還是列下課程名字吧
《線性代數》《微積分》 《概率論》《數理統計》《資訊理論》
這幾門課是機器學習的基礎,有了這幾門課的功底,才能看懂周志華那本《機器學習》。
樓主可以先看下《機器學習》這本書,然後不懂的地方,回過去補基礎知識。
另外,個人經驗,一個演算法,如果學了不用,時間一久,可能知識在腦海中就清零了;
如果你用一個演算法解決過實際問題,能加深你對演算法的理解,網上有很多公開的數據集,可以拿來練練手。
另外題主可關注下我的專欄,歡迎交流。
打開深度學習, 對於大部分小白, 編程已然令人生畏, 而更加令人難以接受的,那麼,深度學習里的數學到底難在哪裡? 尋常人等又有如何路徑走通, 請聽鐵哥慢慢解析。
線性代數:
想要學習深度學習, 你第一個需要理解透徹的學問是線性代數。 為什麼? 因為深度學習的根本思想就是把任何事物轉化成高維空間的向量, 強大無比的神經網路, 說來歸齊就是無數的矩陣運算和簡單的非線性變換的結合。 這樣把圖像啊, 聲音啊這類的原始數據一層層轉化為我們數學上說的向量。
什麼image to vector, word to vector 這些, 都在說的一件事情就是這類數學轉化, 不同類型(我們通常稱為非結構化數據)的數據最終成為數學上不可區分的高維空間的向量,所謂萬類歸宗。 線性代數,就是對於這一類高維空間運算做的默認操作模式,可謂上帝的魔術之手。
因此你要駕駛深度學習這個跑車, 線性代數關係你到是否理解發動機的原理。
線性代數核心需要掌握的是線性空間的概念和矩陣的各項基本運算,對於線性組合, 線性空間的各類概念, 矩陣的各種基本運算, 矩陣的正定和特徵值等等都要有非常深厚的功力。
概率論:
下一個我們需要講解的是什麼呢? 概率論基礎 。 概率論事整個機器學習和深度學習的語言 , 因為無論是深度學習還是機器學習所做的事情是均是預測未知。 預測未知你就一定要對付不確定性。 整個人類對不確定性的描述都包含在了概率論裡面。
概率論你首先要知道的是關於概率來自頻率主義和貝葉斯主義的觀點, 然後你要了解概率空間這一描述描述不確定事件的工具, 在此基礎上, 熟練掌握各類分布函數描述不同的不確定性。
我們最常用的分布函數是高斯, 但是你會發現高斯是數學書里的理想, 而真實世界的數據, 指數分布和冪函數分布也很重要, 不同的分布對機器學習和深度學習的過程會有重要的影響,比如它們影響我們對目標函數和正則方法的設定。懂得了這些操作, 會對你解決一些競賽或實戰里很難搞定的corner case大有裨益。
一個於概率論非常相關的領域-資訊理論也是深度學習的必要模塊,理解資訊理論里關於熵,條件熵, 交叉熵的理論, 有助於幫助我們了解機器學習和深度學習的目標函數的設計, 比如交叉熵為什麼會是各類分類問題的基礎。
微積分:
微積分和相關的優化理論算是第三個重要的模塊吧,線性代數和概率論可以稱得上是深度學習的語言,那微積分和相關的優化理論就是工具了。 深度學習, 用層層迭代的深度網路對非結構數據進行抽象表徵, 這不是平白過來的,這是優化出來的,用比較通俗的話說就是調參。 整個調參的基礎,都在於優化理論, 而這又是以多元微積分理論為基礎的。這就是學習微積分也很重要的根源。
優化理論:
機器學習里的優化問題,往往是有約束條件的優化,所謂帶著鐐銬的起舞 , 因此拉格朗日乘子法就成了你逃不過的魔咒。
優化理論包含一階和二階優化,傳統優化理論最核心的是牛頓法和擬牛頓法。
由於機器學習本身的一個重要內容是正則化,優化問題立刻轉化為了一個受限優化問題。這一類的問題,在機器學習里通常要由拉格朗日乘子法解決。
傳統模型往往遵循奧卡姆剃刀的最簡化原理,能不複雜就不複雜。 而深度學習與傳統統計模型的設計理念區別一個本質區別在於,深度模型在初始階段賦予模型足夠大的複雜度,讓模型能夠適應複雜的場合,而通過加入與問題本身密切相關的約束: 例如全職共享,和一些通用的正則化方法:例如dropout, 減少過擬合的風險。
而正因為這種複雜度, 使得優化變得更加困難,主要由於:
1, 維度災難, 深度學習動輒需要調整幾百萬的參數,是一個計算量超大的問題。
2, 目標函數非凸, 具有眾多的鞍點和極小值。 我們無法直接應用牛頓法等凸優化中的常見方法,而一般用到一階優化(梯度下降),這看起來是比支持向量機里的二階優化簡單,然而正是因為缺乏很好的系統理論, 邊角case變得特別多,反而最終更難。
3, 深度, 由於深,造成反向傳播的梯度往往越來越弱, 而造成梯度消失問題。 各類深度學習的領先演算法往往是圍繞解決梯度消失問題。
圖: 臭名昭著的局部極小值問題。
我們用一些非常簡單的實例說一下深度學習的幾個主要應用方向與數學的結合:
階段1:
多層神經網路(DNN)的前傳與回傳(BP)演算法 。
理解DNN的前向傳遞過程, 這個過程里包含了線性代數的空間變換思想和簡單的高數。
這算是第一難度梯級, 你需要掌握的是BP演算法, 這裡含有多元微積分一個最基本的法則: 鏈式求導和jacobian矩陣。 在此處你會對維度產生全新的認識。
階段2:
深度學習的中流砥柱CNN卷積運算 : 這裡應用的數學是卷積本身, 你要通過高數掌握卷積的本質, 體會它與相關性, 傅立葉變換等運算之間的聯繫。 這部分也屬於高數內容, 而卷積運算本身也需要強大的線性代數基礎。
階段3:
RNN網路與微分方程。RNN似乎包含比別家演算法多很多的數學知識,因為RNN的運算和調參你需要理解一些非線性動力系統的基礎知識。如定點,邊緣穩定性和混沌。非線性動力學是物理的內容, 但是大部分講的是數學, 這點物理系的學的會很有優勢。
階段4:
深度強化學習。 這時候你的數學工具要包含bellaman 方程,控制論的一些基礎知識,更多關於馬爾可夫過程和時間序列的知識。簡單的控制論你看看會很好的助力你對整個機器學慣用於機器人控制的理解,而馬爾科夫決策樹的基礎知識學了你會覺得什麼阿爾法狗阿爾法元都挺簡單的。
階段5:
生成式模型與GAN對抗網路。這部分的數學難度應該與深度強化學習在同一難度上。 需要對概率論有比較深的理解。 最基礎的生成模型你要理解玻爾茲曼機這個與統計物理淵源很深的模型,需要較深的概率統計知識。 GAN生成對抗模型的目標函數含有了大名鼎鼎的博弈論思想。納什均衡都進來了啊, 雖然這時候的優化理論已經飛一樣的難, 你還是會有一種融匯貫通的感覺。
階段6:
信息瓶頸理論? 計算神經科學前沿? 鐵哥恭喜你此處要告別塵緣了。 深度學習的盡頭必然要與我們對認知和信息本質的基礎認識相連。 此處針對希望做深度學習研究的人員。
基礎教材推薦:
陳希孺院士的《概率論與數理統計》,這是一本數理統計的入門級教材。最好的統計中文教材。參考評論 https://d.cosx.org/d/14990-14990
龔升的《簡明微積分》。這本教材是我見過的最與眾不同的寫作結構,不是按常規教材那樣講導數、微分、微分的應用然後是不定積分、定積分。如果覺得難, 入門從同濟大學的微積分教材入手也不錯。
線性代數: Introduction to Linear Algebra (Gilbert Strang) MIT的教授,網上還有視頻。
如果你對上面的腦洞感興趣,歡迎關注巡洋艦的深度學習實戰課程, 手把手帶你進行深度學習實戰, 課程涵蓋機器學習,深度學習, 深度視覺, 深度自然語言處理, 以及極具特色的深度強化學習,看你能不能學完在你的領域跨學科的應用深度學習驚艷你的小夥伴,成為身邊人眼中的大牛。
謝邀
關於ai, 很多數學都比較重要, 高數,線性代數矩陣, 概率論一個都少不了。
進階一點的, 最優化理論,這本書講述各種最優化的解法, 其實各種機器學習問題都是最優化問題。然後學習演算法,可以學習隨便一本機器學習, 模式識別之類的課程。這種課程講述基本的機器學習演算法。
然後深入一點的就需要自己探索一些應用方向,比如自然語言處理方向的LDA, word2vector 。
再深入一點,學學神經網路, 深度學習。
然後熟悉一些開發語言, python java,scala 。 學會使用開源演算法包諸如sklearn,一級pyspark系列的mllib ml api, 這就是結合分散式實現了。用來做一些工程。
深度學習的工具現在最火的 tensorflow,再學學 練練, 如果你搞的深入的話, 月薪5萬沒問題了
謝邀。
大學數學+matrix cookbook+一部分數值優化/數值分析。安利一下周志華老師的《機器學習》和李航老師的《統計學習方法》,哪兒看不懂就去補哪兒...
哇,自學那麼多科難度不小,19歲大專找工作,看來用工作剩餘時間邊干變學了,另外說聲謝謝
推薦閱讀:
※有誰能講解下《Going deeper with convolutions》這篇論文?
※壓縮感知和矩陣分解的異同?
※Factor graph 模型的前提知識有哪些?
※如果想去南大周志華教授那裡讀研,應該如何準備呢?
※AIC, BIC 和 L1,L2 等正則化有什麼區別?
TAG:機器學習 |