關於深度學習的13個常見問答

關於深度學習的13個常見問答

來自專欄九三智能控4 人贊了文章

概述

從Facebook的研究到DeepMind的傳奇演算法,深度學習已經登上了數據科學界的頂峰。它帶來了驚人的創新,不可思議的突破,而我們才剛剛開始!

然而,如果你是這個領域的新手,「深度」這個詞可能會讓你產生懷疑。深度學習是當今這一行業最熱門的話題之一,但不幸的是,它對大多數人來說是陌生的和神秘的。很多人的印象是,深入學習涉及到大量的數學和統計知識。

如果你有類似的關於深度學習的問題,但不知道如何、何時、何地去提問-你就到達了正確的地方。這篇文章回答了你想知道的大部分內容。

在這篇文章的結尾,我們將消除一些關於深度學習的神話,並回答關於這個領域的一些被廣泛問到的問題。我們還提供了大量的資源讓您開始工作。

這是令人興奮的部分-並不像大多數人想像的那麼困難。繼續讀下去,你會發現更多!

目錄

  • 什麼是深度學習?為什麼它如此受歡迎?
  • 深度學習是一種炒作還是有現實生活中的應用?
  • 深度學習和機器學習有什麼區別?
  • 深造的先決條件是什麼?
  • 是否有必要有一個研究背景的深度學習,以開始它?
  • 我應該選擇哪種工具/語言來構建深度學習模型?
  • 為什麼GPU是構建深度學習模型所必需的?
  • 什麼時候(和在哪裡)應用深度學習?
  • 我們需要大量的數據來訓練深度學習模式嗎?
  • 我在哪裡可以找到一些基本的項目想法,以實踐深入學習?
  • 深度學習的免費學習資源是什麼?
  • 深度學習領域面試常見問題?
  • 深度學習的未來是什麼?

什麼是深度學習,為什麼現在如此受歡迎?

深度學習只不過是機器學習的一種範例,近年來顯示出難以置信的前景。這是因為深度學習與人腦的功能有很大的相似之處。人腦的優越性是一個顯而易見的事實,它被認為是有史以來最富創造力、最多才多藝、最有效的自學習模型。

現在,舉一個例子來理解深度學習模型的功能:

在上面的圖片中你看到了什麼?

最明顯的答案是「一輛車」,對嗎?儘管事實上,有沙子,綠色植物,雲和很多其他的東西,我們的大腦標記這個圖像為一輛汽車。這是因為我們的大腦已經學會了識別圖像的主題。

這種從大量外來數據中提取有用信息的能力使深度學習變得特別。隨著日漸增漲的數據量,我們希望我們的模型有更好的,更多的數據輸入進來。而深度學習模型會隨著數據量的增加而變得更優。

儘管深度學習已經存在了很多年,但這些技術的重大突破僅僅是在最近幾年。這是因為兩個主要原因-正如我們前面所看到的,首先是通過各種來源產生的數據的增加。下面的信息圖表簡潔地展示了這一趨勢。第二個問題是運行這些模型所需的硬體資源的增長。GPU正在成為運行深度學習模型的一種需求,它的速度比以前快了好幾倍,它們幫助我們在相對較短的時間內建立更大、更深入的學習模型。

這就是為什麼深度學習已經成為數據科學行業的一個熱門辭彙的原因。

深度學習是一種炒作還是有現實生活中的應用?

近年來,深度學習已經有了許多實際的應用。從Netflix著名的電影推薦系統到谷歌的自動駕駛汽車,深度學習已經在改變許多企業,並有望在幾乎所有行業帶來一場革命。從診斷癌症到贏得總統選舉,從創作藝術和寫作文學到賺到現實生活的錢,深度學習模型正在被應用到方方面面。因此,如果說這只是一個被炒作的話題,那就錯了。

