0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

深入了解神經(jīng)網(wǎng)絡(luò)

人工智能君 ? 來源:人工智能君 ? 作者:人工智能君 ? 2022-07-08 10:22 ? 次閱讀

本章將介紹用于解決實(shí)際問題的深度學(xué)習(xí)架構(gòu)的不同模塊。前一章使用PyTorch的低級操作構(gòu)建了如網(wǎng)絡(luò)架構(gòu)、損失函數(shù)和優(yōu)化器這些模塊。本章將介紹用于解決真實(shí)問題的神經(jīng)網(wǎng)絡(luò)的一些重要組件,以及PyTorch如何通過提供大量高級函數(shù)來抽象出復(fù)雜度。本章還將介紹用于解決真實(shí)問題的算法,如回歸、二分類、多類別分類等。
本章將討論如下主題:
?詳解神經(jīng)網(wǎng)絡(luò)的不同構(gòu)成組件;
?探究PyTorch中用于構(gòu)建深度學(xué)習(xí)架構(gòu)的高級功能;
?應(yīng)用深度學(xué)習(xí)解決實(shí)際的圖像分類問題。
3.1詳解神經(jīng)網(wǎng)絡(luò)的組成部分
上一章已經(jīng)介紹了訓(xùn)練深度學(xué)習(xí)算法需要的幾個(gè)步驟。
1.構(gòu)建數(shù)據(jù)管道。
2.構(gòu)建網(wǎng)絡(luò)架構(gòu)。
3.使用損失函數(shù)評估架構(gòu)。
4.使用優(yōu)化算法優(yōu)化網(wǎng)絡(luò)架構(gòu)的權(quán)重。
上一章中的網(wǎng)絡(luò)由使用PyTorch數(shù)值運(yùn)算構(gòu)建的簡單線性模型組成。盡管使用數(shù)值運(yùn)算為玩具性質(zhì)的問題搭建神經(jīng)架構(gòu)很簡單,但當(dāng)需要構(gòu)建解決不同領(lǐng)域的復(fù)雜問題時(shí),如計(jì)算機(jī)視覺和自然語言處理,構(gòu)建一個(gè)架構(gòu)就迅速變得復(fù)雜起來。大多數(shù)深度學(xué)習(xí)框架,如PyTorch、TensorFlow和Apache MXNet,都提供了抽象出很多復(fù)雜度的高級功能。這些深度學(xué)習(xí)框架的高級功能稱為層(layer)。它們接收輸入數(shù)據(jù),進(jìn)行如同在前面一章看到的各種變換,并輸出數(shù)據(jù)。解決真實(shí)問題的深度學(xué)習(xí)架構(gòu)通常由1~150個(gè)層組成,有時(shí)甚至更多。抽象出低層的運(yùn)算并訓(xùn)練深度學(xué)習(xí)算法的過程如圖3.1所示。

poYBAGLHlGaAeEG8AAD5hFaFo4k373.png

