普通程序员如何入门深度学习?
生活随笔
收集整理的這篇文章主要介紹了
普通程序员如何入门深度学习?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
摘要:?作為一名軟件工程師,我們應該活到老學到老,時刻與不斷發展的框架、標準和范式保持同步。同時,還要能活學活用,在工作中使用最合適的工具,以提高工作效率。隨著機器學習在越來越多的應用程序中尋得了一席之地,越來越多的程序員加入AI領域,那么,入行AI領域需要哪些技能呢?
人工智能到底有多火
我相信大家之所以能來看這篇文章,也間接說明了人工智能這幾年的火爆。自從基于深度學習技術的算法2012年在ImageNet比賽中獲得冠軍以來,深度學習先是席卷了整個學術界,后又在工業界傳播開來,一瞬間各大企業如果沒有AI部門都不好意思對外宣傳了。BAT中,百度宣布“All In AI”,阿里建立了達摩院及AI實驗室,騰訊也在前不久會議上宣布“Ai In All”,并具有騰訊優圖、AI Lab和微信AI實驗室。2017年7月20日,國務院發布《新一代人工智能發展規劃》,將人工智能上升為國家戰略,為中國人工智能產業做出戰略部署,對重點任務做出明確解析,搶抓重大機遇,構筑我國人工智能發展的先發優勢。
技術的發展往往遵循一個可預期的模式,即先是萌芽,然后炒作,而后幻滅,接著才是技術成熟后的穩步爬升,最后到達應用高峰。研究分析機構Gartner每年都會推出這樣一個分析新興技術發展趨勢的技術炒作周期報告。前段時間,Gartner發布了2017年的新興技術炒作周期報告,報告聚焦了前端、后端與平臺發展的三大趨勢,提出了AI將無所不在(人工智能),體驗將透明化和沉浸式(AR、VR),以及平臺全面數字化(區塊鏈)的觀點,建議企業架構師和對技術創新有追求的人員應該積極探索和關注這三大趨勢,從而了解掌握這三大趨勢對自己公司和自己職業發展的未來影響。簡單來說這三大趨勢分別對應于括號中我備注的大家平時耳熟能詳的詞語。從曲線圖可以看出,物聯網、虛擬助手、深度學習、機器學習、無人車、納米電子、認知計算以及區塊鏈正處在炒作的高峰。實際上AR、VR屬于計算機視覺,也可以歸于人工智能范疇,因此總體上來說,未來人工智能將無處不在。
Gartner把深度學習、強化學習、常規人工智能、無人車、認知計算、無人機、會話式用戶接口、機器學習、智能微塵、智能機器人、智能工作環境等均列為AI技術范疇。在人機大戰等吸引眼球的活動助推下,很多AI技術目前正處在炒作的高峰期。比如深度學習、機器學習、認知計算以及無人車等。對比2016年的炒作周期曲線可以發現,有些太過超前的概念仍然不慍不火,比如智能微塵。有些概念因為炒作過高已經迅速進入到了幻滅期,比如商用無人機去年還處在觸發期,今年就已經接近幻滅期邊緣了。相對而言,正處在炒作高峰的深度學習和機器學習技術有望在2到5年內達到技術成熟和模式成熟。 除了人工智能這么火之外,對于軟件工程師,尤其是移動端開發工程師,有一點我們更要關注,那就是移動端深度學習逐漸成為新的深度學習研究趨勢。未來會有越來越多的基于深度學習的移動端應用出現,作為開發者的我們了解深度學習更有助于我們開發出優秀的應用,同時提升自身能力,積極抓住機會,應對未來各種變化。
什么是機器學習(Machine Learning,ML)? 深度學習的基礎是機器學習,事實上深度學習只是機器學習的一個分支。因此我們要入門深度學習就要先了解一些機器學習的基礎知識。機器學習最基本的做法,是使用算法來解析數據、從中學習,然后對真實世界中的事件做出決策和預測。與傳統的為解決特定任務、硬編碼的軟件程序不同,機器學習是用大量的數據來“訓練”,通過各種算法從數據中學習如何完成任務。 有人曾舉過一個例子,很形象生動,當你使用手機的語音識別進行喚醒時,有沒有想過實現這一功能的全部內部流程呢?我們日常交互的大部分計算機程序,都可以使用最基本的命令來實現,但是基于機器學習的程序卻沒有那么簡單,想象下如何寫一個程序來回應喚醒詞,例如“Okay,Google”,“Siri”,和“Alexa”。如果在一個只有你自己和代碼編輯器的房間里,僅使用最基本的指令編寫這個程序,你該怎么做?不妨思考一下……這個問題非常困難。你可能會想像下面的程序: ifinput_command=='Okey,Google': ???? run_voice_assistant() 但實際上,你能拿到的只有麥克風里采集到的原始語音信號,可能是每秒44,000個樣本點。怎樣才能識別出語音內容?或者簡單點,判斷這些信號中是否包含喚醒詞。
如果你被這個問題難住了,不用擔心。這就是我們為什么需要機器學習。 雖然我們不知道怎么告訴機器去把語音信號轉成對應的字符串,但我們自己可以。換句話說,就算你不清楚怎么編寫程序,好讓機器識別出喚醒詞“Alexa”,你自己完全能夠?識別出“Alexa”這個詞。由此,我們可以收集一個巨大的數據集(dataset),里面包含了大量語音信號,以及每個語音型號是否?對應我們需要的喚醒詞。使用機器學習的解決方式,我們并非直接設計一個系統去準確地?辨別喚醒詞,而是寫一個靈活的程序,并帶有大量的參數(parameters)。通過調整這些參數,我們能夠改變程序的行為。我們將這樣的程序稱為模型。總體上看,我們的模型僅僅是一個機器,通過某種方式,將輸入轉換為輸出。在上面的例子中,這個模型的輸入是一段語音信號,它的輸出則是一個回答{yes,?no},告訴我們這段語音信號是否包含了喚醒詞。 如果我們選擇了正確的模型,必然有一組參數設定,每當它聽見“Alexa”時,都能觸發yes的回答;也會有另一組參數,針對“Apricot”觸發yes。我們希望這個模型既可以辨別“Alexa”,也可以辨別“Apricot”,因為它們是類似的任務。這時候你大概能猜到了,如果我們隨機地設定這些參數,模型可能無法辨別“Alexa”,“Apricot”,甚至任何英文單詞。在而大多數的深度學習中,學習就是指在訓練過程中更新模型的行為(通過調整參數)。 換言之,我們需要用數據訓練機器學習模型,其過程通常如下:
深度學習中最令人激動的特性之一是它在特征學習上的表現。該算法在從原始數據中檢測特征方面表現地特別好。有一個很好的例子,就是通過深度學習技術來識別汽車圖片中的車輪。下圖說明了典型機器學習與深度學習之間的區別:
在機器學習中特征選擇部分一般需要人的先驗知識的介入來設計好的特征提取方法,比如人知道輪子一般是圓的,一般出現在交通工具上,有輪胎、輪轂等部件,基于先驗知識,人可以選取適合提取輪子特征的方法,再設計分類器以識別輪子。而深度學習通常由多個層組成。它們通常將更簡單的模型組合在一起,通過將數據從一層傳遞到另一層來構建更復雜的模型。通過大量數據的訓練自動得到一個能識別輪子的模型,不需要人工設計特征提取環節。這是深度學習隨著數據量的增加而優于其他學習算法的主要原因之一。 隨著深度學習的發展,為了方便算法人員訓練模型,調整參數等,很多公司開源了優秀的深度學習框架,到目前為止,主要的深度學習框架如下圖所示。目前工業界用的比較多的是Caffe和TensorFlow,Caffe主要在計算機視覺上用的較多,TensorFlow由谷歌開源,相關文檔較好,適用范圍廣,基于Python語音,入門簡單,建議新手入門可以選擇TensorFlow。但是這些只是深度學習的平臺框架而已,真正重要的還是學習好深度學習的理論,有了理論各種平臺都不是問題。
TensorFlow簡介 TensorFlow是專門為機器學習而設計的快速數值計算Python庫,它由谷歌開源,旨在讓世界各地更多的研究人員和開發人員掌握深度學習。為了加速深度學習領域的發展,2015年11月9日,Google發布深度學習框架TensorFlow并宣布開源。在短短的一年時間內,在GitHub上,TensorFlow就成為了最流行的深度學習項目。 TensorFlow在計算機視覺、語音識別、推薦系統和自然語言處理等場景下都有豐富的應用。雖然Tenforflow開源時間剛滿一年,但是它正在以迅猛的速度滲入到我們的尋常生活中。它支持Linux平臺,Windows平臺,Mac平臺,甚至還宣稱要發布相應的移動端平臺。其次,TensorFlow提供了非常豐富的深度學習相關的API,可以說目前所有深度學習框架里,提供的API最全的,包括基本的向量矩陣計算、各種優化算法、各種卷積神經網絡和循環神經網絡基本單元的實現、以及可視化的輔助工具、等等。 你可以按照官方的教程安裝TensorFlow,安裝好之后,你就可以用它提供的多個API來訓練機器學習模型了。具體的教程可以參考TensorFlow官網,不想看英文的也可以參考TensorFlow中文社區. 雖然TensorFlow是最受歡迎的機器學習庫,不過也有其他幾個很棒的選擇,如Torch(Facebook使用)、Caffe(出自Berkeley AI研究所的深度學習框架)等等。其中Caffe是第一個在工業上得到廣泛應用的開源深度學習框架,也是第一代深度學習框架里最受歡迎的框架,目前也有很多企業和科研人員在使用。 學習資料 一旦對基礎知識有了一定的了解,你應該知道自己對機器學習的哪些方面比較感興趣,你想在應用程序中使用機器學習,還是想研究機器學習。下面是一些優秀的參考資料,可以幫助你系統的學習。 書籍: 深度學習技術發展迅速,各種平臺框架也迭代很快,推薦相關的書籍其實不太好推薦。在這里我只推薦兩本書: 第一本是《白話深度學習與TensorFlow》,這本書寫的非常通俗易懂,沒有太多理論知識介紹,基本是深度學習的基礎知識和TensorFlow的相關例程,適合沒有深度學習基礎,想入門深度學習的人看。 第二本是美國Ian,Goodfellow 寫的《Deep Learning》,這本書有中文翻譯版《深度學習》,但是這本書基本是講深度學習理論的,沒有基礎的話很難看懂,但是翻譯者提供了PDF在GitHub上,想看的可以去下載:https://github.com/exacity/deeplearningbook-chinese 網絡資源: 對于新手入門個人覺得很多網上的手冊、教程和博客都很不錯。這篇文章主要面向零基礎的想了解DeepLearning的人員,太復雜專業的暫時就不推薦了,以下是一些基礎的入門資源。 1.吳恩達的深度學習在線課程:這是吳恩達成立DeepLearning.ai在線教育網站后的第一個課程,網易云課堂引進了,偏工程可以學習一下,還有相關證書,吳恩達給你的人工智能第一課. 2.莫煩Python:這是一個在澳大利亞讀博的中國人,他會講Python和深度學習的教程,有視頻。Python基本是現在做深度學習的必會語言了,喜歡的可以去這里學習https://morvanzhou.github.io/about/。 3.臺灣李宏毅教授的在線課程:http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML17_2.html,還有一個300多頁的ppt,比較系統,也最通俗易懂的:PPT鏈接 4.TensorFlow中文社區:http://www.tensorfly.cn
5.想學習caffe框架的,也可以參考徐其華的博客:http://www.cnblogs.com/denny402/tag/caffe/ 結語 “整個世界就是一個大數據問題” - Andrew McAfee 掌握機器學習就像是馴服一頭野獸。但是,如果你已經吃透它,那么它就是你身邊一個非常有價值的資源。暫時想到的就這么多,愿大家一同進步…… 參考資料: 1.https://udarajay.com/applied-machine-learning-the-less-confusing-guide/?spm=5176.100239.blogcont223187.31.wGjoeK 2.http://zh.gluon.ai/chapter_preface/index.html
Gartner把深度學習、強化學習、常規人工智能、無人車、認知計算、無人機、會話式用戶接口、機器學習、智能微塵、智能機器人、智能工作環境等均列為AI技術范疇。在人機大戰等吸引眼球的活動助推下,很多AI技術目前正處在炒作的高峰期。比如深度學習、機器學習、認知計算以及無人車等。對比2016年的炒作周期曲線可以發現,有些太過超前的概念仍然不慍不火,比如智能微塵。有些概念因為炒作過高已經迅速進入到了幻滅期,比如商用無人機去年還處在觸發期,今年就已經接近幻滅期邊緣了。相對而言,正處在炒作高峰的深度學習和機器學習技術有望在2到5年內達到技術成熟和模式成熟。 除了人工智能這么火之外,對于軟件工程師,尤其是移動端開發工程師,有一點我們更要關注,那就是移動端深度學習逐漸成為新的深度學習研究趨勢。未來會有越來越多的基于深度學習的移動端應用出現,作為開發者的我們了解深度學習更有助于我們開發出優秀的應用,同時提升自身能力,積極抓住機會,應對未來各種變化。
什么是機器學習(Machine Learning,ML)? 深度學習的基礎是機器學習,事實上深度學習只是機器學習的一個分支。因此我們要入門深度學習就要先了解一些機器學習的基礎知識。機器學習最基本的做法,是使用算法來解析數據、從中學習,然后對真實世界中的事件做出決策和預測。與傳統的為解決特定任務、硬編碼的軟件程序不同,機器學習是用大量的數據來“訓練”,通過各種算法從數據中學習如何完成任務。 有人曾舉過一個例子,很形象生動,當你使用手機的語音識別進行喚醒時,有沒有想過實現這一功能的全部內部流程呢?我們日常交互的大部分計算機程序,都可以使用最基本的命令來實現,但是基于機器學習的程序卻沒有那么簡單,想象下如何寫一個程序來回應喚醒詞,例如“Okay,Google”,“Siri”,和“Alexa”。如果在一個只有你自己和代碼編輯器的房間里,僅使用最基本的指令編寫這個程序,你該怎么做?不妨思考一下……這個問題非常困難。你可能會想像下面的程序: ifinput_command=='Okey,Google': ???? run_voice_assistant() 但實際上,你能拿到的只有麥克風里采集到的原始語音信號,可能是每秒44,000個樣本點。怎樣才能識別出語音內容?或者簡單點,判斷這些信號中是否包含喚醒詞。
如果你被這個問題難住了,不用擔心。這就是我們為什么需要機器學習。 雖然我們不知道怎么告訴機器去把語音信號轉成對應的字符串,但我們自己可以。換句話說,就算你不清楚怎么編寫程序,好讓機器識別出喚醒詞“Alexa”,你自己完全能夠?識別出“Alexa”這個詞。由此,我們可以收集一個巨大的數據集(dataset),里面包含了大量語音信號,以及每個語音型號是否?對應我們需要的喚醒詞。使用機器學習的解決方式,我們并非直接設計一個系統去準確地?辨別喚醒詞,而是寫一個靈活的程序,并帶有大量的參數(parameters)。通過調整這些參數,我們能夠改變程序的行為。我們將這樣的程序稱為模型。總體上看,我們的模型僅僅是一個機器,通過某種方式,將輸入轉換為輸出。在上面的例子中,這個模型的輸入是一段語音信號,它的輸出則是一個回答{yes,?no},告訴我們這段語音信號是否包含了喚醒詞。 如果我們選擇了正確的模型,必然有一組參數設定,每當它聽見“Alexa”時,都能觸發yes的回答;也會有另一組參數,針對“Apricot”觸發yes。我們希望這個模型既可以辨別“Alexa”,也可以辨別“Apricot”,因為它們是類似的任務。這時候你大概能猜到了,如果我們隨機地設定這些參數,模型可能無法辨別“Alexa”,“Apricot”,甚至任何英文單詞。在而大多數的深度學習中,學習就是指在訓練過程中更新模型的行為(通過調整參數)。 換言之,我們需要用數據訓練機器學習模型,其過程通常如下:
1.初始化一個幾乎什么也不能做的模型;
2.抓一些有標注的數據集(例如音頻段落及其是否為喚醒詞的標注);
3.修改模型使得它在抓取的數據集上能夠更準確執行任務;
4.重復以上步驟2和3,直到模型看起來不錯。
- 訓練誤差(training error):這是模型在用于訓練的數據集上的誤差。類似于考試前我們在模擬試卷上拿到的分數。有一定的指向性,但不一定保證真實考試分數。
- 測試誤差(test error):這是模型在沒見過的新數據上的誤差,可能會跟訓練誤差很不一樣(統計上稱之為過擬合)。類似于考前模考次次拿高分,但實際考起來卻失誤了。
深度學習中最令人激動的特性之一是它在特征學習上的表現。該算法在從原始數據中檢測特征方面表現地特別好。有一個很好的例子,就是通過深度學習技術來識別汽車圖片中的車輪。下圖說明了典型機器學習與深度學習之間的區別:
在機器學習中特征選擇部分一般需要人的先驗知識的介入來設計好的特征提取方法,比如人知道輪子一般是圓的,一般出現在交通工具上,有輪胎、輪轂等部件,基于先驗知識,人可以選取適合提取輪子特征的方法,再設計分類器以識別輪子。而深度學習通常由多個層組成。它們通常將更簡單的模型組合在一起,通過將數據從一層傳遞到另一層來構建更復雜的模型。通過大量數據的訓練自動得到一個能識別輪子的模型,不需要人工設計特征提取環節。這是深度學習隨著數據量的增加而優于其他學習算法的主要原因之一。 隨著深度學習的發展,為了方便算法人員訓練模型,調整參數等,很多公司開源了優秀的深度學習框架,到目前為止,主要的深度學習框架如下圖所示。目前工業界用的比較多的是Caffe和TensorFlow,Caffe主要在計算機視覺上用的較多,TensorFlow由谷歌開源,相關文檔較好,適用范圍廣,基于Python語音,入門簡單,建議新手入門可以選擇TensorFlow。但是這些只是深度學習的平臺框架而已,真正重要的還是學習好深度學習的理論,有了理論各種平臺都不是問題。
TensorFlow簡介 TensorFlow是專門為機器學習而設計的快速數值計算Python庫,它由谷歌開源,旨在讓世界各地更多的研究人員和開發人員掌握深度學習。為了加速深度學習領域的發展,2015年11月9日,Google發布深度學習框架TensorFlow并宣布開源。在短短的一年時間內,在GitHub上,TensorFlow就成為了最流行的深度學習項目。 TensorFlow在計算機視覺、語音識別、推薦系統和自然語言處理等場景下都有豐富的應用。雖然Tenforflow開源時間剛滿一年,但是它正在以迅猛的速度滲入到我們的尋常生活中。它支持Linux平臺,Windows平臺,Mac平臺,甚至還宣稱要發布相應的移動端平臺。其次,TensorFlow提供了非常豐富的深度學習相關的API,可以說目前所有深度學習框架里,提供的API最全的,包括基本的向量矩陣計算、各種優化算法、各種卷積神經網絡和循環神經網絡基本單元的實現、以及可視化的輔助工具、等等。 你可以按照官方的教程安裝TensorFlow,安裝好之后,你就可以用它提供的多個API來訓練機器學習模型了。具體的教程可以參考TensorFlow官網,不想看英文的也可以參考TensorFlow中文社區. 雖然TensorFlow是最受歡迎的機器學習庫,不過也有其他幾個很棒的選擇,如Torch(Facebook使用)、Caffe(出自Berkeley AI研究所的深度學習框架)等等。其中Caffe是第一個在工業上得到廣泛應用的開源深度學習框架,也是第一代深度學習框架里最受歡迎的框架,目前也有很多企業和科研人員在使用。 學習資料 一旦對基礎知識有了一定的了解,你應該知道自己對機器學習的哪些方面比較感興趣,你想在應用程序中使用機器學習,還是想研究機器學習。下面是一些優秀的參考資料,可以幫助你系統的學習。 書籍: 深度學習技術發展迅速,各種平臺框架也迭代很快,推薦相關的書籍其實不太好推薦。在這里我只推薦兩本書: 第一本是《白話深度學習與TensorFlow》,這本書寫的非常通俗易懂,沒有太多理論知識介紹,基本是深度學習的基礎知識和TensorFlow的相關例程,適合沒有深度學習基礎,想入門深度學習的人看。 第二本是美國Ian,Goodfellow 寫的《Deep Learning》,這本書有中文翻譯版《深度學習》,但是這本書基本是講深度學習理論的,沒有基礎的話很難看懂,但是翻譯者提供了PDF在GitHub上,想看的可以去下載:https://github.com/exacity/deeplearningbook-chinese 網絡資源: 對于新手入門個人覺得很多網上的手冊、教程和博客都很不錯。這篇文章主要面向零基礎的想了解DeepLearning的人員,太復雜專業的暫時就不推薦了,以下是一些基礎的入門資源。 1.吳恩達的深度學習在線課程:這是吳恩達成立DeepLearning.ai在線教育網站后的第一個課程,網易云課堂引進了,偏工程可以學習一下,還有相關證書,吳恩達給你的人工智能第一課. 2.莫煩Python:這是一個在澳大利亞讀博的中國人,他會講Python和深度學習的教程,有視頻。Python基本是現在做深度學習的必會語言了,喜歡的可以去這里學習https://morvanzhou.github.io/about/。 3.臺灣李宏毅教授的在線課程:http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML17_2.html,還有一個300多頁的ppt,比較系統,也最通俗易懂的:PPT鏈接 4.TensorFlow中文社區:http://www.tensorfly.cn
5.想學習caffe框架的,也可以參考徐其華的博客:http://www.cnblogs.com/denny402/tag/caffe/ 結語 “整個世界就是一個大數據問題” - Andrew McAfee 掌握機器學習就像是馴服一頭野獸。但是,如果你已經吃透它,那么它就是你身邊一個非常有價值的資源。暫時想到的就這么多,愿大家一同進步…… 參考資料: 1.https://udarajay.com/applied-machine-learning-the-less-confusing-guide/?spm=5176.100239.blogcont223187.31.wGjoeK 2.http://zh.gluon.ai/chapter_preface/index.html
公眾號玉剛說聚焦于『Android開發前沿、AI技術等、職業發展、生活感悟、妹子圖』,歡迎大家關注玉剛說:
總結
以上是生活随笔為你收集整理的普通程序员如何入门深度学习?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用Python写了一个微信聊天机器人(打
- 下一篇: 乐1Pro 乐视X800+_官方线刷包_