技術型公司正在採用的一些深度學習的主要應用包括:

  • 谷歌和Facebook將文本翻譯成數百種語言。這是深入學習模型應用於NLP任務的一個重要的成功故事。
  • 像Siri,Alexa,Cortana這樣的會話代理基本上致力於通過LSTMS和RNN簡化語音識別技術。語音命令為機器識別的可能性增加了一個全新的領域。
  • 深度學習正被應用於計算機視覺領域,如光學字元識別和實時語言翻譯。
  • 像Snapchat和Instagram這樣的多媒體共享可應用於面部特徵檢測,這是深度學習的另一個應用。
  • 深度學習正應用於醫療保健領域,用來定位惡性細胞和其他異物,以檢測疑難雜症。

然而,有些人認為深度學習被誇大了,因為培訓深度學習模型所需的標籤數據並不容易獲得。即使有數據,訓練這些模型所需的計算能力的成本也很高。因此,由於這些障礙,人們無法體驗到深度學習的強大力量,而將其稱為炒作。

可以通過下面的博客來構建一些真實的生活中的深度學習應用:

  • 初學者可以在幾分鐘內構建的深度學習的六個應用程序(使用Python語言)

深度學習和機器學習有什麼區別?

這是我們大多數人需要理解的最重要的問題之一。這種比較主要可以在以下三個垂直點上進行:

數據依存度

深度學習與傳統機器學習最重要的區別在於,隨著數據規模的增加,機器學習的性能也隨之提高。當數據很小時,深度學習演算法的表現就不那麼好了。這是因為深度學習演算法需要大量的數據才能完全理解它。此時,傳統的機器學習演算法和手工規則佔上風。下圖歸納了這一事實。

特徵工程

特徵工程是將專業知識應用於特徵提取器的過程,以降低數據的複雜性,使模型更直觀地為學習演算法所用。就時間和專業知識而言,這一過程是有難度的,也是十分耗時和昂貴的。

在機器學習中,大多數應用的特徵需要由專家識別,然後根據領域和數據類型手工編碼。

例如,特徵可以是像素值、形狀、紋理、位置和方向。大多數機器學習演算法的性能取決於識別和提取特徵的準確性。

深度學習演算法試圖從數據中學習高級特徵。這是深度學習的一個非常獨道的部分,也是比傳統機器學習更為先進的一步。因此,深度學習減少了為每個問題開發新的特徵提取器的任務。例如,卷積神經網路將嘗試學習低層次的特徵,比如層的邊緣和線條,然後是人的部分臉,最後是人臉的高級表示。

可解釋性

最後,我們把可解釋性作為機器學習和深度學習比較的一個因素。這一因素是深度學習在應用於工業之前需要多於十倍思考的主要原因。

舉個例子。假設我們用深度學習來自動給文章打分。它在打分方面的表現相當出色,接近人類的表現。但有個問題。它並沒有說明為什麼會給出這個分數。實際上,從數學上來說,你可以找出深層神經網路的哪些節點被激活了,但我們不知道神經元應該建立什麼模型,以及這些神經元層共同在做什麼。所以我們不能對結果做出解釋。

另一方面,機器學習演算法,如決策樹,給了我們明確的規則,為什麼它選擇這個,所以它特別容易解釋背後的推理。因此,決策樹和線性/Logistic回歸等演算法主要用於工業可解釋性。

如果您想了解機器學習和深度學習之間的更深入的比較,我建議您瀏覽以下博客:

  • 深入學習與機器學習-你需要知道的本質差異!

深造的先決條件是什麼?

開始探索深度學習並不像人們想像得那麼困難。在深入學習之前,你應該先了解一些基本的基礎知識。深入學習需要了解以下課題:

· 數學:你應該對概率、導數、線性代數和一些其他基本問題有所了解。Khan學院提供了一個系統的課程,幾乎涵蓋了上述所有主題。

· 統計學:對於任何機器學習問題來說,統計的基礎是必需的。理解統計學的概念是必要的,因為大部分的深度學習概念來自於統計學的概念。你可以查看這裡的在線課程。

