機器學習概要介紹與入門_第1頁
機器學習概要介紹與入門_第2頁
機器學習概要介紹與入門_第3頁
機器學習概要介紹與入門_第4頁
機器學習概要介紹與入門_第5頁
已閱讀5頁,還剩11頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 機器學習概要介紹與入門StuQ 微信號 stuq2015功能介紹 實踐驅動的IT教育平臺如何學習機器學習技術學習路線首先,機器學習這個東西,你想入門的話并不困難,因為簡單的機器學習算法,它的思路其實很樸素的。 只要你學過一些基礎的概率統計的知識,你都可以去理解它。就像說我們這邊并不會完整的介紹機器學習的東西,因為它的歷史非常長,門類非常繁多,我們最關注的主要的方法還是基于統計的機器學習。說到這,我就會從統計方法上來給大家講一個機器學習的例子。比如說這邊有很多人,都應該非常喜歡看書,但是大家都知道書店里面書非常多,現在網上也有非常多的賣書平臺,比如京東,當當,那么我們怎么知道自己喜歡看什么書呢

2、?一般的做法我們會先選一個分類,比如說你喜歡歷史,你會選擇歷史書,你喜歡計算機,你就會選擇計算機的書。但是這樣就缺少一個驚喜,你不知道里面還有什么書,其實我很喜歡,但是我又想不到它。大家都知道,很多線下的實體書店都會提供一種服務,叫做書籍推薦。比如說新華書店等,他們有一個最簡單粗暴的方法,就是把銷量最高的書最熱門的書擺到前臺,叫熱銷書。比如有一百個人進去,有25個人在那邊駐足停留,那么他們就達到了他們的目的。大家都知道,現在網上最大的賣書平臺就是亞馬遜了,亞馬遜當年最有名的服務就是他們的薦書服務。他們就是組織一個非常專業的薦書團隊,這個薦書團隊會為不同的用戶去推薦他們可能喜歡的書。就像你剛進亞

3、馬遜的首頁上你看到的書,發現都是你喜歡的書,你會感到非常驚喜和意外。不過后來亞馬遜直接把這個薦書團隊給開除了,因為后來亞馬遜他們自己的人直接寫了一個圖書推薦系統,而且后來通過實際的運營發現,這個圖書推薦系統比薦書團隊準確率還高。為什么這個薦書系統準確率會這么高呢?我可以用非常簡單的方式講一下薦書系統的原理。它在機器學習里面的算法就叫做關聯規則算法 ,因為亞馬遜他發現了一個規律,比如說如果很多人喜歡去買A這本書,然后買A這本書的人又會以很高的概率去買B這本書。比如說一百人買了A,其中90人買了B,那么有一個人來買A的時候,他是不是也有可能喜歡B?那么我們考慮這種情況,如果有一百個人同時買了A,B

4、,C 3本書,其中70人都買了D這本書。那么如果有一個人買了A,B,C這三本書,那么是不是也有可能會喜歡D?我們甚至可以認為這個人喜歡D這本書是板上定釘的事了。所以說你會發現亞馬遜不僅會在首頁上推薦你喜歡的書,它可能已經篩選了你買過的所有的書,從這中間找出關聯的你可能會喜歡的書。同時你買任何一本書的時候,他還會給你推薦一個書籍組合,讓你去買組合里面的另外一本書。就像剛剛有同學講到啤酒和尿布,這個故事也是一個非常經典的故事,這些類型的推薦系統全部都是用了關聯規則的方法,但關聯規則方法是包括很多算法,我們后面會在講機器學習技術的時候談到這些東西。當然,除了亞馬遜網站以外,你現在去,比如說電影網站淘

5、寶,他們都會有一個推薦系統。所以我們可以從這個最簡單的例子看到,雖然機器學習是一門聽起來非常高大上的學科,但是其實里面非常多的簡單的算法,它的思想是非常樸素的,比如我們剛剛講的關聯規則,這其實就是我們高中和大學學到的概率論里面的統計思想 。所以說大家都應該可以非常簡單地去理解這個原理,而且我們要知道機器學習里面最重要的一個流派就是統計學這個流派。剛剛可能有同學看到,我說機器學習入門不困難,他可能就覺得機器學習這門課不難。這里我要說一下,我剛剛只是說機器學習入門不難,但是說實話,如果你想學深入的話,它是非常困難的一門學科,為什么呢?有這么幾個方面,首先,雖然說很多機器學習算法它的思想是非常簡單的

6、,我們會盡量說用比較樸素的語言把它的思想講給大家,但是其實它是有很深的數學理論背景的,就跟我們學算法的時候不僅要知道算法的思想,也要去證明這個算法是不是正確的,還要知道這些算法背后的邏輯推理的過程。如果說你數學確實不好的話,你最多也就是去簡單的使用那些現成的模型,學一下一些傳統的成熟的機器學習方法,學會用這些方法去解決一些實際中的問題,可能說你的目的也就是這樣。其實對于大多數人來說,這樣也就差不多了,但是如果你想創造性去做一個工作,比如你想發明一個新的機器學習算法,或者說你想根據實際情況去調整很多模型的參數,想得到更好的訓練效果,那么就是一件相對比較困難的事情。第二個問題,機器學習模型。雖然不

7、能說浩如煙海,但其實也是非常非常多的。就跟你做數學題一樣,你要解一個問題,你腦子里會去想你要用什么方法解決這個問題?我們在用機器學習方法去解決一個問題的時候,也會說我們到底要用哪個機器學習方法去解決它。我們肯定要去選擇一個合適的模型,如果我們想把這個問題套到上面去呢,他畢竟不是萬金油,還可能需要去改一些模型的細節和參數,所以這是一個非常有經驗性的事情。而經驗是需要在日常工作中積累的,所以這需要一個比較長的積累的時間。第三個問題就是所謂的機器學習的性能的問題。說實話,有些機器學習的模型的效果非常好,比如現在深度學習的深度神經網絡,深度神經網絡的效果非常好,尤其是在現在互聯網上數據量非常大的情況下

8、,深度神經網絡,基本上一個CNN就可以干掉大部分傳統模型。但是其實是有利有弊的。雖然深度神經網絡效果非常好,但是他的速度真的是非常慢,尤其是深度神經網絡里面的卷積層,在優化的時候都在想怎么,去優化卷積層里面的卷積速度。總之,對一個深度學習的系統的性能優化問題,對一個做深度學習的公司來說是非常重要的。優化速度,一方面我們可以去提升程序的性能,比如說優化代碼和硬件資源,但它畢竟是有限的。比如說當你遇到一個1000層的神經網絡,在每層上再給他搞個一百萬的特征,你就算把程序優化得再好,神也拯救不了。所以說有的時候我們必須得去簡化網絡,簡化網絡就是我們可能要砍掉網絡里面的許多層,也要簡化每一層的網絡參數

9、,說白了就是要減少計算量。深度學習有一個問題說,如何在精簡模型減少參數的情況下保證它有一個比較高的準確率?就是說它的準確率不會下降很厲害,可以在可承受的范圍之內。這個是一個非常重要的課題。這種優化的問題其實挺多的,如果你感興趣的話,可以在自己學習之余去找找看。總之,在實際使用的時候,速度是很關鍵的問題。剛剛有一個人提到問題說,機器學習不是很多都用Python嗎?為什么會講C+呢?說實話Python非常好,有句話講得好,“人生苦短,為什么不用Python”。但是Python主要是用在一種實驗場景下,如果你有一個想法,想驗證這個想法的正確性,我拿一個小規模的數據集來做實驗,或者說一個東西不是用在一

10、個產品上,可以等一天,那你是可以用Python的。但是現在有一個問題就是性能問題,如果你想把你的東西放在生產環境中來使用,比如說現在大部分深度學習系統,你別看他上面給你的都是Python的接口,但是它里面所有的東西都是用C+實現的 ,因為它對性能的要求非常高,它需要用任何的方式去提高它的速度,這種事情除了C+還沒有什么能夠做到。我們后面會有更加深入的去講解實際應用中的優化問題,必須得去講一些C+的內容。最后一個問題就是說無論你的機器學習模型準確率再高,那么你還是有可能會出現預測錯誤的。比如說兩年之前做的一個項目,它是給一個研究院做的迎賓系統,比如說你人走過來,要識別出你是什么人,就是給你拍張照

