在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

pytorch用來干嘛的?PyTorch教程之PyTorch簡介

jf_bzMfoexS ? 2023-06-05 15:14 ? 次閱讀

直到最近,您在日常生活中可能與之交互的幾乎每個計算機程序都被編碼為一組嚴格的規則,精確指定了它應該如何運行。假設我們要編寫一個應用程序來管理電子商務平臺。在圍著白板思考幾個小時后,我們可能會確定一個可行解決方案的大致思路,例如:(i) 用戶通過在 Web 瀏覽器或移動應用程序中運行的界面與應用程序交互;(ii) 我們的應用程序與商業級數據庫引擎交互,以跟蹤每個用戶的狀態并維護歷史交易記錄;(iii) 在我們應用程序的核心,業務邏輯(你可能會說,大腦) 我們的應用程序闡明了一組規則,將每一種可能的情況映射到我們的程序應該采取的相應行動。

為了構建我們應用程序的大腦,我們可能會枚舉我們的程序應該處理的所有常見事件。例如,每當客戶點擊將商品添加到他們的購物車時,我們的程序就應該向購物車數據庫表添加一個條目,將用戶的 ID 與請求的產品 ID 相關聯。然后我們可能會嘗試遍歷每一個可能的極端情況,測試我們的規則的適當性并進行任何必要的修改。如果用戶使用空購物車開始購買會怎樣?雖然很少有開發人員第一次就完全正確(可能需要進行一些測試才能解決問題),但在大多數情況下,我們可以編寫此類程序并自信地啟動它們見過真正的客戶。我們通常在新情況下手動設計驅動功能產品和系統的自動化系統的能力是一項了不起的認知壯舉。當您能夠設計出有效的解決方案時 (100%)當時,您通常不應該擔心機器學習

幸運的是,對于不斷壯大的機器學習科學家群體來說,我們想要自動化的許多任務并不容易屈從于人類的聰明才智。想象一下,你認識的最聰明的人圍坐在白板周圍,但這一次你要解決以下問題之一:

編寫一個程序,根據地理信息、衛星圖像和過去天氣的拖尾窗口預測明天的天氣。

編寫一個程序,接受一個以自由格式文本表達的事實型問題,并正確回答它。

編寫一個程序,根據給定的圖像識別圖像中描繪的所有人,并在每個人周圍畫出輪廓。

編寫一個程序,向用戶展示他們可能會喜歡但在自然瀏覽過程中不太可能遇到的產品。

對于這些問題,即使是精英程序員也很難從頭開始編寫解決方案。原因可能各不相同。有時我們正在尋找的程序遵循一種隨時間變化的模式,因此沒有固定的正確答案!在這種情況下,任何成功的解決方案都必須優雅地適應不斷變化的世界。在其他時候,關系(比如像素和抽象類別之間的關系)可能過于復雜,需要數千或數百萬次計算并遵循未知的原則。在圖像識別的情況下,執行任務所需的精確步驟超出了我們的意識理解,即使我們的潛意識認知過程毫不費力地執行任務。

機器學習是對可以從經驗中學習的算法的研究。隨著機器學習算法積累更多經驗(通常以觀察數據或與環境交互的形式),其性能會提高。將此與我們的確定性電子商務平臺進行對比,無論積累多少經驗,它都遵循相同的業務邏輯,直到開發人員自己學習并決定是時候更新軟件了。在本書中,我們將向您介紹機器學習的基礎知識,尤其是深度學習,這是一套強大的技術,可在計算機視覺、自然語言處理、醫療保健和基因組學等不同領域推動創新。

1.1. 一個激勵人心的例子

在開始寫作之前,本書的作者和許多工作人員一樣,不得不喝下咖啡因。我們跳上車,開始開車。亞歷克斯使用 iPhone 喊出“Hey Siri”,喚醒了手機語音識別系統。然后Mu命令“去Blue Bottle咖啡店的方向”。手機很快就顯示出他的命令抄錄。它還認識到我們正在詢問方向并啟動了地圖應用程序 (app) 來滿足我們的請求。啟動后,地圖應用程序會識別出多條路線。在每條路線旁邊,手機會顯示預計的通行時間。雖然我們為了教學方便而編造了這個故事,但它表明,在短短幾秒鐘的時間里,我們與智能手機的日常互動可以涉及多種機器學習模型。

想象一下,只需編寫一個程序來響應諸如“Alexa”、“OK Google”和“Hey Siri”之類的喚醒詞。嘗試自己在房間里用計算機和代碼編輯器編寫代碼,如圖1.1.1所示。你會如何根據第一性原理編寫這樣的程序?想一想……這個問題很難。每秒,麥克風將收集大約 44000 個樣本。每個樣本都是對聲波振幅的測量。什么規則可以可靠地將一段原始音頻映射到自信的預測 ({text{yes}, text{no}})關于片段是否包含喚醒詞?如果您被卡住了,請不要擔心。我們也不知道如何從頭開始編寫這樣的程序。這就是我們使用機器學習的原因。

poYBAGR5TXmAThPfAACgq3xxOXs811.svg

圖 1.1.1識別喚醒詞。

這是訣竅。通常,即使我們不知道如何明確地告訴計算機如何將輸入映射到輸出,我們仍然能夠自己完成認知壯舉。換句話說,即使你不知道如何讓計算機識別“Alexa”這個詞,你自己也能識別它。有了這種能力,我們可以收集一個巨大的數據集,其中包含音頻片段和相關標簽的示例,指示哪些片段包含喚醒詞。在機器學習的主流方法中,我們不會嘗試設計一個明確識別喚醒詞的系統。相反,我們定義了一個靈活的程序,其行為由許多參數決定. 然后我們使用數據集來確定可能的最佳參數值,即那些可以根據所選性能指標提高程序性能的參數值。

您可以將參數視為我們可以轉動的旋鈕,從而操縱程序的行為。固定參數,我們稱程序為模型。我們僅通過操縱參數就可以生成的所有不同程序(輸入-輸出映射)的集合稱為 模型族。而使用我們的數據集來選擇參數的元程序稱為學習算法。

在我們繼續使用學習算法之前,我們必須精確定義問題,確定輸入和輸出的確切性質,并選擇合適的模型系列。在這種情況下,我們的模型接收一段音頻作為輸入,然后模型生成一個選擇({text{yes}, text{no}})作為 輸出。如果一切按計劃進行,模型對片段是否包含喚醒詞的猜測通常是正確的。

如果我們選擇正確的模型系列,應該有一個旋鈕設置,這樣模型每次聽到“Alexa”這個詞時都會發出“是”。因為喚醒詞的確切選擇是任意的,我們可能需要一個足夠豐富的模型系列,通過旋鈕的另一種設置,它可以僅在聽到“Apricot”這個詞時發出“是”。我們期望相同的模型系列應該適用于“Alexa”識別和“Apricot”識別,因為從直覺上看,它們似乎是相似的任務。然而,如果我們想要處理根本不同的輸入或輸出,比如我們想要從圖像映射到字幕,或者從英文句子映射到中文句子,我們可能需要完全不同的模型系列。

您可能會猜到,如果我們只是隨機設置所有旋鈕,我們的模型不太可能識別“Alexa”、“Apricot”或任何其他英文單詞。在機器學習中,學習是我們發現旋鈕的正確設置的過程,通過該過程可以從我們的模型中強制執行所需的行為。換句話說,我們用數據訓練我們的模型。如圖 1.1.2所示,訓練過程通常如下所示:

從一個隨機初始化的模型開始,它不能做任何有用的事情。

抓取你的一些數據(例如,音頻片段和相應的 ({text{yes}, text{no}})標簽)。

調整旋鈕以使模型在這些示例中評估時表現更好。

重復步驟 2 和 3,直到模型很棒。

poYBAGR5TXyADWvuAAEU7rZEH_U178.svg

圖 1.1.2一個典型的訓練過程。

總而言之,我們不是編寫喚醒詞識別器的代碼,而是編寫一個可以學習識別喚醒詞的程序,如果提供一個大型標記數據集的話。您可以將這種通過向程序展示數據集來確定程序行為的行為視為使用數據進行編程. 也就是說,我們可以通過為我們的機器學習系統提供許多貓和狗的例子來“編程”一個貓檢測器。這樣,檢測器最終將學習如果它是貓則發出一個非常大的正數,如果它是狗則發出一個非常大的負數,如果不確定則發出接近于零的值。這僅僅觸及了機器學習可以做什么的皮毛。我們稍后將更詳細地解釋深度學習,它只是解決機器學習問題的眾多流行方法之一。