· 工具:需要一個像樣的編碼技巧來實現深度學習到現實生活中的問題。Coursera的《Python中的數據科學入門》是以Python為工具開始的一個全面的課程。

· 機器學習:機器學習是深度學習的基礎。沒有理解機器學習的概念,就無法開始深度學習。你可以先學習機器學習的課程:吳恩達機器學習理論基礎。

有關先決條件的更詳細了解,請參看下文

  • Python深度學習入門教程

我是否需要攻讀博士學位才能開啟深度學習的職業生涯?

完全沒有必要,博士學位並不是從事深度學習的必修課。你可以不用上大學就可以學習、實驗和開始你的職業生涯。任何工作或職位的重點通常是展示你的能力,而不是你的學位本身。

話雖如此,如果你選擇將此與深度學習結合起來,那麼一個特定領域的博士學位(比如NLP的語言學)肯定會加快你的學習速度。

我應該選擇哪種工具/語言來構建深度學習模型?

建議您使用Python,因為它具有用於機器學習的健壯的生態系統。python生態系統由開發人員和程序員組成,他們為python用戶社區提供開源庫和支持。這使得為各種演算法編寫複雜代碼的任務更加容易,而實現和實驗技術也會更加容易。

同時,Python是一種更通用的編程語言,可以用於開發和實現。這大大簡化了從開發到操作的轉換。也就是說,一個可以預測機票價格的深度學習產品,不僅可以用python開發,還可以同樣的形式與您的網站連接。這就是Python成為一種通用語言的原因。

除此之外,我建議初學者使用像Keras這樣的高級庫。這使得實驗變得更容易,因為它為隱藏在演算法中的不必要的信息提供了抽象。並允許訪問可以調整以提高此類模型性能的參數。讓我們舉一個例子來理解這一點:

當您按下電視遙控器上的按鈕時,您是否需要關心在遙控器內發生的後台進程?你需要知道按下那個按鍵後是什麼信號被發送出去,或者它是如何被放大的嗎?

沒必要,對吧?

因為也許物理學家需要對這些過程有一個了解,但對於一個坐在卧室里的瘸子來說,這只是一個信息載入。

在深度學習領域,除了Python之外,還有其他競爭者,如R、Julia、C和Java。對於庫的替代方案,您可以查看TensorFlow、Pytorch、Caf 2、DL4J等。我們還應該了解它們的最新發展。

如果您對編程不太熟悉,還有一些基於GUI的軟體,不需要編寫代碼,可以構建深度學習模型,如LOB或Google的AutoML等。

為什麼GPU是構建深度學習模型所必需的?

當您訓練一個深度學習模型時,將執行兩個主要操作:

  • 前向傳遞
  • 後向傳遞

在前向傳遞中,輸入通過神經網路傳遞,並在對輸入進行處理後生成輸出。而在反向傳遞中,我們根據前向傳遞的誤差對神經網路的權值進行修正。

這兩種運算本質上都是矩陣乘法。一個簡單的矩陣乘法可以用下面的圖來表示

在這裡,我們可以看到,第一個數組第一行中的每個元素與第二個數組的第一列相乘。因此,在神經網路中,我們可以把第一個數組作為神經網路的輸入,而第二個陣列可以作為網路的權值。

這任務似乎不難。現在你深度學習的感覺如何- VGG16(帶有16個隱藏層的卷積神經網路是經常使用到的深度學習應用),它有1億4000萬個參數;AKA權值和偏置。現在想想所有的矩陣乘法,你只需輸入一個數組到這個網路!如果我們採用傳統的方法,需要花費幾年的時間來訓練這種系統。

我們注意到,神經網路的計算密集部分由多個矩陣乘法組成。那麼我們怎麼才能更快呢?

我們只需同時執行所有操作,而不是一個接一個順序執行。簡而言之,這就是為什麼我們使用GPU(圖形處理單元)而不是CPU(中央處理單元)來訓練神經網路的原因。

何時(何地)應用神經網路?

深度學習已經成為人們關注的焦點之一。它的「更深」版本在圖像識別、語音和自然語言處理等領域都取得了巨大的突破。

