1. 程式人生 > >關於機器學習,我總結了可能是目前最全面最無痛的入門路徑和資源!

關於機器學習,我總結了可能是目前最全面最無痛的入門路徑和資源!

以下全文轉載自 作者:李傑克 微信公眾號:小白AI之路

這篇文章寫得比較長,要給作者點個贊哈,希望大家關注微信公眾號看原版,原版的配圖、文字、色彩更加生動,文字加粗突出,易讀性更強。我轉載這篇文章,又仔仔細細的看了近一個小時,真是累,更別說作者寫出來啦,辛苦傑克啦!

這裡寫圖片描述
最近有不少童鞋給李傑克留言,說自己對機器學習很感興趣卻無從下手,想知道我的學習路徑,也希望我可以分享一些適合入門的學習資源給到大家。

已經關注過“小白AI之路”的童鞋應該都知道李傑克之前的幾個標籤:本科學渣、非計算機專業、不懂程式設計、前網際網路產品經理。

李傑克也算是從一個純小白開始自己的漫漫AI之路的,也算踩過坑、撞過牆、走過彎路,也積累了些乾貨可以跟大家share,本文會根據童鞋們普遍關心的一些問題毫不保留地把一些適合入門的學習資源分享給大家。

因為有段時間沒更新了,李傑克決定好好補償一下大家,所以把能夠寫七八篇專題的乾貨都融入到了這篇文章,總計16201個字,字數確實多得讓人感到害怕,至少李傑克之前看到這種乾貨長文都會mark起來騙自己說那麼好的文章以後一定要找個時間好好研究下啊,然後大概率就沒有下文了……

這裡寫圖片描述
但是,各位童鞋,不要慌也不要怕……李傑克有自信這應該是目前你在網上能夠讀到的最全面、最良心、最友好的關於機器學習入門路徑和資源分享的文章了。

說它“全面”是因為李傑克為大家梳理了python及常用庫、機器學習演算法、深度學習框架的學習路徑和資源,就算你不打算根據推薦的資源進入更深的學習,讀完文章的你也應該大致瞭解到讓AI那麼牛逼的機器學習技術的初步輪廓了。

說它“良心”是因為這篇文章我大概構思了一個月,陸陸續續利用工作之餘的時間寫了兩個星期40餘小時,各種整理可能對大家有幫助的資源,自己都快把自己寫得無聊和煩躁的那種……

說它“友好”是因為李傑克做過產品經理,對於大家的學習體驗這件事情還是非常在意的,本著no experience no bb的原則,分享的學習路徑和資源都是自己各種嘗試後篩選出來的比較適合大家入門的資源。

這篇文章其實有點工具書性質,你大可以在入門的不同時期都來看看這個時期的學習路徑是什麼樣的、有哪些還不錯的資源你可以去看看,作為你學習的參考。

如果你耐心看下去(當然是可以分多次看甚至反覆看啦),李傑克相信你讀完這篇文章後肯定會毫不吝嗇地給我點個贊,甚至還會在朋友圈幫我轉發,而且好東西要大家分享的那種心態去轉發。

好吧,李傑克承認自己今天早上忘記吃藥了……

————————————-壹———————————-
關於學習資源獲取渠道

跟大家推薦和分享的學習資源的獲取分為兩種渠道:

  1. 對於在網上可以輕易找到的資源,我會直接貼出相關連結,大家可直接點開連結即可閱讀、觀看或下載

  2. 對於沒那麼容易找到或者是我之前下載現在找不到連結的資源,我已經整理打包放到雲盤中了,大家只需要前往雲盤下載即可

雲盤中三份之二資源是李傑克已經看過並且覺得對於大家有幫助才放進去的,那些對現階段的大家沒有太大幫助的資料我都過濾掉了,畢竟為了看起來全而各種塞大家可能永遠都不會用上的資源沒有任何意義,我想做的是降低你們篩選學習資源的成本

另外三份之一多數是李傑克沒來得及看又被很多人奉為機器學習經典的書籍,我考慮再三,還是放進去了,雖然我還沒怎麼看過,但大家以後可能還是會有用到的場景。

李傑克也還在持續地學習,將來還會持續遇到的優質學習資源不斷地整合進去,放張目前雲盤裡資料的截圖勾引下大家,點開大圖先粗粗瞄下里面的學習資源,看看李傑克是不是很良心(驕傲臉):

這裡寫圖片描述

對於後者資源,李傑克最開始是想給大家提供下載地址和密碼的,然而,在某個寂寞難耐的漫漫長夜裡,李傑克惡從心生,突然有了個厚顏無恥的想法。

講真,李傑克還真對自己無恥的機智感到一些小激動呢!

額……你果然很聰明!我就是被朋友圈裡那些轉發才能入群轉發才能獲得資料的人帶壞了哇!!!

所以(厚顏無恥臉),對李傑克精心整理的學習資源感興趣的童鞋,請轉發本篇文章到朋友圈後截圖傳送到公眾號“小白AI之路”後臺,李傑克將會在一天內給你提供下載地址和密碼哈!

當然李傑克也能理解一些童鞋對朋友圈有些潔癖,不喜歡胡亂轉發一些東西。

這樣的童鞋你們也不要慌,你們同樣可以通過“小白AI之路”後臺跟我聯絡,李傑克大概率還是會給你們提供下載地址和密碼的哈!

