譯者序
機器學習(Machine Learning)是一門多領域交叉學科,涉及概率論、統計學、逼近論、凸分析、算法復雜度理論等多門學科。它專門研究計算機怎樣模擬或實現人類的學習行為,以獲取新的知識或技能,重新組織已有的知識結構使之不斷改善自身的性能。隨著計算機軟硬件技術的不斷發展,機器學習正在悄然改變世界。深度學習(Deep Learning)是機器學習的一個分支和新的研究方向,它能夠使計算機通過層次概念來學習經驗和理解世界,更接近機器學習實現人工智能的最初目標。深度學習在數據挖掘、機器學習、機器翻譯、自然語言處理、個性推薦,以及其他相關領域都取得了很多成果。
在開始深度學習項目之前,選擇一個合適的大數據處理框架是非常重要的,選擇一個合適的框架能起到事半功倍的作用。Spark是一個以聲明的方式,圍繞速度、易用性和復雜分析構建的大數據處理框架,它提供了一個全面、統一的框架,以管理各種有著不同性質(文本數據、圖表數據等)的數據集和數據源(批量數據或實時的流數據)。本書用通俗易懂的語言,詳細介紹了基於Spark的深度學習框架的安裝和創建,並通過不同領域的具體案例為讀者介紹了Spark具體應用方法,希望讀者能夠更好地理解和應用Spark。
本書作者Ahmed Sherif是一名數據科學家,在美國西北大學獲得了預測分析碩士學位。他一直在研究機器學習理論和應用,並使用Python和R語言進行預測建模。最近,他一直在使用Azure開發機器學習和雲上深度學習的解決方案。2016年,他出版了第一本書——《實用商業智能》,他目前是微軟公司數據和人工智能領域的技術解決方案專家。本書另外一位作者Amrith Ravindra是一名機器學習愛好者,他深入地研究了機器學習理論。Amrith Ravindra在坦帕市的一次數據科學會議上認識了Ahmed Sherif,他們決定集思廣益,寫一本關於他們最喜歡的機器學習算法的書。他們希望這本書能夠幫助大家實現成為一名數據科學家並積極為機器學習做出貢獻的最終目標。
非常感謝電子工業出版社計算機出版分社將這樣一本好書交給我翻譯。我深知自己的知識面和翻譯水平有限,難免有疏漏和錯誤之處,懇請讀者批評指正。出版社的編輯幫助我耐心審閱翻譯的書稿,並提出了許多中肯的修改意見,非常感謝他們。希望讀者能夠從書中得到更多的知識,開發更多的機器學習應用來改變世界。
黃友良
2019年11月
序
如果你正在閱讀這本書,那麼可以肯定的是,你已經意識到人工智能(AI)和機器學習(ML)對當今的巨大影響,以及深度神經網絡帶來的不可思議的驚人效率。Matei Zaharia和他的團隊開發的Spark,不是為了讓它成為Hadoop的競爭對手,而是作為人工智能和機器學習的廣泛應用。正如Zaharia所說過的:“Spark隻關注如何計算,不關注數據存儲在哪裡。”Spark被稱為用於大規模數據處理的統一分析引擎,它特別針對彈性、速度、易用性、通用性和可移植性進行了優化,本書將向你詳細介紹Spark,相信你一定會成為Spark的狂熱愛好者。
作為讀者,如果你對Spark在深度學習領域的應用感到興奮,那麼本書就可以為你提供幫助。作者首先通過提供簡明扼要的文字說明,幫助你設置Spark以進行深度學習的開發。在完成初始設置之後,你很自然地就創建了一個神經網絡。隨後,作者詳細說明了卷積神經網絡和循環神經網絡的難點。在各個行業,人工智能每天都有新的應用。在實際應用方面,作者提供了使用SparkML預測消防部門的呼叫,使用XGBoost預測房地產價值,使用LSTM預測蘋果公司的股票價格,以及使用Keras創建電影推薦引擎等實際但又進行了適當簡化的案例。
人工智能和機器學習分類繁多,令人眼花繚亂的工具集和庫的使用令人望而卻步。作者非常出色地將不同的庫混合在一起,並在讀者對本書的學習過程中,不斷融入相關但多樣化的技術。隨著深度學習框架開始融合並向抽像方向發展,探索性數據分析的規模必然會增長。這就是為什麼本書並非創造一個眾所周知的“一招鮮”(或YOLO模型,雙關語),而是涵蓋了相關或高度相關的技術,如使用長短期的生成網絡,使用TF-IDF的自然語言處理,使用深度卷積網絡的人臉識別,使用Word2Vec創建和可視化單詞向量,並在Spark上使用TensorFlow進行圖像分類。除簡潔和專注的寫作風格外,本書的另一個優勢是,內容與機器學習、深度學習高度相關。
在學術領域和行業領域,我有一個獨特的機會親自看到Spark的發展。作為斯坦福大學的訪問學者,我參加了Spark的共同創始人之一Matei Zaharia的各種會議,並有幸了解了他對Databricks、大規模算法運作及大數據未來的看法。同時,作為人工智能和深度學習的從業者和首席架構師,我目睹了世界上最大的零售商實驗室如何使用Spark標準化其業務機器學習模型的部署。隨著雲技術不斷支持新的數據應用程序架構,我認為Spark是各個行業的、全新的且不可預料的機器學習實現的關鍵推動者和加速器。這需要大規模解決現實世界中的業務問題,擁有蓬勃發展的生態繫統,並能夠為企業級SLA提供全天候支持的能力。Spark以前所未有的速度、彈性和社區適應性滿足所有這些標準。Spark經常用於高級案例分析,如繫統遙測的復雜異常值分析。將Spark視為一種工具,它可以彌補傳統商務智能與現代機器學習服務之間的差距,從而取得有意義的業務成果。隨著數據成為核心競爭優勢,防患(數據中斷)於未然至關重要,同時要考慮季節性、周期性和不斷增加的時間相關性。易操作性是行業接納的關鍵,而這正是Spark與眾不同的地方;數據洞察力和行動洞察力也是Spark的強項。
你所持有的這本書是Spark向人工智能和機器學習廣泛應用邁出的又一大步。它為你提供了在實際問題中應用的工具和技術。將它看作探索之旅的開端,成為一個全面的機器學習工程師和傳播者,而不僅是一個Spark追星族。我們希望這本書能夠幫助你利用Apache Spark來輕松、高效地處理業務和技術相關的問題。
Adnan Masood博士
斯坦福大學計算機工程繫訪問學者
微軟最有價值專家&微軟人工智能和機器學習首席架構師
斯坦福蓋茨計算機科學大樓
2018年6月12日
前言
隨著深度學習在現代各行業中迅速得到廣泛應用,各個機構都在尋找將流行的大數據工具與高效的深度學習庫結合起來的方法。這將有助於深度學習模型以更高的效率和更快的速度進行訓練。
在本書的幫助下,你將通過學習特定的操作來得到深度學習算法的結果,而不會陷入理論的困境。從為深度學習設置Apache Spark到實現各種類型的神經網絡,本書解決了大多數常見和不太常見的問題,以便在分布式環境中執行深度學習。除此之外,你還可以訪問Spark的深度學習代碼,這些代碼可以用來回答類似問題,也可以在調整後回答稍有不同的問題。你還將學習如何用Spark對數據進行流處理和集群處理。一旦掌握了基礎知識,你將探索如何使用TensorFlow和Keras等流行庫,如卷積神經網絡、循環神經網絡和長短期記憶網絡,在Spark中實現和部署深度學習模型。最後,這是一本旨在教授如何在Spark中實際應用模型的指南,所以我們不會深入討論本書使用的模型背後的理論和數學知識。
在本書的最後,你將擁有在Apache Spark上部署高效深度學習模型的專業知識。
本書的讀者對像
本書適用於對機器學習和大數據概念有基本了解的人,以及希望通過自上而下而非自下而上的方法來擴展已有知識的人。本書以即學即用的方式進行講解,任何沒有編程經驗的人,即使是沒有使用過Python語言的人,都可以按照提示逐步地輕松實現本書中的算法。本書中的大多數代碼都是簡單易懂的,每個代碼塊執行一個特定的功能,或者執行挖掘、轉換和將數據擬合到深度學習模型中的操作。
本書旨在通過介紹有趣的項目(如股票價格預測)為讀者提供實踐經驗的同時,讓讀者對深度學習和機器學習概念有更深入的理解。這可能以提供在線資源鏈接的方式展現,如已發表的論文、教程和指南,它貫穿本書的每一章。
本書包括哪些內容
第1章:為深度學習開發設置Spark。本章包括在虛擬Ubuntu桌面環境下設置Spark開發所需的所有內容。
第2章:在Spark中創建神經網絡。本章介紹了從頭開始開發神經網絡而不使用任何深度學習庫(如TensorFlow或Keras)的過程。
第3章:卷積神經網絡的難點。本章介紹了圖像識別中與卷積神經網絡相關的一些難點,以及解決問題的方法。
第4章:循環神經網絡的難點。本章介紹了前饋神經網絡和遞歸神經網絡。我們描述了循環神經網絡的一些難點,以及如何使用LSTM解決它們。
第5章:用Spark機器學習預測消防部門呼叫。我們將使用Spark機器學習開發一個分類模型,用於預測來自舊金山市消防部門的呼叫。
第6章:在生成網絡中使用LSTM。本章給出了一種使用小說或大型文本語料庫作為輸入數據來定義和訓練LSTM模型的實用方法,同時還使用訓練模型生成自己的輸出序列。
第7章:使用TF-IDF進行自然語言處理。本章介紹了分類聊天機器人對話數據升級的步驟。
第8章:使用XGBoost進行房地產價值預測。本章重點介紹了如何使用金斯縣房屋銷售數據集來訓練一個簡單的線性模型,並使用它來預測房價,然後使用一個稍微復雜的模型來做同樣的事情並提高預測的準確度。
第9章:使用長短期預測蘋果公司股票的市場價格。本章的重點是使用Keras中的LSTM創建深度學習模型,以預測蘋果公司股票的市場價格。
第10章:使用深度卷積網絡進行人臉識別。本章利用10個不同受試者的面部圖像的MIT-CBCL數據集來訓練和測試深度卷積神經網絡模型。
第11章:使用Word2Vec創建和可視化單詞向量。本章重點關注向量在機器學習中的重要性,並指導用戶利用谷歌的Word2Vec模型訓練不同的模型,並可視化小說中產生的單詞向量。
第12章:使用Keras創建電影推薦引擎。本章專注於為使用深度學習庫Keras的用戶構建電影推薦引擎。
第13章:使用TensorFlow在Spark中進行圖像分類。本章專注於利用遷移學習來認識世界知名足球運動員克裡斯蒂亞諾·羅納爾多和裡奧·梅西。
如何更好地利用本書
1. 利用書中提供的鏈接可以更好地理解本書中使用的一些術語。
2. 互聯網是當今世界上最大的大學。觀看YouTube、Udemy、edX、Lynda和Coursera等網站提供的有關各種深度學習和機器學習概念的視頻。
3. 若僅翻看這本書容易忘記知識點,那麼可以在閱讀本書時實際執行每一步操作。建議你在瀏覽每一步操作時打開Jupyter Notebook,這樣就可以在閱讀本書時實踐每一步操作,同時檢查你從每個步驟獲得的輸出。
4. 本書提供的額外參考資料請訪問http://www.broadview.com.cn/37882進行下載,如正文中標有參見“鏈接1”“鏈接2”等字樣時,即可從上述網站下載的“參考資料.pdf”文件中進行查詢。