翻译: 深入神经网络概览Dive into Deep Learning
1. 簡介
直到最近,我們每天與之交互的幾乎所有計算機程序都是由軟件開發人員根據第一原理編碼的。假設我們想編寫一個應用程序來管理一個電子商務平臺。在圍著白板花了幾個小時思考這個問題之后,我們會想出一個可行的解決方案的大致思路,可能看起來像這樣:
- (i) 用戶通過在 Web 瀏覽器中運行的界面與應用程序交互或移動應用程序;
- (ii) 我們的應用程序與商業級數據庫引擎交互,以跟蹤每個用戶的狀態并維護歷史交易記錄;
- (iii) 在我們應用程序的核心,業務邏輯(你可能會說,大腦) 我們的應用程序有條不紊地詳細說明了我們的程序在每一種可能的情況下應該采取的適當行動。
為了構建我們的應用程序的大腦,我們必須逐步檢查我們預計會遇到的每一個可能的極端情況,設計適當的規則。每次客戶單擊以將商品添加到他們的購物車時,我們都會在購物車數據庫表中添加一個條目,將該用戶的 ID 與請求的產品 ID 相關聯。雖然很少有開發人員第一次就完全正確(可能需要一些測試運行才能解決問題),但在大多數情況下,我們可以根據第一原則編寫這樣的程序,并在 見到真正的客戶之前自信地啟動它。我們根據驅動功能產品和系統的第一原理設計自動化系統的能力,通常是在新穎的情況下,這是一項了不起的認知壯舉。當您能夠設計出有效的解決方案時 100% 當時,您不應該使用機器學習。
幸運的是,對于不斷壯大的機器學習科學家社區來說,我們希望自動化的許多任務不會輕易屈服于人類的聰明才智。想象一下,與您所知道的最聰明的人一起圍在白板上,但這次您正在解決以下問題之一:
- 編寫一個程序,根據地理信息、衛星圖像和過去天氣的跟蹤窗口預測明天的天氣。
- 編寫一個程序,接受一個問題,用自由格式的文本表達,并正確回答。
- 編寫一個程序,給定一張圖片,可以識別其中包含的所有人,并在每個人周圍畫出輪廓。
- 編寫一個程序,向用戶展示他們可能會喜歡但在自然瀏覽過程中不太可能遇到的產品。
在每種情況下,即使是精英程序員也無法從頭開始編寫解決方案。其原因可能會有所不同。有時我們正在尋找的程序遵循隨時間變化的模式,我們需要我們的程序來適應。在其他情況下,關系(例如像素和抽象類別之間)可能過于復雜,即使我們的眼睛毫不費力地完成任務,也需要進行數千或數百萬次超出我們意識理解的計算。機器學習是對可以從經驗中學習的強大技術的研究。隨著機器學習算法積累更多經驗,通常以觀察數據或與環境交互的形式,其性能會提高。將此與我們的確定性電子商務平臺進行對比,該平臺根據相同的業務邏輯執行,無論積累了多少經驗,直到開發人員自己了解并決定是時候更新軟件了。在本書中,我們將向您介紹機器學習的基礎知識,并特別關注深度學習,這是一套強大的技術,可推動計算機視覺、自然語言處理、醫療保健和基因組學等多個領域的創新。
1.1 一個智能語音的例子
在開始寫作之前,這本書的作者,就像許多工作人員一樣,不得不喝咖啡。我們跳上車開始開車。亞歷克斯使用 iPhone 喊出“嘿 Siri”,喚醒了手機的語音識別系統。然后穆命令“去藍瓶咖啡店的方向”。手機很快顯示出他的命令轉錄。它還認識到我們在問路,并啟動了地圖應用程序(app)來滿足我們的請求。啟動后,地圖應用程序確定了許多路線。在每條路線旁邊,手機都會顯示預計的運輸時間。雖然我們為了教學方便而編造了這個故事,但它表明,在短短幾秒鐘內,我們與智能手機的日常交互可以使用多種機器學習模型。
想象一下,只是編寫一個程序來響應諸如“Alexa”、“OK Google”和“Hey Siri”之類的喚醒詞。嘗試在一個房間里自己編寫代碼,只需要一臺計算機和一個代碼編輯器,如圖 1.1.1 所示。您將如何從第一原理編寫這樣的程序?想一想……問題很難。每秒,麥克風將收集大約 44000 個樣本。每個樣本都是聲波幅度的測量值。什么規則可以可靠地從原始音頻片段映射到可靠的預測 {yes,no} 關于片段是否包含喚醒詞?如果您被卡住了,請不要擔心。我們也不知道如何從頭開始編寫這樣的程序。這就是我們使用機器學習的原因。
圖 1.1.1識別喚醒詞。
這是訣竅。通常,即使我們不知道如何明確地告訴計算機如何從輸入映射到輸出,我們仍然能夠自己完成認知壯舉。換句話說,即使您不知道如何對計算機進行編程以識別“Alexa”這個詞,您自己也能夠識別它。有了這種能力,我們可以收集一個包含音頻示例的巨大數據集,并標記那些包含和不包含喚醒詞的音頻。在機器學習方法中,我們不會嘗試 明確地設計一個系統來識別喚醒詞。相反,我們定義了一個靈活的程序,其行為由多個參數決定. 然后我們使用數據集來確定可能的最佳參數集,這些參數可以提高我們的程序在感興趣任務上的某些性能度量方面的性能。
您可以將參數視為我們可以轉動的旋鈕,從而操縱程序的行為。固定參數,我們將程序稱為模型。我們僅通過操縱參數就可以生成的所有不同程序(輸入-輸出映射)的集合稱為模型族 。使用我們的數據集選擇參數的元程序稱為學習算法。
在我們繼續使用學習算法之前,我們必須精確地定義問題,確定輸入和輸出的確切性質,并選擇合適的模型系列。在這種情況下,我們的模型接收一段音頻作為輸入,然后模型在其中生成一個選擇 {yes,no} 作為 輸出。如果一切按計劃進行,模型對片段是否包含喚醒詞的猜測通常是正確的。
如果我們選擇正確的模型系列,應該存在一個旋鈕設置,以便模型每次聽到“Alexa”這個詞時都會觸發“yes”。因為喚醒詞的確切選擇是任意的,我們可能需要一個足夠豐富的模型系列,通過旋鈕的另一種設置,它只能在聽到“杏”這個詞時觸發“是”。我們期望相同的模型系列應該適用于“Alexa”識別和“Apricot”識別,因為從直覺上看,它們似乎是相似的任務。但是,如果我們想處理根本不同的輸入或輸出,比如我們想從圖像映射到字幕,或者從英文句子到中文句子,我們可能需要完全不同的模型系列。
您可能會猜到,如果我們只是隨機設置所有旋鈕,我們的模型不太可能識別“Alexa”、“Apricot”或任何其他英文單詞。在機器學習中,學習是我們發現旋鈕的正確設置的過程,以從我們的模型中強制執行所需的行為。換句話說,我們用數據訓練我們的模型。如圖1.1.2所示,訓練過程通常如下所示:
圖 1.1.2一個典型的訓練過程。
總而言之,我們不是編寫一個喚醒詞識別器,而是編寫一個可以學習識別喚醒詞的程序,如果我們向它提供一個大的標記數據集。您可以將這種通過將數據集呈現給程序來確定程序行為的行為視為使用數據進行編程. 也就是說,我們可以通過為我們的機器學習系統提供許多貓和狗的例子來“編程”一個貓檢測器。這樣,檢測器最終將學會發出一個非常大的正數,如果它是一只貓,一個非常大的負數,如果它是一只狗,如果它不確定,它會接近零,這幾乎不會觸及表面機器學習可以做到。深度學習,我們稍后會更詳細地解釋,只是解決機器學習問題的眾多流行方法之一。
1.2. 關鍵部件
在我們的喚醒詞示例中,我們描述了一個由音頻片段和二進制標簽組成的數據集,并且我們對如何訓練模型以近似從片段到分類的映射給出了一種直觀的感覺。這類問題,我們嘗試根據已知輸入來預測指定的未知標簽,給定一個由標簽已知的示例組成的數據集,稱為 監督學習。這只是眾多機器學習問題中的一種。稍后我們將深入探討不同的機器學習問題。首先,無論我們處理什么樣的機器學習問題,我們都想更清楚地了解一些將跟隨我們的核心組件:
1.2.1 數據
不用說,沒有數據就無法進行數據科學。我們可能會浪費數百頁來思考究竟是什么構成了數據,但現在,我們將在實際方面犯錯,并專注于要關注的關鍵屬性。通常,我們關注的是示例集合。為了有效地處理數據,我們通常需要提出一個合適的數字表示。每個 示例(或數據點、數據實例、樣本)通常由一組稱為特征(或協變量)的屬性組成),模型必須從中做出預測。在上面的監督學習問題中,要預測的東西是一個特殊的屬性,它被指定為標簽(或目標)。
如果我們使用圖像數據,每張單獨的照片都可能構成一個示例,每張照片都由對應于每個像素的亮度的有序數值列表表示。一種 200×200 彩色照片將包括 200×200×3=120000 數值,對應于每個空間位置的紅色、綠色和藍色通道的亮度。在另一項傳統任務中,我們可能會嘗試根據一組標準特征(例如年齡、生命體征和診斷)來預測患者是否能夠存活。
當每個示例都以相同數量的數值為特征時,我們說數據由固定長度的向量組成,我們將向量的恒定長度描述為數據的維數。正如您可能想象的那樣,固定長度可能是一個方便的屬性。如果我們想訓練一個模型來識別顯微鏡圖像中的癌癥,固定長度的輸入意味著我們可以少擔心一件事。
但是,并非所有數據都可以輕松地表示為固定長度的 向量。雖然我們可能期望顯微鏡圖像來自標準設備,但我們不能期望從互聯網上挖掘的圖像都以相同的分辨率或形狀顯示。對于圖像,我們可能會考慮將它們全部裁剪為標準尺寸,但這種策略只能讓我們做到這一點。我們冒著丟失裁剪部分中的信息的風險。此外,文本數據更頑固地抵制固定長度的表示。考慮亞馬遜、IMDB 和 TripAdvisor 等電子商務網站上留下的客戶評論。有些很短:“它很臭!”。其他人則為頁面而徘徊。與傳統方法相比,深度學習的一個主要優勢是現代模型可以處理 不同長度的數據。
一般來說,我們擁有的數據越多,我們的工作就越容易。當我們擁有更多數據時,我們可以訓練更強大的模型,并減少對先入為主的假設的依賴。從(相對)小數據到大數據的制度變化是現代深度學習成功的主要貢獻者。為了說明這一點,深度學習中許多最令人興奮的模型如果沒有大型數據集就無法工作。其他一些在小數據機制中工作,但并不比傳統方法好。
最后,僅僅擁有大量數據并巧妙地處理它是不夠的。我們需要正確的數據。如果數據充滿錯誤,或者如果選擇的特征不能預測感興趣的目標數量,那么學習就會失敗。陳詞濫調很好地捕捉到了這種情況:垃圾進,垃圾出. 此外,較差的預測性能并不是唯一的潛在后果。在機器學習的敏感應用中,例如預測性監管、簡歷篩選和用于貸款的風險模型,我們必須特別警惕垃圾數據的后果。一種常見的故障模式發生在訓練數據中沒有代表某些人群的數據集中。想象一下在以前從未見過黑色皮膚的野外應用皮膚癌識別系統。當數據不僅未充分代表某些群體而且反映社會偏見時,也可能發生失敗。例如,如果使用過去的招聘決定來訓練用于篩選簡歷的預測模型,那么機器學習模型可能會無意中捕捉和自動化歷史不公正。
1.2.2 模型
大多數機器學習都涉及在某種意義上轉換數據。我們可能想要構建一個系統來攝取照片并預測笑臉?;蛘?#xff0c;我們可能想要獲取一組傳感器讀數并預測讀數的正常與異常情況。按 型號,我們表示用于攝取一種類型的數據并輸出可能不同類型的預測的計算機制。特別是,我們對可以從數據中估計的統計模型感興趣。雖然簡單模型完全能夠解決適當簡單的問題,但我們在本書中關注的問題擴展了經典方法的局限性。深度學習與經典方法的區別主要在于它關注的一組強大的模型。這些模型由許多連續的數據轉換組成,這些數據從上到下鏈接在一起,因此得名深度學習。在討論深度模型的過程中,我們還將討論一些更傳統的方法。
1.2.3 目標函數
早些時候,我們將機器學習介紹為從經驗中學習。通過 在這里學習,我們的意思是隨著時間的推移在某些任務上有所改進。但是誰能說什么是改進呢?您可能會想象我們可以提議更新我們的模型,而有些人可能會不同意提議的更新是否構成改進或下降。
為了開發一個正式的學習機器數學系統,我們需要對我們的模型有多好(或多壞)有正式的衡量標準。在機器學習和更一般的優化中,我們將這些 目標函數稱為目標函數。按照慣例,我們通常定義目標函數,以便越低越好。這只是一個約定。您可以采用任何更高更好的函數,然后通過翻轉符號將其轉換為質量相同但更低更好的新函數。因為越低越好,這些函數有時被稱為損失函數。
在嘗試預測數值時,最常見的損失函數是平方誤差,即預測值與真實值之差的平方。對于分類,最常見的目標是最小化錯誤率,即我們的預測與基本事實不一致的示例比例。一些目標(例如平方誤差)很容易優化。由于不可微性或其他復雜性,其他(例如,錯誤率)難以直接優化。在這些情況下,通常會優化 替代目標。
通常,損失函數是根據模型的參數定義的,并且取決于數據集。我們通過最小化由為訓練收集的一些示例組成的集合所產生的損失來學習模型參數的最佳值。然而,在訓練數據上做得很好并不能保證我們在看不見的數據上做得很好。因此,我們通常希望將可用數據分成兩個部分:訓練數據集(或訓練集,用于擬合模型參數)和測試數據集(或測試集),用于評估),報告模型在兩者上的表現。您可以將培訓表現視為學生在練習考試中的分數,用于準備一些真正的期末考試。即使結果令人鼓舞,也不能保證在期末考試中取得成功。換句話說,測試性能可能會顯著偏離訓練性能。當一個模型在訓練集上表現良好但無法泛化到看不見的數據時,我們說它是 過擬合的。在現實生活中,這就像在實踐考試中表現出色但在真實考試中不及格一樣。
1.2.4 優化算法
一旦我們獲得了一些數據源和表示、模型和明確定義的目標函數,我們就需要一種能夠搜索最佳參數以最小化損失函數的算法。流行的深度學習優化算法基于一種稱為梯度下降的方法。簡而言之,在每個步驟中,此方法都會檢查每個參數,如果您僅對該參數進行少量擾動,則訓練集損失會以何種方式移動。然后它在可能減少損失的方向上更新參數。
1.3. 機器學習問題的種類
在我們的激勵示例中,喚醒詞問題只是機器學習可以解決的眾多問題之一。為了進一步激發讀者的興趣并在我們在整本書中討論更多問題時為我們提供一些共同語言,下面我們列出了機器學習問題的示例。我們將不斷參考我們前面提到的概念,例如數據、模型和訓練技術。
1.3.1 監督學習 Supervised learning
監督學習解決了在給定輸入特征的情況下預測標簽的任務。每個特征-標簽對稱為一個示例。有時,當上下文很清楚時,我們可以使用術語示例來指代輸入的集合,即使相應的標簽是未知的。我們的目標是生成一個將任何輸入映射到標簽預測的模型。
為了將此描述建立在一個具體的例子中,如果我們在醫療保健領域工作,那么我們可能想要預測患者是否會心臟病發作。這種觀察,“心臟病發作”或“沒有心臟病發作”,將成為我們的標簽。輸入特征可能是生命體征,例如心率、舒張壓和收縮壓。
監督開始發揮作用,因為為了選擇參數,我們(監督者)為模型提供了一個由標記示例組成的數據集,其中每個示例都與真實標簽匹配。在概率方面,我們通常對估計給定輸入特征的標簽的條件概率感興趣。雖然它只是機器學習中的幾種范式之一,但監督學習占機器學習在工業中成功應用的大部分。部分原因是因為許多重要任務可以明確地描述為在給定一組特定可用數據的情況下估計未知事物的概率:
給定計算機斷層掃描圖像,預測癌癥與非癌癥。
給定一個英文句子,預測法語的正確翻譯。
根據本月的財務報告數據預測下個月的股票價格。
即使使用簡單的描述“根據輸入特征預測標簽”,監督學習也可以采用多種形式并需要大量建模決策,具體取決于(除其他考慮因素外)類型、大小以及輸入和輸出的數量。例如,我們使用不同的模型來處理任意長度的序列和處理固定長度的向量表示。我們將在本書中深入探討其中的許多問題。
非正式地,學習過程如下所示。首先,獲取大量已知特征的示例,并從中選擇一個隨機子集,獲取每個示例的真實標簽。有時這些標簽可能是已經收集的可用數據(例如,患者是否在下一年內死亡?)而其他時候,我們可能需要使用人工注釋器來標記數據(例如,將圖像分配給類別)。這些輸入和相應的標簽一起構成了訓練集。我們將訓練數據集輸入到監督學習算法中,該算法將數據集作為輸入并輸出另一個函數:學習模型。最后,我們可以將以前看不見的輸入提供給學習模型,使用它的輸出作為相應標簽的預測。圖 1.3.1。
圖 1.3.1監督學習。
1.3.1.1?;貧w
也許最簡單的監督學習任務是回歸。例如,考慮從房屋銷售數據庫中收集的一組數據。我們可以構建一個表格,其中每一行對應不同的房子,每一列對應一些相關的屬性,比如房子的面積、臥室的數量、浴室的數量和分鐘數(步行) 到市中心。在這個數據集中,每個例子都是一個特定的房子,對應的特征向量是表中的一行。如果您住在紐約或舊金山,并且您不是亞馬遜、谷歌、微軟或 Facebook 的 CEO,那么您家的(平方英尺、臥室數量、浴室數量、步行距離)特征向量可能看起來像: [600,1,1,60] . 但是,如果你住在匹茲堡,它可能看起來更像 [3000,4,3,10] . 像這樣的特征向量對于大多數經典的機器學習算法來說都是必不可少的。
使問題回歸的實際上是輸出。假設您在市場上尋找新房??紤]到上述一些特征,您可能想要估計房屋的公平市場價值。標簽,即銷售價格,是一個數值。當標簽采用任意數值時,我們稱之為回歸問題。我們的目標是生成一個模型,其預測與實際標簽值非常接近。
許多實際問題都是描述良好的回歸問題。預測用戶對電影的評分可以被認為是一個回歸問題,如果你在 2009 年設計了一個很棒的算法來完成這一壯舉,你可能已經贏得了100 萬美元的 Netflix 獎。預測患者在醫院的住院時間也是一個回歸問題。一個好的經驗法則是多少?或者有多少?問題應該暗示回歸,例如:
- 這個手術需要幾個小時?
- 在接下來的六個小時內,這個小鎮會有多少降雨?
即使您以前從未使用過機器學習,您也可能非正式地解決過回歸問題。想象一下,例如,您修復了下水道,而您的承包商花了 3 個小時清除污水管中的垃圾。然后他寄給你一張350美元的賬單。現在想象一下,你的朋友雇傭了同一個承包商 2 個小時,他收到了 250 美元的賬單。如果有人隨后問您對他們即將到來的垃圾清除發票的期望值是多少,您可能會做出一些合理的假設,例如更多的工作時間會花費更多的美元。您還可以假設有一些基本費用,然后承包商按小時收費。如果這些假設成立,那么鑒于這兩個數據示例,您已經可以確定承包商的定價結構:每小時 100 美元外加 50 美元出現在你家。如果您遵循了那么多,那么您已經理解了線性回歸背后的高級思想。
在這種情況下,我們可以生成與承包商價格完全匹配的參數。有時這是不可能的,例如,如果某些差異歸因于您的兩個特征之外的幾個因素。在這些情況下,我們將嘗試學習最小化我們的預測和觀察值之間的距離的模型。在我們的大部分章節中,我們將專注于最小化平方誤差損失函數。正如我們稍后將看到的,這種損失對應于我們的數據被高斯噪聲破壞的假設。
1.3.1.2。分類
雖然回歸模型非常適合解決多少問題?問題,很多問題都不適用于這個模板。例如,一家銀行希望在其移動應用程序中添加支票掃描功能。這將涉及客戶使用他們智能手機的相機拍攝一張支票的照片,并且該應用程序需要能夠自動理解圖像中看到的文本。具體來說,它還需要更加健壯地理解手寫文本,例如將手寫字符映射到已知字符之一。這種是哪一種?問題稱為 分類。它使用一組不同于回歸算法的算法進行處理,盡管許多技術會繼續使用。
在分類中,我們希望我們的模型查看特征,例如圖像中的像素值,然后在一些離散的選項集中預測樣本屬于哪個類別(正式稱為類)。對于手寫數字,我們可能有十個類別,對應于數字 0 到 9。最簡單的分類形式是當只有兩個類別時,我們稱之為二元分類問題。例如,我們的數據集可能包含動物的圖像,我們的標簽可能是類 {cat,dog} . 在回歸中,我們尋找回歸器來輸出數值,在分類中,我們尋找分類器,其輸出是預測的類分配。
由于我們將在本書變得更加技術性的過程中進入的原因,可能很難優化只能輸出硬分類分配的模型,例如“貓”或“狗”。在這些情況下,用概率語言來表達我們的模型通常要容易得多。給定示例的特征,我們的模型為每個可能的類分配一個概率。回到我們的動物分類示例,其中類是 {cat,dog} ,分類器可能會看到一張圖像并輸出圖像是貓的概率為 0.9。我們可以通過說分類器 90% 確定圖像描繪了一只貓來解釋這個數字。預測類別的概率大小傳達了一種不確定性概念。這不是不確定性的唯一概念,我們將在更高級的章節中討論其他概念。
當我們有兩個以上可能的類時,我們將問題稱為 多類分類。常見的例子包括手寫字符識別 {0,1,2,…9,a,b,c,…} . 雖然我們通過嘗試最小化平方誤差損失函數來解決回歸問題,但分類問題的常見損失函數稱為交叉熵,其名稱可以通過后續章節中對信息論的介紹來揭開神秘面紗。
請注意,最有可能的類別不一定是您要用于決定的類別。假設你在你的后院發現了一個漂亮的蘑菇,如圖 1.3.2 所示。
圖 1.3.2死亡帽——不能吃的東西!
現在,假設您構建了一個分類器并訓練它根據照片預測蘑菇是否有毒。假設我們的毒物檢測分類器輸出圖 1.3.2 包含死亡上限的概率為 0.2。換句話說,分類器 80% 確定我們的蘑菇不是死帽。不過,你必須是個傻瓜才能吃它。那是因為一頓美味晚餐的某些好處不值得冒 20% 的死亡風險。換句話說,不確定性風險的影響遠遠超過了收益。因此,我們需要計算我們作為損失函數所產生的預期風險,即我們需要將結果的概率乘以與之相關的利益(或傷害)。在這種情況下,食用蘑菇所造成的損失可能是 0.2×∞+0.8×0=∞ ,而丟棄它的損失是 0.2×0+0.8×1=0.8 . 我們的謹慎是有道理的:正如任何真菌學家會告訴我們的那樣,圖 1.3.2中的蘑菇 實際上是一個死亡帽。
分類可能比二進制、多類甚至多標簽分類復雜得多。例如,有一些用于尋址層次結構的分類變體。層次結構假設在許多類之間存在一些關系。所以不是所有的錯誤都是平等的——如果我們必須犯錯,我們寧愿錯誤分類到一個相關的類而不是一個遙遠的類。通常,這被稱為層次分類。一個早期的例子要歸功于林奈,他將動物組織成一個等級。
在動物分類的情況下,將貴賓犬(一種犬種)誤認為雪納瑞(另一種犬種)可能并沒有那么糟糕,但如果將貴賓犬與恐龍混淆,我們的模型將付出巨大的代價。哪個層次結構相關可能取決于您計劃如何使用模型。例如,響尾蛇和吊襪帶蛇可能在系統發育樹上很接近,但將響尾蛇誤認為吊襪帶可能是致命的。
1.3.1.3。標記
一些分類問題很適合二進制或多類分類設置。例如,我們可以訓練一個正常的二元分類器來區分貓和狗。鑒于計算機視覺的當前狀態,我們可以使用現成的工具輕松做到這一點。盡管如此,無論我們的模型有多準確,當分類器遇到不來梅城市音樂家的圖像時,我們可能會遇到麻煩,這是 一個流行的德國童話故事,在圖 1.3.3中有四只動物。
圖 1.3.3驢、狗、貓和公雞。
如您所見,圖 1.3.3中有一只貓,還有一只公雞、一只狗和一頭驢,背景中有一些樹。根據我們最終想要對模型做什么,將其視為二元分類問題可能沒有多大意義。相反,我們可能想給模型一個選項,說圖像描繪了一只貓、一只狗、一頭驢和一只公雞。
學習預測不互斥的類的問題稱為多標簽分類。自動標記問題通常最好描述為多標簽分類問題。想想人們可能會在技術博客上應用的標簽,例如“機器學習”、“技術”、“小工具”、“編程語言”、“Linux”、“云計算”、“AWS”。一篇典型的文章可能會應用 5-10 個標簽,因為這些概念是相關的。有關“云計算”的帖子可能會提到“AWS”,而有關“機器學習”的帖子也可能涉及“編程語言”。
在處理生物醫學文獻時,我們也必須處理這類問題,其中正確標記文章很重要,因為它允許研究人員對文獻進行詳盡的審查。在美國國家醫學圖書館,許多專業注釋者檢查每篇在 PubMed 中被索引的文章,以將其與 MeSH 中的相關術語相關聯,MeSH 是大約 28000 個標簽的集合。這是一個耗時的過程,注釋者通常在歸檔和標記之間有一年的延遲。在這里可以使用機器學習來提供臨時標簽,直到每篇文章都可以進行適當的人工審核。事實上,幾年來,BioASQ 組織舉辦的比賽正是為了做到這一點。
1.3.1.4。搜索
有時我們不只是想將每個示例分配給存儲桶或實際值。在信息檢索領域,我們希望對一組項目進行排名。以網絡搜索為例。目標不是確定特定頁面是否與查詢相關,而是確定眾多搜索結果中的哪一個與特定用戶最相關。我們非常關心相關搜索結果的順序,我們的學習算法需要從更大的集合中生成有序的元素子集。換句話說,如果我們被要求從字母表中生成前 5 個字母,則返回“ABCDE”和“CABED”是有區別的。即使結果集相同,集合內的順序也很重要。
這個問題的一種可能的解決方案是首先為集合中的每個元素分配一個相應的相關性分數,然后檢索評分最高的元素。 PageRank是谷歌搜索引擎背后的原始秘密武器,是這種評分系統的早期例子,但它的特殊之處在于它不依賴于實際查詢。在這里,他們依靠一個簡單的相關過濾器來識別相關項目集,然后使用 PageRank 對包含查詢詞的結果進行排序。如今,搜索引擎使用機器學習和行為模型來獲得與查詢相關的相關分數。有整個學術會議專門討論這個主題。
1.3.1.5。推薦系統
推薦系統是另一個與搜索和排名相關的問題設置。就目標是向用戶顯示一組相關項目而言,這些問題是相似的。主要區別在于在推薦系統的上下文中強調對特定用戶的個性化。例如,對于電影推薦,科幻迷的結果頁面和彼得塞勒斯喜劇鑒賞家的結果頁面可能會有很大差異。類似的問題出現在其他推薦設置中,例如零售產品、音樂和新聞推薦。
在某些情況下,客戶會提供明確的反饋來傳達他們對特定產品的喜愛程度(例如,亞馬遜、IMDb 和 Goodreads 上的產品評級和評論)。在其他一些情況下,它們提供隱式反饋,例如,通過跳過播放列表上的標題,這可能表示不滿意,但可能只是表示歌曲在上下文中不合適。在最簡單的公式中,這些系統被訓練來估計一些分數,例如給定用戶和項目的估計評分或購買概率。
給定這樣的模型,對于任何給定的用戶,我們可以檢索得分最高的對象集,然后可以將其推薦給用戶。生產系統要先進得多,并且在計算此類分數時會考慮詳細的用戶活動和項目特征。圖 1.3.4是亞馬遜推薦的深度學習書籍示例,這些書籍基于針對個人偏好進行調整的個性化算法。
圖 1.3.4亞馬遜推薦的深度學習書籍。
盡管具有巨大的經濟價值,但天真地建立在預測模型之上的推薦系統仍存在一些嚴重的概念缺陷。首先,我們只觀察審查的反饋:用戶優先評價他們強烈喜歡的電影。例如,在 5 分制中,您可能會注意到許多項目獲得了很多 5 星和 1 星評級,但很少有 3 星評級。此外,當前的購買習慣往往是當前推薦算法的結果,但學習算法并不總是考慮到這個細節。因此,有可能形成反饋循環,其中推薦系統優先推送一個項目,然后該項目被認為是更好的(由于更多的購買),進而被更頻繁地推薦。許多關于如何處理審查、激勵和反饋循環的問題都是重要的開放性研究問題。
1.3.1.6。序列學習
到目前為止,我們已經研究了一些固定數量的輸入并產生固定數量的輸出的問題。例如,我們考慮從一組固定的特征來預測房價:平方英尺、臥室數量、浴室數量、步行到市中心的時間。我們還討論了從(固定維度的)圖像映射到它屬于固定數量類中的每一個的預測概率,或者獲取用戶 ID 和產品 ID,并預測星級。在這些情況下,一旦我們將固定長度的輸入輸入模型以生成輸出,模型就會立即忘記它剛剛看到的內容。
如果我們的輸入真的都具有相同的維度并且連續的輸入真的彼此無關,那么這可能很好。但是我們將如何處理視頻片段?在這種情況下,每個片段可能包含不同數量的幀。如果我們考慮到前一幀或后一幀,我們對每一幀中發生的事情的猜測可能會更強。語言也是如此。一個流行的深度學習問題是機器翻譯:提取某種源語言的句子并預測其翻譯成另一種語言的任務。
這些問題在醫學上也存在。我們可能需要一個模型來監測重癥監護病房中的患者,并在他們在接下來的 24 小時內死亡的風險超過某個閾值時發出警報。我們絕對不希望這個模型每小時丟棄它所知道的關于患者病史的所有信息,而只是根據最近的測量結果做出預測。
這些問題是機器學習最令人興奮的應用之一,它們是序列學習的實例。它們需要一個模型來攝取輸入序列或發出輸出序列(或兩者兼而有之)。具體來說,序列到序列學習 考慮輸入和輸出都是可變長度序列的問題,例如機器翻譯和從口語中轉錄文本。雖然不可能考慮所有類型的序列轉換,但以下特殊情況值得一提。
標記和解析。這涉及使用屬性注釋文本序列。換句話說,輸入和輸出的數量基本相同。例如,我們可能想知道動詞和主語在哪里。或者,我們可能想知道哪些詞是命名實體。一般來說,目標是根據結構和語法假設對文本進行分解和注釋,以獲得一些注釋。這聽起來比實際上更復雜。下面是一個非常簡單的示例,它使用標記來注釋句子,這些標記指示哪些單詞引用了命名實體(標記為“Ent”)。
Tom has dinner in Washington with Sally Ent - - - Ent - Ent自動語音識別。對于語音識別,輸入序列是說話者的錄音(如圖 1.3.5所示),輸出是說話者所說內容的文本記錄。挑戰在于音頻幀(聲音通常以 8kHz 或 16kHz 采樣)比文本多得多,即音頻和文本之間沒有 1:1 的對應關系,因為數千個樣本可能對應于一個口語單詞。這些是序列到序列的學習問題,其中輸出比輸入短得多。
圖 1.3.5在錄音中。-D-e-e-p- L-ea-r-ni-ng-
文字轉語音。這與自動語音識別相反。換句話說,輸入是文本,輸出是音頻文件。在這種情況下,輸出比輸入長得多。雖然人類很容易識別出壞的音頻文件,但這對計算機來說并不是那么簡單。
機器翻譯。與語音識別的情況不同,其中相應的輸入和輸出以相同的順序(對齊后)發生,在機器翻譯中,順序反轉可能至關重要。換句話說,雖然我們仍在將一個序列轉換為另一個序列,但輸入和輸出的數量以及相應數據示例的順序都不會被假設為相同??紤]以下德國人將動詞放在句子末尾的特殊傾向的說明性示例。
German: Haben Sie sich schon dieses grossartige Lehrwerk angeschaut? English: Did you already check out this excellent tutorial? Wrong alignment: Did you yourself already this excellent tutorial looked-at?在其他學習任務中會出現許多相關問題。例如,確定用戶閱讀網頁的順序是一個二維布局分析問題。對話問題表現出各種額外的復雜性,其中確定接下來要說什么需要考慮現實世界的知識和跨越很長時間距離的對話的先前狀態。這些都是活躍的研究領域。
1.3.2. 無監督和自監督學習
到目前為止,所有示例都與監督學習有關,即我們為模型提供包含特征和相應標簽值的巨大數據集的情況。你可以認為受監督的學習者擁有極其專業的工作和極其平庸的老板。老板站在你的肩膀上,準確地告訴你在每種情況下該做什么,直到你學會從情況映射到行動。為這樣的老板工作聽起來很蹩腳。另一方面,取悅這個老板很容易。您只需盡快識別模式并模仿他們的行為即可。
以完全相反的方式,為一個不知道他們想要你做什么的老板工作可能會令人沮喪。然而,如果你打算成為一名數據科學家,你最好習慣它。老板可能只是給你一大堆數據,然后告訴你用它做一些數據科學! 這聽起來很模糊,因為它是。我們將這類問題稱為 無監督學習,我們可以提出的問題類型和數量僅受我們創造力的限制。我們將在后面的章節中討論無監督學習技術。為了暫時激發您的興趣,我們描述了您可能會問的以下幾個問題。
我們能不能找到少量能準確概括數據的原型?給定一組照片,我們可以將它們分為風景照片、狗、嬰兒、貓和山峰的照片嗎?同樣,給定一組用戶的瀏覽活動,我們可以將他們歸類為具有相似行為的用戶嗎?這個問題通常被稱為 集群。
我們能否找到少量的參數來準確捕捉數據的相關屬性?球的軌跡可以通過球的速度、直徑和質量很好地描述。裁縫開發了少量參數,可以相當準確地描述人體形狀,以達到合身的目的。這些問題被稱為子空間估計。如果相關性是線性的,則稱為主成分分析。
歐幾里得空間中是否存在(任意結構的)對象的表示,使得符號屬性可以很好地匹配?這可用于描述實體及其關系,例如“羅馬” ? “意大利” + “法國” = “巴黎”。
是否描述了我們觀察到的大部分數據的根本原因?例如,如果我們有關于房價、污染、犯罪、位置、教育和工資的人口統計數據,我們能否僅根據經驗數據發現它們之間的關系?與因果關系和概率圖形模型相關的領域解決了這個問題。
無監督學習的另一個重要且令人興奮的最新發展是生成對抗網絡的出現。這些為我們提供了一種合成數據的程序方法,甚至是復雜的結構化數據,如圖像和音頻。底層統計機制是檢查真假數據是否相同的測試。
作為無監督學習的一種形式,自監督學習利用未標記的數據在訓練中提供監督,例如通過使用其他部分預測數據的某些保留部分。對于文本,我們可以通過使用大型語料庫中的周圍單詞(上下文)預測隨機掩碼的單詞來訓練模型“填補空白”,而無需任何標記工作[Devlin et al., 2018]!對于圖像,我們可以訓練模型來判斷同一圖像的兩個裁剪區域之間的相對位置[Doersch et al., 2015]。在這兩個自我監督學習的例子中,預測可能的單詞和相對位置的訓練模型都是分類任務(來自監督學習)。
1.3.3. 與環境交互
到目前為止,我們還沒有討論數據實際來自哪里,或者當機器學習模型生成輸出時實際發生了什么。這是因為監督學習和無監督學習并沒有以非常復雜的方式解決這些問題。在任何一種情況下,我們都會預先抓取一大堆數據,然后讓我們的模式識別機器運轉起來,而無需再次與環境交互。因為所有的學習都是在算法與環境斷開后進行的,所以這有時被稱為離線學習。對于監督學習,考慮從環境中收集數據的過程如圖 1.3.6 所示。
圖 1.3.6從環境中收集數據進行監督學習。
這種離線學習的簡單性有其魅力。好處是我們可以孤立地擔心模式識別,而不會分心這些其他問題。但缺點是問題的表述非常有限。如果你更有野心,或者如果你從小就讀過阿西莫夫的機器人系列,那么你可能會想象人工智能機器人不僅能夠做出預測,還能在世界上采取行動。我們想考慮智能代理,而不僅僅是預測模型。這意味著我們需要考慮選擇行動,而不僅僅是做出預測。此外,與預測不同,行動實際上會影響環境。如果我們想訓練一個智能代理,我們必須考慮其行為可能影響代理未來觀察的方式。
考慮與環境的交互會引發一整套新的建模問題。以下只是幾個例子。
-
環境是否記得我們之前所做的事情?
-
環境是否想幫助我們,例如,用戶將文本讀入語音識別器?
-
環境是否想擊敗我們,即像垃圾郵件過濾(針對垃圾郵件發送者)或玩游戲(與對手)這樣的對抗環境?
-
環境不在乎嗎?
-
環境是否有動態變化?例如,未來的數據是否總是與過去相似,或者模式是否會隨著時間而變化,無論是自然地還是響應我們的自動化工具?
當訓練和測試數據不同時,最后一個問題提出了分布偏移的問題。這是我們大多數人在參加講師撰寫的考試時遇到的問題,而作業是由他的助教撰寫的。接下來,我們將簡要描述強化學習,這是一種明確考慮與環境交互的設置。
1.3.4。強化學習
如果您有興趣使用機器學習來開發與環境交互并采取行動的代理,那么您可能最終會專注于強化學習。這可能包括應用于機器人技術、對話系統,甚至開發用于視頻游戲的人工智能 (AI)。將深度學習應用于強化學習問題的深度強化學習已經大受歡迎。僅使用視覺輸入在 Atari 游戲中擊敗人類的突破性深度 Q 網絡,以及在棋盤游戲 Go 中擊敗世界冠軍的 AlphaGo 程序就是兩個突出的例子。
強化學習給出了一個非常一般的問題陳述,其中代理在一系列時間步長上與環境交互。在每個時間步,代理接收來自環境的一些觀察,并且必須選擇隨后通過某種機制(有時稱為執行器)傳輸回環境的動作。最后,代理從環境中獲得獎勵。該過程如圖 1.3.7 所示。然后代理接收后續觀察,并選擇后續動作,依此類推。強化學習代理的行為由策略控制。簡而言之,政策只是一個將環境觀察映射到動作的函數。強化學習的目標是產生一個好的策略。
圖 1.3.7強化學習與環境的交互。
很難夸大強化學習框架的普遍性。例如,我們可以將任何監督學習問題視為強化學習問題。假設我們有一個分類問題。我們可以創建一個強化學習代理,每個類別對應一個動作。然后,我們可以創建一個環境,該環境給出的獎勵與原始監督學習問題的損失函數完全相同。
話雖如此,強化學習還可以解決監督學習無法解決的許多問題。例如,在監督學習中,我們總是期望訓練輸入與正確的標簽相關聯。但是在強化學習中,我們并不假設對于每次觀察,環境都會告訴我們最佳行動。一般來說,我們只是得到一些獎勵。此外,環境甚至可能不會告訴我們哪些行為導致了獎勵。
以國際象棋為例。唯一真正的獎勵信號出現在游戲結束時,當我們贏了,我們可以分配獎勵 1,或者當我們輸了,我們可以分配 -1 的獎勵。因此,強化學習者必須處理信用分配問題:確定哪些行為應歸功于或歸咎于結果。對于在 10 月 11 日獲得晉升的員工也是如此。該晉升可能反映了上一年大量精心挑選的行動。未來獲得更多晉升需要弄清楚在此過程中采取的行動導致了晉升。
強化學習器可能還必須處理部分可觀察性的問題。也就是說,當前的觀察可能無法告訴您有關當前狀態的所有信息。假設一個清潔機器人發現自己被困在一所房子的許多相同壁櫥中。推斷機器人的精確位置(以及狀態)可能需要在進入壁櫥之前考慮其先前的觀察結果。
最后,在任何給定點,強化學習者可能知道一個好的策略,但可能還有許多其他更好的策略,代理從未嘗試過。強化學習者必須不斷選擇是利用當前已知的最佳策略作為策略,還是探索策略空間,可能會放棄一些短期獎勵以換取知識。
一般的強化學習問題是一個非常普遍的設置。行動會影響隨后的觀察。僅根據所選操作觀察獎勵??梢酝耆虿糠值赜^察環境。一次性考慮所有這些復雜性可能對研究人員提出太多要求。此外,并非每個實際問題都表現出所有這些復雜性。因此,研究人員研究了一些強化學習問題的特殊情況。
當環境被充分觀察時,我們將強化學習問題稱為馬爾可夫決策過程。當狀態不依賴于先前的動作時,我們稱該問題為上下文強盜問題。當沒有狀態,只有一組初始未知獎勵的可用動作時,這個問題就是經典的多臂老虎機問題。
1.4. 歷史
我們剛剛回顧了機器學習可以解決的一小部分問題。對于各種各樣的機器學習問題,深度學習提供了強大的工具來解決這些問題。盡管許多深度學習方法都是最近才發明的,但使用數據和神經網絡(許多深度學習模型的名稱)進行編程的核心思想已經研究了幾個世紀。事實上,長期以來,人類一直渴望分析數據和預測未來結果,而大部分自然科學都源于此。例如,伯努利分布以Jacob Bernoulli (1655-1705)命名,而高斯分布由Carl Friedrich Gauss (1777-1855)發現. 例如,他發明了最小均方算法,該算法至今仍被用于解決從保險計算到醫療診斷等無數問題。這些工具催生了自然科學中的實驗方法——例如,與電阻器中的電流和電壓相關的歐姆定律可以用線性模型完美地描述。
即使在中世紀,數學家也對估計有著敏銳的直覺。例如,雅各布·科貝爾 (Jacob K?bel,1460-1533)的幾何書 說明了對 16 名成年男性腳的長度進行平均以獲得平均腳長。
圖 1.4.1估計腳的長度。
圖 1.4.1說明了這個估計器是如何工作的。16名成年男子在離開教堂時被要求排成一排。然后將它們的總長度除以 16,以獲得現在為 1 英尺的估計值。這個“算法”后來被改進以處理畸形的腳——腳最短和最長的 2 人分別被送走,只對其余的人取平均值。這是修剪平均估計的最早示例之一。
隨著數據的收集和可用性,統計數據真正起飛。它的一位巨匠Ronald Fisher (1890-1962)對其理論及其在遺傳學中的應用做出了重大貢獻。他的許多算法(如線性判別分析)和公式(如Fisher信息矩陣)至今仍在頻繁使用。事實上,即使是 Fisher 在 1936 年發布的 Iris 數據集,有時仍然被用來說明機器學習算法。他也是優生學的支持者,這應該提醒我們,數據科學在道德上的可疑使用與其在工業和自然科學中的生產性使用一樣悠久而持久。
對機器學習的第二個影響來自 Claude Shannon (1916-2001)的信息論和Alan Turing (1912-1954)的計算理論。圖靈提出了“機器能思考嗎?”的問題。在他著名的論文Computer Machinery and Intelligence [Turing, 1950]中。在他所說的圖靈測試中,如果人類評估者難以根據文本交互區分來自機器和人類的回復,則可以認為機器是智能的。
另一個影響可以在神經科學和心理學中找到。畢竟,人類顯然表現出智能行為。因此,詢問是否可以解釋并可能對這種能力進行逆向工程是合理的。以這種方式啟發的最古老的算法之一是由Donald Hebb (1904-1985)制定的。在他的開創性著作《行為的組織》 [Hebb & Hebb, 1949],他假設神經元通過正強化學習。這被稱為赫布學習規則。它是 Rosenblatt 感知器學習算法的原型,它為當今支持深度學習的許多隨機梯度下降算法奠定了基礎:強化理想行為并減少不良行為,以獲得神經網絡中參數的良好設置。
生物靈感是神經網絡得名的原因。一個多世紀以來(可追溯到 Alexander Bain,1873 年和 James Sherrington,1890 年的模型),研究人員一直試圖組裝類似于相互作用神經元網絡的計算電路。隨著時間的推移,對生物學的解釋已經變得不那么字面了,但名字卻被保留了下來。其核心是當今大多數網絡中都可以找到的一些關鍵原則:
線性和非線性處理單元的交替,通常稱為層。
使用鏈式法則(也稱為反向傳播)一次調整整個網絡中的參數。
在最初的快速進展之后,神經網絡的研究從 1995 年左右一直到 2005 年都萎靡不振。這主要是由于兩個原因。首先,訓練網絡在計算上非常昂貴。雖然在上個世紀末隨機存取存儲器很豐富,但計算能力卻很匱乏。其次,數據集相對較小。事實上,Fisher 1932 年的 Iris 數據集是測試算法有效性的流行工具。具有 60000 個手寫數字的 MNIST 數據集被認為是巨大的。
鑒于數據和計算的稀缺性,強大的統計工具(如核方法、決策樹和圖形模型)在經驗上證明是優越的。與神經網絡不同,它們不需要數周的訓練,并提供具有強大理論保證的可預測結果。
1.5。深度學習之路
由于萬維網、為數億在線用戶提供服務的公司的出現、廉價、高質量傳感器的傳播、廉價的數據存儲(克萊德定律),這在很大程度上隨著大量數據的隨時可用而發生了變化,以及廉價的計算(摩爾定律),特別是 GPU 的形式,最初是為計算機游戲而設計的。突然之間,似乎在計算上不可行的算法和模型變得相關(反之亦然)。這在表 1.5.1中得到了最好的說明。
表 1.5.1數據集與計算機內存和計算能力
很明顯,隨機存取存儲器并沒有跟上數據增長的步伐。與此同時,計算能力的增長已經超過了可用數據的增長速度。這意味著統計模型需要提高內存效率(這通常通過添加非線性來實現),同時由于計算預算增加,需要花費更多時間優化這些參數。因此,機器學習和統計的最佳點從(廣義)線性模型和核方法轉移到了深度神經網絡。這也是為什么許多深度學習中流砥柱的原因之一,例如多層感知器 [McCulloch & Pitts, 1943]、卷積神經網絡 [LeCun et al., 1998]、長短期記憶 [Hochreiter & Schmidhuber, 1997]和 Q-Learning [Watkins & Dayan, 1992]在相對休眠相當長一段時間后,在過去十年中基本上被“重新發現”。
統計模型、應用程序和算法的最新進展有時被比作寒武紀大爆發:物種進化的快速進展時刻。事實上,最先進的技術不僅僅是可用資源的結果,它適用于幾十年前的算法。請注意,下面的列表幾乎沒有觸及幫助研究人員在過去十年中取得巨大進步的想法的表面。
-
容量控制的新方法,例如dropout [Srivastava et al., 2014],有助于減輕過度擬合的危險。這是通過在整個神經網絡中應用噪聲注入[Bishop, 1995]來實現的,將權重替換為用于訓練目的的隨機變量。
-
注意力機制解決了困擾統計學一個多世紀的第二個問題:如何在不增加可學習參數數量的情況下增加系統的內存和復雜性。研究人員通過使用只能被視為可學習的指針結構找到了一個優雅的解決方案 [Bahdanau et al., 2014]。不必記住整個文本序列,例如,對于固定維度表示的機器翻譯,需要存儲的只是指向翻譯過程中間狀態的指針。這允許顯著提高長序列的準確性,因為模型不再需要在開始生成新序列之前記住整個序列。
-
多階段設計,例如,通過記憶網絡 [Sukhbaatar et al., 2015]和神經程序解釋器[Reed & DeFreitas, 2015]允許統計建模者描述迭代的推理方法。這些工具允許重復修改深度神經網絡的內部狀態,從而在推理鏈中執行后續步驟,類似于處理器如何修改內存以進行計算。
-
另一個關鍵發展是生成對抗網絡的發明[Goodfellow et al., 2014]. 傳統上,用于密度估計和生成模型的統計方法側重于尋找適當的概率分布和(通常是近似的)從中采樣的算法。因此,這些算法在很大程度上受到統計模型缺乏靈活性的限制。生成對抗網絡的關鍵創新是用具有可微參數的任意算法替換采樣器。然后以鑒別器(實際上是雙樣本測試)無法區分假數據和真實數據的方式對這些數據進行調整。通過使用任意算法生成數據的能力,它為各種技術開辟了密度估計。疾馳的斑馬 [Zhu et al., 2017]和假名人面孔的 例子[Karras et al., 2017]都證明了這一進步。即使是業余涂鴉者也可以僅根據描述場景布局的草圖來制作逼真的圖像[Park et al., 2019]。
-
在許多情況下,單個 GPU 不足以處理大量可用于訓練的數據。在過去的十年中,構建并行和分布式訓練算法的能力得到了顯著提高。設計可擴展算法的關鍵挑戰之一是深度學習優化的主力,隨機梯度下降,依賴于要處理的相對較小的小批量數據。同時,小批量限制了 GPU 的效率。因此,在 1024 個 GPU 上進行小批量訓練,例如每批 32 張圖像,總計約 32000 張圖像的小批量。最近的工作,首先是 Li [Li, 2017],隨后是 [You et al., 2017]和[Jia et al., 2018] 將大小提高到 64000 個觀察值,將 ResNet-50 模型在 ImageNet 數據集上的訓練時間減少到不到 7 分鐘。為了比較——最初的訓練時間是以天為單位測量的。
-
并行計算的能力也對強化學習的進步做出了相當重要的貢獻,至少在模擬是一種選擇時是這樣。這導致計算機在圍棋、雅達利游戲、星際爭霸和物理模擬(例如,使用 MuJoCo)中實現超人性能方面取得了重大進展。例如,參見 [Silver et al., 2016],了解如何在 AlphaGo 中實現這一目標。簡而言之,如果有大量(狀態、動作、獎勵)三元組可用,即只要有可能嘗試很多事情來了解它們之間的關系,強化學習效果最好。模擬提供了這樣的途徑。
-
深度學習框架在傳播思想方面發揮了至關重要的作用。允許輕松建模的第一代框架包括Caffe、 Torch和 Theano。許多開創性的論文都是使用這些工具編寫的。到目前為止,它們已被 TensorFlow(通常通過其高級 API Keras使用)、 CNTK、Caffe 2和Apache MXNet 所取代。第三代工具,即用于深度學習的命令式工具,可以說是由 Chainer帶頭的,它使用類似于 Python NumPy 的語法來描述模型。這個想法被PyTorch和MXNet 的 Gluon API和 Jax。
構建更好工具的系統研究人員和構建更好神經網絡的統計建模人員之間的分工大大簡化了事情。例如,訓練一個線性邏輯回歸模型曾經是一個不平凡的家庭作業問題,值得給新的機器學習博士。2014年卡內基梅隆大學的學生。到現在,這個任務用不到10行代碼就可以完成,牢牢掌握在程序員的手中。
1.6. 成功的故事
人工智能在交付成果方面有著悠久的歷史,否則這些成果將難以實現。例如,自 1990 年代以來就已經部署了使用光學字符識別的郵件分揀系統。畢竟,這是著名的 MNIST 手寫數字數據集的來源。這同樣適用于閱讀銀行存款支票和對申請人的信用評分。自動檢查金融交易是否存在欺詐行為。這構成了許多電子商務支付系統的支柱,例如 PayPal、Stripe、支付寶、微信、Apple、Visa 和 MasterCard。幾十年來,國際象棋計算機程序一直具有競爭力。機器學習提供互聯網上的搜索、推薦、個性化和排名。換句話說,機器學習無處不在,盡管經常隱藏在視線之外。
直到最近,人工智能才成為人們關注的焦點,主要是因為解決了以前被認為難以解決且與消費者直接相關的問題。許多這樣的進步歸功于深度學習。
-
智能助手,如蘋果的 Siri、亞馬遜的 Alexa 和谷歌的助手,能夠以合理的準確度回答口語問題。這包括一些瑣碎的任務,例如打開電燈開關(對殘疾人士的恩惠)、預約理發師和提供電話支持對話。這可能是人工智能正在影響我們生活的最明顯跡象。
-
數字助理的一個關鍵要素是準確識別語音的能力。此類系統的準確性逐漸提高到在某些應用中達到與人類相同的程度[Xiong et al., 2018]。
-
對象識別同樣取得了長足的進步。在 2010 年,估計圖片中的對象是一項相當具有挑戰性的任務。在 ImageNet 基準測試中,NEC 實驗室和伊利諾伊大學厄巴納-香檳分校的研究人員實現了 28% 的 top-5 錯誤率 [Lin et al., 2010]。到 2017 年,這個錯誤率降低到 2.25% [Hu et al., 2018]。同樣,在識別鳥類或診斷皮膚癌方面也取得了驚人的成果。
-
游戲曾經是人類智慧的堡壘。從 TD-Gammon 開始,一個使用時間差異強化學習、算法和計算進步來玩西洋雙陸棋的程序已經產生了適用于廣泛應用的算法。與西洋雙陸棋不同,國際象棋的狀態空間和動作集要復雜得多。DeepBlue 使用大規模并行性、專用硬件和通過博弈樹進行高效搜索擊敗了 Garry Kasparov [Campbell et al., 2002]。由于其巨大的狀態空間,圍棋更加困難。AlphaGo 在 2015 年使用深度學習與蒙特卡洛樹采樣相結合,達到了人類水平 [Silver et al., 2016]. 撲克中的挑戰是狀態空間很大并且沒有被完全觀察到(我們不知道對手的牌)。Libratus 使用有效的結構化策略在撲克中超越了人類的表現 [Brown & Sandholm, 2017]。這說明了游戲中令人印象深刻的進步以及高級算法在其中發揮了關鍵作用的事實。
-
人工智能進步的另一個跡象是自動駕駛汽車和卡車的出現。雖然目前還沒有完全實現完全自治,但在這個方向上已經取得了巨大的進展,特斯拉、英偉達和 Waymo 等公司推出的產品至少可以實現部分自治。完全自動駕駛之所以如此具有挑戰性,是因為正確的駕駛需要有感知、推理和將規則整合到系統中的能力。目前,深度學習主要用于這些問題的計算機視覺方面。其余部分由工程師大量調整。
同樣,上面的列表幾乎沒有觸及機器學習影響實際應用的表面。例如,機器人學、物流學、計算生物學、粒??子物理學和天文學至少部分歸功于機器學習。因此,機器學習正成為工程師和科學家無處不在的工具。
人工智能啟示錄或人工智能奇點的問題經常在關于人工智能的非技術文章中提出。令人擔憂的是,機器學習系統會以某種方式變得有感知力,并獨立于程序員(和大師)決定直接影響人類生計的事情。在某種程度上,人工智能已經以直接的方式影響了人類的生計:信用度是自動評估的,自動駕駛儀主要用于導航車輛,是否準予保釋的決定使用統計數據作為輸入。更輕浮的是,我們可以讓 Alexa 打開咖啡機。
幸運的是,我們遠不是一個準備好操縱其人類創造者(或燒掉他們的咖啡)的有感知力的人工智能系統。首先,人工智能系統是以特定的、面向目標的方式設計、訓練和部署的。雖然他們的行為可能給人一種普遍智能的錯覺,但它是設計基礎的規則、啟發式和統計模型的組合。其次,目前的 通用人工智能工具根本不存在能夠自我改進、自我推理以及能夠在嘗試解決通用任務的同時修改、擴展和改進自己的架構的工具。
一個更緊迫的問題是人工智能如何在我們的日常生活中被使用??ㄜ囁緳C和店員完成的許多瑣碎任務很可能可以并且將會實現自動化。農場機器人可能會降低有機農業的成本,但它們也會使收割作業自動化。工業革命的這一階段可能會對大部分社會產生深遠的影響,因為卡車司機和店員是許多國家最常見的工作。此外,如果不加注意地應用統計模型,可能會導致種族、性別或年齡偏見,如果自動驅動相應的決策,則會引起對程序公平性的合理擔憂。確保謹慎使用這些算法很重要。
1.7. 特征
到目前為止,我們已經廣泛地討論了機器學習,它既是人工智能的一個分支,也是人工智能的一種方法。盡管深度學習是機器學習的一個子集,但令人眼花繚亂的算法和應用程序集使得很難評估深度學習的具體成分可能是什么。這就像試圖確定披薩所需的成分一樣困難,因為幾乎每個成分都是可以替代的。
正如我們所描述的,機器學習可以使用數據來學習輸入和輸出之間的轉換,例如在語音識別中將音頻轉換為文本。這樣做時,通常需要以適合算法的方式表示數據,以將這些表示轉換為輸出。深度學習的深度正是因為它的模型學習了許多層的轉換,其中每一層都提供一個級別的表示。例如,靠近輸入的層可能代表數據的低級細節,而靠近分類輸出的層可能代表用于區分的更抽象的概念。由于表示學習深度學習旨在尋找表征本身,可以稱為多級表征學習。
到目前為止,我們討論的問題,例如從原始音頻信號中學習,圖像的原始像素值,或任意長度的句子與外語對應物之間的映射,都是深度學習擅長的問題,也是傳統機器學習擅長的問題。方法步履蹣跚。事實證明,這些多層模型能夠以以前的工具無法解決的方式處理低級感知數據。可以說,深度學習方法最重要的共同點是使用端到端訓練。也就是說,不是基于單獨調整的組件組裝系統,而是構建系統然后共同調整它們的性能。例如,在計算機視覺中,科學家們用來分離特征工程的過程從構建機器學習模型的過程中。Canny 邊緣檢測器 [Canny, 1987]和 Lowe 的 SIFT 特征提取器 [Lowe, 2004]作為將圖像映射到特征向量的算法占據主導地位十多年。在過去的日子里,將機器學習應用于這些問題的關鍵部分包括提出手動設計的方法,將數據轉換為某種適合淺層模型的形式。不幸的是,與算法自動執行的對數百萬個選擇的一致評估相比,人類通過獨創性可以完成的工作很少。當深度學習接管時,這些特征提取器被自動調整的過濾器所取代,從而產生了卓越的準確性。
因此,深度學習的一個關鍵優勢在于它不僅取代了傳統學習管道末端的淺層模型,而且取代了特征工程的勞動密集型過程。此外,通過取代大部分特定領域的預處理,深度學習消除了許多以前分隔計算機視覺、語音識別、自然語言處理、醫學信息學和其他應用領域的界限,提供了一套統一的工具來解決各種問題。
除了端到端訓練之外,我們正在經歷從參數統計描述到完全非參數模型的轉變。當數據稀缺時,需要依靠簡化對現實的假設來獲得有用的模型。當數據豐富時,可以用更準確地擬合現實的非參數模型來代替。在某種程度上,這反映了物理學在上世紀中葉隨著計算機的出現而取得的進步。與其手動求解電子行為的參數近似,現在可以求助于相關偏微分方程的數值模擬。這導致了更準確的模型,盡管通常以犧牲可解釋性為代價。
與以前工作的另一個區別是接受次優解決方案,處理非凸非線性優化問題,以及在證明它們之前嘗試事物的意愿。這種在處理統計問題方面新發現的經驗主義,再加上人才的迅速涌入,導致了實用算法的快速發展,盡管在許多情況下是以修改和重新發明存在了幾十年的工具為代價的。
最后,深度學習社區以跨學術和企業邊界共享工具而自豪,發布了許多優秀的庫、統計模型和訓練有素的網絡作為開源。正是本著這種精神,構成本書的筆記本可以免費分發和使用。我們一直在努力降低每個人學習深度學習的門檻,我們希望我們的讀者能從中受益。
1.8. 概括
機器學習研究計算機系統如何利用經驗(通常是數據)來提高特定任務的性能。它結合了統計、數據挖掘和優化的思想。通常,它被用作實施人工智能解決方案的一種手段。
作為機器學習的一類,表征學習側重于如何自動找到合適的方式來表示數據。深度學習是通過學習多層變換的多層次表示學習。
深度學習不僅取代了傳統機器學習管道末端的淺層模型,而且取代了特征工程的勞動密集型過程。
深度學習的大部分最新進展是由廉價傳感器和互聯網規模應用程序產生的大量數據以及計算方面的重大進展(主要是通過 GPU)引發的。
整個系統優化是獲得高性能的關鍵組成部分。高效的深度學習框架的可用性使得設計和實施變得更加容易。
參考
https://d2l.ai/chapter_introduction/index.html
總結
以上是生活随笔為你收集整理的翻译: 深入神经网络概览Dive into Deep Learning的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大智慧交易系统测试软件,大智慧交易系统测
- 下一篇: python同花顺实时_python同花