無他耳,李傑克只是單純的善良而已!感覺胸前飄揚的紅領巾似乎更加鮮豔了一些呢!

有沒有很開心?要不要先掃描下方二維碼關注下“小白AI之路”先(諂媚臉)?

這裡寫圖片描述

最後李傑克準備了那麼點雞湯,外加一個注射器,你不喝也要給你打進去:這篇我花了兩個禮拜總計40餘小時(週末都沒有出去浪了….)寫的東西算是把我覺得對大家入門會有用和有價值的資源一下子嘩啦啦地全給到了你,大概率你會消化不良,甚至持續消化不良多日,但是萬里長征也總有第一步對吧,請加油喲,共勉ing!

雞湯打好,我們繼續,這篇文章主要會從以下四個方面展開:

  1. 機器學習第一語言python相關學習路徑及學習資源分享

  2. 機器學習中最基礎的數學知識的簡單介紹

  3. 機器學習演算法相關學習路徑及學習資源分享

  4. 深度學習框架相關學習路徑及學習資源分享

再次強調,我本文中提及所有知識點和資源僅僅是讓你入門機器學習,如果想要走更遠,那肯定是遠遠不夠的,我們還是要繼續努力才可以呢!

話不多說,我們出發吧!

————————————-貮———————————-
機器學習第一語言python

講真,曾經中二的李傑克一直很傻逼地跟身邊朋友說程式設計是幫別人實現想法工具,而特立獨行善於思考如我(二得不行…)的人要去做策略和方案才能體現出價值嘛!

當然除了中二之外,李傑克還是一個表裡如一的人,所以大學裡真的是一點程式設計都沒有去學……

直到李傑克上手程式設計後才發現程式設計其實也可以是件很有意思很有效率的事情嘛。

我也終於能夠理解在自己產品經理時期的某一次深夜釋出後,我的程式猿好友王建國一臉昇天的樣子跟我說他剛剛寫了一段無比漂亮美麗還略帶性感風騷的程式碼的心情。

我知道,那一刻,他滿臉抖動的肉牽扯出來的笑就像一個兩百多斤的孩子那般純粹。

我也知道,那一刻,他驕傲得就像自己是整個程式碼世界裡流淌著最高貴血液的王。

我還知道,他如果一直保持從程式碼中獲得快樂和滿足的話,他們老王家怕是永遠抱不上孫子了……

說到學習程式設計就不得不提到我們的大主角python了,其實包括Java、lua、MATLAB、Julia、R、Perl、python、Ruby在內的多種語言都能搞機器學習,那為什麼只有python獨佔鰲頭,被推向了機器學習第一語言的神壇呢?

李傑克覺得主要有兩個原因:

  1. 之前搞機器學習的那幫人都喜歡用python,所以python慢慢就積攢了很多優秀的機器學習庫,所謂的庫你就理解為別人封裝好的一些具有某些功能的模組,我們可以通過呼叫這些模組來實現某些功能,而不用自己從頭寫程式碼;

  2. python真的是一個極易上手的語言,語法很簡單,容易理解,且實現同一功能的程式碼量會比一般語言要少一些,李傑克上手python的過程除了最開始熟悉語法的階段比較無聊煩躁外後面都沒有太不適的感覺。

就算你不搞機器學習,如果要學程式設計,那python也是個極佳選擇,因為python這貨實在膩害,機器學習、資料分析、爬蟲、Web 網站、遊戲、後臺服務、運維都能做,因為什麼事情都能摻和上一腳的特性,江湖人稱“萬能膠水”。

話說現在都有小學都把python列為必修課了,浙江還把python列為高考內容,就問一句你怕不怕,反正我已經是瑟瑟發抖了,坐等被拍死……

迴歸正題,下面我們來說下在機器學習這一領域,需要掌握哪些基本的python知識。

一. python的基本語法和應用

  1. 基本元素

基本上就是整數、浮點數、字串、變數、布林值、list、tuple、set、dict和常用格式檔案等元素的操作和使用;

  1. 判斷和迴圈

你可以理解為把上面說的一些基本元素通過if..else…., for和while等來做一些判斷和迴圈。

判斷很簡單,在某個節點上,如果是A,下面一步應該怎麼走,如果是B,下面應該怎麼走。

迴圈也不難理解,比如說我們有一個list[1,2,3],我們把裡面的每個元素都取出來做某些處理。

3.函式和類

你可以理解為我們有意將某些邏輯做成類或函式,在一些需要用到這段邏輯的場景下,我們就可以選擇直接呼叫相關函式,而不用重新去寫這段邏輯的程式碼,其實就是程式猿常說的不要重複造輪子的事情。

聰明的你是不是感覺有點熟悉似曾相識啊,對的哇,前面說的庫裡的模組其實就是一個個封裝好的函式哈。

再次強調,這只是你需要掌握的最最基本的東西,python的世界可是大著呢!

二.科學計算庫numpy和pandas

numpy和pandas是非常出名兩個科學計算庫,很多做資料分析和金融的童鞋都會用到。

那為什麼機器學習會用到這兩個庫了?

我們先來無腦吟唱下這句話:在機器的世界裡,萬物皆可為向量。向量其實也算是一維的矩陣,我們的訓練資料和要預測的資料也都是以矩陣的形式餵給機器的。