1.2. 關鍵部件

在我們的喚醒詞示例中,我們描述了一個由音頻片段和二進制標簽組成的數據集,并且我們對如何訓練模型來近似從片段到分類的映射給出了一個簡單的概念。這類問題,我們嘗試根據已知輸入預測指定的未知標簽,給定由標簽已知的示例組成的數據集,稱為 監督學習。這只是眾多機器學習問題中的一種。在我們探索其他品種之前,我們想更清楚地了解一些核心組件,無論我們處理什么樣的機器學習問題,這些核心組件都會跟隨我們:

我們可以從中學習的數據。

如何轉換數據的模型。

量化模型運行情況的目標函數。

調整模型參數以優化目標函數的算法。

1.2.1. 數據

不用說,沒有數據就無法進行數據科學。我們可能會浪費數百頁來思考數據到底是什么,但現在,我們將專注于我們將關注的數據集的關鍵屬性。通常,我們關注示例的集合。為了有效地處理數據,我們通常需要提出合適的數字表示。每個示例(或數據點、數據實例、樣本)通常由一組稱為特征的屬性(有時稱為協變量或 輸入),模型必須基于此做出預測。在監督學習問題中,我們的目標是預測一個特殊屬性的值,稱為標簽(或目標),它不是模型輸入的一部分。

如果我們處理的是圖像數據,則每個示例都可能包含一張單獨的照片(特征)和一個指示照片所屬類別的數字(標簽)。照片將以數字方式表示為三個數值網格,代表每個像素位置的紅光、綠光和藍光的亮度。例如,一個(200times 200)彩色照片將包括(200times200times3=120000)數值。

或者,我們可以使用電子健康記錄數據來處理預測給定患者在接下來 30 天內存活的可能性的任務。在這里,我們的特征可能包括一組現成的屬性和經常記錄的測量值,包括年齡、生命體征、合并癥、當前藥物治療和最近的程序。可用于訓練的標簽將是一個二進制值,指示歷史數據中的每個患者是否在 30 天窗口內存活。

在這種情況下,當每個示例都具有相同數量的數字特征時,我們說輸入是固定長度的向量,我們將向量的(恒定)長度稱為數據的維度。正如您想象的那樣,固定長度的輸入可能很方便,讓我們不必擔心那么復雜。但是,并非所有數據都可以輕松表示為固定長度向量。雖然我們可能期望顯微鏡圖像來自標準設備,但我們不能期望從 Internet 中提取的圖像都以相同的分辨率或形狀顯示。對于圖像,我們可能會考慮將它們全部裁剪為標準尺寸,但該策略只能讓我們走到這一步。我們冒著丟失裁剪部分信息的風險。此外,文本數據更頑固地抵制固定長度的表示。考慮在亞馬遜、IMDb 和 TripAdvisor 等電子商務網站上留下的客戶評論。有些很短:“它很臭!”。其他人漫不經心地尋找頁面。與傳統方法相比,深度學習的一大優勢是現代模型可以相對優雅地處理變長數據。

通常,我們擁有的數據越多,我們的工作就越容易。當我們擁有更多數據時,我們可以訓練更強大的模型,減少對先入為主的假設的依賴。從(相對)小數據到大數據的機制變化是現代深度學習成功的主要貢獻者。為了說明這一點,深度學習中許多最令人興奮的模型如果沒有大型數據集就無法工作。其他一些在小數據領域工作,但并不比傳統方法好。

最后,擁有大量數據并巧妙地處理數據是不夠的。我們需要正確的數據。如果數據充滿錯誤,或者如果所選特征不能預測感興趣的目標數量,學習就會失敗。陳詞濫調很好地描述了這種情況:垃圾進,垃圾出. 此外,糟糕的預測性能并不是唯一的潛在后果。在機器學習的敏感應用中,例如預測性監管、簡歷篩選和用于貸款的風險模型,我們必須特別警惕垃圾數據的后果。一種常見的故障模式發生在訓練數據中沒有代表某些人群的數據集中。想象一下,在以前從未見過黑色皮膚的野外應用皮膚癌識別系統。當數據不僅不能充分代表某些群體而且反映了社會偏見時,也可能會失敗。例如,如果過去的招聘決定被用來訓練一個用于篩選簡歷的預測模型,那么機器學習模型可能會無意中捕捉到歷史上的不公正現象并將其自動化。

1.2.2. 楷模

大多數機器學習都涉及在某種意義上轉換數據。我們可能想要構建一個系統來攝取照片并預測笑臉。或者,我們可能想要獲取一組傳感器讀數并預測讀數的正常與異常程度。按 型號,我們表示用于攝取一種類型的數據并吐出可能不同類型的預測的計算機器。特別是,我們對可以從數據中估計的統計模型感興趣。雖然簡單的模型完全能夠解決適當的簡單問題,但我們在本書中關注的問題超出了經典方法的局限性。深度學習與經典方法的區別主要在于它關注的一組強大模型。這些模型由許多連續的數據轉換組成,這些數據從上到下鏈接在一起,因此得名深度學習。在討論深度模型的過程中,我們還將討論一些更傳統的方法。

1.2.3. 目標函數

早些時候,我們將機器學習介紹為從經驗中學習。通過 在這里學習,我們的意思是隨著時間的推移在某些任務上有所改進。但是誰能說什么是改進呢?您可能會想象我們可以提議更新我們的模型,而有些人可能不同意提議的更新是改進還是下降。

為了開發一個正式的學習機器數學系統,我們需要對我們的模型有多好(或多壞)有正式的衡量標準。在機器學習和更一般的優化中,我們稱這些 為目標函數。按照慣例,我們通常將目標函數定義為越低越好。這只是一個慣例。您可以采用任何越高越好的函數,并通過翻轉符號將其轉換為質量相同但越低越好的新函數。因為越低越好,這些函數有時被稱為損失函數。

當嘗試預測數值時,最常見的損失函數是平方誤差,即預測值與真實目標之間的差值的平方。對于分類,最常見的目標是最小化錯誤率,即我們的預測與基本事實不一致的示例部分。一些目標(例如,平方誤差)易于優化,而其他目標(例如,錯誤率)由于不可微性或其他復雜性而難以直接優化。在這些情況下,通常會優化替代目標。

在優化過程中,我們將損失視為模型參數的函數,并將訓練數據集視為常數。我們通過最小化由為訓練收集的一些示例組成的集合所產生的損失來學習模型參數的最佳值。然而,在訓練數據上做得很好并不能保證我們在看不見的數據上也會做得很好。因此,我們通常希望將可用數據分成兩個部分:訓練數據集(或訓練集),用于學習模型參數;和測試數據集(或測試集), 用于評估。在一天結束時,我們通常會報告我們的模型在兩個分區上的表現。您可以將培訓績效視為類似于學生在用于準備某些實際期末考試的練習考試中取得的分數。即使結果令人鼓舞,也不能保證在期末考試中取得成功。在學習過程中,學生可能會開始背誦練習題,看似掌握了主題,但在面對實際期末考試中以前沒見過的問題時卻步履蹣跚。當一個模型在訓練集上表現良好但無法泛化到看不見的數據時,我們說它對訓練數據過度擬合。

1.2.4. 優化算法

一旦我們獲得了一些數據源和表示、模型和定義明確的目標函數,我們就需要一種能夠搜索最佳參數以最小化損失函數的算法。流行的深度學習優化算法基于一種稱為梯度下降的方法。簡而言之,在每個步驟中,此方法都會檢查每個參數,以查看如果您對該參數進行少量擾動,訓練集損失將以何種方式移動。然后它在降低損失的方向上更新參數。

1.3. 機器學習問題的種類

我們激勵示例中的喚醒詞問題只是機器學習可以解決的眾多問題之一。為了進一步激勵讀者并為我們提供一些貫穿全書的通用語言,我們現在提供機器學習問題公式的廣泛概述。

1.3.1. 監督學習

監督學習描述的任務是給定一個包含特征和標簽的數據集,并負責生成一個模型來預測給定輸入特征的標簽。每個特征-標簽對稱為一個示例。有時,當上下文清楚時,我們可以使用術語示例引用一組輸入,即使相應的標簽未知。監督發揮作用是因為為了選擇參數,我們(監督者)為模型提供了一個由標記示例組成的數據集。在概率方面,我們通常對估計給定輸入特征的標簽的條件概率感興趣。雖然它只是機器學習中的幾種范式之一,但監督學習占機器學習在工業中的大部分成功應用。部分原因是,許多重要任務可以清晰地描述為在給定一組特定的可用數據的情況下估計未知事物的概率:

根據計算機斷層掃描圖像預測癌癥與非癌癥。

給出英語句子,預測正確的法語翻譯。

根據本月的財務報告數據預測下個月的股票價格。

雖然所有監督學習問題都被簡單描述“預測給定輸入特征的標簽”所捕獲,但監督學習可以采取多種形式并需要大量建模決策,具體取決于(除其他考慮因素外)輸入的類型、大小和數量和輸出。例如,我們使用不同的模型來處理任意長度的序列和處理固定長度的向量表示。我們將在本書中深入探討其中的許多問題。

非正式地,學習過程如下所示。首先,獲取大量特征已知的示例,并從中隨機選擇一個子集,為每個示例獲取真實標簽。有時這些標簽可能是已經收集到的可用數據(例如,患者是否在下一年內死亡?),而其他時候我們可能需要使用人工注釋器來標記數據(例如,將圖像分配給類別)。這些輸入和相應的標簽一起構成了訓練集。我們將訓練數據集輸入監督學習算法,該算法將數據集作為輸入并輸出另一個函數:學習模型。最后,我們可以將以前看不見的輸入提供給學習模型,使用其輸出作為相應標簽的預測。圖 1.3.1。

pYYBAGR5TX6AVQ1oAAEU7Ladj7U685.svg

圖 1.3.1監督學習。

1.3.1.1. 回歸

也許最簡單的監督學習任務就是回歸。例如,考慮從房屋銷售數據庫中收集的一組數據。我們可以構建一個表,其中每一行對應不同的房子,每一列對應一些相關屬性,例如房子的平方英尺、臥室數、浴室數和分鐘數(步行) 到市中心。在這個數據集中,每個例子都是一個特定的房子,對應的特征向量是表格中的一行。如果你住在紐約或舊金山,而且你不是亞馬遜、谷歌、微軟或 Facebook 的首席執行官,那么你家的(平方英尺、臥室數量、浴室數量、步行距離)特征向量可能看起來像:([600, 1, 1, 60]). 然而,如果你住在匹茲堡,它可能看起來更像([3000, 4, 3, 10]). 像這樣的固定長度特征向量對于大多數經典機器學習算法來說都是必不可少的。

使問題回歸的實際上是目標的形式。假設您正在市場上購買新房。考慮到上述某些特征,您可能想要估算房屋的公平市場價值。這里的數據可能包括歷史房屋清單,標簽可能是觀察到的銷售價格。當標簽采用任意數值(即使在某個區間內)時,我們稱之為 回歸問題。目標是生成一個模型,其預測非常接近實際標簽值。

許多實際問題很容易描述為回歸問題。預測用戶對電影的評分可以被認為是一個回歸問題,如果你在 2009 年設計了一個偉大的算法來完成這一壯舉,你可能會贏得 100 萬美元的 Netflix獎。預測患者住院時間的長短也是一個回歸問題。一個好的經驗法則是多少?或者有多少?問題應該建議回歸,例如:

這個手術需要幾個小時?

這個鎮在接下來的六個小時內會有多少降雨量?

即使您以前從未接觸過機器學習,您也可能非正式地解決過回歸問題。想象一下,例如,您修理了下水道,而您的承包商花了 3 個小時從污水管道中清除垃圾。然后他寄給你一張 350 美元的賬單。現在想象一下,您的朋友雇用了同一個承包商 2 小時,他收到了一張 250 美元的賬單。如果隨后有人問你對他們即將開出的清除垃圾發票的期望值是多少,你可能會做出一些合理的假設,比如工作更多的時間會花費更多的錢。您可能還假設有一些基本費用,然后承包商按小時收費。如果這些假設成立,那么根據這兩個數據示例,您已經可以確定承包商的定價結構:每小時 100 美元外加 50 美元出現在你家。如果你遵循了這么多,那么你已經理解了線性回歸背后的高級思想。

在這種情況下,我們可以生成與承包商價格完全匹配的參數。有時這是不可能的,例如,如果某些差異歸因于除您的兩個特征之外的幾個因素。在這些情況下,我們將嘗試學習最小化我們的預測與觀察值之間的距離的模型。在我們的大部分章節中,我們將重點關注最小化平方誤差損失函數。正如我們稍后將看到的,這種損失對應于我們的數據被高斯噪聲破壞的假設。

1.3.1.2。分類

雖然回歸模型非常適合解決多少問題?問題,很多問題都不適用于此模板。例如,考慮一家想要為其移動應用程序開發支票掃描功能的銀行。理想情況下,客戶只需拍一張支票照片,應用程序就會自動識別圖像中的文字。假設我們有能力分割出對應于每個手寫字符的圖像塊,那么剩下的主要任務就是確定每個圖像塊中描繪了某個已知集合中的哪個字符。這幾種是哪一種?問題稱為分類,需要一組不同于用于回歸的工具,盡管許多技術將繼續存在。

在分類中,我們希望我們的模型查看特征,例如圖像中的像素值,然后預測一些離散選項集中的類別(有時稱為類),一個示例屬于哪個類別。對于手寫數字,我們可能有十個類別,對應于數字 0 到 9。最簡單的分類形式是只有兩個類別,我們稱之為二進制分類的問題。例如,我們的數據集可能包含動物圖像,而我們的標簽可能是類別 (mathrm{{cat, dog}}). 在回歸中,我們尋找一個回歸器來輸出一個數值,在分類中,我們尋找一個分類器,其輸出是預測的類分配。

隨著本書變得更加技術化,我們將深入探討的原因是,優化只能輸出硬分類分配(例如“貓”或“狗”)的模型可能很困難。在這些情況下,用概率語言來表達我們的模型通常要容易得多。給定示例的特征,我們的模型為每個可能的類別分配一個概率。回到我們的動物分類示例,其中類別是 (mathrm{{cat, dog}}),分類器可能會看到圖像并輸出圖像是貓的概率為 0.9。我們可以通過說分類器 90% 確定圖像描繪的是一只貓來解釋這個數字。預測類別的概率大小傳達了一種不確定性概念。它不是不確定性的唯一概念,我們將在更高級的章節中討論其他概念。

當我們有兩個以上的可能類別時,我們將問題稱為 多類別分類。常見的例子包括手寫字符識別(mathrm{{0, 1, 2, ... 9, a, b, c, ...}}). 雖然我們通過嘗試最小化平方誤差損失函數來解決回歸問題,但分類問題的常見損失函數稱為交叉熵,其名稱可以通過后續章節的信息論介紹來揭開神秘面紗。

請注意,最有可能的類別不一定是您要用于您的決定的類別。假設你在后院發現了一個漂亮的蘑菇,

現在,假設您構建了一個分類器并訓練它根據照片預測蘑菇是否有毒。假設我們的毒物檢測分類器輸出圖 1.3.2的概率 包含死亡上限為 0.2。換句話說,分類器有 80% 的把握確定我們的蘑菇不是死亡帽。不過,你必須是個傻瓜才能吃它。那是因為美味晚餐的某些好處抵不上 20% 的死亡風險。換句話說,不確定風險的影響遠遠大于收益。因此,為了決定是否吃蘑菇,我們需要計算與每個行動相關的預期負效用,這取決于可能的結果以及與每個行動相關的利益或危害。在這種情況下,吃蘑菇產生的負效用可能是 (0.2 times infty + 0.8 times 0 = infty),而丟棄它的損失是(0.2 times 0 + 0.8 times 1 = 0.8). 我們的謹慎是有道理的:正如任何真菌學家都會告訴我們的那樣,圖 1.3.2中的蘑菇 實際上是一頂死亡帽。

分類可能比二分類或多分類復雜得多。例如,有一些分類變體處理層次結構的類。在這種情況下,并不是所有的錯誤都是平等的——如果我們一定會犯錯,我們可能更愿意錯誤分類到一個相關的類而不是一個遙遠的類。通常,這稱為層次分類。為了獲得靈感,您可能會想到 林奈,他將動物按等級組織起來。

在動物分類的情況下,將貴賓犬誤認為雪納瑞犬可能并沒有那么糟糕,但如果將貴賓犬與恐龍混淆,我們的模型將付出巨大的代價。哪個層次結構是相關的可能取決于您計劃如何使用該模型。例如,響尾蛇和吊帶蛇在系統發育樹上可能很接近,但將響尾蛇誤認為是吊帶蛇可能是致命的。

