
一文讀懂深度學(xué)習(xí)(附學(xué)習(xí)資源)
Medium上獲得超過一萬五千贊的深度學(xué)習(xí)入門指南,結(jié)合圖文為你縷清深度學(xué)習(xí)中的各個(gè)基礎(chǔ)概念的內(nèi)涵。
Image credit: Datanami
人工智能(AI)
(https://en.wikipedia.org/wiki/Artificial_intelligence)
和機(jī)器學(xué)習(xí)(ML)
(https://en.wikipedia.org/wiki/Machine_learning)
都屬于目前最熱門的話題。
在日常生活中,AI這個(gè)術(shù)語我們隨處可見。你或許會(huì)從立志高遠(yuǎn)的開發(fā)者哪那里聽說她(他)們想要學(xué)習(xí)AI。你又或許會(huì)從運(yùn)營(yíng)者那里聽到他們想要在他們的的服務(wù)中實(shí)施AI。但往往這些人中的絕大多數(shù)都并不明白什么是AI。
在你閱讀完這篇文章之后,你將會(huì)了解AI和ML的基本知識(shí)。而更重要的是,你將會(huì)明白深度學(xué)習(xí)(https://en.wikipedia.org/wiki/Deep_learning),這類最熱門的機(jī)器學(xué)習(xí),是如何運(yùn)作的。
這篇教程適用于所有人,所以本文并沒有涉及高級(jí)數(shù)學(xué)。
背景
理解深度學(xué)習(xí)如何工作的第一步是掌握下列重要術(shù)語之間的區(qū)別。
人工智能(AI)v.s.機(jī)器學(xué)習(xí)(ML)
人工智能是人類智能在計(jì)算機(jī)上的復(fù)制。
AI的研究之初,那時(shí)的研究人員嘗試著復(fù)制人類智能來完成像玩游戲這樣特定的任務(wù)。
他們引入了大量的計(jì)算機(jī)需要遵守的規(guī)則。有了這些規(guī)則,計(jì)算機(jī)就有了一份包含各種可能行動(dòng)的清單,并基于這些規(guī)則作出決定(https://en.wikipedia.org/wiki/Expert_system)。
機(jī)器學(xué)習(xí),指的是機(jī)器使用大量數(shù)據(jù)集而非硬編碼規(guī)則來進(jìn)行學(xué)習(xí)的能力。
ML允許計(jì)算機(jī)通過自身來學(xué)習(xí)。這種學(xué)習(xí)方法得益于現(xiàn)代計(jì)算機(jī)的強(qiáng)大性能,性能保證了計(jì)算機(jī)能夠輕松處理樣本數(shù)巨大的數(shù)據(jù)集。
監(jiān)督學(xué)習(xí) v.s. 非監(jiān)督學(xué)習(xí)
監(jiān)督學(xué)習(xí)
(https://en.wikipedia.org/wiki/Supervised_learning)
指的是利用已標(biāo)注數(shù)據(jù)集進(jìn)行的學(xué)習(xí),該數(shù)據(jù)中包含輸入和期望輸出。
當(dāng)你利用監(jiān)督學(xué)習(xí)來訓(xùn)練AI時(shí),你提供給它一份輸入,并告訴它預(yù)期的輸出。
如果AI所生成的輸出是錯(cuò)誤的(譯者注:與期望輸出不同),它將重新調(diào)整計(jì)算(注:應(yīng)該是對(duì)公式的參數(shù)進(jìn)行重新計(jì)算)。這個(gè)過程將會(huì)在數(shù)據(jù)集上迭代運(yùn)行,直到AI不再犯錯(cuò)誤。
預(yù)測(cè)天氣的AI便是監(jiān)督學(xué)習(xí)的一個(gè)典型例子。它通過學(xué)習(xí)過往數(shù)據(jù)來預(yù)測(cè)未來天氣。該訓(xùn)練數(shù)據(jù)擁有輸入(氣壓,濕度,風(fēng)速)和輸出(溫度)。
非監(jiān)督學(xué)習(xí)
(https://en.wikipedia.org/wiki/Unsupervised_learning)
是機(jī)器學(xué)習(xí)應(yīng)用沒有指定結(jié)構(gòu)的數(shù)據(jù)集來進(jìn)行學(xué)習(xí)的任務(wù)。
當(dāng)你應(yīng)用非監(jiān)督學(xué)習(xí)來訓(xùn)練AI時(shí),你可以讓AI對(duì)數(shù)據(jù)進(jìn)行邏輯分類。
電商網(wǎng)站上的行為預(yù)測(cè)AI便是非監(jiān)督學(xué)習(xí)的一個(gè)例子。它無法通過擁有輸入和輸出的已標(biāo)注數(shù)據(jù)集來進(jìn)行學(xué)習(xí)。相反地,它在輸入數(shù)據(jù)上創(chuàng)建它自己的分類。它將會(huì)告訴你哪一種用戶最可能購(gòu)買差異化的商品。
深度學(xué)習(xí)又是如何運(yùn)作的呢?
現(xiàn)在你已經(jīng)準(zhǔn)備好去理解什么是深度學(xué)習(xí),以及它是如何運(yùn)作的。
深度學(xué)習(xí)是機(jī)器學(xué)習(xí)中的一種方法。在給予它一組輸入后,它使我們能夠訓(xùn)練AI來預(yù)測(cè)結(jié)果。監(jiān)督學(xué)習(xí)和非監(jiān)督學(xué)習(xí)都能夠用來訓(xùn)練AI。
我們將通過建立一個(gè)假設(shè)的機(jī)票價(jià)格預(yù)估系統(tǒng)來闡述深度學(xué)習(xí)是如何運(yùn)作的。我們將應(yīng)用監(jiān)督學(xué)習(xí)方法來訓(xùn)練它。
我們想要該機(jī)票價(jià)格預(yù)估系統(tǒng)基于下列輸入來進(jìn)行預(yù)測(cè)(為了簡(jiǎn)潔,我們除去了返程機(jī)票):
起飛機(jī)場(chǎng)
到達(dá)機(jī)場(chǎng)
起飛日期
航空公司
接下來我們將視角轉(zhuǎn)向我們的AI的大腦內(nèi)部。
和動(dòng)物一樣,我們預(yù)估系統(tǒng)AI的大腦中有神經(jīng)元。將它們用圓圈表示。這些神經(jīng)元在內(nèi)部都是相互連接的。
Image credit: CS231n
這些神經(jīng)元又被分為三種層次:
輸入層
隱藏層
輸出層
輸入層接收輸入數(shù)據(jù)。在本案例中,在輸入層中有4個(gè)神經(jīng)元:起飛機(jī)場(chǎng),到達(dá)機(jī)場(chǎng),起飛日期以及航空公司。輸入層將輸入傳遞給第一個(gè)隱藏層。
隱藏層針對(duì)我們的輸入進(jìn)行數(shù)學(xué)運(yùn)算。創(chuàng)建神經(jīng)網(wǎng)絡(luò)的一大難點(diǎn)便是決定隱藏層的層數(shù),以及每層中神經(jīng)元的個(gè)數(shù)。
深度學(xué)習(xí)中的“深度”所指的是擁有多于一層的隱藏層。
輸出層返回的是輸出數(shù)據(jù)。在本案例中,輸出層返回的是價(jià)格預(yù)測(cè)。
那么它到底是如何來運(yùn)算價(jià)格預(yù)測(cè)的呢?
這便是我們將要揭曉的深度學(xué)習(xí)的奇妙之處了。
每?jī)蓚€(gè)神經(jīng)元之間的連接,都對(duì)應(yīng)著一個(gè)權(quán)重。該權(quán)重決定了輸入值的重要程度。初始的權(quán)重會(huì)被隨機(jī)設(shè)定。
當(dāng)預(yù)測(cè)機(jī)票價(jià)格時(shí),起飛日期是決定價(jià)格的最重要的因素之一。因此,與起飛日期這個(gè)神經(jīng)元相連的連接將會(huì)有更高的權(quán)重。
Image credit: CodeProject
每個(gè)神經(jīng)元都有一個(gè)激活函數(shù)(https://en.wikipedia.org/wiki/Activation_function)。若沒有數(shù)學(xué)推導(dǎo),這些函數(shù)十分晦澀難懂。
簡(jiǎn)而言之,激活函數(shù)的作用之一便是將神經(jīng)元的結(jié)果“標(biāo)準(zhǔn)化”。
一旦一組輸入數(shù)據(jù)通過了神經(jīng)網(wǎng)絡(luò)的所有層,神經(jīng)網(wǎng)絡(luò)將會(huì)通過輸出層返回輸出數(shù)據(jù)。
一點(diǎn)也不復(fù)雜,是吧?
訓(xùn)練神經(jīng)網(wǎng)絡(luò)
訓(xùn)練A是深度學(xué)習(xí)中最難的部分了。這又是為什么呢?
你需要一個(gè)龐大的數(shù)據(jù)集
你還需要強(qiáng)大的算力
對(duì)于我們的機(jī)票價(jià)格預(yù)估系統(tǒng),我們需要得到過往的票價(jià)數(shù)據(jù)。由于起始機(jī)場(chǎng)和起飛時(shí)間擁有大量可能的組合,所以我們需要的是一個(gè)非常龐大的票價(jià)列表。
為了訓(xùn)練機(jī)票價(jià)格預(yù)估系統(tǒng)的AI,我們需要將數(shù)據(jù)集的數(shù)據(jù)給予該系統(tǒng),然后將它輸出的結(jié)果與數(shù)據(jù)集的輸出進(jìn)行比對(duì)。因?yàn)榇藭r(shí)AI仍然沒有受過訓(xùn)練,所以它的輸出將會(huì)是錯(cuò)誤的。
一旦我們遍歷完了整個(gè)數(shù)據(jù)集,我們便能創(chuàng)造出一個(gè)函數(shù),該函數(shù)告訴我們AI的輸出和真實(shí)輸出到底相差多少。這個(gè)函數(shù)我們稱為損失函數(shù)。
在理想情況下,我們希望我們的損失函數(shù)為0,該理想情況指的是AI的輸出和數(shù)據(jù)集的輸出相等之時(shí)。
如何減小損失函數(shù)呢?
改變神經(jīng)元之間的權(quán)重。我們可以隨機(jī)地改變這些權(quán)重直到損失函數(shù)足夠小,但是這種方法并不夠高效。
取而代之地,我們應(yīng)用一種叫做梯度下降(https://en.wikipedia.org/wiki/Gradient_descent)的技巧。
梯度下降是一種幫助我們找到函數(shù)最小值的技巧。在本案例中,我們尋找損失函數(shù)的最小值。
在每次數(shù)據(jù)集迭代之后,該方法以小增量的方式改變權(quán)重。通過計(jì)算損失函數(shù)在一組確定的權(quán)重集合上的導(dǎo)數(shù)(梯度),我們便能夠知悉最小值在哪個(gè)方向。
Image credit: Sebastian Raschka
為了最小化損失函數(shù),你需要多次迭代數(shù)據(jù)集。這便是需要高算力的原因了。
利用梯度下降更新權(quán)重的過程是自動(dòng)進(jìn)行的。這便是深度學(xué)習(xí)的魔力所在!
一旦我們訓(xùn)練好機(jī)票價(jià)格預(yù)估的AI之后,我們便能夠用它來預(yù)測(cè)未來的價(jià)格了。
拓展閱讀
神經(jīng)網(wǎng)絡(luò)有非常多的種類:用于計(jì)算機(jī)視覺(https://en.wikipedia.org/wiki/Computer_vision)的卷積神經(jīng)網(wǎng)絡(luò)(https://en.wikipedia.org/wiki/Convolutional_neural_network)以及應(yīng)用于自然語言處理(https://en.wikipedia.org/wiki/Natural_language_processing)的循環(huán)神經(jīng)網(wǎng)絡(luò)(https://en.wikipedia.org/wiki/Recurrent_neural_network)。
如果你想要學(xué)習(xí)深度學(xué)習(xí)的技術(shù)細(xì)節(jié),我建議你參加一個(gè)在線課程。
吳恩達(dá)(https://medium.com/@andrewng)的深度學(xué)習(xí)專項(xiàng)課程(https://www.coursera.org/specializations/deep-learning)是當(dāng)下最好的深度學(xué)習(xí)課程之一。如果你并不需要一個(gè)證書,你便可以免費(fèi)旁聽這門課程。
小結(jié)
1. 深度學(xué)習(xí)應(yīng)用神經(jīng)網(wǎng)絡(luò)來模仿動(dòng)物智能。
2. 神經(jīng)網(wǎng)絡(luò)中有三個(gè)層次的神經(jīng)元:輸入層、隱藏層以及輸出層。
3. 神經(jīng)元之間的連接對(duì)應(yīng)一個(gè)權(quán)重,該權(quán)重決定了各輸入數(shù)據(jù)的重要程度。
4. 神經(jīng)元中應(yīng)用一個(gè)激活函數(shù)來“標(biāo)準(zhǔn)化”神經(jīng)元輸出的數(shù)據(jù)。
5. 你需要一個(gè)龐大的數(shù)據(jù)集來訓(xùn)練神經(jīng)網(wǎng)絡(luò)。
6. 在數(shù)據(jù)集上迭代并與輸出結(jié)果相比較,我們將會(huì)得到一個(gè)損失函數(shù),損失函數(shù)能告訴我們AI生成的結(jié)果和真實(shí)結(jié)果相差多少。
7. 在每次數(shù)據(jù)集的迭代之后,都會(huì)利用梯度下降方法調(diào)整神經(jīng)元之間的權(quán)重,以減小損失函數(shù)。
數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼
若不方便掃碼,搜微信號(hào):CDAshujufenxi
SQL Server 中 CONVERT 函數(shù)的日期轉(zhuǎn)換:從基礎(chǔ)用法到實(shí)戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉(zhuǎn)換是高頻需求 —— 無論 ...
2025-09-18MySQL 大表拆分與關(guān)聯(lián)查詢效率:打破 “拆分必慢” 的認(rèn)知誤區(qū) 在 MySQL 數(shù)據(jù)庫管理中,“大表” 始終是性能優(yōu)化繞不開的話題。 ...
2025-09-18CDA 數(shù)據(jù)分析師:表結(jié)構(gòu)數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結(jié)構(gòu)數(shù)據(jù)(如數(shù)據(jù)庫表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-18DSGE 模型中的 Et:理性預(yù)期算子的內(nèi)涵、作用與應(yīng)用解析 動(dòng)態(tài)隨機(jī)一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結(jié)構(gòu)數(shù)據(jù)特征價(jià)值的專業(yè)核心 表結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫表、Excel 表、 ...
2025-09-17Excel 導(dǎo)入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實(shí)戰(zhàn)應(yīng)用 在用 Python(如 pandas 庫)處理 Excel 數(shù)據(jù)時(shí),“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗(yàn)與 t 檢驗(yàn):差異、適用場(chǎng)景與實(shí)踐應(yīng)用 在數(shù)據(jù)分析與統(tǒng)計(jì)學(xué)領(lǐng)域,假設(shè)檢驗(yàn)是驗(yàn)證研究假設(shè)、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結(jié)構(gòu)數(shù)據(jù)全功能周期的專業(yè)操盤手 表格結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計(jì)劃中 rows 數(shù)量的準(zhǔn)確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計(jì)劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對(duì)象的 text 與 content:區(qū)別、場(chǎng)景與實(shí)踐指南 在 Python 進(jìn)行 HTTP 網(wǎng)絡(luò)請(qǐng)求開發(fā)時(shí)(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結(jié)構(gòu)數(shù)據(jù)價(jià)值的核心操盤手 表格結(jié)構(gòu)數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫表)是企業(yè)最基礎(chǔ)、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請(qǐng)求工具對(duì)比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請(qǐng)求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長(zhǎng)浮點(diǎn)數(shù)據(jù)的科學(xué)計(jì)數(shù)法問題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長(zhǎng)浮點(diǎn)數(shù)據(jù)時(shí)的科學(xué)計(jì)數(shù)法問題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務(wù)數(shù)據(jù)分析步驟的落地者與價(jià)值優(yōu)化者 業(yè)務(wù)數(shù)據(jù)分析是企業(yè)解決日常運(yùn)營(yíng)問題、提升執(zhí)行效率的核心手段,其價(jià)值 ...
2025-09-12用 SQL 驗(yàn)證業(yè)務(wù)邏輯:從規(guī)則拆解到數(shù)據(jù)把關(guān)的實(shí)戰(zhàn)指南 在業(yè)務(wù)系統(tǒng)落地過程中,“業(yè)務(wù)邏輯” 是連接 “需求設(shè)計(jì)” 與 “用戶體驗(yàn) ...
2025-09-11塔吉特百貨孕婦營(yíng)銷案例:數(shù)據(jù)驅(qū)動(dòng)下的精準(zhǔn)零售革命與啟示 在零售行業(yè) “流量紅利見頂” 的當(dāng)下,精準(zhǔn)營(yíng)銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務(wù)數(shù)據(jù)分析:概念辨析與協(xié)同價(jià)值 在數(shù)據(jù)驅(qū)動(dòng)決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務(wù)數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類分析:從操作實(shí)踐到業(yè)務(wù)價(jià)值挖掘 在數(shù)據(jù)分析場(chǎng)景中,聚類分析作為 “無監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計(jì)模型的核心目的:從數(shù)據(jù)解讀到?jīng)Q策支撐的價(jià)值導(dǎo)向 統(tǒng)計(jì)模型作為數(shù)據(jù)分析的核心工具,并非簡(jiǎn)單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10