1. 程式人生 > >深度學習DeepLearning.ai系列課程學習總結:1. 深度學習簡介

深度學習DeepLearning.ai系列課程學習總結:1. 深度學習簡介

轉載過程中,圖片丟失。

更多資訊請範圍原創版本:

本節內容對應吳恩達deeplearning.ai課程中,第一部分第一週的內容。

學習過程中的一些筆記與心得與大家分享!

Welcome

歡迎大家來到深度學習課堂!

很多人可能已經發現深度學習已經開始影響了網際網路的很多行業,例如網頁搜尋或是線上廣告等。

同時,合理利用深度學習也會創造很多新的產品和企業。

深度學習可以在醫療保健(如對X光圖片更好的解析)、個性化教育、農業、自動駕駛等方面充分發揮其優點。

如果你希望瞭解深度學習究竟是什麼,或者想要從事深度學習行業的工作,那麼本課程一定會給你幫助!

當你從頭到尾完成了本系列課程後,我們相信你對深度學習已經有了一定的瞭解,這些內容可以大大地豐富您的簡歷。

在接下來的十年裡,將會是屬於AI的十年,AI會給整個社會帶來巨大的變化,我們希望您能夠在AI的發展中貢獻出自己的力量。

所以,讓我們現在就開始學習吧!

我們認為,AI在當前時代而言,重要性和堪比100年前的電力發展。

在大約100年前,我們社會的電氣化改變了每個行業,包括運輸、製造、醫療、通訊等等。

而在今天,AI同樣有潛力去改變我們社會的各個行業。

AI快速發展的主要原因之一就是深度學習,所以,深度學習是目前全世界最受追捧的技能之一。

我們希望通過這一系列的課程來幫助你掌握這些AI的知識。

在第一課中,你將會了解神經網路的基礎:什麼是神經網路和深度學習。也就是我們課程的第一部分第一週的內容。

整套課程包含五個部分,每個部分通常需要兩到四周。

在第一部分中,我們將學習如何構建一個新的多層神經網路以及如何對資料進行訓練。

在第一部分的課程完成後,你將能夠構建一個深層神經網路用來識別貓。

接下來,在第二部分中,我們將具體講一些深度學習中偏重實踐方面的內容。

具體包括如何對一個網路引數進行調優,正則化,diagnose price and variants, 改進優化演算法。

所以,第二部分課程雖然僅僅只有三週時間,但是其中包含很多重要並且奇妙的內容。

第三部分的課程中佔用兩週的課時,您將會學習如何完整的構建一個機器學習專案。

事實證明,在目前這個深度學習的年代,建立一個深度學習系統的方面已經發生的巨大的變化。

之前的做法是這樣的:把資料依次切換到訓練和測試階段,進行交叉驗證。

那麼目前的深度學習應該如何實現呢?

在第三部分中,我們將詳細的瞭解端到端學習,並詳細瞭解什麼情況下端到端學習是適用的。

第三部分中的材料相對比較獨特,我們將會分享一些之前實際專案中的經驗與教訓。而這一部分內容是在其他課程中很少見到的。

不過我們真心的期望您在應用的過程中不要遭遇這些坑。

在第四部分中,我們討論的是卷積神經網路(CNN)。

卷積神經網路的主要應用領域在於影象處理,在第四部分中,我們將詳細講解如何建立這些模型。

在最後的第五部分中,我們講解的內容是序列模型,以及如何應用於自然語言處理等問題中。

序列模型包括RNN和LSTM等,他們對於長短期記憶模型非常有效。

在第五部分中,您將會詳細瞭解到這些專業術語的含義,並將這些資料應用於這些模型中。

這些模型可以應用於語音識別、音樂生成等問題。

因此,通過這一系列的課程,您將會對深度學習有一個完整的認識。

希望你可以利用它們來解決一些問題並提升自己的職業生涯。

所以,讓我們現在就開始吧!

什麼是神經網路?

深度學習實際就是指訓練一個規模較大的神經網路。

那麼什麼是神經網路呢?

讓我們從如何這個示例開始吧!

這是一個房價預測的示例,假設你有6間房子,你知道每間房子的大小和價格。

你希望預測一個房價和房屋大小的關係圖。

在下圖中,橫座標表示的是房屋的大小,縱座標表示的房屋價格。

你可能會覺得他們的關係可以近似的估計為線性關係,那麼讓我們來新增一條線!