1.3.1.3. 標記

一些分類問題非常適合二元或多類分類設置。例如,我們可以訓練一個普通的二元分類器來區分貓和狗。鑒于計算機視覺的當前狀態,我們可以使用現成的工具輕松地做到這一點。盡管如此,無論我們的模型變得多么準確,當分類器遇到 不來梅小鎮音樂家的圖像時,我們可能會遇到麻煩,這是一個以四只動物為特色的流行德國童話。

如您所見,照片中有一只貓、一只公雞、一只狗和一頭驢,背景中有一些樹。當我們預期會遇到此類圖像時,多類分類可能不是正確的問題表述。相反,我們可能想讓模型選擇說圖像描繪了一只貓、一只狗、一只驢和一只公雞。

學習預測不互斥類的問題稱為多標簽分類。自動標記問題通常最好描述為多標簽分類問題。想一想人們可能會在技術博客上貼上的標簽,例如“機器學習”、“技術”、“小工具”、“編程語言”、“Linux”、“云計算”、“AWS”。一篇典型的文章可能應用了 5-10 個標簽。通常,標簽會展示一些相關結構。關于“云計算”的帖子可能會提到“AWS”,而關于“機器學習”的帖子可能會提到“GPU”。

有時,此類標記問題會利用大量標簽集。國家醫學圖書館雇用了許多專業注釋員,他們將 PubMed 中要編入索引的每篇文章與一組從醫學主題詞表 (MeSH) 本體中提取的標簽關聯起來,該集合包含大約 28000 個標簽。正確標記文章很重要,因為它允許研究人員對文獻進行詳盡的審查。這是一個耗時的過程,注釋者通常在歸檔和標記之間有一年的滯后時間。機器學習可以提供臨時標簽,直到每篇文章都可以進行適當的人工審查。事實上,多年來,BioASQ 組織一直在舉辦這項任務的競賽。

1.3.1.4。搜索

在信息檢索領域,我們經常對項目集進行排名。以網絡搜索為例。目標不是確定特定頁面是否與查詢相關,而是在一組相關結果中,哪些應該最突出地顯示給特定用戶。一種可能的解決方案可能是首先為集合中的每個元素分配一個分數,然后檢索評分最高的元素。 網頁排名,Google 搜索引擎背后的原始秘密武器,是此類評分系統的早期示例。特別是,PageRank 提供的評分并不取決于實際查詢。相反,他們依靠一個簡單的相關性過濾器來識別一組相關的候選者,然后使用 PageRank 來確定更權威的頁面的優先級。如今,搜索引擎使用機器學習和行為模型來獲得與查詢相關的相關性分數。有整個學術會議專門討論這個主題。

1.3.1.5。推薦系統

推薦系統是另一個與搜索和排名相關的問題設置。就目標是向用戶顯示一組相關項目而言,問題是相似的。主要區別在于在推薦系統的上下文中強調對特定用戶的個性化。例如,對于電影推薦,科幻迷的結果頁面和彼得塞勒斯喜劇鑒賞家的結果頁面可能會有很大差異。類似的問題也出現在其他推薦設置中,例如零售產品、音樂和新聞推薦。

在某些情況下,客戶會提供明確的反饋,傳達他們對特定產品的喜愛程度(例如,亞馬遜、IMDb 和 Goodreads 上的產品評級和評論)。在其他情況下,他們提供隱式反饋,例如,通過跳過播放列表中的標題,這可能表示不滿意,或者可能只是表示歌曲在上下文中不合適。在最簡單的公式中,這些系統被訓練來估計一些分數,例如預期的星級或給定用戶購買特定商品的概率。

給定這樣一個模型,對于任何給定的用戶,我們可以檢索得分最高的對象集,然后可以將其推薦給用戶。生產系統要先進得多,在計算此類分數時會考慮詳細的用戶活動和項目特征。圖 1.3.4顯示了亞馬遜基于個性化算法推薦的深度學習書籍,這些算法經過調整以捕捉 Aston 的偏好。

亞馬遜推薦的深度學習書籍。

盡管具有巨大的經濟價值,但天真地建立在預測模型之上的推薦系統存在一些嚴重的概念缺陷。首先,我們只觀察經過審查的反饋:用戶優先評價他們有強烈感受的電影。例如,在五分制中,您可能會注意到項目獲得許多一星和五星評級,但明顯很少有三星級評級。此外,當前的購買習慣通常是當前推薦算法的結果,但學習算法并不總是考慮到這個細節。因此,有可能形成反饋循環,其中推薦系統優先推送隨后被認為更好的項目(由于購買量增加),進而更頻繁地被推薦。許多關于如何處理審查、激勵和反饋循環的問題都是重要的開放研究問題。

1.3.1.6。序列學習

到目前為止,我們已經研究了具有固定數量輸入并產生固定數量輸出的問題。例如,我們考慮在給定一組固定特征的情況下預測房價:建筑面積、臥室數量、浴室數量以及到市中心的交通時間。我們還討論了從圖像(固定維度)映射到它屬于固定數量類別中每個類別的預測概率,并僅根據用戶 ID 和產品 ID 預測與購買相關的星級。在這些情況下,一旦我們的模型被訓練,在每個測試示例被輸入我們的模型后,它會立即被遺忘。我們假設連續的觀察是獨立的,因此沒有必要堅持這種背景。

但是我們應該如何處理視頻片段呢?在這種情況下,每個片段可能包含不同數量的幀。如果我們考慮之前或之后的幀,我們對每一幀中發生的事情的猜測可能會更加強烈。語言也是如此。一個流行的深度學習問題是機器翻譯:提取某種源語言的句子并預測其在另一種語言中的翻譯的任務。

這些問題也發生在醫學上。我們可能需要一個模型來監控重癥監護病房的患者,并在他們在接下來的 24 小時內死亡的風險超過某個閾值時發出警報。在這里,我們不會每小時丟棄我們所了解的有關患者病史的所有信息,而僅根據最近的測量結果做出預測。

這些問題是機器學習最令人興奮的應用之一,它們是序列學習的實例。他們需要一個模型來攝取輸入序列或發出輸出序列(或兩者)。具體來說,序列到序列學習 考慮輸入和輸出均由可變長度序列組成的問題。示例包括機器翻譯和語音到文本的轉錄。雖然不可能考慮所有類型的序列轉換,但以下特殊情況值得一提。

標記和解析。這涉及用屬性注釋文本序列。此處,輸入和輸出是對齊的,即它們具有相同的編號并以相應的順序出現。例如,在 詞性(PoS)標注中,我們用相應的詞性(即“名詞”或“直接賓語”)對句子中的每個單詞進行注釋。或者,我們可能想知道哪些連續詞組指的是命名實體,如people、places或organizations。在下面的卡通簡單示例中,我們可能只想為句子中的每個單詞指示它是否是命名實體(標記為“Ent”)的一部分。

Tom has dinner in Washington with Sally
Ent -  -  -   Ent   -  Ent

自動語音識別。對于語音識別,輸入序列是說話者的錄音(圖 1.3.5),輸出是說話者所說內容的轉錄本。挑戰在于音頻幀(聲音通常以 8kHz 或 16kHz 采樣)比文本多得多,即音頻和文本之間沒有 1:1 的對應關系,因為數千個樣本可能對應于一個口語單詞。這些是序列到序列的學習問題,其中輸出比輸入短得多。雖然人類非常擅長識別語音,即使是低質量的音頻,但讓計算機完成這項壯舉仍是一項艱巨的挑戰。

在錄音中。-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. 無監督和自我監督學習

前面的示例側重于監督學習,我們為模型提供一個包含特征和相應標簽值的巨大數據集。您可以將監督學習者視為擁有極其專業的工作和極其獨裁的老板。老板站在它的肩膀上,告訴它在每種情況下應該做什么,直到你學會將情況映射到行動。為這樣的老板工作聽起來很蹩腳。另一方面,取悅這樣的老板是很容易的。您只需盡快識別模式并模仿他們的動作即可。

考慮到相反的情況,為一個不知道他們要你做什么的老板工作可能會令人沮喪。但是,如果你打算成為一名數據科學家,你最好習慣它。老板可能只是給你一大堆數據,并告訴你用它做一些數據科學!這聽起來很模糊,因為它確實如此。我們將這類問題稱為 無監督學習,我們可以提出的問題的類型和數量僅受我們創造力的限制。我們將在后面的章節中介紹無監督學習技術。現在,為了激發您的胃口,我們描述了您可能會問的以下幾個問題。