11、做一個人臉識別,我們當年還沒做人臉識別,就直接去買了當年國內最好的人臉識別引擎,它是一個小的設備,上面有一個攝像頭。我們當時測試是沒有問題的,而且他們還有個經理每天都要去測兩次,每次都是沒問題的,最后驗收的時候也是通過了的。結果有一天他們老總來了,這個系統把他識別成女的了,然后他們經理就打電話給我了。說實話,我心里也很苦啊,他們那個人臉識別的模型從準確率上來講已經90%多了,這個產品其實挺牛逼的。但是就是點背,撞上這種小概率事件。而且你要知道對于一個使用機器學習系統的人來說,你的測試準確率可能是99.9%,他只看那失敗的0.1%,因為他只有一次的使用機會。那我們怎么去解決這個問題呢?我們還是只

12、能不斷的去優化我們的模型,真的碰到這種小概率事件,有的時候也就沒辦法。我們剛剛講了機器學習里面的一些難度,說實話,你想深入學習機器學習是非常難的。那么我們肯定要制定一條路線,就是如何去學習這個機器學習。好,我們來看學習路線,這里,我要跟很多人潑冷水了。學機器學習,你肯定還是要有數學基礎的,這個數學基礎并不是什么非常高深的數學。對于非常簡單的機器學習方法,我們是用高中的數學知識再加一些簡單的離散數學知識就行了。 但是另一方面呢,如果說你想完全理解這些方法,那你肯定要自己去補微積分,概率論,線性代數,甚至后面很多關于復變,最優化這些東西 。說白了就是入門是很簡單的,但是當你入門了之后,你會發現說數

13、學會變成深入學習的障礙。不是所有人都去做算法本身的,所以說我們這邊很強調我們的目的是為了理解算法,并且再通過我們的工程能力去實現這些算法,所以本課程不會直接去講數學,但是會在必要的時候提及這些數學知識。本課程的重點是用最基礎的語言去描述這些內容,涉及到具體的數學知識的時候,會說讓大家去學習具體哪方面內容。還有我說一下數學,其實數學都是可以補的。說實話,我當年自己開始學高數的時候就考了66分,然后我發現數學這東西真的是太重要了,我還是要去學習它。第二個就是說機器學習的思想和方法,這是本課程一大重點。學而不思則罔,思而不學則殆,放在機器學習里面,其實也是一樣的。如果現在丟給大家一個實際問題,讓大家

14、去用機器學習里面的方法去解決,有一些人可能還是能想出123,但是大部分人想破腦袋也不可能知道怎么做。好在前人幫我們總結了很多套路,這些套路就是解決問題的時候,我應該按照什么方法來解決問題。你這些套路,我告訴你們,首先我應該怎么組織數據,然后我應該怎么寫代碼去訓練這些數據,訓練完之后你應該怎么用你訓練出來的結果去預測最后的答案,而這些東西就是我們所謂的訓練的方法,它的結果就是我們所謂的訓練的模型。因為去介紹這些東西可能對大家來說是最實用的東西,自古套路得人心,學完套路之后,你就馬上可以去做一些實戰訓練了。不過另外一句話,學而不思則罔,學習完套路之后,必須要去理解為什么這些套路管用,我們要知道這些

15、套路之后的原理是什么,只不過這些原理大多會涉及一些數學知識。本課程的方針就是說我們用最簡單的語言來講解這些原理,當然有些地方還是會提起一些數學公式,不過希望大家課后能夠自己去看一些資料,更好的去思考和理解這些機器學習方法。最后一步就是工程實踐,說白了,計算機就是一門比較講究實用性的領域。如果你是一個工程師,就算你懂得再多,最后也無法轉變成能夠實際工作的代碼,那你是沒有什么用處的。所以說本課程是教大家如何去實踐機器學習,我們學習機器學習模型,直接去解決問題,這是本課程最大的特色。我們并不關注那些過于抽象的理論,畢竟對于工程人員來說,動手是理解有問題最好的方式。只有形象地的去理解一個問題,我們才能

16、不斷的去細究一個問題,去探索它的本質。本課程的不同之處在于我們雖然開始會用一些小規模的數據去做一些實驗,但是我們并不只是針對每一個機器學習模型做一些小實驗,我們最后會去開發一個完全可以實際使用的系統,教大家怎么用機器學習去解決我們現實的問題。實現方法我們現在來看一下,如果我們想在工程領域進行大規模機器學習,并且在線上應用,我們應該學習什么技術。我們的關注點是如何進行大規模機器學習。大規模機器學習的第一點就是hadoop,大多數人應該都聽過這個東西。雖然說現在更多,分布式數據處理工具層出不窮,但是它依然是屹立不倒最重要的工具之一。hadoop是一個分布式計算和存儲平臺,也就是說它又能搞分布式計算

17、,又能搞分布式存儲,可以說是一個全能選手。但它有個致命的問題,就是實時性不夠,所以它不是一個解決問題的萬金油。hadoop的細節我們之后用到的時候會詳細講,我這里提一句,hadoop里面有個項目叫mahout,這個項目已經使用一些可以擴展機器學習領域算法的實現,如果大家有興趣可以去看一下。第二個大規模工具是Spark,它的優點主要有兩個:它的api使用了流模型,相對來說更易于使用。速度非常快。hadoop會把它的中間計算結果存儲在外部設備,比如說它的一個分布式完全系統上,它有一個網絡和硬盤的IO問題。Spark為了彌補這個問題做了一個非常簡單粗暴的選擇,它把中間的計算結果全部存在內存里面,沒有

18、一個網絡和硬盤的IO損耗,速度自然快。第三個是STORM,它是完全瞄準hadoop的軟肋,如果說Spark只是通過提高計算速度來緩解實質性的問題的話,那么STORM則是一次釜底抽薪。它直接換了整個計算模型,用一種網絡的實時流模型來解決問題,我們會在后面用到的時候具體講解這個模型。第四個是Hurricane,他是一個用C+開發的系統,它的架構是模仿STORM,只不過是希望通過C+來提升它的計算速度,并且大家在做工作的時候就會發現我們需要做一些線性代數的計算,它的目的就是希望構建一個易于使用的分布式計算系統。上面我們介紹了一些工具,這些工具都是一些大規模分布式計算的框架,如果說繼續學習是一個工廠,

19、那么它們就是工廠的主任,他們的職責就是負責指揮底下的工人去工作,但是我們最后肯定是要實踐具體機器學習的方法,要有一些人來干實事。所以實際上工作中我們只有這些工具是不行的,所以我們在課程中會講到生產實際中會用到的一些相關工具。我們先看最上面的,一些深度學習的工具和框架,說白了就是,你用了這些框架之后,你就可以非常方便的去用這去用這些現成的深度學習工具訓練一個模型,你只要輸入數據,定一下網絡結構,它就可以給你訓練出你需要的東西。這里我們推薦有Tensorflow和Caffe。Tensorflow是一個第二代人工智能機器學習系統,雖然它是一個通用的機器學習框架,但是現在深度學習太熱了,大家基本都用它

20、來做深度學習。Tensorflow,是一個n維向量流模型,看起來很像STORM,它非常靈活。比如說你的機器不好用了,你隨便接幾臺機器,隨便加幾張顯卡,它都可以正常工作。Tensorflow背后的支持者是谷歌,所以它擁有龐大的用戶社區擁有很多資源。當你想要去驗證一個實驗性的想法的時候,它是一個非常好的選擇。不過它也有它的缺點。第一點,如果說你只有一個GPU的話,它的性能確實不敢恭維,而且由于封裝太好了,它的內部代碼相當復雜,開發調試起來非常令人討厭,想要深度定制是非常困難的。因此在生產環境中并不會使用它,因為我們沒有那么多的計算資源。小公司里面生產環境首選我覺得還是Caffe,這個計算模型比較陳

21、舊,但是因為它的歷史比較長,所以支持的工具比較多,而且它的內部代碼比較簡單。同時它的優點是運行效率高,特別是應用于基礎能力和硬件資源都不是非常理想的小公司,而且如果你的公司里面有一個技術能力非常強的人,他能夠吃透Caffe之后你們還可以去維護自己的版本。對小公司來說,這是一個性價比非常高的選擇。我們將在后面非常詳細的去介紹它,因為我自己小的模型都是用它去做的。深度學習的工具是一個執行訓練和運行基石,在這上面還需要配套的工具來處理數據并調度任務。我上一節介紹的大規模處理數據的工具就是最好的選擇,他們可以幫你做數據預處理,處理完之后,調用這些深度學習的框架,然后這些深度學習的框架就可以幫你去做最后

