用三张图理解深度学习的工作原理
寫在前面
開局一張圖,你的清楚的認(rèn)識(shí)到人工智能、機(jī)器學(xué)習(xí)、深度學(xué)習(xí)這些概念的關(guān)系,了解了之后,我們在進(jìn)行接下來的討論。
深度學(xué)習(xí)的要素
為了給出深度學(xué)習(xí)的定義并搞清楚深度學(xué)習(xí)與其他機(jī)器學(xué)習(xí)方法的區(qū)別,我們首先需要知道機(jī)器學(xué)習(xí)算法在做什么。我們有個(gè)大致的認(rèn)識(shí),給定包含預(yù)期結(jié)果的示例,機(jī)器學(xué)習(xí)將會(huì)發(fā)現(xiàn)執(zhí)行一項(xiàng)數(shù)據(jù)處理任務(wù)的規(guī)則。因此,我們需要以下三個(gè)要素來進(jìn)行機(jī)器學(xué)習(xí)。
- 輸入數(shù)據(jù)點(diǎn)。例如,你的任務(wù)是語音識(shí)別,那么這些數(shù)據(jù)點(diǎn)可能是記錄人們說話的聲音文件。如果你的任務(wù)是為圖像添加標(biāo)簽,那么這些數(shù)據(jù)點(diǎn)可能是圖像。
- 預(yù)期輸出的示例。對于語音識(shí)別任務(wù)來說,這些示例可能是人們根據(jù)聲音文件整理生成 的文本。對于圖像標(biāo)記任務(wù)來說,預(yù)期輸出可能是“狗”“貓”之類的標(biāo)簽。
- 衡量算法效果好壞的方法。這一衡量方法是為了計(jì)算算法的當(dāng)前輸出與預(yù)期輸出的差距。 衡量結(jié)果是一種反饋信號,用于調(diào)節(jié)算法的工作方式。這個(gè)調(diào)節(jié)步驟就是我們所說的學(xué)習(xí)。
機(jī)器學(xué)習(xí)模型將輸入數(shù)據(jù)變換為有意義的輸出,這是一個(gè)從已知的輸入和輸出示例中進(jìn)行 “學(xué)習(xí)”的過程。因此,機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的核心問題在于有意義地變換數(shù)據(jù),換句話說,在于學(xué)習(xí)輸入數(shù)據(jù)的有用表示(representation)——這種表示可以讓數(shù)據(jù)更接近預(yù)期輸出。
深度學(xué)習(xí)是啥樣?
深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的一個(gè)分支領(lǐng)域:它是從數(shù)據(jù)中學(xué)習(xí)表示的一種新方法,強(qiáng)調(diào)從連續(xù)的層(layer)中進(jìn)行學(xué)習(xí),這些層對應(yīng)于越來越有意義的表示。“深度學(xué)習(xí)”中的“深度”指 的并不是利用這種方法所獲取的更深層次的理解,而是指一系列連續(xù)的表示層。數(shù)據(jù)模型中包含多少層,這被稱為模型的深度(depth)。這一領(lǐng)域的其他名稱包括分層表示學(xué)習(xí)(layered representations learning)和層級表示學(xué)習(xí)(hierarchical representations learning)。
現(xiàn)代深度學(xué)習(xí)通常包含數(shù)十個(gè)甚至上百個(gè)連續(xù)的表示層,這些表示層全都是從訓(xùn)練數(shù)據(jù)中自動(dòng)學(xué)習(xí)的。與此相反,其他機(jī)器學(xué)習(xí)方法的重點(diǎn)往往是僅僅學(xué)習(xí)一兩層的數(shù)據(jù)表示,因此有時(shí)也被稱為淺層學(xué)習(xí)(shallow learning)。看下面這張圖,對深度學(xué)習(xí)有一個(gè)形象化的認(rèn)識(shí)。
用三張圖理解深度學(xué)習(xí)的工作原理
現(xiàn)在你已經(jīng)知道,機(jī)器學(xué)習(xí)是將輸入(比如圖像)映射到目標(biāo)(比如標(biāo)簽“貓”),這一過程是通過觀察許多輸入和目標(biāo)的示例來完成的。你還知道,深度神經(jīng)網(wǎng)絡(luò)通過一系列簡單的數(shù)據(jù)變換(層)來實(shí)現(xiàn)這種輸入到目標(biāo)的映射,而這些數(shù)據(jù)變換都是通過觀察示例學(xué)習(xí)到的。下面來具體看一下這種學(xué)習(xí)過程是如何發(fā)生的。 神經(jīng)網(wǎng)絡(luò)中每層對輸入數(shù)據(jù)所做的具體操作保存在該層的權(quán)重(weight)中,其本質(zhì)是一 串?dāng)?shù)字。用術(shù)語來說,每層實(shí)現(xiàn)的變換由其權(quán)重來參數(shù)化。權(quán)重有時(shí)也被稱為該層的參數(shù)(parameter)。在這種語境下,學(xué)習(xí)的意思是為神經(jīng)網(wǎng)絡(luò)的所有層找到一組權(quán)重值,使得該網(wǎng)絡(luò)能夠?qū)⒚總€(gè)示例輸入與其目標(biāo)正確地一一對應(yīng)。但重點(diǎn)來了:一個(gè)深度神經(jīng)網(wǎng)絡(luò)可能包含數(shù)千萬個(gè)參數(shù)。找到所有參數(shù)的正確取值可能是一項(xiàng)非常艱巨的任務(wù),特別是考慮到修改某個(gè)參數(shù)值將會(huì)影響其他所有參數(shù)的行為。下面是圖例的直觀描述。
想要控制一件事物,首先需要能夠觀察它。想要控制神經(jīng)網(wǎng)絡(luò)的輸出,就需要能夠衡量該輸出與預(yù)期值之間的距離。這是神經(jīng)網(wǎng)絡(luò)損失函數(shù)(loss function)的任務(wù),該函數(shù)也叫目標(biāo)函數(shù)(objective function)。損失函數(shù)的輸入是網(wǎng)絡(luò)預(yù)測值與真實(shí)目標(biāo)值(即你希望網(wǎng)絡(luò)輸出的結(jié)果),然后計(jì)算一個(gè)距離值,衡量該網(wǎng)絡(luò)在這個(gè)示例上的效果好壞。下面是圖例的直觀描述。
深度學(xué)習(xí)的基本技巧是利用這個(gè)距離值作為反饋信號來對權(quán)重值進(jìn)行微調(diào),以降低當(dāng)前示 例對應(yīng)的損失值。這種調(diào)節(jié)由優(yōu)化器(optimizer)來完成,它實(shí)現(xiàn)了所謂的反向傳播(backpropagation)算法,這是深度學(xué)習(xí)的核心算法。下面是圖例的直觀描述。
一開始對神經(jīng)網(wǎng)絡(luò)的權(quán)重隨機(jī)賦值,因此網(wǎng)絡(luò)只是實(shí)現(xiàn)了一系列隨機(jī)變換。其輸出結(jié)果自然也和理想值相去甚遠(yuǎn),相應(yīng)地,損失值也很高。但隨著網(wǎng)絡(luò)處理的示例越來越多,權(quán)重值也 在向正確的方向逐步微調(diào),損失值也逐漸降低。這就是訓(xùn)練循環(huán)(training loop),將這種循環(huán)重復(fù)足夠多的次數(shù)(通常對數(shù)千個(gè)示例進(jìn)行數(shù)十次迭代),得到的權(quán)重值可以使損失函數(shù)最小。具有最小損失的網(wǎng)絡(luò),其輸出值與目標(biāo)值盡可能地接近,這就是訓(xùn)練好的網(wǎng)絡(luò)。再次強(qiáng)調(diào),這是一個(gè)簡單的機(jī)制,一旦具有足夠大的規(guī)模,將會(huì)產(chǎn)生魔法般的效果。
總結(jié)
以上是生活随笔為你收集整理的用三张图理解深度学习的工作原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 重学java基础第五课:博客的重要性
- 下一篇: 前端学习(3328):闭包的形式4