而numpy和pandas可以說是處理矩陣的好手,所以通常會用numpy和pandas對資料進行處理後再餵給機器,就我目前的實踐經驗來說,numpy應用的場景會比pandas多些

其實好一些機器學習框架(如Tensorflow和Mxnet)也有自己處理資料的模組,但大多是通過封裝numpy得到的,使用的方法也很像,所以無腦去上手numpy肯定不虧。

關於numpy和panda,我給大家提供一個ppt《機器學習numpy與pandas基礎》,大概100來頁,兩個庫的基本知識都說到了,感覺還不錯,已經放在雲盤裡了。

另外,網上有一篇叫《十分鐘搞定pandas》的文章梳理得還算清晰到位,大家不妨也去讀讀,反正也花不了多少時間。

《機器學習基礎——numpy與pandas》獲取方式:

請轉發截圖後前往公眾號“小白AI之路”獲取下載地址及密碼

《十分鐘搞定pandas》閱讀地址:

三.畫相簿matplotlib

在搞機器學習過程中,畫圖不是必須的,但通過畫圖能夠讓我們視覺化一些資料,從而能夠更直觀地觀察資料特徵和訓練過程。

我們可以把每一個數據樣本都理解為其特徵空間中的一個點。當我們把這些資料樣本在其特徵空間中畫出來後,就可以瞭解到資料的分佈了。

通過觀察資料分佈是可以發現一些規律的,比如下圖展現的是機器學習中著名的手寫體識別資料集mnist(其實手寫的0到9十個數字的圖片)的資料經過處理後的視覺化效果。
這裡寫圖片描述

是不是有發現相同數字的資料都分佈得比較近?其實不難理解,兩個資料樣本在特徵空間中的距離越近,就說明它們越像。

我們不妨再微微展開一下,話說我的好友王建國童鞋是個二次元妹紙顏控,在他眼中每一個二次元妹紙都可以被量化為四個維度的資料樣本:臉萌的程度(0-100)、聲音萌的程度(0-100)、胸大的程度(0-100)、腿長的程度(0-100),所以每個二次元妹紙都是以上四個維度構成的特徵空間中的一個點。

聰明的你知道三維以內的空間是可以畫出來的,那如果一個模型裡的資料超過三維,那我們是不是就不能可視化了?

好問題,資料超過三維後的確是不能夠視覺化,因為我們根本就畫不出來的嘛。

但你可能還記得我們之前說過有一類機器學習演算法是可以在保證資料資訊損失儘可能小的前提下壓縮資料維度的,所以我們可以通過這類演算法先把資料壓到三維以內,再做視覺化處理。

有點抽象?那李傑克說具體點,我們把王建國童鞋認識的所有二次元妹子的資料樣本都餵給機器,機器撲哧撲哧研究後,發現臉比較萌的妹紙通常聲音也比較萌,然後就搞出一個新的維度來代替了臉萌程度和聲音萌程度兩個維度。所以我們這些二次元妹紙的資料就被壓成了三個維度的資料,這個時候我們就可以通過視覺化來看資料分佈了。

另外,我們還可以通過matplotlib來畫出訓練過程中一些資料的變化,比如下圖這個最簡單的線性迴歸訓練擬合的過程:

這裡寫圖片描述

matplotlib的基本操作學習成本並不高,基本一到兩天可以把裡面基礎常用函式模組搞得差不多懂,建議可以學學。下面是一篇李傑克覺得基本知識點梳理得還不錯的的文章《matplotlib繪圖視覺化知識點整理》,各位同學可做參考。

《matplotlib繪圖視覺化知識點整理》閱讀地址:

四.一些python學習的建議

python有2和3的兩個版本,我最開始用的是python2,因為在網上看到的資訊都是說有些機器學習的庫不支援python3,後來發現其實基本上都是支援的,所以我又遷移到python3,總體上python2和python3的區別不大。

但諸如numpy等一些庫已經宣佈停止對python2的更新,python的未來大勢也是向python3遷移,所以建議各位童鞋直接上手python3。

關於Python安裝,建議大家使用anaconda版本的python,因為anaconda有強大的庫和環境管理功能。通常一個庫的安裝會依賴一些相聯的庫,anaconda可以幫你直接把所有相關聯的庫都一步到位安裝了,而不用你自己一個一個手動安裝。相信我,這很重要,至少你不會因為裝一個庫裝了一兩天還裝不對而暴躁得想砸電腦…..

而且大家以後機器學習常用來寫程式碼的jupyter和spyder也已經內建在了完全版的anaconda中,會很方便。

anaconda下載地址:

請選擇python3:

李傑克這裡也簡單說下自己學習python的過程,因為之前不具備程式設計基礎,也擔心自己學到半路放棄,所以我特意找了一個比較容易和甚至看起來略low的切入方式。

有一本書叫做《笨辦法學python》,這本書名副其實,確實很笨……李傑克當時做的就是下一個python,然後老老實實地跟著把書上的程式碼都敲上一遍,這裡需要注意的是《笨辦法學python》是針對python2編寫的,雖然python2和python3的基礎語法沒有太大差異,但建議大家暫時可以不通過這本書上手。李傑克還是把這本書放在了雲盤中,感興趣的童鞋,仍然可以去瞄一瞄。

另一個我入門時看的東西是《廖雪峰python教程》。《廖雪峰python教程》講得不復雜,比較適合初學者。如果你時間有限,下圖紅框內部分知識可以先不學習,因為在機器學習領域基本上很少會用到的,當然如果你是個時間充裕又喜歡學習的孩子,那都去學了吧。

這裡寫圖片描述

《笨辦法學python》敲上一遍和《廖雪峰python教程》看上兩三遍後(反正李傑克第一遍是看得比較懵逼),基本上python的基本語法就沒什麼大問題了,剩下的就是一個熟能生巧的事情了,不斷地去練習,不斷地發現問題,不斷地去百度。

《廖雪峰python教程》閱讀地址:

《廖雪峰python教程》李傑克也提供了PDF電子版給大家,同樣放在了雲盤中。

python大家如果單單看《廖雪峰python教程》是不夠的, 大家還可以去看看一個叫小甲魚的童鞋的錄製《零基礎入門學習python》。視訊總計30個小時,小甲魚講得很自然很清晰,口音也很闊愛,關鍵節奏適中,對初學者非常之友好,只需要看掉約15個小時的前53集即可。大家可以以並行看《廖雪峰python教程》和《零基礎入門學習python》。

《零基礎入門學習python》觀看地址:

李傑克剛開始學習python的時候有人建議我去刷《python100例》,對熟悉基本知識的應用的確是有幫助,但個人覺得沒有必要全刷,你可以隨機挑二十來個練練手就好了。

《python100例》閱讀地址:

基本語法我們都搞定了後,這個時候我們可以去做一件看起來很酷炫的事情了——爬蟲!

但你可能不知道的python爬蟲也可以是一個上手快、出活易的東西。

爬蟲也算是跟機器學習有那麼一丟丟關係的,大家都知道機器學習是需要資料的,我們可以通過爬蟲爬取一些可能會用到的資料,建議大家可以學一學,以備不時之需。

同時,爬蟲是一個可深可淺的東西,請注意我們寫爬蟲的目的是為了進一步熟悉python基本語法的使用,我們只需要學會使用最基礎的requests、beautifulsoup等庫來實現資料的抓取即可,暫時不要去折騰什麼多執行緒、scrapy框架之類的東東。

你應該用不了幾天就可以盡情地去爬小說、爬音訊、爬評論、爬一些不可描述的闊愛的女孩子的圖片……但是答應我,好東西記得要分享好不好?

在李傑克看過的所有爬蟲相關文章裡,知乎上有一個叫“從零開始寫爬蟲”的專欄是最棒最適合入門噠,我把當中的最適合大家的幾篇挑出來了。

這些文章滿足我們需求:

1.只用最簡單的兩三個庫;

2.手牽手一步一步地教學,想不學會都難的那種;

如果你已經具備了python基礎,按著我分享出來的資料折騰的話,李傑克保證你兩三天可以折騰出一個爬蟲,意不意外,驚不驚喜,刺不刺激,開不開心!

《從零開始寫Python爬蟲 — 1.1 requests庫的安裝與使用》閱讀地址:

《從零開始寫Python爬蟲 — 1.2 BS4庫的安裝與使用》閱讀地址:

《從零開始寫Python爬蟲 — 1.5 爬蟲實踐: 獲取百度貼吧內容》閱讀地址:

《從零開始寫Python爬蟲 — 1.7 爬蟲實踐: 排行榜小說批量下載》閱讀地址:

《從零開始寫Python爬蟲 — 1.8 爬蟲實踐: 電影排行榜和圖片批量下載》閱讀地址:

————————————-叄———————————-
機器學習數學基礎

對於數學知識,李傑克知道很多童鞋都很關心也很憂慮,我也深深地明白數學知識是機器學習從入門到放棄的重要節點。

李傑克也有朋友一開始就撲哧撲哧各種啃高數線代概率論,幾天後硬是把自己啃絕望了,從此棄坑。

那我這篇文章的目的就是幫你釐清入門機器學習需要的最最最基本的數學知識以及它們在機器學習中可能出現的地方,讓大家不要太糾結數學,可以儘快進入到機器學習的學習中。

需要強調的是,機器學習中數學遠遠不止這些,我也有意為大家過濾了很多在入門時不需要太關注的知識點,基本上大家把我下面提到的知識點搞明白得差不多,入門機器學習也算夠了。

在之後我們在機器學習過程中遇到不懂的數學知識點,再倒回去補補即可,這應該是更符合我們這些苦逼工作黨的學習方式。

下面相關的數學知識點我基本都不會展開講,大家自己去補齊,以後李傑克會考慮做一篇這塊的專題文章。我已經完全腦補出還沒開始學習的你看得一臉懵逼的樣子,一如以前的我……

一. 高等數學:

  1. 導數及偏導數,對應機器學習中的梯度,機器學習中學習的引數需要通過梯度下降進行更新;

2.複合函式的鏈式法則,同1一樣,目的也是為了求出梯度更新引數,但因為深度學習網路有多層,所以模型的預測函式是個複合函式,我們需要通過鏈式法則從後往前求出每層引數的梯度,進而更新每層裡的引數,這也就是大名鼎鼎的“反向傳播法”;

  1. 同時可以去了解下數學中的最優化問題,大概就是目標函式在什麼條件下可以取到最值的問題,因為機器學習的問題到最後都是要轉化為一個損失函式最優化的問題。

二. 線性代數:

  1. 標量、向量、矩陣及張量的定義及運算,讓我們再回顧下,在機器的眼裡,萬世間物即可為矩陣,機器學習的過程其實也就是矩陣計算的過程。這也就是NVIDIA的GPU在近兩年那麼火的原因,因為GPU在矩陣計算上天然有很大的優勢

2.範數,對應機器學習中正則項,正則項通常會加在已有的損失函式上用來減少訓練的過擬合問題

3.常見的距離計算方式:歐式距離、曼哈頓距離、餘弦距離等,我們之前說過資料樣本可以表示為其特徵空間裡的點,而距離可以用來衡量他們的相似度

三.概率論:

  1. 條件概率、貝葉斯,基於概率論的分類方法經常會用到

  2. 期望與方差,機器學習裡一般都會對資料進行normalized的處理,這個時候很可能會用到期望和方差

  3. 協方差,能夠表徵兩個變數的相關性,在PCA降維演算法中有用到,變數越相關,我們越可能對他們進行降維處理

4.常見分佈:0-1分佈、二項分佈、高斯分佈等,高斯分佈很重要,資料normalized跟它有關,引數的初始化特跟它有關

5.最大似然估計,在推導邏輯迴歸的損失函式時會用到

四. 資訊理論

這塊東西其實應該不屬於資料知識,沒有太多東西就姑且也放到一塊吧。你暫時只需要去了解下交叉熵的概念即可,大概知道這東西跟分類問題的損失函式有關即可哈。

李傑克溫馨提示:

大家一開始能把這些知識點搞懂是最好,沒搞懂也不要慌,因為貼心的我給大家推薦的機器學習資源裡都會通常都會用通俗淺顯的方式去做相關推導,即使你沒有搞懂這部分數學知識也不會特別懵逼,當然,用心準備總是最好噠!


機器學習演算法基礎

我勒個去!你居然堅持看到這裡,真是沒想到呢!快給你自己狠狠地點贊打call吧!

這可能是大家最關心的章節了,也可能是這篇文章最優價值的部分,畢竟李傑克也算是替大家提前嚐了些百草(好在我還沒掛),接下來李傑克會告訴大家比較適合進補的草藥以及較優化的進補順序。

現在有種風氣,但凡說到機器學習入門,大家基本上都在無腦推薦:啊,你要入門機器學習啊?Ng的視訊不錯哇,入門就看它好了!

Ng這個名字大家可能不熟悉,但吳恩達你大抵是聽過的吧,不就是那個前百度的AI負責人麼?

bingo!Ng就是吳恩達哈,不過在機器學習圈子裡大家都喜歡叫他Ng。

其實最開始別人讓我推薦入門資源時,我也會不假思索地推薦Ng的《Machine Learning》,因為這也是我完整看下來的第一套視訊教程……

但我現在回望自己學習過程中看過的所有視訊、書籍、文件後,我並不認為Ng的《Machine Learning》是最適合用來入門的資源!

為什麼呢?聰明的你一臉好奇。

那當然是李傑克我有更友好更容易更無痛的入門資源推薦給你啦!

首先我們來再次界定下我們需要學習的知識範圍,我知道各位童鞋大概率是對讓我們感覺AI馬上就要改變世界取代人類的那一部分知識感興趣,這一塊知識其實機器學習中深度學習這一分支。

所以, 接下來的我會給大家分享更偏向於深度學習的學習資源,當然傳統機器學習的資源也會涉及到一部分。

李傑克給大家推薦的視訊資源基本上都能到B站上直接觀看,額……我也是對自己居然到B站去學習機器學習這件事情感覺有點有不可思議,但神奇的B站上的確是有些童鞋在以我不能想象的趣味和毅力去各種搬運機器學習的資源。

另一個推薦大家用B站的原因是,視訊播放速度可以調整,對於部分英文教授的視訊大家可以根據自己的情況適當調節速度,比如說如果你覺得吳恩達語速較慢,可以考慮加加速,如果你覺得李飛飛的博士生JJ語速有點快,那你可以減減速!

還有…..B站視訊沒廣告,講真,跟那些開頭給你放90s廣告、中間還有本事給你插個45s廣告的妖豔賤貨是不大一樣的!

額…..你不直到B站是什麼東東?童鞋你去搜下“bilibili”吧。

感覺這波B站要給我廣告費了…….

李傑克覺得學習一個有一定資訊量的新知識時,一個不錯的方式是先花不多的時間把這個東西大體上過一遍,不管能看懂多少。

所以,最開始的三份資源的目的就是讓大家先建立起一個感性認知和知識框架,這一階段過了後我們再利用更詳細的資源進入下一步的學習。

李傑克給大家推薦的第一個學習資源是臺灣李巨集毅老師的《一天搞懂深度學習心得》。

《一天搞懂深度學習心得》觀看地址:

關於機器學習的英文資料比較多,國語的除了臺灣的李巨集毅、林軒田老師的課程外就是一票輔導機構在那裡折騰了,從我看過李巨集毅的部分視訊來看,他講得的確是非常淺顯易懂,用來入門再合適不過了。