22、深度學習的計算。這里我們還要注意說,因為數據非常多,無論是我們訓練數據也好,還是我們最后訓練出來的模型也好,都是存儲在一個分布式存儲環境當中的。而我們就可以選擇HDFS或者MongoDB,這是非常適合存儲非關系型數據的系統。至于我們系統的數據就可以存儲在MySQL這種傳統的關系型數據庫集群中。最后我們還可以用Redis這種內存數據庫來做訓練和預測的加速。比如說你可以預先加載一塊東西出來,作為一個緩存,它可以有效降低我們預測和訓練IO的延遲。接下來我們來講解機器學習里面推薦給初學者看的兩本書:一本是周志華的機器學習,這本書是最近評價比較好的機器學習教材。當然他是一種科普性的教材,所以它并不適合完

23、全自學,但是配合我們這個課程去看也是完全不錯的。一些機器學習的技術算法在這本書里面都會有相應的介紹。優點是對算法的描述比較簡單直接,但相應缺點是缺乏一些深度的分析。第二本是機器學習實戰,這本書顧名思義,它的重點在于實戰,它也是一個入門的經典教材了。這本書對理論講的比較簡單形象,每個方法它都會使用Python代碼教你怎么實現對小規模數據集的分析。它的優點就是能夠讓你迅速抓住每個機器學習算法的理論核心思想,但因為是入門性質的書,所以說無論是理論還是代碼方面都是講的比較簡單的。理論上沒有做一些深入的分析,這部分可能還不如周志華的那本書。代碼上,它的工程規范性相對是比較差的,也只是處理一些小規模的數據

24、集。所以實際上你還是得去自己優化代碼的,不過這是我看到的最靠譜的實戰類的書籍。最后一部分是由2017年5月份,CSDN出版的程序員雜志,這本書刊登了Hurricane當時的一個實時處理系統的架構剖析,如果大家對大數據實時處理系統原理非常感興趣,大家可以去看這一篇文章,里面也涉及了深度學習網絡和機器學習相關的內容。機器學習領域前景和就業好,我們來看一看機器學習的就業前景和就業情況吧。我們知道,機器學習非常非常火,即便是像我們這種傳統的IT公司,都已經開始踏入機器學習領域了。就像我們之前介紹的,阿爾法狗和自動駕駛已經讓我們體會到了機器學習和深度神經網絡莫大的威力了。相比之下,很多新的領域有極大的用

25、武之地。我們國家之前搞了一個“互聯網+”的政策,提倡線上和線下結合。我們認為現在可以搞出一個“機器學習+”,鼓勵大家利用機器學習去解決實際的問題。我們來聊一聊人工智能的發展趨勢。大家使用計算機解決實際問題的時候,像原來都會建立一個數學模型,用數學模型之間的邏輯關系來反映現實問題。只可惜在現在,實際問題越來越復雜,傳統的數學模型方式基本上失效了,因此出現了機器學習。機器學習的一大流派呢,其實是統計學。統計學流派其實也就反映了機器學習跟傳統數學模型之間的差異,他們關注的是現實問題在統計方法下的關聯關系,而不是基于數學邏輯的因果關系,這點差別非常大。其實我們更希望的關注工程的、能解決實際的問題。就像金老師介紹的這幾本圖書還有雜志,其實關心的更多的是概率問題,而不是為什么。可以通過機器學習去找一個規律的表現層,然后我們再來分析這個表層下的邏輯關系。最后我們來了解一下現在的大勢所趨是什么,我個人覺得就是深度學習。深度學習在處理很多很多問題的時候,特別特別牛逼,尤其是圖像識別、模式匹配、語音識別這些領域。大家可以看到,蘋果剛剛出的iOS11,里面新的Siri說話非常自然。怎么做到的呢,這其實跟機器學習和深度學習有非常大的關系。我也說過,神經網絡其實三十年前就已經提出來了,為什么現在才這么火呢?最主要的一個原因就是深度神經網絡極度依賴于數據量。大數據時代一定程度地觸發了人工

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論