我們能否找到少量準確概括數據的原型?給定一組照片,我們能否將它們分為風景照片、狗、嬰兒、貓和山峰的照片?同樣,給定用戶瀏覽活動的集合,我們是否可以將他們分組為具有相似行為的用戶?這個問題通常稱為 聚類。

我們能否找到少量準確捕捉數據相關屬性的參數?球的軌跡可以通過球的速度、直徑和質量很好地描述。裁縫們為了試穿衣服而開發了一些相當準確地描述人體形狀的參數。這些問題被稱為子空間估計。如果相關性是線性的,則稱為主成分分析。

歐幾里德空間中是否存在(任意結構的)對象的表示,使得符號屬性可以很好地匹配?這可以用來描述實體及其關系,例如“羅馬”(-)“意大利”(+)“法國”(=)“巴黎”。

是否描述了我們觀察到的大部分數據的根本原因?例如,如果我們有關于房價、污染、犯罪、位置、教育和薪水的人口統計數據,我們能否僅僅根據經驗數據發現它們之間的關系?與因果關系和概率圖形模型有關的領域解決了這些問題。

無監督學習的另一個重要且令人興奮的近期發展是深度生成模型的出現。這些模型顯式或隱式地估計數據的密度。訓練完成后,我們可以使用生成模型根據樣本的可能性對樣本進行評分,或者從學習分布中抽取合成樣本。生成建模的早期深度學習突破伴隨著變分自動編碼器的發明 (Kingma 和 Welling,2014 年,Rezende等人,2014 年),并繼續發展生成對抗網絡 (Goodfellow等人,2014 年). 最近的進展包括標準化流量 (Dinh等人,2014 年,Dinh等人,2017 年)和擴散模型 (Ho等人,2020 年, Sohl -Dickstein等人,2015 年,Song 和 Ermon,2019 年,Song等人. , 2021 ) .

無監督學習的一個重大發展是自我監督學習的興起 ,這種技術利用未標記數據的某些方面來提供監督。對于文本,我們可以通過使用大語料庫中周圍的詞(上下文)預測隨機屏蔽詞來訓練模型來“填空”,而無需任何標記工作( Devlin等人,2018 年)!對于圖像,我們可以訓練模型來判斷同一圖像的兩個裁剪區域之間的相對位置 (Doersch等人,2015 年),根據圖像的剩余部分預測圖像的遮擋部分,或預測兩個示例是否是同一底層圖像的擾動版本。自監督模型通常會學習表示,隨后通過對某些感興趣的下游任務的結果模型進行微調來利用這些表示。

1.3.3. 與環境互動

到目前為止,我們還沒有討論數據的實際來源,或者當機器學習模型生成輸出時實際發生了什么。這是因為監督學習和非監督學習并沒有以非常復雜的方式解決這些問題。在任何一種情況下,我們都會預先獲取大量數據,然后讓我們的模式識別機器運轉起來,而無需再次與環境交互。因為所有的學習都是在算法脫離環境之后進行的,所以這有時被稱為離線學習。例如,監督學習假定 圖 1.3.6中描述的簡單交互模式。

poYBAGR5TY2ADb54AAFCuUFyrh4756.svg

圖 1.3.6從環境中為監督學習收集數據。

這種離線學習的簡單性有它的魅力。好處是我們可以單獨擔心模式識別,而不必擔心與動態環境交互所產生的復雜性。但是這個問題的表述是有局限性的。如果你是讀著阿西莫夫的機器人小說長大的,那么你可能會想象人工智能代理不僅能夠做出預測,而且能夠在世界上采取行動。我們想考慮智能 代理,而不僅僅是預測模型。這意味著我們需要考慮選擇動作,而不僅僅是做出預測。與單純的預測不同,行動實際上會影響環境。如果我們想訓練一個智能代理,我們必須考慮其行為可能影響代理未來觀察的方式。

考慮與環境的交互會引發一整套新的建模問題。以下只是幾個例子。

環境是否記得我們之前所做的事情?

環境是否想要幫助我們,例如,用戶將文本讀入語音識別器?

環境是否想打敗我們,例如,垃圾郵件發送者更改他們的電子郵件以逃避垃圾郵件過濾器?

環境是否有動態變化?例如,未來的數據是否總是與過去相似,或者模式是否會隨時間自然或響應我們的自動化工具而變化?

這些問題提出了distribution shift的問題,訓練數據和測試數據是不同的。我們大多數人在參加由講師編寫的考試時遇到過這個問題,而家庭作業是由他們的助教編寫的。接下來,我們簡要描述強化學習,這是一個豐富的框架,用于提出代理與環境交互的學習問題。

1.3.4. 強化學習

如果您有興趣使用機器學習來開發與環境交互并采取行動的代理,那么您可能最終會專注于強化學習。這可能包括應用于機器人技術、對話系統,甚至用于開發視頻游戲的人工智能 (AI)。將深度學習應用于強化學習問題的深度強化學習已大受歡迎。在僅使用視覺輸入的 Atari 游戲中擊敗人類的突破性深度 Q 網絡 (Mnih等人,2015 年),以及在棋盤游戲圍棋中擊敗世界冠軍的 AlphaGo 程序 (Silver等人,2016 年))是兩個突出的例子。

強化學習給出了一個非常一般的問題陳述,其中代理在一系列時間步長上與環境交互。在每個時間步,智能體都會從環境中接收一些觀察結果,并且必須選擇一個動作,該動作隨后會通過某種機制(有時稱為執行器)傳回環境 。最后,代理從環境中獲得獎勵。這個過程如圖 1.3.7所示。然后代理接收后續觀察,并選擇后續操作,依此類推。強化學習代理的行為受政策支配。簡而言之,一項政策只是一個將環境觀察映射到動作的函數。強化學習的目標是產生好的策略。

pYYBAGR5TY-AYL2zAAC2wGK9K_g041.svg

圖 1.3.7強化學習與環境的交互。

強化學習框架的通用性怎么強調都不為過。例如,我們可以將監督學習問題轉化為強化學習問題。假設我們有一個分類問題。我們可以創建一個強化學習代理,每個類對應一個動作。然后我們可以創建一個環境,該環境給出的獎勵恰好等于原始監督學習問題的損失函數。

也就是說,強化學習還可以解決許多監督學習無法解決的問題。例如,在監督學習中,我們總是期望訓練輸入與正確的標簽相關聯。但在強化學習中,我們并不假設對于每次觀察,環境都會告訴我們最佳行動。一般來說,我們只是得到一些獎勵。此外,環境甚至可能不會告訴我們哪些行為導致了獎勵。

考慮下國際象棋。唯一真正的獎勵信號出現在游戲結束時,當我們獲勝時獲得獎勵,比如 1,或者當我們失敗時,獲得獎勵,比如 -1。因此,強化學習者必須處理信用分配問題:確定哪些行為應該歸功于或歸咎于結果。這同樣適用于在 10 月 11 日獲得晉升的員工。這次晉升可能反映了前一年的大量精心選擇的行動。要想在未來獲得更多晉升,就需要弄清楚一路上采取的哪些行動導致了晉升。

強化學習者可能還必須處理部分可觀察性的問題。也就是說,當前的觀察可能無法告訴您有關當前狀態的所有信息。假設一個清潔機器人發現自己被困在房子里許多相同的壁櫥中的一個壁櫥里。推斷機器人的精確位置可能需要在進入壁櫥之前考慮其先前的觀察結果。

最后,在任何給定點,強化學習者可能知道一個好的策略,但可能有許多其他代理人從未嘗試過的更好的策略。強化學習者必須不斷地選擇是利用最好的(當前)已知策略作為策略,還是探索策略空間,可能會放棄一些短期獎勵以換取知識。

一般的強化學習問題是一個非常普遍的設置。行動會影響后續的觀察。僅觀察到與所選操作相對應的獎勵。可以完全或部分觀察環境。一次性解釋所有這些復雜性可能對研究人員提出的要求太多。此外,并非每個實際問題都表現出所有這些復雜性。因此,研究人員研究了許多強化學習問題的特例。

當環境被完全觀察時,我們稱強化學習問題為馬爾可夫決策過程。當狀態不依賴于之前的動作時,我們稱該問題為上下文強盜問題。當沒有狀態,只有一組初始獎勵未知的可用動作時,這個問題就是經典的多臂老虎機問題。