既然我們知道它是如此的有影響,那麼主要問題來了:什麼時候和什麼時候不能應用神經網路?這個領域現在就像一個金礦,每天都有許多發現被發現。要想成為這場「淘金熱」的一部分,你必須記住以下幾點:

  • 首先,深度學習模型需要清晰、信息豐富的數據(大部分是大數據)來進行訓練。試著想像一下小孩子的深度學習模型。它首先觀察父母是如何走路的。然後,它試圖自己走,每走一步,孩子就學會如何完成一項特定的任務。它可能會摔倒幾次,但經過幾次失敗的嘗試,它學會了如何走路。如果你不讓它走,它可能永遠學不會走路。你能提供給孩子的機會越多,效果就越好。
  • 對於複雜的問題,如圖像處理,使用深度學習需要更為謹慎。深度學習演算法屬於一表示學習演算法。這些演算法將複雜的問題分解成更簡單的形式,使它們變得可以理解(或「可表示」)。把它想像成在你吞咽之前需要咀嚼食物。這對於傳統的(非表示性學習)演算法來說難度將更大。
  • 當你做應用時,需要選擇適當的深度學習演算法來解決問題。每個問題都有自己的特點。所以數據決定了你解決問題的方式。例如,如果問題是序列生成,遞歸神經網路更為適合。然而,如果是圖像相關的問題,可能採取卷積神經網路會更好些。
  • 最後但最為重要的是,運行深度神經網路模型必需對硬體有要求。神經網路早在很久以前就被「發現」了,但它們在最近幾年裡才開始閃光,這主要是因為現在的計算資源更好、更為強大。如果你想用這些網路來解決現實生活中的問題,就準備買一些高端硬體吧!

我們需要大量的數據來訓練深度學習模型嗎?

的確,我們需要大量的數據來訓練一個典型的深度學習模型。但是,我們通常可以通過使用所謂的遷移學習來克服這一問題。讓我詳細解釋一下。

在工業應用中使用深度學習模型的障礙之一是數據量太小。訓練一些流行的深度學習模型所需的數據示例如下:

谷歌的神經機器翻譯

VGG網路

DeepVideo

目標

文本翻譯

圖片分類

視頻分類

數據量

六百萬英法句對

一百二十萬帶分類標籤的圖片

一百一十萬帶分類標籤的視頻

參數

380M

140M

大約100M

然而,即使數據量不是很大,針對特定任務的深度學習模型也可以用於同一領域中的不同問題。這種技術被稱為遷移學習。

例如,我們有一組1000張貓和狗的圖像,標記為1和0(貓1,狗0),我們還有另一組500張測試圖像,我們需要對它們進行分類。因此,我們不需要對1000幅圖像的數據進行深度學習,我們可以使用預先訓練過的VGGNet模型對數據進行再訓練,並使用它對未標記的圖像集進行分類。在你的應用程序中,一個經過預先訓練的模型可能不會100%準確,但它利用他山之玉,節省了巨大工作量。

您可以看看這篇文章,以便更好地直觀地使用經過預先培訓的模型。

我在哪裡可以找到基本的項目想法,以實踐深度學習?

要實踐深度學習,光靠想法是不行的。我們還需要有標籤的數據來測試我們的想法能否利用深度學習來實現。

1. 對於初學者,強烈建議開始使用MNIST數據。數據集包含手寫數字及其實際標籤,即0到9之間的數字。您甚至可以在識別數字競賽中來評估您的模型。

2. 對於中級用戶來說,「年齡檢測挑戰」是一個很好的項目。數據集由印度電影演員的面部圖像組成。這項任務是根據一個人的面部特徵來預測他或她的年齡。為了簡單起見,這個問題已經轉化為一個多類問題,其中包括青年、中年和老年三個分類。

您還可以參考令人興奮的深度學習數據集和問題的列表。

深度學習的免費學習資源有哪些?

