首頁>Club>
如果想進入機器學習這個領域,從哪裡開始比較好?本人非計算機或類似專業,但是有一定程式設計基礎(Python)
6
回覆列表
  • 1 # hncshp

    機器學習比較好開始,需要的數學知識沒有深度學習多。建議先找幾本機器學習多書來看,先把一些概念搞清楚,瞭解機器學習的作用和目的,然後找幾個開源的專案來看看。Python只是一門語言,現在很多人覺得懂python就是懂機器學習或者深度學習或者人工智慧,這是完全錯誤的。python只是一個語言工具,只是目前用python實現的機器學習、深度學習的資源比較多,便於學習,但語言只是工具,就如同磚頭和水泥,有了這些並不代表會蓋房子,還需要很多的理論以及演算法,這才是精髓。

  • 2 # IT老友

    2:嗶哩嗶哩的李宏毅教授的《機器學習》《深度學習》影片,林軒田教授的《機器學習》系列。中文免費的哦,對機器學習的數學推導詳細的令人髮指。

    3:斯坦福大學的cs231n教程,作業請擼一遍。

    4:機器學習的相關框架如tensorflow,keras等。

    5:吳恩達教授的機器學習影片,(全英文)。

    6:其它經典書籍推薦PRML《Pattern Recognition and Machine Learning》,ESL《The Elements of Statistical Learning》《統計學習方法》《非線性規劃》

    機器學習需要過硬的數學知識,高配置的電腦,建議顯示卡1080以上,不要低於1060,請樓主做好心理準備。

  • 3 # 留德華叫獸

    首先如果對人工智慧、資料科學還不是很瞭解的同學,可參考以下綜述:

    https://www.toutiao.com/i6435192493775520258/

    0,先說點寬泛的、上綱上線的東西

    (要乾貨的可以直接跳至後半部分)

    機器學習,大資料這些新興專業,是隨著工業界與日俱增的需求而隨之出現的(中國最近批准了第一批試點的幾十所高校開設資料科學專業)。其實任何專業都是這樣一個需求導向的過程,包括微電子,計算機,還有什麼房地產專業。。你說幾十年前你們聽說過這些專業麼?

    自然科學如數學、物理、化學、生物長盛不衰,是有其道理的,這也是為什麼我們初高中我們都在學這些東西。而某些專業,也會隨著市場需求的銳減而減少甚至消失。

    這些專業名詞在剛出現的時候往往是“憑空造詣”或者是強加術語,然而知識是需要積累的,不是憑空出現的,也就證明了如大資料、機器學習這樣的東西,其實是科研圈已經研究或者已用了很多年了,然後市場需求強烈,為了順應市場需求,大批學校爭相決定開這個專業,於是喊一幫教授或院士過來拍板,這個專業需要哪些基礎課程,我們就把這些基礎課放進來,這也是我下面的回答要強調的。(因此“需要學哪些課程”這個問題最好的答案,就是去一個名校的資料科學或機器學習專案裡看課程設定,這裡我推薦一下UCL的Machine Learning Msc)

    本文要講的,不包括資料庫那個方向的大資料。

    簡單的說,原理和基礎都在數學這邊,當然有很多偏應用和軟體使用的課程,這些直接大街上報個培訓班就能學會的技術含量不那麼高的東西,不在我的討論範圍內。我要討論的,是如何系統的學習,然後自己能編出這些處理大資料的程式或軟體,我想,這才能稱為一個合格的資料科學家。

    好了,下面是乾貨。(已經過多次私人諮詢過程中,多個名校資料科學/人工智慧碩士、博士專案的先修課程所驗證)

    1, 微積分(求導,極限)和線性代數(矩陣表示和運算)是基礎中的基礎;2, 程式設計能力

    資料處理當然需要程式設計了,因此C/C++/Python任選一門(推薦Python,因為目前很多庫和Library都是用python封裝),資料結構可以學學,讓你程式設計更順手更高效,但是程式設計不是資料處理的核心,相對而言演算法還來的重要一些,因此建議再上一門演算法課。

    當然了,樓主所在的影象處理界,熟練使用matlab或者Python呼叫opencv庫是必要條件,但是again他們只是工具,業餘時間自學,多練練就沒問題。有同學一直提問用R行不行,樓主補充一點,用什麼程式語言很大部分取決於你的核心演算法會呼叫什麼已有的庫函式,比如樓主的科研裡面核心演算法往往是MIP(混合整數規劃)問題需要呼叫Cplex庫函式,因此C/C++/Python/Java這些和Cplex介面良好的語言都可以拿來用,這時候R就別想了。

    另外雖然影象處理界一些open-source的code都用C++寫的,但是鑑於使用方便都會提供Python的介面,因此需要用到這些code的話,用Python呼叫比較方便;但是,如果是高階骨灰級玩家,需要修改甚至自己寫原始碼,那麼還是推薦C/C++,因為他們的速度最快。

    3. Mid-level的課程。

    機率論+統計(很多資料分析建模基於統計模型),線性規劃+凸最佳化(或者只學一門叫numerical optimization,統計到最後也還是求解一個最佳化問題,當然也有純最佳化模型不用統計模型的),Machine Learning(其實機器學習,通篇都是在講用一些統計和最佳化來做clustering 和 classification這倆個人工智慧最常見的應用),學到這裡,你基本就會發現,學這一門課中間會穿插著很多其他課的內容。恩,知識總是相通的嘛,特別是這些跨專業的新興學科,都是在以往學科的基礎上由社會需求發展而來。

    學到這裡,其實你已經能看懂並且自己可以編寫機器學習裡面很多經典的案例了,比如regression,clustering,outlier detection。

    關於最佳化類課程的綜述,歡迎關注我的專欄:[運籌帷幄]大資料和人工智慧時代下的運籌學 - 知乎專欄運籌學(最最佳化理論)如何入門? - 悟空問答https://www.wukong.com/question/6376745154497216770/4. 高階課程

    再往上就是比較specific的課程了,可以看你做的專案或者以後的concentration再選擇選修,比如:Probabilistic Graphical Models(機率圖模型), Nolinear Optimization(非線性最佳化), Integer Programming(整數規劃) ,計算機視覺,模式識別,影片追蹤,醫學影象處理,增強學習,深度學習, 神經網路,自然語言處理,網路資訊保安,等等等。

    再比如有用偏微分方程做影象處理的(比較小眾),那麼這時候你肯定要去學一下偏微分方程了,大都是以科研為主導的。科研嘛,為了發文章,就是要嘗試前人沒嘗試過的方法,萬一效果不錯呢,就是一篇好paper了,對吧。

    注意這裡是偏機器學習或計算機視覺的,如果是自然語言處理,那麼可能還要自學一些語言學(句法等結構)的基礎課。

    正如我說的,學到Mid-level,就已經具備絕大部分理論基礎了。然後做幾個實際專案,就能上手然後就可以“吹噓”自己是搞資料科學的,就能找到一份工作了。要讀Phd搞科研,那麼高階課程必不可少,而且同一個topic你需要上好幾門課,並且你博士的課題,很可能只是一本書中一個章節裡面一小節裡講的演算法,去改進他。

    比如,樓主的博士課題就是mixed linear programming + discrete graphical models + markov random fields + regression + clustering + segmentation。

    如果大家想申請AI、資料分析的碩士專案的話,強烈建議參考UCL Machine Learning 碩士專案的課程安排。

    注意我不是在推薦大家申請這個專案,只是覺得這個碩士專案的課程安排非常好,由淺入深,各個應用方向也都有涉及,有足夠的選擇空間。

    5,推薦書目及網路課程

    至於書目,沒有特別推薦的,但是建議看英文原版。另外直接Youtube看影片課程,很多國際知名教授都很無私地把自己上課的影片放在youtube上免費學習(搜尋我上面列出的科目名字)。如果確實要樓主推薦,那就推薦海德堡大學歷史上最年輕的教授 Fred的機器學習影片(我基本都看過):

    https://www.youtube.com/playlist?list=PLuRaSnb3n4kSgSV35vTPDRBH81YgnF3Dd

    另外一個教授給你上課的時候,開頭一般是會推薦書給你的(如果你確實喜歡看書的話)。

    (注:以下再推薦一些影片,受之以漁。多為graduate course,僅作演示目的)

    1,Machine Learning by Prof. Nando de Freitas, 此影片是其在UBC時13年所錄,後來跳槽去牛津計算機繫了。

    https://www.youtube.com/playlist?list=PLE6Wd9FR--EdyJ5lbFl8UuGjecvVw66F6

    2,Deep learning at Oxford 2015 by Prof. Nando de Freitas, 跳槽到牛津所錄。

    https://www.youtube.com/playlist?list=PLE6Wd9FR--EfW8dtjAuPoTuPcqmOV53Fu

    3,Probabilistic Graphical Models by Daphne Koller, 斯坦福大學計算機系教授

    https://www.youtube.com/playlist?list=PL50E6E80E8525B59C

    另外還有一些付費的學習網站,如Coursera,優點是結課後可以拿分數和證書,並且很多世界名校的教授在上面開課。

    再羅嗦一下解決一個實際大資料問題的一般流程。比如一個生物醫學公司找到我,要求我做一個影片裡面cell tracking的專案。(一幀既為一張圖片,假設500*500=25w畫素,一個video算它1000幀,總共250 million畫素,可以算大資料了吧?)具體流程:數學建模--設計算法--用任意程式語言編寫演算法(其中會涉及到資料結構,即如何搭建程式使程式更加高效)--匯入影片資料到演算法裡得出結果--根據結果的好壞改進演算法甚至模型(如此往復)。這裡我強調一下數學建模的重要性,為何要數學建模呢?的確很多naive的演算法完全不需要建立在數學模型之上,比如clustering裡面經典的EM演算法,是一個iterative method,基本一眼就能看出演算法的思路然後程式設計實現,所以稱之為naive。那麼基於數學模型上的演算法有何妙處呢?答案是一個好的數學模型,往往是被研究了幾十甚至幾百年的學科,比如圖論,很多性質都已經被研究得很透徹可以直接使用。回到我的這個例子,cell trancking,我可以建立一個network flow(網路流)的模型(其實也是基於圖論的模型),那麼這個network flow模型,是一個被研究了很久的領域,因此我可以直接使用很多很多已知的好定理或演算法來服務我的問題。另外很多時候,經典的數學模型裡面已有很多經典的演算法,比如network flow基於裡的max flow/min cut theorem的演算法,如果能在其基礎上做改進,等於站在巨人的肩膀。因此這就是數學建模的重要之處。

    往往同一個問題,從不同的角度去看可以有千百種數學建模方法,而不同的數學模型差別往往巨大,而數學建模又是解決一個實際問題的第一步,在這基礎上才考慮演算法和資料結構設計。因此,數學基礎在我看來是重中之重,也是我推薦學習的課程的核心。當然了,計算機系出生的朋友,數學這個層面學習得不是很深,比較偏向於演算法的設計和實現,是另外一個側重點。

    關於入行後就業前景(包括第三條運籌學--演算法工程師),參見:

    https://www.wukong.com/question/6468085995349737742/

  • 4 # 涇渭漳淮

    先想清楚,你要做哪個方向?是做演算法還是做應用(用演算法)?

    做演算法的話:如果沒有數學基礎就先去學數學,如果不會c語言就學c語言(Python不行)。然後去看各種迴歸聚類分類。再然後找一個方向(影象影片音訊自然語言)學特徵提取。

    做應用的話:學各種Python庫,tensorflow之類的,實踐。

  • 5 # 小寓言大道理

    建議一定要有一定的數學基礎尤其是機率統計,你可以先把前三章學好,最起碼要懂得什麼是機率,條件機率,期望等概念。然後按住一本相關的資料去讀,儘量不要跳來跳去,比如認真看一下書《機器學習》,周志華老師的,好書是不怕多讀的,每讀一遍就會多一點收穫。學習最忌浮躁自己自我否定,希望對你有幫助。

  • 中秋節和大豐收的關聯?
  • 蒙娜麗莎瓷磚口碑如何?身邊熟人都很推薦這個品牌,瞭解的來答一下?