圖3.1
3.1.1層——神經(jīng)網(wǎng)絡(luò)的基本組成
在本章的剩余部分,我們會(huì)見到各種不同類型的層。首先,先了解其中最重要的一種層:線性層,它就是我們前面講過的網(wǎng)絡(luò)層結(jié)構(gòu)。線性層應(yīng)用了線性變換:
Y=Wx+b
線性層之所以強(qiáng)大,是因?yàn)榍耙徽滤v的功能都可以寫成單一的代碼行,如下所示。
上述代碼中的myLayer層,接受大小為10的張量作為輸入,并在應(yīng)用線性變換后輸出一個(gè)大小為5的張量。下面是一個(gè)簡單例子的實(shí)現(xiàn):
可以使用屬性weights和bias訪問層的可訓(xùn)練參數(shù)
線性層在不同的框架中使用的名稱有所不同,有的稱為dense層,有的稱為全連接層(fully connected layer)。用于解決真實(shí)問題的深度學(xué)習(xí)架構(gòu)通常包含不止一個(gè)層。在PyTorch中,可以用多種方式實(shí)現(xiàn)。
一個(gè)簡單的方法是把一層的輸出傳入給另一層:
每一層都有自己的學(xué)習(xí)參數(shù),在多個(gè)層的架構(gòu)中,每層都學(xué)習(xí)出它本層一定的模式,其后的層將基于前一層學(xué)習(xí)出的模式構(gòu)建。把線性層簡單堆疊在一起是有問題的,因?yàn)樗鼈儾荒軐W(xué)習(xí)到簡單線性表示以外的新東西。我們通過一個(gè)簡單的例子看一下,為什么把線性層堆疊在一起的做法并不合理。
假設(shè)有具有如下權(quán)重的兩個(gè)線性層:
層 權(quán)重
Layer1 3.0
Layer2 2.0
以上包含兩個(gè)不同層的架構(gòu)可以簡單表示為帶有另一不同層的單層。因此,只是堆疊多個(gè)線性層并不能幫助我們的算法學(xué)習(xí)任何新東西。有時(shí),這可能不太容易理解,我們可以用下面的數(shù)學(xué)公式對架構(gòu)進(jìn)行可視化:
Y= 2(3X1) -2Linear layers
Y= 6(X1) -1Linear layers
為解決這一問題,相較于只是專注于線性關(guān)系,我們可以使用不同的非線性函數(shù),幫助學(xué)習(xí)不同的關(guān)系。
深度學(xué)習(xí)中有很多不同的非線性函數(shù)。PyTorch以層的形式提供了這些非線性功能,因?yàn)榭梢圆捎镁€性層中相同的方式使用它們。
一些流行的非線性函數(shù)如下所示:
?sigmoid
?tanh
?ReLU
?Leaky ReLU
3.1.2非線性激活函數(shù)
非線性激活函數(shù)是獲取輸入,并對其應(yīng)用數(shù)學(xué)變換從而生成輸出的函數(shù)。我們在實(shí)戰(zhàn)中可能遇到數(shù)個(gè)非線性操作。下面會(huì)講解其中幾個(gè)常用的非線性激活函數(shù)。
1.sigmoid
sigmoid激活函數(shù)的數(shù)學(xué)定義很簡單,如下:

pYYBAGLHlImAORw5AAAcERtbSOY338.png

簡單來說,sigmoid函數(shù)以實(shí)數(shù)作為輸入,并以一個(gè)0到1之間的數(shù)值作為輸出。對于一個(gè)極大的負(fù)值,它返回的值接近于0,而對于一個(gè)極大的正值,它返回的值接近于1。圖3.2所示為sigmoid函數(shù)不同的輸出。

poYBAGLHlHeAc0KjAABJ_t7RiYQ215.png

圖3.2
sigmoid函數(shù)曾一度被不同的架構(gòu)使用,但由于存在一個(gè)主要弊端,因此最近已經(jīng)不太常用了。當(dāng)sigmoid函數(shù)的輸出值接近于0或1時(shí),sigmoid函數(shù)前一層的梯度接近于0,由于前一層的學(xué)習(xí)參數(shù)的梯度接近于0,使得權(quán)重不能經(jīng)常調(diào)整,從而產(chǎn)生了無效神經(jīng)元。
2.tanh
非線性函數(shù)tanh將實(shí)數(shù)值輸出為-1到1之間的值。當(dāng)tanh的輸出極值接近-1和1時(shí),也面臨梯度飽和的問題。不過,因?yàn)閠anh的輸出是以0為中心的,所以比sigmoid更受偏愛,如圖3.3所示。

pYYBAGLHlJ2AL8RjAABLvvoiKWw943.png

圖3.3
3.ReLU
近年來ReLU變得很受歡迎,我們幾乎可以在任意的現(xiàn)代架構(gòu)中找到ReLU或其某一變體的身影。它的數(shù)學(xué)公式很簡單:
f(x)=max(0,x)
簡單來說,ReLU把所有負(fù)值取作0,正值保持不變??梢詫eLU函數(shù)進(jìn)行可視化,如圖3.4所示。

poYBAGLHlKeAI2nYAABHxGJ09ns971.png

圖3.4
使用ReLU函數(shù)的一些好處和弊端如下。
?有助于優(yōu)化器更快地找到正確的權(quán)重集合。從技術(shù)上講,它使隨機(jī)梯度下降收斂得更快。
?計(jì)算成本低,因?yàn)橹皇桥袛嗔碎撝?,并未?jì)算任何類似于sigmoid或tangent函數(shù)計(jì)算的內(nèi)容。
?ReLU有一個(gè)缺點(diǎn),即當(dāng)一個(gè)很大的梯度進(jìn)行反向傳播時(shí),流經(jīng)的神經(jīng)元經(jīng)常會(huì)變得無效,這些神經(jīng)元稱為無效神經(jīng)元,可以通過謹(jǐn)慎選擇學(xué)習(xí)率來控制。我們將在第4章中討論調(diào)整學(xué)習(xí)率的不同方式時(shí),了解如何選擇學(xué)習(xí)率。
4.Leaky ReLU
Leaky ReLU嘗試解決一個(gè)問題死角,它不再將飽和度置為0,而是設(shè)為一個(gè)非常小的數(shù)值,如0.001。對某些用例,這一激活函數(shù)提供了相較于其他激活函數(shù)更優(yōu)異的性能,但它不是連續(xù)的。

審核編輯 黃昊宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
收藏 人收藏

    評論

    相關(guān)推薦

    神經(jīng)網(wǎng)絡(luò)教程(李亞非)

      第1章 概述  1.1 人工神經(jīng)網(wǎng)絡(luò)研究與發(fā)展  1.2 生物神經(jīng)元  1.3 人工神經(jīng)網(wǎng)絡(luò)的構(gòu)成  第2章人工神經(jīng)網(wǎng)絡(luò)基本模型  2.1 MP模型  2.2 感知器模型  2.3
    發(fā)表于 03-20 11:32

    labview BP神經(jīng)網(wǎng)絡(luò)的實(shí)現(xiàn)

    是classes(層級嗎?),希望有前輩能夠詳細(xì)的幫我講解下這個(gè)范例!?。≈x謝?。。。。ū救艘褜P神經(jīng)網(wǎng)絡(luò)的理論知識有了了解
    發(fā)表于 02-22 16:08

    卷積神經(jīng)網(wǎng)絡(luò)如何使用

    卷積神經(jīng)網(wǎng)絡(luò)(CNN)究竟是什么,鑒于神經(jīng)網(wǎng)絡(luò)在工程上經(jīng)歷了曲折的歷史,您為什么還會(huì)在意它呢? 對于這些非常中肯的問題,我們似乎可以給出相對簡明的答案。
    發(fā)表于 07-17 07:21

    【案例分享】ART神經(jīng)網(wǎng)絡(luò)與SOM神經(jīng)網(wǎng)絡(luò)

    今天學(xué)習(xí)了兩個(gè)神經(jīng)網(wǎng)絡(luò),分別是自適應(yīng)諧振(ART)神經(jīng)網(wǎng)絡(luò)與自組織映射(SOM)神經(jīng)網(wǎng)絡(luò)。整體感覺不是很難,只不過一些最基礎(chǔ)的概念容易理解不清。首先ART神經(jīng)網(wǎng)絡(luò)是競爭學(xué)習(xí)的一個(gè)代表,
    發(fā)表于 07-21 04:30

    人工神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)方法有哪些?

    人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Network,ANN)是一種類似生物神經(jīng)網(wǎng)絡(luò)的信息處理結(jié)構(gòu),它的提出是為了解決一些非線性,非平穩(wěn),復(fù)雜的實(shí)際問題。那有哪些辦法能實(shí)現(xiàn)人工神經(jīng)
    發(fā)表于 08-01 08:06

    卷積神經(jīng)網(wǎng)絡(luò)原理及發(fā)展過程

    Top100論文導(dǎo)讀:深入理解卷積神經(jīng)網(wǎng)絡(luò)CNN(Part Ⅰ)
    發(fā)表于 09-06 17:25

    如何構(gòu)建神經(jīng)網(wǎng)絡(luò)

    原文鏈接:http://tecdat.cn/?p=5725 神經(jīng)網(wǎng)絡(luò)是一種基于現(xiàn)有數(shù)據(jù)創(chuàng)建預(yù)測的計(jì)算系統(tǒng)。如何構(gòu)建神經(jīng)網(wǎng)絡(luò)?神經(jīng)網(wǎng)絡(luò)包括:輸入層:根據(jù)現(xiàn)有數(shù)據(jù)獲取輸入的層隱藏層:使用反向傳播優(yōu)化輸入變量權(quán)重的層,以提高模型的預(yù)測
    發(fā)表于 07-12 08:02

    基于BP神經(jīng)網(wǎng)絡(luò)的PID控制

    最近在學(xué)習(xí)電機(jī)的智能控制,上周學(xué)習(xí)了基于單神經(jīng)元的PID控制,這周研究基于BP神經(jīng)網(wǎng)絡(luò)的PID控制。神經(jīng)網(wǎng)絡(luò)具有任意非線性表達(dá)能力,可以通過對系統(tǒng)性能的學(xué)習(xí)來實(shí)現(xiàn)具有最佳組合的PID控制。利用BP
    發(fā)表于 09-07 07:43

    神經(jīng)網(wǎng)絡(luò)移植到STM32的方法

    問題,一個(gè)是神經(jīng)網(wǎng)絡(luò)的移植,另一個(gè)是STM32的計(jì)算速度。神經(jīng)網(wǎng)絡(luò)的移植網(wǎng)絡(luò)采用的是最簡單的BP神經(jīng)網(wǎng)絡(luò),基本原理可以自己去了解一下,大概就
    發(fā)表于 01-11 06:20

    遷移學(xué)習(xí)

    神經(jīng)網(wǎng)絡(luò)訓(xùn)練方法卷積神經(jīng)網(wǎng)絡(luò)介紹經(jīng)典網(wǎng)絡(luò)結(jié)構(gòu)介紹章節(jié)目標(biāo):深入了解神經(jīng)網(wǎng)絡(luò)的組成、訓(xùn)練和實(shí)現(xiàn),掌握深度空間特征分布等關(guān)鍵概念,為深度遷移學(xué)習(xí)
    發(fā)表于 04-21 15:15

    機(jī)器學(xué)習(xí)簡介與經(jīng)典機(jī)器學(xué)習(xí)算法人才培養(yǎng)

    神經(jīng)網(wǎng)絡(luò)訓(xùn)練方法卷積神經(jīng)網(wǎng)絡(luò)介紹經(jīng)典網(wǎng)絡(luò)結(jié)構(gòu)介紹章節(jié)目標(biāo):深入了解神經(jīng)網(wǎng)絡(luò)的組成、訓(xùn)練和實(shí)現(xiàn),掌握深度空間特征分布等關(guān)鍵概念,為深度遷移學(xué)習(xí)
    發(fā)表于 04-28 18:56

    卷積神經(jīng)網(wǎng)絡(luò)CNN架構(gòu)分析-LeNet

    對于神經(jīng)網(wǎng)絡(luò)和卷積有了粗淺的了解,關(guān)于CNN 卷積神經(jīng)網(wǎng)絡(luò),需要總結(jié)深入的知識有很多:人工神經(jīng)網(wǎng)絡(luò) ANN卷積
    發(fā)表于 11-16 13:28 ?2742次閱讀
    卷積<b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>CNN架構(gòu)分析-LeNet

    帶你了解深入深度學(xué)習(xí)的核心:神經(jīng)網(wǎng)絡(luò)

    深度學(xué)習(xí)和人工智能是 2017 年的熱詞;2018 年,這兩個(gè)詞愈發(fā)火熱,但也更加容易混淆。我們將深入深度學(xué)習(xí)的核心,也就是神經(jīng)網(wǎng)絡(luò)
    的頭像 發(fā)表于 04-02 09:47 ?9756次閱讀
    帶你<b class='flag-5'>了解</b><b class='flag-5'>深入</b>深度學(xué)習(xí)的核心:<b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>

    深度神經(jīng)網(wǎng)絡(luò)與基本神經(jīng)網(wǎng)絡(luò)的區(qū)別

    在探討深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Networks, DNNs)與基本神經(jīng)網(wǎng)絡(luò)(通常指傳統(tǒng)神經(jīng)網(wǎng)絡(luò)或前向神經(jīng)網(wǎng)絡(luò))的區(qū)別時(shí),我們需要從多個(gè)維度進(jìn)行
    的頭像 發(fā)表于 07-04 13:20 ?593次閱讀

    BP神經(jīng)網(wǎng)絡(luò)和人工神經(jīng)網(wǎng)絡(luò)的區(qū)別

    BP神經(jīng)網(wǎng)絡(luò)和人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Networks,簡稱ANNs)之間的關(guān)系與區(qū)別,是神經(jīng)網(wǎng)絡(luò)領(lǐng)域中一個(gè)基礎(chǔ)且重要的話題。本文將從定義、結(jié)構(gòu)、算法、應(yīng)用及未來發(fā)展等多個(gè)方面,詳細(xì)闡述BP
    的頭像 發(fā)表于 07-10 15:20 ?741次閱讀