作為一種相對較新的技術,沒有足夠的內容和教程可供初學者使用。然而,與深度學習相關的免費內容和資源卻在穩步增長.學習資源可以根據深度學習的不同應用進行分類。

  • :
  • 圖像處理:

1. 吳恩達的卷積神經網路

2. 卷積神經網路的體系結構理解

3. 卷積神經網路的初學者指南

4. 機器學習很有趣!第三部分:深度學習與卷積神經網路

5. 基於深度卷積神經網路的圖像網路分類

6. R-CNN

7. 深度卷積

  • 序列預測/時間預測

1. 吳恩達的序列模型

2. 深度學習的要點:長期短期記憶簡介

3. 遞歸神經網路的不合理有效性

4. 理解LSTM網路

5. 遞歸神經網路與LSTMS

  • 自然語言處理

1. 自然語言處理的深度學習

2. 詞和短語的分散式表示及其組成

3. 基於神經網路的序列學習

4. 深度語音:擴展端到端語音識別

此外,還可通過以下博客獲得更多的資源列表:

  • Python深度學習入門教程
  • 超贊深度學習資源

深度學習領域面試常見問題?

在深度學習中可能會問到的一些常見問題有:

1. 深度學習模式是如何學習的?

2. 深度學習模式有哪些局限性?

3. 前饋神經網路和遞歸神經網路有什麼區別?

4. 什麼是激活功能,為什麼需要它們?

5. 什麼是CNN?它有哪些應用?

6. 什麼是池化?它是怎麼工作的?

7. 什麼是dropout layer,為什麼要使用它?

8. 什麼是梯度消失問題,我們如何克服這一問題?

9. 什麼是優化函數?列舉幾個常見的優化函數。

請注意,這不是一個面試問題的詳盡的清單。你可以通過下面的技能測試來測試自己在深度學習中遇到的重要問題。

  • 30道測試一名數據科學家的深度學習的題
  • 40道測試一名數據科學家的深度學習的題
  • 45道測試數據科學家的基本試題

深度學習的未來是什麼?

近年來,深度學習取得了長足的進步,但仍有許多尚未開發的潛力。我們仍然處於這一領域的初級階段,似乎每天都有新的突破。我們肯定能看到的應用之一是汽車行業,在那裡,深度學習可以通過實現自動駕駛汽車而使駕駛發生革命性的變化。雖然我們沒有水晶球來預測未來,但我們可以看到深度學習模型需要越來越少的人類數據科學家和研究人員的參與。

在不久的將來,我們肯定會看到一種趨勢,即深度學習的知識將成為每一個數據科學實踐者所必備的技能。事實上,你一定注意到了最近出現了一個叫「深度學習工程師」的工作崗位。該人員負責部署和維護公司各部門使用的深度學習模型。不用說,業界對這類人士的需求會很大。

目前,DL的一個局限性是它做了人類要求它做的一切。它需要大量的數據來學習它的目標,並複製它。這在某些應用中引起了偏差。我們可以看到隨著時間的推移,這種改進使得在訓練過程中會消除一些偏差。

隨著時間的推移,我們甚至可能不再把深度學習和其他類型的學習區分開來。它將成為一個流行的和常用的領域,將不需要做特別的品牌推廣,市場推廣或銷售推廣。

在很多情況下,研究人員在訓練了DL模型之後,仍然無法解釋背後的「原因」。「它產生了很好的效果,但是為什麼你要用某種方式來調整一個超參數呢?」希望隨著DL的迅速發展,我們將看到這個「黑匣子」的概念將成為歷史,我們可以解釋它所做決定背後的直覺。

章節附註

這些都是我們的門戶網站或其他網站上最常見的問題的答案,也是那些想要加入這股深度學習潮流的人們希望看到的回答。

關於深度學習,你還有什麼需要澄清的問題嗎?使用下面的評論部分來提問;或者跳到我們的討論門戶上,我們會幫助到您的!


推薦閱讀:

TAG:機器學習 | TensorFlow | 深度學習DeepLearning |