1.4. 根

我們剛剛回顧了機器學習可以解決的一小部分問題。對于各種各樣的機器學習問題,深度學習提供了解決這些問題的強大工具。盡管許多深度學習方法是近期發明的,但從數據中學習背后的核心思想已經被研究了幾個世紀。事實上,長期以來,人類一直有分析數據和預測未來結果的愿望,許多自然科學都源于此。例如,伯努利分布以Jacob Bernoulli (1655–1705)的名字命名,而高斯分布則是由Carl Friedrich Gauss (1777–1855)發現的. 例如,高斯發明了最小均方算法,至今仍被用于解決從保險計算到醫療診斷的無數問題。這些工具催生了自然科學中的一種實驗方法——例如,與電阻器中的電流和電壓相關的歐姆定律可以用線性模型完美地描述。

即使在中世紀,數學家也有敏銳的估計直覺。例如,Jacob K?bel(1460-1533 年)的幾何書 說明了對 16 名成年男子的腳長求平均以估計人口的平均腳長。

當一群人離開教堂時,16 名成年男子被要求排成一排并測量他們的腳。然后將這些測量值的總和除以 16,得到現在相當于 1 英尺的估計值。這個“算法”后來被改進來處理畸形腳;腳最短和最長的 2 名男子被送走,平均只超過其余人。這是修剪均值估計的最早示例之一。

隨著數據的收集和可用性,統計真正起飛。它的先驅之一羅納德·費舍爾 (Ronald Fisher, 1890–1962)對其理論及其在遺傳學中的應用做出了重大貢獻。他的許多算法(如線性判別分析)和公式(如 Fisher 信息矩陣)在現代統計學的基礎上仍然占有突出的地位。甚至他的數據資源也產生了持久的影響。Fisher 于 1936 年發布的 Iris 數據集有時仍用于演示機器學習算法。費舍爾也是優生學的支持者,這應該提醒我們,數據科學在道德上可疑的使用與其在工業和自然科學中的生產性使用一樣有著悠久而持久的歷史。

機器學習的第二個影響來自 Claude Shannon (1916-2001)的信息論和Alan Turing (1912-1954)的計算理論。圖靈提出了“機器能思考嗎?”的問題。在他著名的論文Computing Machinery and Intelligence ( Turing, 1950 )中。在他所描述的圖靈測試中,如果人類評估者難以根據文本交互區分來自機器和人類的回復,則機器可以被認為是智能的。

另一個影響可以在神經科學和心理學中找到。畢竟,人類顯然表現出智能行為。許多學者詢問是否可以解釋并可能對這種能力進行逆向工程。最古老的受生物學啟發的算法之一是由Donald Hebb(1904-1985)制定的。在他開創性的著作《行為的組織》 (赫布和赫布,1949 年)中,他假設神經元通過正強化來學習。這被稱為赫布學習規則。這些想法啟發了后來的作品,如 Rosenblatt 的感知器學習算法,并奠定了今天支撐深度學習的許多隨機梯度下降算法的基礎:加強理想行為并減少不良行為以獲得神經網絡中參數的良好設置。

生物學靈感是神經網絡得名的原因。一個多世紀以來(可追溯到 Alexander Bain,1873 年和 James Sherrington,1890 年的模型),研究人員一直試圖組裝類似于相互作用神經元網絡的計算電路。隨著時間的推移,對生物學的解釋變得不那么直白了,但這個名字卻流傳了下來。其核心是當今大多數網絡中都可以找到的一些關鍵原則:

線性和非線性處理單元的交替,通常稱為層。

使用鏈式規則(也稱為反向傳播)一次性調整整個網絡的參數。

在最初的快速發展之后,神經網絡的研究從 1995 年左右到 2005 年停滯不前。這主要有兩個原因。首先,訓練網絡在計算上非常昂貴。雖然隨機存取存儲器在上個世紀末很豐富,但計算能力卻很稀缺。其次,數據集相對較小。事實上,1932 年 Fisher 的 Iris 數據集是測試算法有效性的流行工具。具有 60000 個手寫數字的 MNIST 數據集被認為是巨大的。

鑒于數據和計算的稀缺性,核方法、決策樹和圖形模型等強大的統計工具在許多應用中憑經驗證明是優越的。此外,與神經網絡不同,它們不需要數周的時間來訓練并提供具有強大理論保證的可預測結果。

1.5. 深度學習之路

由于萬維網、為數億在線用戶提供服務的公司的出現、廉價、高質量傳感器的傳播、廉價數據存儲(克萊德定律)、大量數據的可用性,這在很大程度上發生了變化。和廉價的計算(摩爾定律)。特別是,GPU 的進步徹底改變了深度學習中的計算領域,GPU 最初是為電腦游戲而設計的。突然間,似乎在計算上不可行的算法和模型變得相關(反之亦然)。這在表 1.5.1中得到了最好的說明。

表 1.5.1數據集與計算機內存和計算能力

十年 數據集 記憶 每秒浮點計算
1970 100(虹膜) 1 KB 100 KF(英特爾 8080)
1980 1K(波士頓房價) 100 KB 1 個 MF(英特爾 80186)
1990 10K(光學字符識別) 10MB 10 MF(英特爾 80486)
2000 10 M(網頁) 100MB 1 GF(英特爾酷睿)
2010 10G(廣告) 1GB 1 個 TF(英偉達 C2050)
2020 1 T(社交網絡) 100GB 1 個 PF(英偉達 DGX-2)

請注意,隨機存取存儲器并沒有跟上數據增長的步伐。與此同時,計算能力的增長超過了數據集的增長。這意味著統計模型需要提高內存效率,并且由于計算預算增加,可以自由地花費更多的計算機周期來優化參數。因此,機器學習和統計的最佳點從(廣義)線性模型和核方法轉移到深度神經網絡。這也是許多深度學習的中流砥柱的原因之一,例如多層感知器 (McCulloch 和 Pitts,1943)、卷積神經網絡 (LeCun等,1998)、長短期記憶 (Hochreiter 和 Schmidhuber,1997 年)和 Q-Learning (Watkins 和 Dayan,1992 年)在相對休眠了相當長的時間后,在過去十年中基本上被“重新發現”。

統計模型、應用程序和算法的最新進展有時被比作寒武紀大爆發:物種進化快速發展的時刻。事實上,最先進的技術不僅僅是可用資源應用于數十年舊算法的結果。請注意,下面的列表只是幫助研究人員在過去十年中取得巨大進步的想法的皮毛。

容量控制的新方法,例如dropout ( Srivastava et al. , 2014 ),有助于減輕過度擬合。在這里,噪聲在訓練期間被注入 整個神經網絡( Bishop, 1995 ) 。

注意力機制解決了困擾統計一個多世紀的第二個問題:如何在不增加可學習參數數量的情況下增加系統的內存和復雜性。研究人員通過使用只能被視為可學習的指針結構找到了一個優雅的解決方案 (Bahdanau等人,2014 年)。不必記住整個文本序列,例如,對于固定維度表示中的機器翻譯,需要存儲的只是指向翻譯過程中間狀態的指針。這可以顯著提高長序列的準確性,因為模型在開始生成新序列之前不再需要記住整個序列。

Transformer 架構 (Vaswani等人,2017 年)完全建立在注意力機制之上,展示了卓越的 縮放行為:隨著數據集大小、模型大小和訓練計算量的增加,它的性能會更好 (Kaplan等人,2020 年)。這種架構在自然語言處理(Brown等人,2020 年,Devlin等人,2018 年)、計算機視覺 (Dosovitskiy等人,2021 年,劉等人。, 2021 )、語音識別( Gulati et al. , 2020 )、強化學習 ( Chen et al. , 2021 )和圖形神經網絡 ( Dwivedi and Bresson, 2020 )。例如,在文本、圖像、關節力矩??和按鈕按下等多種模式上進行預訓練的單個 Transformer 可以播放 Atari、字幕圖像、聊天和控制機器人( Reed等人,2022 年)。

對文本序列的概率建模,語言模型可以預測給定其他文本的文本。擴展數據、模型和計算已經解鎖了越來越多的語言模型功能,可以通過基于輸入文本的類人文本生成來執行所需的任務(Brown 等人,2020 年, Chowdhery等人, 2022年, Hoffmann等人)等人,2022 年,Rae等人,2021 年)。例如,將語言模型與人類意圖對齊 (歐陽等人,2022 年),OpenAI 的 ChatGPT允許用戶以對話的方式與之交互,以解決問題,例如代碼調試和筆記起草。

多階段設計,例如,通過記憶網絡 (Sukhbaatar等人,2015 年)和神經編程器-解釋器(Reed 和 De Freitas,2015 年)允許統計建模人員描述迭代推理方法。這些工具允許重復修改深度神經網絡的內部狀態,從而執行推理鏈中的后續步驟,類似于處理器如何修改內存以進行計算。

深度生成建模的一個關鍵發展是生成對抗網絡 的發明 (Goodfellow等人,2014 年). 傳統上,用于密度估計和生成模型的統計方法側重于尋找適當的概率分布和(通常是近似的)從中抽樣的算法。因此,這些算法在很大程度上受到統計模型固有的缺乏靈活性的限制。生成對抗網絡的關鍵創新是用具有可微參數的任意算法代替采樣器。然后以鑒別器(實際上是雙樣本測試)無法區分假數據和真實數據的方式進行調整。通過使用任意算法生成數據的能力,它為各種技術開辟了密度估計。斑馬奔騰的例子(Zhu et al. , 2017)和假名人面孔 (Karras等人,2017 年)都證明了這一進步。即使是業余涂鴉者也可以僅根據描述場景布局的草圖來制作逼真的圖像(Park等人,2019 年)。

此外,當擴散過程逐漸向數據樣本中添加隨機噪聲時,擴散模型 (Ho et al. , 2020 , Sohl-Dickstein et al. , 2015)學習去噪過程以逐漸從隨機噪聲中構建數據樣本,逆轉擴散過程. 它們開始在最近的深度生成模型中取代生成對抗網絡,例如在 DALL-E 2 ( Ramesh et al. , 2022 )和 Imagen ( Saharia et al. , 2022 )中用于基于文本描述的創意藝術和圖像生成。

在許多情況下,單個 GPU 不足以處理大量可用于訓練的數據。在過去十年中,構建并行和分布式訓練算法的能力有了顯著提高。設計可擴展算法的主要挑戰之一是深度學習優化的主力,隨機梯度下降,依賴于相對較小的小批量數據進行處理。同時,小批量限制了 GPU 的效率。因此,在 1024 個 GPU 上進行小批量訓練,比如每批 32 張圖像,總計約有 32000 張圖像。最近的工作,首先由 Li ( 2017 )完成,隨后由 You等人完成。( 2017 )和 賈等。( 2018 )將大小增加到 64000 個觀察,將 ResNet-50 模型在 ImageNet 數據集上的訓練時間減少到不到 7 分鐘。為了進行比較——最初的訓練時間是按天數計算的。

并行計算的能力也促進了強化學習的進步,這導致計算機在圍棋、Atari 游戲、星際爭霸等任務和物理模擬(例如,使用 MuJoCo)中實現超人性能方面取得了重大進展,其中環境模擬器是可用的。參見,例如, Silver等人。( 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等人,2018 年)。

物體識別同樣取得了長足的進步。在 2010 年,估計圖片中的對象是一項相當具有挑戰性的任務。在 ImageNet 基準測試中,來自 NEC 實驗室和伊利諾伊大學香檳分校的研究人員取得了 28% 的前 5 錯誤率(Lin 等 人,2010年)。到 2017 年,這一錯誤率降至 2.25% (Hu et al. , 2018)。同樣,在識別鳥類和診斷皮膚癌方面也取得了驚人的成果。

游戲中的實力曾經為人類智力提供了衡量標準。從 TD-Gammon 開始,一個使用時間差異強化學習、算法和計算進步來玩西洋雙陸棋的程序已經產生了廣泛應用的算法。與西洋雙陸棋不同,國際象棋的狀態空間和動作集要復雜得多。DeepBlue 使用大規模并行、專用硬件和對游戲樹的高效搜索擊敗了 Garry Kasparov (Campbell等人,2002 年)。由于其巨大的狀態空間,圍棋更加困難。AlphaGo 在 2015 年達到了與人類相同的水平,使用深度學習結合蒙特卡洛樹采樣(Silver等人,2016 年). 撲克中的挑戰在于狀態空間很大并且只能部分觀察到(我們不知道對手的牌)。Libratus 使用高效的結構化策略在撲克中超越了人類的表現 (Brown 和 Sandholm,2017 年)。

人工智能進步的另一個跡象是自動駕駛汽車和卡車的出現。雖然完全自主還不是遙不可及,但在這個方向上已經取得了很好的進展,特斯拉、NVIDIA 和 Waymo 等公司推出的產品至少可以實現部分自主。完全自動駕駛之所以如此具有挑戰性,是因為正確的駕駛需要具備感知、推理和將規則納入系統的能力。目前,深度學習主要用于這些問題的計算機視覺方面。其余的由工程師大量調整。

這只是機器學習有影響力應用的冰山一角。例如,機器人技術、物流、計算生物學、粒??子物理學和天文學最近取得的一些最令人印象深刻的進展至少部分歸功于機器學習。機器學習因此成為工程師和科學家無處不在的工具。

在關于 AI 的非技術文章中,經常會提出有關即將到來的 AI 末日和奇點的合理性的問題。令人擔憂的是,機器學習系統會以某種方式變得有感知力并獨立于直接影響人類生活的程序員做出決策。在某種程度上,人工智能已經以直接的方式影響了人類的生計:自動評估信用度,自動駕駛儀主要為車輛導航,是否準予保釋的決定使用統計數據作為輸入。更輕率的是,我們可以讓 Alexa 打開咖啡機。

幸運的是,我們遠不是一個可以故意操縱其人類創造者的有感知力的人工智能系統。首先,人工智能系統以特定的、面向目標的方式進行設計、訓練和部署。雖然他們的行為可能給人一種通用智能的錯覺,但它是設計基礎的規則、啟發式和統計模型的組合。其次,目前根本不存在能夠改進自身、推理自身以及能夠在嘗試解決一般任務時修改、擴展和改進自身架構的通用人工智能工具。

一個更緊迫的問題是人工智能如何在我們的日常生活中使用。卡車司機和店員完成的許多瑣碎任務很可能可以而且將會自動化。農場機器人可能會降低有機農業的成本,但它們也會使收割操作自動化。工業革命的這個階段可能會對社會的大部分人產生深遠的影響,因為卡車司機和店員是許多國家最常見的工作。此外,如果不加注意地應用統計模型,可能會導致種族、性別或年齡偏見,如果自動驅動相應的決策,則會引起對程序公平性的合理擔憂。確保謹慎使用這些算法非常重要。以我們今天所知道的,

1.7. 深度學習的本質

到目前為止,我們已經廣泛地討論了機器學習。深度學習是機器學習的一個子集,涉及基于多層神經網絡的模型。它的深度恰恰在于它的模型學習了很多層的轉換。雖然這聽起來可能很狹隘,但深度學習已經產生了一系列令人眼花繚亂的模型、技術、問題公式和應用程序。已經發展出許多直覺來解釋深度的好處。可以說,所有機器學習都有很多計算層,第一層由特征處理步驟組成。深度學習的不同之處在于,在許多表示層中的每一層學習的操作都是從數據中聯合學習的。

到目前為止我們討論的問題,例如從原始音頻信號、圖像的原始像素值中學習,或任意長度的句子與其對應的外語句子之間的映射,都是深度學習擅長而傳統方法步履蹣跚的問題。事實證明,這些多層模型能夠以以前的工具無法處理的方式處理低級感知數據。可以說,深度學習方法中最重要的共性是端到端訓練。也就是說,不是基于單獨調整的組件組裝系統,而是構建系統然后聯合調整它們的性能。例如,在計算機視覺中,科學家們過去常常將特征工程的過程分開來自構建機器學習模型的過程。Canny 邊緣檢測器 ( Canny, 1987 )和 Lowe 的 SIFT 特征提取器 ( Lowe, 2004 )作為將圖像映射到特征向量的算法統治了十多年。在過去,將機器學習應用于這些問題的關鍵部分包括提出手動設計的方法,將數據轉換為某種適合淺層模型的形式。不幸的是,與算法自動執行的對數百萬個選擇的一致評估相比,人類憑借獨創性所能完成的事情非常少。當深度學習接管時,這些特征提取器被自動調整的過濾器所取代,從而產生更高的準確性。

因此,深度學習的一個關鍵優勢在于它不僅取代了傳統學習管道末端的淺層模型,而且取代了特征工程的勞動密集型過程。此外,通過取代許多特定領域的預處理,深度學習消除了以前分隔計算機視覺、語音識別、自然語言處理、醫學信息學和其他應用領域的許多界限,提供了一套統一的工具來處理各種不同的問題。問題。

除了端到端訓練之外,我們正在經歷從參數統計描述到完全非參數模型的轉變。當數據稀缺時,人們需要依靠簡化對現實的假設以獲得有用的模型。當數據豐富時,可以用更適合數據的非參數模型代替這些模型。在某種程度上,這反映了物理學在上世紀中葉隨著計算機的出現而取得的進步。與其手動求解電子行為的參數近似值,不如求助于相關偏微分方程的數值模擬。這導致了更準確的模型,盡管通常以犧牲可解釋性為代價。

與以前工作的另一個不同是接受次優解,處理非凸非線性優化問題,以及在證明之前嘗試事物的意愿。這種處理統計問題的新經驗主義,加上人才的迅速涌入,導致實用算法的快速進步,盡管在許多情況下,代價是修改和重新發明已經存在了幾十年的工具。

最后,深度學習社區以跨學術和企業邊界共享工具而自豪,發布了許多優秀的庫、統計模型和訓練有素的網絡作為開源。正是本著這種精神,組成本書的筆記本可以免費分發和使用。我們一直在努力降低每個人學習深度學習的門檻,希望我們的讀者能從中受益。

1.8. 概括

機器學習研究計算機系統如何利用經驗(通常是數據)來提高特定任務的性能。它結合了統計、數據挖掘和優化的思想。通常,它被用作實施人工智能解決方案的手段。作為機器學習的一類,表征學習的重點是如何自動找到合適的方式來表示數據。作為通過學習多層轉換的多層次表示學習,深度學習不僅取代了傳統機器學習管道末端的淺層模型,而且取代了特征工程的勞動密集型過程。深度學習最近取得的大部分進展是由廉價傳感器和互聯網規模應用程序產生的大量數據以及計算方面的重大進展(主要是通過 GPU)引發的。除了,

1.9. 練習

您當前正在編寫的代碼的哪些部分可以“學習”,即通過學習和自動確定代碼中所做的設計選擇來改進?您的代碼是否包含啟發式設計選擇?您可能需要哪些數據來學習所需的行為?

您遇到的哪些問題有很多解決方法的示例,但沒有具體的自動化方法?這些可能是使用深度學習的主要候選對象。

描述算法、數據和計算之間的關系。數據的特性和當前可用的計算資源如何影響各種算法的適用性?

列舉一些端到端訓練目前不是默認方法但可能有用的設置。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 神經網絡
    +關注

    關注

    42

    文章

    4776

    瀏覽量

    100952
  • 算法
    +關注

    關注

    23

    文章

    4624

    瀏覽量

    93110
  • 機器學習
    +關注

    關注

    66

    文章

    8428

    瀏覽量

    132837
  • pytorch
    +關注

    關注

    2

    文章

    808

    瀏覽量

    13283
收藏 人收藏

    評論

    相關推薦

    PyTorch如何入門

    PyTorch 入門實戰(一)——Tensor
    發表于 06-01 09:58

    Pytorch AI語音助手

    想做一個Pytorch AI語音助手,有沒有好的思路呀?
    發表于 03-06 13:00

    如何安裝TensorFlow2 Pytorch

    如何安裝TensorFlow2 Pytorch
    發表于 03-07 07:32

    如何往星光2板子里裝pytorch

    如題,想先gpu版本的pytorch只安裝cpu版本的pytorch,pytorch官網提供了基于conda和pip兩種安裝方式。因為咱是risc架構沒對應的conda,而使用pip安裝提示也沒有
    發表于 09-12 06:30

    基于PyTorch的深度學習入門教程之PyTorch簡單知識

    本文參考PyTorch官網的教程,分為五個基本模塊來介紹PyTorch。為了避免文章過長,這五個模塊分別在五篇博文中介紹。 Part1:PyTorch簡單知識 Part2:PyTorch
    的頭像 發表于 02-16 15:20 ?2284次閱讀

    基于PyTorch的深度學習入門教程之PyTorch的自動梯度計算

    本文參考PyTorch官網的教程,分為五個基本模塊來介紹PyTorch。為了避免文章過長,這五個模塊分別在五篇博文中介紹。 Part1:PyTorch簡單知識 Part2:PyTorch
    的頭像 發表于 02-16 15:26 ?2054次閱讀

    基于PyTorch的深度學習入門教程之PyTorch重點綜合實踐

    前言 PyTorch提供了兩個主要特性: (1) 一個n維的Tensor,與numpy相似但是支持GPU運算。 (2) 搭建和訓練神經網絡的自動微分功能。 我們將會使用一個全連接的ReLU網絡作為
    的頭像 發表于 02-15 10:01 ?1813次閱讀

    PyTorch教程簡介

    電子發燒友網站提供《PyTorch教程簡介.pdf》資料免費下載
    發表于 06-02 14:12 ?14次下載
    <b class='flag-5'>PyTorch</b>教程<b class='flag-5'>簡介</b>

    PyTorch程之數據預處理

    電子發燒友網站提供《PyTorch程之數據預處理.pdf》資料免費下載
    發表于 06-02 14:11 ?0次下載
    <b class='flag-5'>PyTorch</b>教<b class='flag-5'>程之</b>數據預處理

    PyTorch程之循環神經網絡

    電子發燒友網站提供《PyTorch程之循環神經網絡.pdf》資料免費下載
    發表于 06-05 09:52 ?0次下載
    <b class='flag-5'>PyTorch</b>教<b class='flag-5'>程之</b>循環神經網絡

    PyTorch程之時間反向傳播

    電子發燒友網站提供《PyTorch程之時間反向傳播.pdf》資料免費下載
    發表于 06-05 09:49 ?0次下載
    <b class='flag-5'>PyTorch</b>教<b class='flag-5'>程之</b>時間反向傳播

    PyTorch程之長短期記憶(LSTM)

    電子發燒友網站提供《PyTorch程之長短期記憶(LSTM).pdf》資料免費下載
    發表于 06-05 09:51 ?0次下載
    <b class='flag-5'>PyTorch</b>教<b class='flag-5'>程之</b>長短期記憶(LSTM)

    PyTorch程之15.2近似訓練

    電子發燒友網站提供《PyTorch程之15.2近似訓練.pdf》資料免費下載
    發表于 06-05 11:07 ?1次下載
    <b class='flag-5'>PyTorch</b>教<b class='flag-5'>程之</b>15.2近似訓練

    PyTorch教程18.1之高斯過程簡介

    電子發燒友網站提供《PyTorch教程18.1之高斯過程簡介.pdf》資料免費下載
    發表于 06-05 10:46 ?0次下載
    <b class='flag-5'>PyTorch</b>教程18.1之高斯過程<b class='flag-5'>簡介</b>

    pytorch用來干嘛

    pytorch用來干嘛PyTorch是一個開源的Python機器學習庫,它主要用于創建神經網絡。它提供了幾乎所有深度學習工具,包括用于自動梯度計算的張量之間的運算,通過GPU加速的
    的頭像 發表于 08-21 16:41 ?9367次閱讀
    主站蜘蛛池模板: 天天干天天插天天操| 日本aaaa级片| 色综合图片二区150p| 国内精品伊人久久大香线焦| 稀缺资源呦视频在线网站| 在线免费看一级片| 久青草国产免费观看| 五月婷婷一区二区| 四虎影院在线观看网站| 丝袜美腿一区| 亚洲啪啪| 久操综合| 日本特黄绿像大片免费看| 亚洲伊人久久综合影院2021| 加勒比色综合| 美国色综合| 欧美三级不卡在线观线看高清| 四虎最新在线| 男女交性拍拍拍高清视频| 日黄网站| 手机在线黄色| 五月天丁香婷| 午夜三级a三点| 日本三级在线观看免费| 三级在线网址| 久久网站免费观看| 六月丁香婷婷网| 国产91丝袜在线播放九色| 久久国产伦三级理电影| 男人透女人超爽视频免费| 国产亚洲视频在线| 久久综合九九亚洲一区| yy4080一级毛片免费观看| 国产免费成人在线视频| 国产精品亚洲四区在线观看| 国产特级毛片aaaaaa毛片| 夜夜爽爽| 影院在线观看免费| 69精品在线观看| 亚洲人xx视频| 五月婷婷婷婷婷|