【筆記】深度學習入門:基于Python的理論與實現(六)

深度學習

深度學習是加深了層的深度神經網絡

加深網絡

本節我們將這些已經學過的技術匯總起來,創建一個深度網絡,挑戰 MNIST 數據集的手寫數字識別

向更深的網絡出發

  • 基于3×3的小型濾波器的卷積層。
  • 激活函數是ReLU。
  • 全連接層的后面使用Dropout層。
  • 基于Adam的最優化。
  • 使用He初始值作為權重初始值。
    在這里插入圖片描述

進一步提高識別精度

可以發現進一步提高識別精度的技術和 線索。比如,集成學習、學習率衰減、Data Augmentation(數據擴充)等都有 助于提高識別精度。尤其是Data Augmentation,雖然方法很簡單,但在提高 識別精度上效果顯著,Data Augmentation基于算法“人為地”擴充輸入圖像(訓練圖像)

加深層的動機

這種比賽的結果顯示,最近前幾名 的方法多是基于深度學習的,并且有逐漸加深網絡的層的趨勢。也就是說, 可以看到層越深,識別性能也越高。
加深層的好處:

  • 可以減少網絡的參數數量。

一次 5 × 5 的卷積運算的區域可以由兩次 3 × 3 的卷積運算抵充。并且, 相對于前者的參數數量 25(5 × 5),后者(反向)一共是 18(2 × 3 × 3),通過疊加卷 積層,參數數量減少了。而且,這個參數數量之差會隨著層的加深而變大。 比如,重復三次 3 × 3 的卷積運算時,參數的數量總共是 27。而為了用一次 卷積運算“觀察”與之相同的區域,需要一個 7 × 7 的濾波器,此時的參數數 量是 49。
在這里插入圖片描述

  • 使學習更加高效。

通過加深層,可以分層次地傳遞信息,這一點也很重要。比如,因為提 取了邊緣的層的下一層能夠使用邊緣的信息,所以應該能夠高效地學習更加 高級的模式。也就是說,通過加深層,可以將各層要學習的問題分解成容易 解決的簡單問題,從而可以進行高效的學習。

深度學習的小歷史

一般認為,現在深度學習之所以受到大量關注,其契機是 2012 年舉辦 的大規模圖像識別大賽ILSVRC(ImageNet Large Scale Visual Recognition Challenge)。在那年的比賽中,基于深度學習的方法(通稱 AlexNet)以壓倒 性的優勢勝出,徹底顛覆了以往的圖像識別方法。2012 年深度學習的這場逆襲成為一個轉折點,在之后的比賽中,深度學習一直活躍在舞臺中央。

ImageNet

ImageNet 是擁有超過 100 萬張圖像的數據集。如圖 8-7 所示,它包含 了各種各樣的圖像,并且每張圖像都被關聯了標簽(類別名)。每年都會舉辦 使用這個巨大數據集的 ILSVRC 圖像識別大賽。
在這里插入圖片描述
這些年深度學習取得了不斐的成績,其中 VGG、GoogLeNet、ResNet深度學習 已廣為人知,在與深度學習有關的各種場合都會遇到這些網絡

VGG

VGG 是由卷積層和池化層構成的基礎的 CNN,它的特點在于將有權重的層(卷積層或者全連接層)疊加至 16 層(或者 19 層), 具備了深度(根據層的深度,有時也稱為“VGG16”或“VGG19”)。

于 3×3 的小型濾波器的卷積層的運算是 連續進行的。重復進行“卷積層重疊 2 次到 4 次,再通過池化 層將大小減半”的處理,最后經由全連接層輸出結果。
在這里插入圖片描述

GoogLeNet

GoogLeNet 的特征是,網絡不僅 在縱向上有深度,在橫向上也有深度(廣度),GoogLeNet 在橫向上有“寬度”,這稱為“Inception 結構”
在這里插入圖片描述

Inception 結構使用了多個大小不同的濾波器(和池化), 最后再合并它們的結果。GoogLeNet 的特征就是將這個 Inception 結構用作 一個構件(構成元素),很多地方都使用了大小為1 × 1 的濾波器的卷積層。這個 1 × 1 的卷積運算通過在通道方向上減小大小,有助于減少參數和實現高速化處理
在這里插入圖片描述