而且這個視訊只有36分鐘,你買不了吃虧,買不了上當,卻能大概瞭解到深度學習裡一些比較重要的概念。

李傑克給大家推薦的第二個學習資源是共計20集的視訊教程《DeepLearning.TV》。

《DeepLearning.TV》視訊觀看地址:

你心裡可能沒忍住冒了句mmp:李傑克,你推薦個鬼?單單是建立感性認知和知識框架,你TM就要我去看一部連續劇長度的視訊啊!

額….童鞋們,不要急,且聽李傑克為你慢慢道來。

《DeepLearning.TV》雖然有20集的長度,但每集的長度卻只有3到4分鐘。

這套視訊基本覆蓋了深度學習裡的最基本知識,李傑克個人的學習體驗是即使看得一臉懵逼,也絲毫不影響自己biubiu地看完一集換下一集時獲得的成就感!

你再想一想?一個半小時也就是兩局吃雞的時間、四局農藥的時間,一個半小時你陪不了妹紙看一部電影(前提你懂的…..),約不了基友吃一頓火鍋。

但是……你去把這組視訊看了,以後出去跟別人談笑風生的時候吹牛逼的底氣都要足很多了對不對?

兩套視訊刷完後,李傑克還給你準備了一份300頁PPT的大禮包——李巨集毅老師的《深度學習介紹-李巨集毅》,這算是我見過最全面最清晰的PPT,你可以花上一些時間自己去啃一遍。

《深度學習介紹-李巨集毅》PPT下載地址:

請轉發截圖後前往公眾號“小白AI之路”獲取下載地址及密碼

大家經過以上三份資源的折騰後應該也大概知道深度學習是個什麼東東了,接下來李傑克再給大家推薦一些同樣優質的資源,大家可以進一步學習更深一點的東西。

接下來我們終於要開始接觸Ng的《Machine Learning》了。其實在很多機器學習大拿眼中,Ng最大成就不是在學術上,而是作為AI佈道者讓更多人知道了機器學習,他也是目前和工業界互動得最好的AI科學家,最近不是又剛成立了個landing.ai要推動企業轉型麼?

《Machine Learning》視訊觀看地址:

大家需要注意的一點是《Machine Learning》講的更多的還是傳統機器學習,深度學習知識作為其中很小的部分一帶而過,有多麼少,李傑克沒記錯的話大概也就是100多章節裡花了兩三個章節說講了下神經網路吧。

你要是問李傑克資次不資次你通過《Machine Learning》學習傳統機器學習的演算法,我當然是資次的,Ng講課講得確實是一流,聽課體驗很棒!

李傑克的建議是大家可以通過《Machine Learning》去學習機器學習中的基礎知識,我拎些重要的出來:損失函式、梯度下降、線性迴歸、邏輯迴歸、SVM、反向傳播法、正則化、KNN、K-Means、PCA,大家可以優先重點搞懂這些東西,你進入到深度的知識儲備算是基本夠了。

當然時間充裕的情況下李傑克建議大家把所有章節都好好學習下,《Machine Learning》絕對是你可以看上幾遍的課程,李傑克也打算等稍微沒那麼忙了再去重溫一遍呢。

另外,《Machine Learning》是通過一個類似Matlab的軟體Octave來教學,時間有限的情況下可以考慮不學,因為到目前為止李傑克就沒有在第二個地方見到過這個軟體的使用,大家學了估計也很難用上…….

《Machine Learning》有兩版,一版是斯坦福教室裡錄製的版本,一版是Ng後來錄製的版本,李傑克這裡給大家推薦的是後者,相信我,前者直接上手真的可能會看哭的,別問我怎麼知道……

如果非常簡要地把深度學習概括為兩個方向,那就是影象處理和語音處理,看過我前一篇文章的童鞋會知道兩者分別主要對應的是卷積神經網路和遞迴神經網路的應用。

李傑克雖然也對遞迴神經網路有過接觸,自己也通過遞迴神經網路寫過一個能夠寫古詩的AI,但確實沒有系統學習過什麼資源,本著no experience no bb的原則,遞迴神經網路方面的資源暫不做推薦。

說到影象處理領域,有些童鞋可能已經聽聞過李飛飛的大名,妥妥的計算機視覺領域的大牛,接下來給大家推薦的學習資源也就是由李飛飛和她的兩位博士生Justin和Serena教授的《Stanford CS231N 2017》。

額……話說李飛飛在第一節課出現了一會後就人間蒸發了,但並不影響我們安靜地坐下來欣賞Serena小姐姐的美顏。

講真,第一次聽這個華裔的小姐姐說話的時候,李傑克還是被驚豔到了,她說話的感覺簡直就是Ivanka大公主的翻版。

一下沒忍住,給小姐姐加了個美顏和濾鏡…….

《Stanford CS231N 2017》觀看地址:

當然,有些童鞋可能會說,李傑克你推薦的都是些英語視訊,我的英語水平去看這些視訊可能會有些吃力怎麼辦?

這當然不是問題啦!別忘了李傑克可是做過產品經理的哇,怎麼可能考慮不到這種需求呢?

對於英語一臉懵逼,不要慌,李傑克仍然有不錯的資源推薦給你——李巨集毅老師的《機器學習》和《深度學習》。

