獲贊2萬,一文讀懂深度學習
這是一篇Medium上獲得近2萬讚的深度學習入門指南,用圖文為你詳解深度學習中的各個基礎概念。
在我們的日常生活中,幾乎隨處可見AI和機器學習這些術語。但,絕大多數人並不明白什麼是AI。
小七希望當你閱讀完這篇文章後,會對AI和ML的基本知識有更多的瞭解和認識。更重要的是明白什麼是深度學習,以及這類最熱門的技術如何運作。
背景知識
理解深度學習如何工作的第一步是掌握下列重要術語之間的區別。
人工智慧(AI)v.s.機器學習(ML)
人工智慧是對人類智慧在計算機上的複製。
機器學習,指的是機器使用大量資料集而非硬編碼規則來進行學習的能力。
在整個人工智慧發展史上,幾乎一直隨同人工神經網路研究的進展而起起伏伏。近期引發人工智慧新一輪熱潮的深度學習,其名稱中的“深度”某種意義上就是指人工神經網路的層數,深度學習本質上是基於多層人工神經網路的機器學習演算法。 ML允許計算機通過自身來學習。這種學習方法得益於現代計算機的強大效能,效能保證了計算機能夠輕鬆處理樣本數巨大的資料集。
監督學習 v.s. 非監督學習
監督學習指的是從標記的訓練資料來推斷一個功能的機器學習任務。訓練資料包括一套訓練示例。在監督學習中,每個例項都是由一個輸入物件(通常為向量)和一個期望的輸出值(也稱為監督訊號)組成。
當你利用監督學習來訓練AI時,你提供給它一份輸入,並告訴它預期的輸出。
比如:預測天氣的AI便是監督學習的典型案例之一。它通過學習過往資料來預測未來天氣,其訓練資料擁有輸入(氣壓、溼度、風速)和輸出(溫度)。
非監督學習是指根據類別未知(沒有被標記)的訓練樣本/資料來進行學習,以解決模式識別中的各種問題。
無監督學習裡典型例子是聚類。聚類的目的在於把相似的東西聚在一起,而我們並不關心這一類是什麼。因此,一個聚類演算法通常只需要知道如何計算相似度就可以開始工作了。
具體來說,電商網站上的行為預測AI就屬於非監督學習。它在輸入資料上建立它自己的分類。它將會告訴你哪一種使用者最可能購買差異化的商品。
現在我們再來了解什麼是深度學習,以及它是如何運作的。
深度學習的概念由Hinton等人於2006年提出。
它是機器學習中一種基於對資料進行表徵學習的方法。在給予它一組輸入後,它使我們能夠訓練AI來預測結果。其動機在於建立、模擬人腦進行分析學習的神經網路,它模仿人腦的機制來解釋資料,例如影象、聲音和文字。
我們將通過建立一個假設的機票價格預估系統來闡述深度學習是如何運作的。我們將應用監督學習方法來訓練它。
我們想要該機票價格預估系統基於下列輸入來進行預測(為了簡潔,我們除去了返程機票):
起飛機場
到達機場
起飛日期
航空公司
神經網路
接下來我們將視角轉向AI的“大腦”內部。
人工神經網路(Artificial Neural Networks,簡稱ANNs),也簡稱為神經網路(NNs)或稱作連線模型(Connection Model),它是一種模仿動物神經網路行為特徵,進行分散式並行資訊處理的演算法數學模型。
Image credit: CS231n
這些神經元又被分為三種層次:
輸入層
隱藏層
輸出層
輸入層接收輸入資料。在本案例中,在輸入層中有4個神經元:起飛機場,到達機場,起飛日期以及航空公司。輸入層將輸入傳遞給第一個隱藏層。
隱藏層針對我們的輸入進行數學運算。建立神經網路的一大難點便是決定隱藏層的層數,以及每層中神經元的個數。
深度學習中的“深度”所指的是擁有多於一層的隱藏層。
輸出層返回的是輸出資料。在本案例中,輸出層返回的是價格預測。
那麼它到底是如何來運算價格預測的呢?這便是我們將要揭曉的深度學習的奇妙之處了。
每兩個神經元之間的連線,都對應著一個權重。該權重決定了輸入值的重要程度。初始的權重會被隨機設定。
當預測機票價格時,起飛日期是決定價格的最重要的因素之一。因此,與起飛日期這個神經元相連的連線將會有更高的權重。
每個神經元都有一個啟用函式(https://en.wikipedia.org/wiki/Activation_function)。若沒有數學推導,這些函式十分晦澀難懂。
簡而言之,啟用函式的作用之一便是將神經元的結果“標準化”。
一旦一組輸入資料通過了神經網路的所有層,神經網路將會通過輸出層返回輸出資料。
一點也不復雜,是吧?
訓練AI是深度學習中最難的部分了。這又是為什麼呢?
你需要一個龐大的資料集
你還需要強大的算力
對於我們的機票價格預估系統,我們需要得到過往的票價資料。由於起始機場和起飛時間擁有大量可能的組合,所以我們需要的是一個非常龐大的票價列表。
為了訓練機票價格預估系統的AI,我們需要將資料集的資料給予該系統,然後將它輸出的結果與資料集的輸出進行比對。因為此時AI仍然沒有受過訓練,所以它的輸出將會是錯誤的。
一旦我們遍歷完了整個資料集,我們便能創造出一個函式,該函式告訴我們AI的輸出和真實輸出到底相差多少。這個函式我們稱為損失函式。
在理想情況下,我們希望我們的損失函式為0,該理想情況指的是AI的輸出和資料集的輸出相等之時。
如何減小損失函式呢?
改變神經元之間的權重。我們可以隨機地改變這些權重直到損失函式足夠小,但是這種方法並不夠高效。
取而代之地,我們應用一種叫做梯度下降的技巧。
梯度下降是一種幫助我們找到函式最小值的技巧。在本案例中,我們尋找損失函式的最小值。
在每次資料集迭代之後,該方法以小增量的方式改變權重。通過計算損失函式在一組確定的權重集合上的導數(梯度),我們便能夠知悉最小值在哪個方向。
為了最小化損失函式,你需要多次迭代資料集。這便是需要高算力的原因了。利用梯度下降更新權重的過程是自動進行的。這便是深度學習的魔力所在!
一旦我們訓練好機票價格預估的AI之後,我們便能夠用它來預測未來的價格了。
1. 深度學習應用神經網路來模仿動物智慧。
2. 神經網路中有三個層次的神經元:輸入層、隱藏層以及輸出層。
3. 神經元之間的連線對應一個權重,該權重決定了各輸入資料的重要程度。
4. 神經元中應用一個啟用函式來“標準化”神經元輸出的資料。
5. 你需要一個龐大的資料集來訓練神經網路。
6. 在資料集上迭代並與輸出結果相比較,我們將會得到一個損失函式,損失函式能告訴我們AI生成的結果和真實結果相差多少。
7. 在每次資料集的迭代之後,都會利用梯度下降方法調整神經元之間的權重,以減小損失函式。
針對希望深入實戰深度學習的同學,七月線上開設了【深度學習集訓營】,略過Python基礎,從TensorFlow搭建DNN解決問題起步,線下一對一指導、互動,實戰BAT工業專案。
4月24日正式開課,線上線下結合(線下在北京和上海),從頭到尾全部實戰,涵蓋特徵工程、深度學習在計算機視覺和自然語言處理領域中的應用,更有大規模車輛圖片檢索等應用於智慧城市、視訊監控等場景的殺手級專案。
掃描下方二維碼加入課程
相關文章
- 深度學習很難?一文讀懂深度學習!深度學習
- 一文讀懂深度學習中的矩陣微積分深度學習矩陣
- 一文讀懂深度學習與機器學習的差異深度學習機器學習
- 一文讀懂深度學習:從神經元到BERT深度學習
- 讀懂深度學習,走進“深度學習+”階段深度學習
- 一文讀懂人工智慧、機器學習、深度學習、強化學習的關係(必看)人工智慧機器學習深度學習強化學習
- 深度學習助力資料壓縮,一文讀懂相關理論深度學習
- 一文讀懂遷移學習(附學習工具包)遷移學習
- 讀懂本文讓你和深度學習模型“官宣”深度學習模型
- 這份深度學習課程筆記獲吳恩達點贊深度學習筆記吳恩達
- 一文秒懂!“人工智慧、機器學習、深度學習”傻傻分得清人工智慧機器學習深度學習
- 一文讀懂最近流行的CNN架構(附學習資料)CNN架構
- 一文讀懂微核心
- 一文讀懂特徵工程特徵工程
- 一文讀懂強化學習:RL全面解析與Pytorch實戰強化學習PyTorch
- 一文讀懂計算機視覺中的深度域適應計算機視覺
- OpenHarmony 3GPP協議開發深度剖析——一文讀懂RIL協議
- 一文讀懂:何為嵌入式?如何學習嵌入式系統?
- 一文讀懂支付系統
- 一文讀懂前端快取前端快取
- 一文讀懂野指標指標
- 一文讀懂web組態Web
- 一文讀懂“負載均衡”負載
- 一文讀懂機器學習中的貝葉斯統計學機器學習
- 一文讀懂git核心工作原理Git
- 一文讀懂:GBDT梯度提升梯度
- 一文讀懂Kafka副本機制Kafka
- JVM(2)--一文讀懂垃圾回收JVM
- 一文讀懂Spring整合RedisSpringRedis
- 【Flutter】一文讀懂混入類MixinFlutter
- 一文讀懂Go Http Server原理GoHTTPServer
- 一文讓你迅速讀懂ServerlessServer
- 一文讀懂系列-JVM垃圾收集JVM
- 【讀書1】【2017】MATLAB與深度學習——深度學習(2)Matlab深度學習
- 一文讀懂BeanFactory和FactoryBean區別Bean
- 一文讀懂 Redis 分散式部署方案Redis分散式
- 一文讀懂JAVA多執行緒Java執行緒
- 一文讀懂MySQL複製機制MySql