官术网_书友最值得收藏!

前言

機器學習海嘯

2006年,Geoffrey E. Hinton等人發表了一篇論文(https://homl.info/136[1],展示了如何訓練能夠以最高的精度(>98%)來識別手寫數字的深度神經網絡。他們將這種技術稱為“深度學習”。深度神經網絡是我們大腦皮層的(非常)簡化的模型,由一堆人工神經元層組成。當時普遍認為訓練深度神經網絡是不可能的[2],并且大多數研究人員在20世紀90年代后期放棄了這種想法。這篇論文重新激發了科學界的興趣,不久之后許多新論文證明深度學習不僅是可能的,而且取得了令人振奮的成就,這是其他機器學習(Machine Learning,ML)技術無法企及的(借助于巨大的計算能力和大量的數據)。這種熱情很快擴展到機器學習的許多其他領域。

十年后,機器學習征服了整個工業界,如今它已成為高科技產品的核心,為你的網絡搜索結果排名,為智能手機的語音識別提供支持,推薦視頻,甚至可能駕駛你的汽車。

你項目中的機器學習

所以,你自然會對機器學習感到興奮并愿意加入其中!

也許你想給你的自制機器人一個大腦,讓它能識別人臉,或者學會走路。

或者你的公司可能擁有大量數據(用戶日志、財務數據、生產數據、機器傳感器數據、熱線統計數據、人力資源報告等),如果你知道去哪里查找,你很可能會挖掘出一些隱藏的寶藏。通過機器學習,你可以完成以下甚至更多任務(https://homl.info/usecases):

· 細分客戶并為每個群體找到最佳的營銷策略。

· 根據類似客戶的購買情況為每個客戶推薦產品。

· 檢測哪些交易可能是欺詐性的。

· 預測明年的收入。

無論出于何種原因,你已經決定學習機器學習并將它應用到你的項目中。好主意!

目標與方法

本書假定你對機器學習幾乎一無所知。它的目標是為你實現從數據中學習的程序提供所需的概念、工具和直覺。

我們將介紹大量的技術,從最簡單和最常用的技術(例如線性回歸)到一些經常贏得比賽的深度學習技術。為此,我們使用適用于生產環境的Python框架:

· Scikit-Learn(https://scikit-learn.org)非常易于使用,它還有效地實現了許多機器學習算法,因此它是學習機器學習的一個很好的切入點。它由David Cournapeau于2007年創建,現在由法國計算機科學與自動化研究所(Inria)的一組研究人員主導研發。

· TensorFlow(https://tensorflow.org)是一個更復雜的分布式數值計算庫。它通過將計算分布在數百個多GPU(圖形處理單元)服務器上,使有效地訓練和運行非常大的神經網絡成為可能。TensorFlow(TF)由Google研發,支持許多大型機器學習應用程序。它于2015年11月開源,并于2019年9月發布2.0版本。

· Keras(https://keras.io)是一種高級深度學習API,可以非常簡單地訓練和運行神經網絡。Keras與TensorFlow捆綁在一起,它依賴于TensorFlow進行所有的密集計算。

本書偏向于動手實踐的方法,通過具體的工作示例和少量理論來加深對機器學習的直觀理解。

雖然你不需要拿起筆記本計算機就可以閱讀本書,但我強烈建議你嘗試使用代碼示例。

示例代碼

本書中的所有示例代碼都是開源的,Jupyter notebook可以在https://github.com/ageron/handson-ml3在線獲取。這些是包含文本、圖像和可執行代碼片段(在我們的例子中為Python)的交互式文檔。最簡單快捷的入門方法是使用Google Colab運行這些例子。Google Colab是一項免費服務,允許你直接在線運行任何Jupyter notebook,而無須在你的機器上安裝任何東西。你只需要一個網絡瀏覽器和一個Google賬戶。

在本書中,我假設你使用的是Google Colab,但我也在其他在線平臺(例如Kaggle和Binder)上測試了notebook,因此你可以根據需要使用它們。或者,你可以安裝所需的庫和工具(或本書的Docker鏡像)并直接在你自己的機器上運行。請參閱https://homl.info/install上的說明。

這里的代碼是為了幫助你更好地理解本書的內容。通常,可以在程序或文檔中使用本書中的代碼,而不需要聯系O'Reilly獲得許可,除非需要大段地復制代碼。例如,使用本書中所提供的幾個代碼片段來編寫一個程序不需要得到我們的許可,但銷售或發布O'Reilly的示例代碼則需要O'Reilly出版社的許可。引用本書的示例代碼來回答一個問題也不需要許可,將本書中的示例代碼的很大一部分放到自己的產品文檔中則需要獲得許可。

非常歡迎讀者使用本書中的代碼,希望(但不強制)注明出處。注明出處時包含書名、作者、出版社和ISBN,例如:

Hands-On Machine Learning with Scikit-Learn,Keras,and TensorFlow,作者Aurélien Géron,由O'Reilly出版,書號978-1-098-12597-4。

如果讀者覺得對示例代碼的使用超出了上面所給出的許可范圍,歡迎通過permissions@oreilly.com聯系我們。

先決條件

本書假定你具有一定的Python編程經驗。如果你還不了解Python,https://learnpython.org是一個很好的起點。Python.org上的官方教程(https://docs.python.org/3/tutorial)也相當不錯。

本書還假定你熟悉Python的主要科學庫——尤其是NumPy(https://numpy.org)、Pandas(https://pandas.pydata.org)和Matplotlib (https://matplotlib.org)。如果你從未使用過這些庫,請不要擔心,它們很容易學習,我已經為它們每個創建了一個教程。你可以通過https://homl.info/tutorials在線訪問它們。

此外,如果你想完全理解機器學習算法的工作原理(而不僅僅是如何使用它們),那么你至少應該對一些數學概念有基本的了解,尤其是線性代數。具體來說,你應該知道什么是向量和矩陣,以及如何執行一些簡單的操作,例如向量相加,或轉置和矩陣相乘。如果你需要快速了解線性代數(這真的不是火箭科學!),我在https://homl.info/tutorials提供了一個教程。你還會找到有關微積分的教程,這可能有助于理解神經網絡的訓練,但對掌握重要概念并非完全必要的。本書偶爾也會使用其他數學概念,例如指數和對數、一些概率論和一些基本的統計概念,但不會太高深。如果你需要任何這些方面的幫助,請查看https://khanacademy.org,該網站提供許多優秀的免費在線數學課程。

路線圖

本書分為兩部分。第一部分涵蓋以下主題:

· 什么是機器學習,它試圖解決什么問題,以及其系統的主要類別和基本概念

· 典型機器學習項目中的步驟

· 通過將模型擬合到數據中進行學習

· 優化代價函數

· 處理、清洗和準備數據

· 選擇和工程特征

· 選擇模型并使用交叉驗證調整超參數

· 機器學習的挑戰,特別是欠擬合和過擬合(偏差/方差權衡)

· 最常見的學習算法:線性和多項式回歸、邏輯回歸、k最近鄰、支持向量機、決策樹、隨機森林和集成方法

· 降低訓練數據的維度以對抗“維度詛咒”

· 其他無監督學習技術,包括聚類、密度估計和異常檢測

第二部分涵蓋以下主題:

· 什么是神經網絡以及它們的作用

· 使用TensorFlow和Keras構建和訓練神經網絡

· 最重要的神經網絡架構:用于表格數據的前饋神經網絡,用于計算機視覺的卷積網絡,用于處理序列的循環網絡和長短期記憶網絡(Long Short-Term Memory,LSTM)、用于自然語言處理(以及更多方面)的編碼器-解碼器和Transformer,以及用于生成學習的自動編碼器、生成對抗網絡(Generative Adversarial Network,GAN)和擴散模型

· 訓練深度神經網絡的技術

· 如何使用強化學習構建可以通過反復實驗學習好的策略的智能體(例如游戲中的機器人)

· 有效地加載和預處理大量數據

· 大規模訓練和部署TensorFlow模型

第一部分主要基于Scikit-Learn,而第二部分使用TensorFlow和Keras。

不要倉促地跳入深水區:雖然深度學習無疑是機器學習中非常令人興奮的領域,但你應該首先掌握基礎知識。此外,大多數問題都可以使用更簡單的技術來很好地解決,例如隨機森林和集成方法(在第一部分討論)。深度學習最適合解決圖像識別、語音識別或自然語言處理等復雜問題,它需要大量數據、計算能力和耐心(除非你可以利用預訓練的神經網絡,正如你將會看到的那樣)。

第1版和第2版之間的變化

如果你讀過第1版,那么以下是第1版和第2版之間的主要變化:

· 所有代碼都從TensorFlow 1.x遷移到TensorFlow 2.x,我用更簡單的Keras代碼替換了大部分底層TensorFlow代碼(計算圖、會話、特征列、估計器等)。

· 第2版介紹了用于加載和預處理大型數據集的Data API、用于大規模訓練和部署TF模型的分布式策略API、用于生產環境模型的TF Serving和Google Cloud AI Platform,以及(簡要地介紹)TF Transform、TFLite、TF Addons/Seq2Seq、TensorFlow.js和TF Agents。

· 第2版還介紹了許多額外的機器學習主題,包括關于無監督學習的新章節、用于物體檢測和語義分割的計算機視覺技術、使用卷積神經網絡(Convolutional Neural Network,CNN)處理序列、使用循環神經網絡(Recurrent Neural Network,RNN)的自然語言處理(Natural Language Processing,NLP)、CNN和Transformer、GAN等。

有關詳細信息,請參閱https://homl.info/changes2。

第2版和第3版之間的變化

如果你讀過第2版,那么以下是第2版和第3版之間的主要變化:

· 所有代碼都已更新為最新的庫版本。特別是,第3版為Scikit-Learn引入了許多新功能(例如,特征名稱的跟蹤、基于直方圖的梯度提升、標簽傳播等),還介紹了用于超參數調整的Keras Tuner庫、用于自然語言處理的Hugging Face的Transformer庫,以及Keras的新的預處理和數據增強層。

· 添加了多個視覺模型(ResNeXt、DenseNet、MobileNet、CSPNet和EfficientNet),以及選擇正確模型的指南。

· 第15章現在分析芝加哥公共汽車和鐵路乘客數據而不是生成的時間序列,并介紹ARMA模型及其變體。

· 關于自然語言處理的第16章現在構建了一個英語→西班牙語的翻譯模型,首先使用編碼器-解碼器RNN,然后使用Transformer模型。本章還會介紹語言模型,例如Switch Transformer、DistilBERT、T5和PaLM(帶有思維鏈提示)。此外,它還會介紹視覺Transformer(ViT),概述一些基于Transformer的視覺模型[例如數據高效圖像Transformer(DeiT)、Perceiver和DINO],以及一些大型多模態模型,包括CLIP、DALL·E、Flamingo和GATO。

· 關于生成學習的第17章現在介紹擴散模型,并展示了如何從頭開始實現去噪擴散概率模型(Denoising Diffusion Probabilistic Model,DDPM)。

· 第19章從Google Cloud AI Platform遷移到Google Vertex AI,使用分布式Keras Tuner進行大規模超參數搜索。本章現在包括你可以在線實驗的TensorFlow.js代碼。它還介紹了其他分布式訓練技術,包括PipeDream和Pathways。

· 為了適應所有新內容,一些內容已移至網上,包括安裝說明、內核主成分分析(Principal Component Analysis,PCA)、貝葉斯高斯混合的數學細節、TF Agents和以前的附錄A(練習題答案)、附錄C(支持向量機數學)和附錄E(額外的神經網絡架構)。

更多詳細信息,請參閱https://homl.info/changes3

其他資源

有許多優秀的資源可用于學習機器學習。例如,Andrew Ng在Coursera(https://homl.info/ngcourse)上的機器學習課程非常棒,盡管它需要投入大量時間。

還有許多關于機器學習的有趣網站,包括Scikit-Learn的出色的用戶指南(https://homl.info/skdoc)。你還可以使用Dataquest(https://dataquest.io),它提供了非常好的交互式教程,以及關于機器學習博客,例如Quora(https://homl.info/1)上列出的博客。

還有很多其他關于機器學習的入門書籍。尤其是:

· Joel Grus的Data Science from Scratch第2版(O'Reilly)介紹了機器學習的基礎知識,并用純Python實現了一些主要算法(顧名思義,從零開始)。

· Stephen Marsland的Machine Learning:An Algorithmic Perspective第2版(Chapman & Hall)很好地介紹了機器學習,涵蓋了廣泛的主題和Python代碼示例(也是從零開始,但使用NumPy)。

· Sebastian Raschka的Python Machine Learning第3版(Packt Publishing)也給出了對機器學習的精彩介紹,并利用了Python開源庫(Pylearn 2和Theano)。

· Fran?ois Chollet的Deep Learning with Python第2版(Manning)是一本非常實用的書,它以清晰、簡潔的方式涵蓋了廣泛的主題,正如你對優秀的Keras庫的作者所期望的那樣。它偏愛代碼示例甚于數學理論。

· Andriy Burkov的The Hundred-Page Machine Learninghttps://theml book.com,自出版)篇幅很短,但涵蓋了令人印象深刻的主題,以通俗易懂的術語介紹了這些主題,并且沒有回避數學方程式。

· Yaser S. Abu-Mostafa、Malik Magdon-Ismail和Hsuan-Tien Lin的Learning from Data(AMLBook)給出了相當理論化的機器學習方法,提供了深刻的見解,特別是在偏差/方差權衡方面(見第4章)。

· Stuart Russell和Peter Norvig的Artificial Intelligence:A Modern Approach第4版(Pearson)是一本很棒(而且篇幅很大)的書,涵蓋了令人難以置信的大量主題,包括機器學習。它有助于正確看待機器學習。

· Jeremy Howard和Sylvain Gugger的Deep Learning for Coders with fastai and PyTorch(O'Reilly)提供使用fastai和PyTorch庫進行深度學習的非常清晰和實用的介紹。

最后,加入機器學習競賽網站(例如Kaggle.com)將使你能夠在一些最優秀的機器學習專業人士的幫助下練習解決實際問題的技能。

排版約定

本書中使用以下排版約定:

斜體(Italic

  表示新的術語、URL、電子郵件地址、文件名和文件擴展名。

等寬字體(Constant width)

  用于程序清單,以及段落中的程序元素,例如變量名、函數名、數據庫、數據類型、環境變量、語句以及關鍵字。

等寬粗體(Constant width bold

  表示應由用戶直接輸入的命令或其他文本。

等寬斜體(Constant width italic

  表示應由用戶提供的值或由上下文確定的值替換的文本。

該圖示表示提示或建議。

該圖示表示一般性說明。

該圖示表示警告或注意。

O'Reilly在線學習平臺(O'Reilly Online Learning)

40多年來,O'Reilly Media致力于提供技術和商業培訓、知識和卓越見解,來幫助眾多公司取得成功。

我們擁有獨一無二的專家和創新者組成的龐大網絡,他們通過圖書、文章、會議和我們的在線學習平臺分享他們的知識和經驗。O'Reilly的在線學習平臺允許你按需訪問現場培訓課程、深入的學習路徑、交互式編程環境,以及O'Reilly和200多家其他出版商提供的大量教材和視頻資源。有關的更多信息,請訪問http://oreilly.com

如何聯系我們

對于本書,如果有任何意見或疑問,請按照以下地址聯系本書出版商。

美國:

  O'Reilly Media,Inc.

  1005 Gravenstein Highway North

  Sebastopol,CA 95472

中國:

  北京市西城區西直門南大街2號成銘大廈C座807室(100035)

  奧萊利技術咨詢(北京)有限公司

要詢問技術問題或對本書提出建議,請發送電子郵件至errata@oreilly.com.cn。

本書配套網站https://homl.info/oreilly3上列出了勘誤表、示例以及其他信息。

關于書籍、課程的更多新聞和信息,請訪問我們的網站https://oreilly.com

我們在LinkedIn上的地址:https://linkedin.com/company/oreilly-media

我們在Twitter上的地址:https://twitter.com/oreillymedia

我們在YouTube上的地址:https://youtube.com/oreillymedia

致謝

我做夢也想不到這本書的第1版和第2版會有如此多的讀者。我收到了很多來自讀者的消息,很多人提出了許多問題,一些人友好地指出了書中的差錯,大多數人給我發來鼓勵的話。我無法表達我對所有這些讀者的巨大支持的感激之情。非常感謝大家!如果你在代碼示例中發現錯誤(或只是提出問題),請毫不猶豫地在GitHub(https://homl.info/issues3)上提出問題。如果你發現文中有錯誤,請提交勘誤表(https://homl.info/errata3)。一些讀者還分享了本書如何幫助他們找到第一份工作,或者它如何幫助他們解決了正在處理的具體問題。我發現這樣的反饋非常有激勵作用。如果你覺得本書對你有幫助,可以私下[例如,通過LinkedIn(https://linkedin.com/in/aurelien-geron)]或公開[例如,通過推文或亞馬遜評論(https://homl.info/amazon3)]與我分享你的故事。

也非常感謝所有花時間用專業知識審閱第3版、糾正錯誤并提出無數建議的優秀人士。多虧他們,這一版變得更好了,他們是:Olzhas Akpambetov、George Bonner、Fran?ois Chollet、Siddha Gangju、Sam Goodman、Matt Harrison、Sasha Sobran、Lewis Tunstall、Leandro von Werra和我親愛的兄弟Sylvain。他們都很棒!

我也非常感謝一路支持我的許多人,他們回答了我的問題,提出了改進建議,并為GitHub上的代碼做出了貢獻,特別是Yannick Assogba、Ian Beauregard、Ulf Bissbort、Rick Chao、Peretz Cohen、Kyle Gallatin、Hannes Hapke、Victor Khaustov、Soonson Kwon、Eric Lebigot、Jason Mayes、Laurence Moroney、Sara Robinson、Joaquín Ruales和Yuefeng Zhou。

如果沒有O'Reilly出色的工作人員,尤其是Nicole Taché,這本書就不會存在,他給了我富有洞察力的反饋,并且總是熱情、開朗地鼓勵他人和樂于助人:我再也找不到比他更好的編輯了。也非常感謝Michele Cronin,他在最后幾章為我加油,并設法讓我沖過終點線。感謝整個制作團隊,尤其是Elizabeth Kelly和Kristen Brown。還要感謝Kim Cofer進行了全面的編輯,還要感謝Johnny O’Toole,他負責管理與亞馬遜的關系并回答了我的許多問題。感謝Kate Dullea大大改進了我的插圖。感謝Marie Beaugureau、Ben Lorica、Mike Loukides和Laurel Ruma相信這個項目并幫助我定義它的范圍。感謝Matt Hacker和所有Atlas團隊回答了我關于格式、AsciiDoc、MathML和LaTeX的所有技術問題,并感謝Nick Adams、Rebecca Demarest、Rachel Head、Judith McConville、Helen Monroe、Karen Montgomery、Rachel Roumeliotis,以及O'Reilly為本書做出貢獻的其他所有人。

我永遠不會忘記所有在本書第1版和第2版中幫助過我的好心人:朋友、同事、專家,以及TensorFlow團隊的許多成員。名單很長,他們是:Olzhas Akpambetov、Karmel Allison、Martin Andrews、David Andrzejewski、Paige Bailey、Lukas Biewald、Eugene Brevdo、William Chargin、Fran?ois Chollet、Clément Courbet、Robert Crowe、Mark Daoust、Daniel “Wolff” Dobson、Julien Dubois、Mathias Kende、Daniel Kitachewsky、Nick Felt、Bruce Fontaine、Justin Francis、Goldie Gadde、Irene Giannoumis、Ingrid von Glehn、Vincent Guilbeau、Sandeep Gupta、Priya Gupta、Kevin Haas、Eddy Hung、Konstantinos Katsiapis、Viacheslav Kovalevskyi、Jon Krohn、Allen Lavoie、Karim Matrah、Grégoire Mesnil、Clemens Mewald、Dan Moldovan、Dominic Monn、Sean Morgan、Tom O’Malley、James Pack、Alexander Pak、Haesun Park、Alexandre Passos、Ankur Patel、Josh Patterson、André Susano Pinto、Anthony Platanios、Anosh Raj、Oscar Ramirez、Anna Revinskaya、Saurabh Saxena、Salim Sémaoune、Ryan Sepassi、Vitor Sessak、Jiri Simsa、Iain Smears、Xiaodan Song、Christina Sorokin、Michel Tessier、Wiktor Tomczak、Dustin Tran、Todd Wang、Pete Warden、Rich Washington、Martin Wicke、Edd Wilder-James、Sam Witteveen、Jason Zaman、Yuefeng Zhou和我的兄弟Sylvain。

最后但并非不重要的是,我非常感謝我深愛的妻子Emmanuelle和我們三個出色的孩子Alexandre、Rémi和Gabrielle,感謝他們鼓勵我努力寫這本書。他們永不滿足的好奇心是無價的:向我的妻子和孩子們解釋書中一些很難的概念,幫助我理清了思路,并直接改進了本書的許多部分。另外,他們一直給我送餅干和咖啡,誰還能要求更多呢?


[1] Geoffrey E. Hinton et al.,“A Fast Learning Algorithm for Deep Belief Nets”,Neural Computation 18 (2006):1527-1554.

[2] 盡管Yann LeCun(楊立昆)的深度卷積神經網絡自20世紀90年代以來在圖像識別方面表現良好,但是它們的通用性差。

主站蜘蛛池模板: 永德县| 鄄城县| 伊金霍洛旗| 柘荣县| 晋城| 平江县| 杭州市| 公主岭市| 隆化县| 新和县| 东山县| 合川市| 阿克苏市| 通许县| 菏泽市| 白城市| 永胜县| 洛浦县| 杭锦旗| 石棉县| 梁山县| 阿拉善左旗| 乾安县| 贡觉县| 彰化县| 晋宁县| 时尚| 自贡市| 韩城市| 江口县| 丹东市| 阿克苏市| 佛山市| 西宁市| 连平县| 和顺县| 开阳县| 贡觉县| 米易县| 怀宁县| 临沭县|