《李巨集毅機器學習2017》觀看地址:

《李巨集毅深度學習2017》觀看地址:

如果你英語能力還能支撐你看英文視訊的話,李傑克當然建議你優先看推薦的英文資源!

有童鞋也許會問,李傑克你給我們推薦的都是視訊,有沒有什麼書要推薦哇?

講真,網上推薦的那些大家都認為是經典的書李傑克基本都買了紙質版,但其實並沒有看掉多少。李傑克還是跟大家說一下自己或多或少讀過的一些書,畢竟也都是些被別人列為經典的書,僅供參考。

首先要說的是周志華的《機器學習》,江湖人稱西瓜書,因為它的封面是個大西瓜…..周志華算是國內機器學習的權威了,李傑克粗粗看了一兩個章節後就果斷棄坑,選擇了Ng的視訊來學習入門,因為我感覺自己看這部書效率並沒有看Ng的《Machine Learning》高。

李傑克還看過Peter Harrington的《機器學習實戰》,其核心是教你用python來實現機器學習中的演算法,我看了一半多一些的時候也棄坑了,一方面是自己漸漸明確自己的興趣所在是深度學習,另一方面是我接觸到了Tensorflow等深度學習框架,啦啦啦……從此可以開心地當一個調包俠了!

李傑克目前還在看的是Ian Goodfellow等一票人合著的《Deep Learning》,Ian Goodfellow就是那個搞出了對抗式生成網路(類似於左右手互搏術的東西)的傢伙,大概率李傑克不會棄坑,畢竟這也是本被稱之為深度學習聖經的書。

我的建議是入門階段可以不用購買書籍,除非你跟我一樣頸椎不大好需要買個七八本書來墊墊電腦……

說正經的,不用買書是因為我把這些被大家被奉為機器學習經典的書籍(PDF版,包含上述三本)都打包放在了雲盤裡,大家直接去下載就好了。

畢竟大家出門在外養家餬口都不容易,能省一點算一點了,而且萬一你的頸椎比較爭氣一直都還比較好那你買的書不就一直派不上用場了麼對不對?

最後,無比貼心的李傑克還給大家準備了兩個可以輔助大家學習和理解deep learning的工具。對你來說絕對是有用還好玩的東東,一般人我還不告訴他的呢(傲嬌臉)!

一個是tensorflow出的網頁工具playground,其實就是遊樂場,我們可以去玩一玩,相信對大家學習深度學習一定會有些幫助的。

playground提供了幾種簡單型別的data,你可以去調節網路結構、學習率、啟用函式、正則項等引數,你可以非常直觀地看到每個神經元和相關輸出的變化,體會到簡化的深度學習模型調參的過程。

下面這個其實是張動圖,來,用心感受下……

tensorflow playground使用網址:

另一個工具是ConvNetJS,它把一些經典資料集(如Mnist和Cifar-10)每層網路的輸出可視化出來,對你去理解不同網路做了什麼事情有大大的幫助滴!

ConvNetJS使用網址:

工具介紹完了,那李傑克的問題也來了:

請各位童鞋摸胸自問,李傑克推薦的工具有沒有超級貼心!

————————————-伍———————————-

深度學習框架基礎

我的天啦,你居然還在看?旁友,你不用工作的麼?你們公司還差不差人啊,會打dota玩農藥的那種?

不開玩笑,講真,我知道你一路看起來不容易,畢竟李傑克也是花了兩個禮拜工作之餘的時間寫的,還是水分比較少容易消化不良的那種…..

所以,努力的你晚上一定要去吃頓好的犒勞下自己才對得起自己嘛!

什麼?你晚飯吃過了?

晚飯吃過了還可以再吃頓宵夜嘛,反正不吃你也是瘦不下去的對不對。

我們再次回到正題哈童鞋們(嚴肅臉),現在來說說機器學習框架的事情,同樣的,這裡我們專指深度學習框架。講真,我寫得有點累了,就放張cs231課程裡的圖吧,大家自己看看這些框架與大學和企業的關係。

不同框架間的比較見下圖,李傑克暫時也不打算展開說:

李傑克嘗試過Tensorflow、Mxnet和Keras三種框架,以使用Tensorflow為主,其他框架暫時沒怎麼接觸。

今天重點要跟大家說的Tensorflow這個框架,Tensorflow背靠Google大樹,是目前最火的框架,如果你想做一名AI工程師,那學Tensorflow一定是最好的選擇,類似於一招鮮吃天下的意思。

如果你是產品經理,並不想花太多時間在框架上,但又想自己去實現一個神經網路模型的話,那李傑克建議去學習Keras。

Keras基於Tensorflow又進行一層封裝,當然也有基於Theano版本的,因為高度封裝,使用起來異常簡單,簡單到什麼程度呢?

你只需要十來行程式碼就能搞出來一個簡單神經網路模型,但與此對應的是靈活度並不高,但對於產品經理一類的童鞋來說已經妥妥地夠用了,再貼一下我之前寫過的一個模型程式碼給大家看看有多簡單:

關於框架的學習,李傑克同樣有一些不錯的視訊資源推薦給大家,大家可以通過看視訊入門,但之後實踐過程中碰到問題更多的是需要去檢視文件去解決問題哈。

對於Tensorflow,推薦大家看的第一個資源是視訊《不用博士學位玩轉Tensorflow深度學習》。

這個視訊應該是Google雲大會上的一個演講,全程約兩個小時,估計下面也坐了很多小白,所以講得還是蠻容易接受的。

視屏中的小哥基本上是全程手把手地帶你用Tensorflow分別搭建一個CNN模型(卷積神經網路)和RNN模型(遞迴神經網路),基本上看完你也算是有點入門了。

《不用博士學位玩轉Tensorflow深度學習》觀看地址:

另外,我的雲盤裡還有一份《三天速成Tensorflow PPT-香港科技大學》的PPT,講得也是非常簡明易懂,估計你花費大半天時間就可以過完了,也是一份非常好的入門資料,大家可以自行去下載學習。

《三天速成Tensorflow PPT-香港科技大學》下載地址:

請前往公眾號“小白AI之路”獲取下載地址及密碼

網上還有一個叫莫煩的童鞋做的《Tensorflow教程》視訊教程不錯,每集長度也就幾分鐘,但相關基本深度學習的知識和Tensorflow實現都講到了,可以說是非常棒,用來入門是妥妥的不錯的!

莫煩《Tensorflow教程》觀看地址:

最後一個很棒的資源是《 Deep Learning With Tensorflow》,其實裡面Tensorflow的介紹得並不多,更多的是用簡明的方式把Deep Learning裡重要的知識都給你過了一遍,全長也就一個小時左右,用你可能玩不了一局吃雞的時間去再次鞏固下知識還是不錯的呢!

《 Deep Learning With Tensorflow》觀看地址:

至於keras,它比較簡單啦,產品經理童鞋可以學完深度學習基本知識後可以直接上手下面這個視訊,給大家推薦的是莫煩童鞋的《Keras快速搭建神經網路》,教程視訊約兩個小時,一部電影的時間就可以把它消滅掉,有沒有很開心!

《 Keras快速搭建神經網路》觀看地址:

一路下來,python我們提到了,數學和演算法也說到了,深度學習框架我們也說到了,李傑克你TM該結束這篇文章了吧?

各位童鞋稍安勿躁,真的是最後一點點東西了,我不騙你的……因為我也快把自己寫得快崩潰了…..

我們都知道深度學習可能會用到比較大的資料,而CPU是很難帶動大資料的訓練的,GPU這個大殺器就不一樣了,它會讓訓練的速度提升很多,所以,我們往往願意選擇GPU來訓練模型。

但是,我們小白哪來的GPU啊?

當然我們可以去買,但效能還不錯的GPU的價格可是一點都不比我們用的筆記本便宜喲……

但你也不要慌,作為前產品經理的李傑克顯然也考慮到了這一點,且聽我告訴你解決方案。

世界上有一種神奇的服務叫……不好意思,不是你所想的大寶劍……而是雲服務。

我們不想買GPU,但我們可以去租人家的的GPU來用嘛,其中Amazon 的AWS是個不錯的選擇。

我們需要訓練的時候去臨時租用它就好了,使用期間一個入門級GPU競價例項也就是0.2刀每小時,這個價效比自然是棒棒噠!不過最近競價示例似乎有時候會連不上,這時可以考慮用普通GPU例項,不過價格就需要0.9刀每小時了。

具體怎麼使用AWS李傑克不展開講了,提供一篇說的還算詳細的攻略文章《在AWS上配置深度學習主機》給各位童鞋參考,以備大家不時之需。

《在AWS上配置深度學習主機》閱讀地址:


尾聲

我的天吶,終於寫完了啦!

講真,李傑克以前屬於那種學習知識過後很少會再把知識寫出來的人,因為從功利的角度來說,去重複已經掌握的東西對自己並沒有太大幫助。

同時,李傑克也是一個有點處女座性格的人,總是希望能夠呈現給大家儘可能有價值有意思的東西,所以經常覺得自己沒寫好,然後重新寫,寫的過程也會比較糾結和費時。

但是,李傑克還是願意把這件事情堅持下去,因為李傑克覺得為大家寫東西是有意義的,跟大家交流探討是有意思的,與大家一起共同進步是開心的。

如果這篇文章能夠對大家有那麼一些些幫助,李傑克會覺得很有成就感!畢竟我也是耗費了不少心血和時間的東西也有了些反饋,你敢信,我給部分文字標粗標色就花了一個多小時(生無所戀臉)…..希望大家多多支援!

額…..突然想起我好像把最重要的事情忘了:各位美貌與智慧並重、英雄與狹義的化身的童鞋們,如果你覺得本文對你還有些許幫助的話,歡迎通過最後面的二維碼(拉到底)關注李傑克的公眾號“小白AI之路”(請再次腦補我無比大寫的諂媚臉)!

哦不,李傑克差點忘了之前醞釀的小心機,溫馨提示:

如果童鞋你想要獲得李傑克精心收集和整理並驗證有用的學習資料,請轉發此文章到朋友圈後再截圖傳送到“小白AI之路”後臺,李傑克會在一天之內給到你提供下載地址和密碼。

對於轉發支援的童鞋,李傑克也將提供自己的私人微訊號,如果你有需要,我們可以做更多的交流和探討哈!

就是這麼厚顏無恥,美貌與智慧並重的你自己看著辦吧蛤蛤蛤蛤蛤!