ResNet

我們已經知道加深層對于提升性能很重要。但是,在深度學習中,過度 加深層的話,很多情況下學習將不能順利進行,導致最終性能不佳。ResNet 中, 為了解決這類問題,導入了“快捷結構”(也稱為“捷徑”或“小路”)。導入這 個快捷結構后,就可以隨著層的加深而不斷提高性能了(當然,層的加深也 是有限度的)。

在連續 2 層的卷積層中,將輸入 x 跳著連接至 2 層后的輸出。 這里的重點是,通過快捷結構,原來的 2 層卷積層的輸出 F(x) 變成了 F(x) + x。 通過引入這種快捷結構,即使加深層,也能高效地學習。這是因為,通過快 捷結構,反向傳播時信號可以無衰減地傳遞。
在這里插入圖片描述

深度學習的高速化

大多數深度學習的框架都支持 GPU(Graphics Processing Unit),可以高速地處理大量的運算。另外,最 近的框架也開始支持多個 GPU 或多臺機器上的分布式學習

需要努力解決的問題

從圖中可知,AlexNex 中,大多數時間都被耗費在卷積層上。實際上, 卷積層的處理時間加起來占 GPU 整體的 95%,占 CPU 整體的 89% !因此, 如何高速、高效地進行卷積層中的運算是深度學習的一大課題
在這里插入圖片描述

基于 GPU 的高速化

GPU 原本是作為圖像專用的顯卡使用的,但最近不僅用于圖像處理, 也用于通用的數值計算。由于 GPU 可以高速地進行并行數值計算,因此 GPU 計算的目標就是將這種壓倒性的計算能力用于各種用途

分布式學習

為了進一步提高深度學習所需的計算的速度,可以考慮在多個 GPU 或者多臺機器上進行分布式計算。現在的深度學習框架中,出現了好幾個支持 多 GPU 或者多機器的分布式學習的框架。其中,Google 的 TensorFlow、微 軟的CNTK(Computational Network Toolki)在開發過程中高度重視分布式 學習。以大型數據中心的低延遲·高吞吐網絡作為支撐,基于這些框架的分 布式學習呈現出驚人的效果。

基于TensorFlow的分布式學習的效果:橫軸是GPU的個數,縱軸是與單個 GPU 相比時的高速化率
在這里插入圖片描述

關于分布式學習,“如何進行分布式計算”是一個非常難的課題。它包 含了機器間的通信、數據的同步等多個無法輕易解決的問題。可以將這些難 題都交給 TensorFlow 等優秀的框架

運算精度的位數縮減

在深度學習的高速化中,除了計算量之外,內存容量、總線帶寬等也有 可能成為瓶頸。關于內存容量,需要考慮將大量的權重參數或中間數據放在 內存中。關于總線帶寬,當流經 GPU(或者 CPU)總線的數據超過某個限制時, 就會成為瓶頸。考慮到這些情況,我們希望盡可能減少流經網絡的數據的位數。計算機中表示小數時,有 32 位的單精度浮點數和 64 位的雙精度浮點數 等格式。根據以往的實驗結果,在深度學習中,即便是 16 位的半精度浮點 數(half float),也可以順利地進行學習,由此可以認為今后半精度浮點數將被作為標準使用。特別是在面向 嵌入式應用程序中使用深度學習時,位數縮減非常重要。

深度學習的應用案例

深度學習在圖像、語音、自然語言等各個不同 的領域,深度學習都展現了優異的性能。以計算機視覺這個領域為中 心,介紹幾個深度學習能做的事情(應用)

物體檢測

物體檢測是從圖像中確定物體的位置,并進行分類的問題

物體檢測是比物體識別更難的問題。之前介紹的物體 識別是以整個圖像為對象的,但是物體檢測需要從圖像中確定類別的位置, 而且還有可能存在多個物體。
在這里插入圖片描述

在使用 CNN 進行物體檢測的方法中,有一個叫作 R-CNN 的有名的方法

圖像分割

圖像分割是指在像素水平上對圖像進行分類

使用以像 素為單位對各個對象分別著色的監督數據進行學習。然后,在推理時,對輸 入圖像的所有像素進行分類。
在這里插入圖片描述

要基于神經網絡進行圖像分割,最簡單的方法是以所有像素為對象,對每個像素執行推理處理
有人提出了一個名為FCN(Fully Convolutional Network)[37] 的方法。該方法通過一次 forward 處理,對所有像素進行分類。
FCN 的字面意思是“全部由卷積層構成的網絡”。相對于一般的 CNN 包 含全連接層,FCN 將全連接層替換成發揮相同作用的卷積層。

圖像標題的生成

一個基于深度學習生成圖像標題的代表性方法是被稱為 NIC(Neural Image Caption)的模型,NIC由深層的CNN和處理自然語 言的RNN(Recurrent Neural Network)構成。RNN是呈遞歸式連接的網絡, 經常被用于自然語言、時間序列數據等連續性的數據上。我們將組合圖像和自然語言等多種信息進行的處理稱為多模態處理

深度學習的未來

介紹幾個揭示了深度學習的可能性和未來的研究

圖像風格變換

如果指定將梵高的繪畫風格應用于內容圖像,深度學習 就會按照指示繪制出新的畫作
在這里插入圖片描述

圖像的生成

DCGAN 中使用了深度學習,其技術要點是使用了 Generator(生成者) 和 Discriminator(識別者)這兩個神經網絡。Generator 生成近似真品的圖 像,Discriminator 判別它是不是真圖像(是 Generator 生成的圖像還是實際 拍攝的圖像)。像這樣,通過讓兩者以競爭的方式學習,Generator 會學習到 更加精妙的圖像作假技術,Discriminator 則會成長為能以更高精度辨別真假 的鑒定師。兩者互相切磋、共同成長,這是GAN(Generative Adversarial Network)這個技術的有趣之處。在這樣的切磋中成長起來的 Generator 最終
會掌握畫出足以以假亂真的圖像的能力(或者說有這樣的可能)。
沒有給出監督數據的問題稱為無監督學習
前面我們學習的神經網絡都有對應的監督數據稱為監督學習

自動駕駛

在識別周圍環境的技術中,深度學習的力量備受期待。比如,基于 CNN 的神經網絡 SegNet,可以像圖 8-25 那樣高精度 地識別行駛環境。

基于深度學習的圖像分割的例子:道路、車輛、建筑物、人行道等被高精度地識 別了出來
在這里插入圖片描述

Deep Q-Network(強化學習)

就像人類通過摸索試驗來學習一樣(比如騎自行車),讓計算機也在摸索 試驗的過程中自主學習,這稱為強化學習(reinforcement learning)。強化學 習和有“教師”在身邊教的“監督學習”有所不同。 強化學習的基本框架是,代理(Agent)根據環境選擇行動,然后通過這 個行動改變環境。根據環境的變化,代理獲得某種報酬。強化學習的目的是 決定代理的行動方針,以獲得更好的報酬。報酬并不是 確定的,只是“預期報酬”。比如,在《超級馬里奧兄弟》這款電子游戲中, 讓馬里奧向右移動能獲得多少報酬不一定是明確的。這時需要從游戲得分(獲 得的硬幣、消滅的敵人等)或者游戲結束等明確的指標來反向計算,決定“預 期報酬”。如果是監督學習的話,每個行動都可以從“教師”那里獲得正確的評價。
在 Q 學習中,為了確定最合適的行動,需要確定一個被稱為最優行動價值函數的函數。為了近似這個函數,DQN 使用了深度學習 (CNN)。

小結

深度學習領域還有很多尚未揭曉的東西,新的研究正一個接一個地出現。 今后,全世界的研究者和技術專家也將繼續積極從事這方面的研究,一定能 實現目前無法想象的技術。

  • 對于大多數的問題,都可以期待通過加深網絡來提高性能。
  • 在最近的圖像識別大賽ILSVRC中,基于深度學習的方法獨占鰲頭,使用的網絡也在深化。
  • VGG、GoogLeNet、ResNet等是幾個著名的網絡。
  • 基于GPU、分布式學習、位數精度的縮減,可以實現深度學習的高速化。
  • 深度學習(神經網絡)不僅可以用于物體識別,還可以用于物體檢測、圖像分割。
  • 深度學習的應用包括圖像標題的生成、圖像的生成、強化學習等。最近,深度學習在自動駕駛上的應用也備受期待。

end
內容來自《深度學習入門:基于Python的理論與實現》

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/712215.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/712215.shtml
英文地址,請注明出處:http://en.pswp.cn/news/712215.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

初階數據結構:棧與隊列的擴展補充

目錄 1. 棧與隊列練習題1.1 棧的括號匹配問題1.2 用隊列來實現棧1.3 用棧來實現隊列1.4 擴展:循環隊列 1. 棧與隊列練習題 1.1 棧的括號匹配問題 題目信息: 題目鏈接: 括號匹配問題 思路: 利用棧的后進先出特性來實現括號的匹配 …

網絡編程day3

1.思維導圖 2.TCP機械臂測試 tcpCli.c #include<myhead.h> #define SER_IP "192.168.125.162" //服務器IP #define SER_PORT 7777 //服務器端口#define CLI_IP "192.168.159.144" //客戶端IP #define CLI_PORT 9999 //客戶端端口號int…

婚姻情感 17

婚姻情感 17 怎么和女生聊天&#xff1f;讓對方感興趣給對方好體驗深層次的聊天刷心疼長得帥和強大的區別從我到我們 追女生的思路 怎么和女生聊天&#xff1f; 在和女生互動的時候就很難去進入一種很深層次的一個連接&#xff0c;就是說很多時候我們和女生互動總是停留在第三…

底層自行實現——監督學習算法(1線性回歸)

1.1 簡單線性回歸 1. 簡介 簡單線性回歸&#xff08;SLR - Simple Linear Regression&#xff09;模型可以表示為&#xff1a; Y β 0 β 1 X ? Y \beta_0 \beta_1X \epsilon Yβ0?β1?X? Y Y Y&#xff1a;因變量或目標變量。 X X X&#xff1a;自變量或解釋變量。…

考取ORACLE數據庫OCP的必要性 Oracle數據庫

OCP證書是什么&#xff1f; OCP&#xff0c;全稱Oracle Certified Professional&#xff0c;是Oracle公司的Oracle數據庫DBA&#xff08;Database Administrator&#xff0c;數據庫管理員)認證課程。這是Oracle公司針對數據庫管理領域設立的一項認證課程&#xff0c;旨在評估和…

C++ 學習筆記(Structured bindings)

C 學習筆記&#xff08;Structured bindings&#xff09; 這個特性是 C17 引入的&#xff0c;個人認為主要是解決如何讓函數返回多個值的問題。在這之前&#xff0c;我們一般用 std::pair 或者 std::tuple 來返回多個值。比如下面的例子&#xff1a; std::tuple<int, int …

網盤拉新項目去哪找平臺對接?推薦6個一手渠道接單!

在當今這個充滿競爭的時代&#xff0c;網盤項目的尋找與對接成為了許多團隊關注的焦點。那么&#xff0c;我們應該如何找到那些既靠譜又有潛力的項目呢&#xff1f;經過深入研究和全網檢索&#xff0c;我為大家盤點了6個值得一試的接單渠道&#xff0c;助力網盤推廣團隊高效尋找…

matlab工具包

matlab安裝yalmip和cplex出錯 - 知乎 (zhihu.com) Cplex的安裝和使用實例-CSDN博客 一條龍教程&#xff1a;Matlab下使用yalmip(工具箱)cplex&#xff08;求解器&#xff09;_使用yalmip和cplex求解器進行建模和求解的步驟如下:-CSDN博客 啊啊啊&#xff0c;好開心&#xff…

Mint_21.3 drawing-area和goocanvas的FB筆記(二)

一、goocanvas安裝 Linux mint 21.3 庫中帶有 libgoocanvas-2.0-dev, 用sudo apt install libgoocanvas-2.0-dev 安裝&#xff0c;安裝完成后&#xff0c;檢查一個 /usr/lib/x86_64-linux-gnu 下是否有libgoocanvas.so的軟件鏈接。如果沒有&#xff0c;或是 .so.x 等類似后面…

事務Transaction簡寫為tx的原因

版權聲明 本文原創作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl Transaction簡寫的由來 數據庫事務Transaction通常被簡寫為tx。讓人疑惑的是&#xff1a;這個單詞本身沒有字母x為何又將其簡寫成了tx呢&#xff1f; 第一種可能 Transac…

SpringBoot整合ActiveMQ步驟

SpringBoot整合ActiveMQ主要涉及以下幾個步驟&#xff1a; 添加依賴&#xff1a;在SpringBoot項目的pom.xml文件中添加ActiveMQ的依賴。 <dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-spring</artifactId><ver…

“平民化”非結構數據處理

在全球信息產業高速發展的背景下&#xff0c;IDC預測&#xff0c;2018 到 2025 年之間&#xff0c;全球產生的數據量將會從 33 ZB 增長到 175 ZB&#xff0c; 復合增長率27%&#xff0c;其中超過 80%的數據都會是處理難度較大的非結構化數據&#xff0c;如文檔、文本、圖形、圖…

搜索題解

單詞方陣 - 洛谷 思路&#xff1a;在字符方陣中找到y并將其坐標存入數組&#xff0c;再找其八個方向是否有目標字符&#xff0c;有的話就深搜一個方向&#xff0c;能搜完就將數組標記&#xff0c;最好標記的就輸入字符&#xff0c;沒標記的就輸出*。 代碼如下&#xff1a; #…

linux 拷貝文件到指定目錄 命令

在 Linux 中&#xff0c;使用 cp 命令可以拷貝文件到指定目錄。下面是 cp 命令的基本用法&#xff1a; bash cp [選項] 源文件 目標目錄 - 選項&#xff1a;可以是一些附加的選項&#xff0c;例如 -r 表示遞歸拷貝&#xff08;用于復制目錄&#xff09;。 - 源文件&#xff1a…

javascript中的class基礎入門(1)

javascript中的class start 最近在學習&#xff1a;cocos &#xff0c;準備自己制作小游戲。過程中遇到不少疑問&#xff0c;我計劃將這些疑問寫成一個系列博客&#xff0c;用以記錄。這篇文章來了解 class 1. 前言 1. 前言 本文對應版本 Cocos Creator 3.8。Cocos Creato…

【Sql server】假設有三個字段a,b,c 以a和b分組,如何查詢a和b唯一,但是c不同的記錄

歡迎來到《小5講堂》&#xff0c;大家好&#xff0c;我是全棧小5。 這是《Sql Server》系列文章&#xff0c;每篇文章將以博主理解的角度展開講解&#xff0c; 特別是針對知識點的概念進行敘說&#xff0c;大部分文章將會對這些概念進行實際例子驗證&#xff0c;以此達到加深對…

2_SQL

文章目錄 SQL數據完整性實體完整性域完整性參照完整性default&#xff08;默認值&#xff09;comment&#xff08;注釋&#xff09; 多表設計一對一一對多多對多數據庫三大范式第一范式&#xff1a;原子性第二范式&#xff1a;唯一性第三范式&#xff1a;數據的冗余 多表查詢連…

JQMobile Loader Widget 遮罩層改造

最近在用jqmobile 做一個混合APP項目時候用到 jqmobile1.4.3提供的Loader Widget控件,但是這個控件本身是一個loading彈出層,這個彈出層彈出之后,用戶還是可以去點擊按鈕,重復發送請求,為了防止重復提交,我想了兩種辦法, 1,在loading彈出層彈出之后,讓按鈕不可用.但是form表單…

記錄SSM項目集成Spring Security 4.X版本 之 加密驗證和記住我功能

目錄 前言 一、用戶登錄密碼加密認證 二、記住我功能 前言 本次筆記的記錄是接SSM項目集成Spring Security 4.X版本 之 加入DWZ,J-UI框架實現登錄和主頁菜單顯示-CSDN博客https://blog.csdn.net/u011529483/article/details/136255768?spm1001.2014.3001.5502 文章之后補…

Python列表的合并、重復、判斷與切片操作你學會了嗎

1.合并列表 通過 實現 list1 ["佛跳墻", "腸粉", "刀削面", "烤鴨"]list2 [32, 4, 5, 7.43, True]list3 list1 list2print(list3) # [佛跳墻, 腸粉, 刀削面, 烤鴨, 32, 4, 5, 7.43, True] 2.重復輸出列表中的元素 通過 * 實…