但是,現在出現了一個問題:當房屋大小較小時,價格出現了負數。

正常情況下,房屋價格永遠不可能為負數,所以,我們需要對分割線進行一些調整。

例如當房價為0時,不再繼續下降。

那麼我們得到的函式如下:

上面這條曲線可以認為是一個最簡單的神經網路。

對於這個神經網路,我們有一個輸入x,表示房屋的大小。

然後經過該網路(單一神經元)的作用,輸入為房屋的價格y。

在很多神經網路文獻中,這個函式會被頻繁使用,這個函式成為ReLU函式(rectified linear unit)。

該函式在小於某個值時,輸出始終為0,一旦大於某個值,斜率始終固定。

上述描述的是一個神經單元(也可以認為是一個最簡單的神經網路)。

一個較大的神經網路最終會是由大量的單個神經元組合在一起構成的。

接下來,我們來看另外一個例項:

我們不再單純根據房屋的面積來預測房屋價格,而是根據更多的房屋資訊來共同判斷房屋的價格。

例如,包括房屋臥室的數目、房子所在的位置、房屋所屬城市的富有程度等等。

比如說我們通常認為影響房價的一個因素是我們家庭的人口數。例如一個可以容納三口之家、四口之家、五口之家的房價通常是有一定差異的。而具體來說,一個房子能夠容納多少人一方面是看房子的面積大小、另一方面也需要看房子的臥室數目。

此外,我們在購房時,生活便利程度影響了一定的房價。例如,如果周圍就有一些大型超市,學校或者工作地點就在房屋周圍的話,房屋價格將會有一定的提升。而生活的方便程度主要是依據房屋的位置所確定的。

還有一點,房屋周圍的學校的好壞也很大程度上影響著方便、例如學區房附近的房價總是那麼的高昂。那麼影響周圍學校的好壞一方面是房屋的地理位置,另外一方面則是城市的富裕程度。相對來說,越發達的城市,教育質量通常也越好。

將上述描述可以轉換為下圖:

直接影響房價的因素是家庭的人口數、生活便利程度以及學校的質量。

而我們直接可以獲取到的定量輸入指標則是房屋大小、臥室數目、郵政編碼以及城市發達程度。

最終期望預測的結果是房屋的價格。

與之前的單個神經元不同,我們用更多的神經元組成了一個比之前略大的神經網路。

而神經網路的魅力在於我們只需要給定一個神經網路結構後,有足夠的訓練集(包含輸入x與輸出y),則可以使網路自動的進行調優。

在上述神經網路的中間一層中,我們稱之為隱層。

我們假設隱層中的每一個神經元的輸入都是前一陣的組合。

在監督學習中,我們會用大量的x和y進行訓練,最終可以得到一個合適的模型。

在下一部分中,我們將會學習更多監督學習的例項。

監督學習

目前,神經網路中監督學習的應用已經產生了巨大的經濟效益。

在監督學習中,我們需要給定一些訓練資料,包含對應的輸入和輸出。

通過這些資料,我們可以訓練出一個模型,根據該模型,可以用於預測其他的輸入對應的輸出可能會是什麼。

目前,一個應用的非常多的場景是線上廣告。它可以根據該使用者的習慣來預測該使用者對哪些廣告資訊點選的可能性更大來給使用者有選擇的推薦廣告,從而提高廣告的推廣作用。

此外,監督學習對應計算機視覺領域也起到了巨大的推動作用。例如,我們可以用監督學習對圖片進行分類。

同時,在語音識別、機器翻譯、無人駕駛等等領域,監督學習都發揮了巨大的作用。

對於神經網路而言,不同型別的神經網路可以用於不同的領域。

例如,在我們上一節中提到的房價預測,我們使用的是一個基本的標準神經網路結果。

而對於影象相關的應用,通常卷積神經網路(CNN)可以發揮更大的優勢。

對於語音等與時間序列相關的應用,遞迴神經網路(RNN)則更為適用。

而對於一些更為複雜的應用場景,例如無人駕駛,一方面包含著適用CNN的影象作為輸入,另一方面還包含著雷達資訊等,這些場景還需要使用者根據具體應用去設計合適的神經網路結構。

在一些書籍和論文中,你可能會經常看到一些如下結構的神經網路,它表示的是一個標準結構的神經網路。

卷積神經網路常用用於處理影象相關的應用。卷積神經網路的結構如下:

迴圈神經網路常常用於與時間序列有關的資料。其基本結構如下:

在機器學習領域,我們通常將輸入資料非為結構化資料和非結構化資料兩類。

其中,結構化資料指的是可以直接在資料庫中儲存的資料具有一個明確含義的資料。

例如在上一節中我們談及的房屋的面積大小或者是臥室數目等資訊。

而非結構化資料通常指的是音訊、影象,文字等等內容。其特徵可能是影象中的畫素資訊或者是文字中的內容等。

相對結構化資料而言,計算機對於非結構化的資料更加地難以理解和處理。

但是,目前隨著深度學習的發展,我們對圖片和語音等已經有了較好的處理能力。

總體上,從目前來看,深度學習對於非結構的話的資料帶來了更多的可能,但還是有很大的擴充套件空間。而對於結構化資料,目前技術已經較為成熟,可以為我們帶來更多的經濟利益。

我們在本課程中會介紹各種技術,其中會覆蓋結構化資料和非結構化資料。

事實上,神經網路已經有了幾十年的歷史了,那麼為什麼在最近才突然迅猛的發展起來呢?下一節中,我們將簡單的對其進行介紹。

淺談深度學習近幾年飛速發展的原因

想要了解為什麼深度學習技術在近幾年突飛猛進,我們需要首先了解一下深度學習什麼情況下可以發揮更好的效能。

從上圖可以看出,橫軸表示的是訓練的資料量(有標籤的資料),縱軸則表示的是演算法的效能。

對於一些傳統的機器學習方法,例如支援向量機或者邏輯迴歸等,我們可以得到的曲線如紅色曲線所示。在樣本量很小時,增加樣本資料量可以對演算法的效能有一定的提升,然而,當樣本量達到一定程度時,效能將很快達到瓶頸。這些方面無法利用更多的資料量來提升自己的效能。

而在過去十年中,我們的社會發生了巨大的變化,我們可以很容易的收集到大量的資料。隨著資料量的增大,我們需要擴大神經網路的規模,才能充分地利用大量的資料量來提高演算法的效能。

也就是,如果我們希望得到好的效能,那麼需要滿足一下兩個方面:

1 有大量的標定資料

2 建立大規模的神經網路

但是,隨著網路的不斷增大,訓練的複雜程度也是不算的增加。

在訓練集比較小時,深度學習實際上無法給演算法效能帶來明顯的提升。

所以,當你的訓練集不足時,一個更好的方式是自己去選擇一些特徵而不是直接用大規模網路進行訓練。而當你的訓練集很大時,使用大規模的神經網路進行訓練通常會比手工選取特徵效能要好的多。

事實上,對於深度學習而言,想要發揮其優勢需要滿足以下三點:

1 足夠的資料量:若資料量不足,則無法發揮深度學習的優勢

2 足夠的計算能力:若計算能力不足,則無法快速訓練得到模型,不具備實際意義。

3 優秀的演算法:優秀的演算法可以在相同的資料量和計算能力時,得到更好的效能。同時,一些演算法也可以簡化計算,提高計算效率,例如用ReLU替換sigmod函式。

此外,快速的計算能力可以幫助我們更快的進行演算法驗證。

在深度學習的研究與應用過程中,整理流程通常如下:

1 提出一個想法

2 程式設計進行實現

3 訓練得到模型並驗證演算法效能

4 分析並提出新的想法進行改進

而在一過程中,常常制約我們的最大因素在於模型的訓練過程。

此時,強大的計算能力在這一過程中則至關重要,可以幫助我們進行快速的訓練並提出新的模型進行研究。

總結一下,深度學習在近些年飛速發展的原因如下:

1 資料量的大爆發

2 GPU等硬體裝置帶來的計算效率的飛速增長

3 一些優秀的演算法提出。

關於本課程

在本系列課程中,將會包含五個部分。

現在講解的部分屬於第一個部分,主要講解的是深度學習的基礎知識,這也是真正深刻理解深度學習的最重要的一部分。

這一部分又包括了四節,上述內容是第一節,講述了深度學習的簡介。

在接下來的第二節中,我們將講解神經網路程式設計的基礎知識,包括正向傳播與反向傳播已經如何有效的實現神經網路。

在第三節中,將會學習如何實現一個包含隱層的神經網路。

在第四節中,我們將會學習如何建立一個擁有多層的神經網路並利用它實現相關的功能。

瞭解完整版本,請訪問原創連結: