国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

軟件工程師,入門下深度學(xué)習(xí)吧

這篇具有很好參考價(jià)值的文章主要介紹了軟件工程師,入門下深度學(xué)習(xí)吧。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

概述

????????ChatGPT,英文全稱為Chat Generative Pre-trained Transformer,是OpenAI研發(fā)的聊天機(jī)器人程序。ChatGPT是人工智能技術(shù)驅(qū)動的自然語言處理工具,它能夠通過理解和學(xué)習(xí)人類的語言來進(jìn)行對話,還能根據(jù)聊天的上下文進(jìn)行互動,真正像人類一樣來聊天交流。除此之外,還能進(jìn)行撰寫郵件、腳本、文案、翻譯、代碼,寫論文、寫詩、繪畫等任務(wù)。

????????ChatGPT是人工智能深度學(xué)習(xí)的技術(shù)產(chǎn)物。對于軟件工程師,了解下深度學(xué)習(xí)的發(fā)展歷程、基本概念和基本原理等知識,還是很有必要的。

發(fā)展歷程

????????深度學(xué)習(xí)的發(fā)展歷程可以歸納為三個(gè)階段,如下圖所示。

軟件工程師,入門下深度學(xué)習(xí)吧

????????第一階段的成果1:M-P模型

????????1943年,心理學(xué)家麥卡洛克和數(shù)學(xué)邏輯學(xué)家皮茲提出了M-P模型。M-P模型是模仿神經(jīng)元的結(jié)構(gòu)和工作原理,構(gòu)成的一個(gè)基于神經(jīng)網(wǎng)絡(luò)的數(shù)學(xué)模型,本質(zhì)上是一種“模擬人類大腦”的神經(jīng)元模型。M-P模型作為人工神經(jīng)網(wǎng)絡(luò)的起源,開創(chuàng)了人工神經(jīng)網(wǎng)絡(luò)的新時(shí)代,也奠定了神經(jīng)網(wǎng)絡(luò)模型的基礎(chǔ)。

軟件工程師,入門下深度學(xué)習(xí)吧

軟件工程師,入門下深度學(xué)習(xí)吧

????????第一階段的成果2:感知機(jī)模型

????????1958年,美國科學(xué)家羅森布拉特發(fā)現(xiàn)了一種類似于人類學(xué)習(xí)過程的學(xué)習(xí)算法——感知機(jī)學(xué)習(xí)。他正式提出了由兩層神經(jīng)元組成的神經(jīng)網(wǎng)絡(luò),稱之為“感知器”。感知器本質(zhì)上是一種線性模型,可以對輸入的訓(xùn)練集數(shù)據(jù)進(jìn)行二分類,且能夠在訓(xùn)練集中自動更新權(quán)值。感知器的提出吸引了大量科學(xué)家對人工神經(jīng)網(wǎng)絡(luò)研究的興趣,對神經(jīng)網(wǎng)絡(luò)的發(fā)展具有里程碑式的意義。

軟件工程師,入門下深度學(xué)習(xí)吧

????????第一階段的局限性

????????1969年,美國數(shù)學(xué)家及人工智能先驅(qū)明斯基在其著作中證明了感知器本質(zhì)上是一種線性模型,只能處理線性分類問題,連最簡單的XOR(亦或)問題都無法正確分類。這等于直接宣判了感知器的死刑,神經(jīng)網(wǎng)絡(luò)的研究也陷入了將近20年的停滯。

軟件工程師,入門下深度學(xué)習(xí)吧

?????????第二階段的成果1:BP算法、非線性分類

????????1986年,深度學(xué)習(xí)的大牛辛頓發(fā)明了適用于多層感知器(MLP)的反向傳播(BP)算法,并采用Sigmoid進(jìn)行非線性映射,有效解決了非線性分類問題。同時(shí),BP算法也解決了明斯基指出的雙層網(wǎng)絡(luò)難以訓(xùn)練的問題,使一層以上的神經(jīng)網(wǎng)絡(luò)進(jìn)入了實(shí)用階段,開啟了第二輪神經(jīng)網(wǎng)絡(luò)的研究熱潮。

軟件工程師,入門下深度學(xué)習(xí)吧

?????????第二階段的成果2:萬能逼近定理

????????1989年,美國應(yīng)用數(shù)學(xué)家喬治-塞班克證明了MLP的萬能逼近定理,即對于任何閉區(qū)間內(nèi)的一個(gè)連續(xù)函數(shù),都可以用含有一個(gè)隱含層的BP網(wǎng)絡(luò)來逼近。后來,奧地利數(shù)學(xué)家科特-霍尼克進(jìn)一步完善了該理論,證明了神經(jīng)網(wǎng)絡(luò)的擬合能力是接近無限強(qiáng)的,任意復(fù)雜的分類決策邊界都可以被逼近。至此,神經(jīng)網(wǎng)絡(luò)的研究又進(jìn)入了一個(gè)新的高潮。

軟件工程師,入門下深度學(xué)習(xí)吧

?????????第二階段的成果3:卷積神經(jīng)網(wǎng)絡(luò)

????????1989年,大神楊樂昆(現(xiàn)任紐約大學(xué)教授、Facebook副總裁兼人工智能首席科學(xué)家)提出了后來名滿天下,第一個(gè)真正意義上的深度學(xué)習(xí)網(wǎng)絡(luò),也是目前深度學(xué)習(xí)中應(yīng)用最廣的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)——卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks, CNN)LeNet,并將其用于數(shù)字識別,且取得了較好的成績,不過當(dāng)時(shí)并沒有引起足夠的注意。

軟件工程師,入門下深度學(xué)習(xí)吧

?????????第二階段的局限性

????????1991年,BP算法被指出存在梯度消失問題,即在誤差梯度后向傳遞的過程中,后層梯度以乘性方式疊加到前層,由于Sigmoid函數(shù)的飽和特性,后層梯度本來就小,誤差梯度傳到前層時(shí)幾乎為0,因此無法對前層進(jìn)行有效的學(xué)習(xí)。參數(shù)過多,以及參數(shù)的調(diào)優(yōu),也是當(dāng)時(shí)神經(jīng)網(wǎng)絡(luò)被詬病的問題。

軟件工程師,入門下深度學(xué)習(xí)吧

?????????第三階段的成果:AlexNet

????????2012年,辛頓課題組為了證明深度學(xué)習(xí)的潛力,首次參加ImageNet圖像識別比賽,其通過構(gòu)建的CNN網(wǎng)絡(luò)AlexNet一舉奪得冠軍,且碾壓第二名(SVM方法)的分類性能。也正是由于該比賽,CNN吸引到了眾多研究者的注意。

軟件工程師,入門下深度學(xué)習(xí)吧

?????????第三階段:快速發(fā)展

????????從2012年之后,深度學(xué)習(xí)的熱度呈現(xiàn)指數(shù)級上升,到2016年時(shí),深度學(xué)習(xí)已經(jīng)成為了谷歌上最熱門的搜索詞。同時(shí),短短幾年時(shí)間,深度學(xué)習(xí)推廣到了機(jī)器學(xué)習(xí)的各個(gè)領(lǐng)域,包括:圖像識別、語音識別、音頻處理、自然語言處理、機(jī)器人、生物信息處理、搜索引擎、網(wǎng)絡(luò)廣告投放和金融等。

軟件工程師,入門下深度學(xué)習(xí)吧

基本概念

????????提到深度學(xué)習(xí),就不得不提機(jī)器學(xué)習(xí)和人工智能。很多人容易把這三個(gè)概念弄混,我們可以參考下面的圖來理解這三者的區(qū)別和聯(lián)系。

軟件工程師,入門下深度學(xué)習(xí)吧

?????????人工智能(Artificial Intelligence),英文縮寫為AI。它是研究、開發(fā)用于模擬、延伸和擴(kuò)展人的智能的理論、方法、技術(shù)及應(yīng)用系統(tǒng)的一門新的技術(shù)科學(xué)。

????????機(jī)器學(xué)習(xí)(Machine Learning),是指用某些算法指導(dǎo)計(jì)算機(jī)利用已知數(shù)據(jù)得出適當(dāng)?shù)哪P?,并利用此模型對新的情境給出判斷的過程。

????????深度學(xué)習(xí)(Deep Learning),其概念源于人工神經(jīng)網(wǎng)絡(luò)的研究,它通過組合低層特征形成更加抽象的高層表示屬性類別或特征,以發(fā)現(xiàn)數(shù)據(jù)的分布式特征表示。

????????在深度學(xué)習(xí)中,經(jīng)常會提到卷積的概念。那么,卷積到底是什么呢?實(shí)際上,卷積是通過兩個(gè)函數(shù)f和g生成第三個(gè)函數(shù)的一種數(shù)學(xué)算子,表征函數(shù)f與g經(jīng)過翻轉(zhuǎn)和平移的重疊部分的面積。可參考下圖進(jìn)行理解。

軟件工程師,入門下深度學(xué)習(xí)吧

?????????弄清楚了卷積,我們再來看看卷積神經(jīng)網(wǎng)絡(luò)(CNN)。一個(gè)標(biāo)準(zhǔn)的卷積神經(jīng)網(wǎng)絡(luò),主要包括:輸入層(Input Layer)、卷積層(Convolutional Layer)、池化層(Pooling Layer)、激活層(Activation Layer)、全連接層(Fully Connected Layer)、損失層(Loss Layer)。

軟件工程師,入門下深度學(xué)習(xí)吧

?????????下面,我們介紹深度學(xué)習(xí)中一些常用的層。

????????卷積層(Convolutional Layer)

????????卷積層由若干卷積單元組成,每個(gè)卷積單元的參數(shù)都是通過反向傳播算法最佳化得到的。卷積運(yùn)算的目的是提取輸入的不同特征,第一層卷積層可能只能提取一些低級的特征,比如:邊緣、線條和角等層級,更多層的網(wǎng)路能從低級特征中迭代提取更復(fù)雜的特征。

軟件工程師,入門下深度學(xué)習(xí)吧

?????????池化層(Pooling Layer)

????????池化實(shí)際上是一種形式的降采樣。有多種不同形式的非線性池化函數(shù),而其中“最大池化(Max pooling)”是最為常見的。它是將輸入的圖像劃分為若干個(gè)矩形區(qū)域,對每個(gè)子區(qū)域輸出最大值。直覺上,這種機(jī)制能夠有效的原因在于,在發(fā)現(xiàn)一個(gè)特征之后,它的精確位置遠(yuǎn)不及它和其他特征的相對位置的關(guān)系重要。池化層會不斷地減小數(shù)據(jù)的空間大小,因此參數(shù)的數(shù)量和計(jì)算量也會下降,這在一定程度上也控制了過擬合。

軟件工程師,入門下深度學(xué)習(xí)吧

?????????激活層(Activation Layer)

????????激活層模擬人的神經(jīng)系統(tǒng),只對部分神經(jīng)元的輸入做出反應(yīng)。激活層主要采用非線性激活函數(shù),如果采用線性函數(shù),那么多層神經(jīng)網(wǎng)絡(luò)也只有線性映射能力,輸出都是輸入的線性組合,無法模擬現(xiàn)實(shí)世界中各種復(fù)雜的非線性情況。

????????非線性激活函數(shù)最常用的有sigmoid、tanh和relu。目前主要使用relu函數(shù),因?yàn)閟igmoid和tanh在x趨于無窮的兩側(cè),都會出現(xiàn)導(dǎo)數(shù)為0的現(xiàn)象,從而造成梯度消失,無法更新網(wǎng)絡(luò)狀態(tài)。

軟件工程師,入門下深度學(xué)習(xí)吧

?????????全連接層(Fully Connected Layer)

????????全連接層的每一個(gè)結(jié)點(diǎn)都與上一層的所有結(jié)點(diǎn)相連,用來把前邊提取到的特征綜合起來。由于其全相連的特性,一般全連接層的參數(shù)也是最多的,計(jì)算量和占用內(nèi)存也是最多的。例如:在VGG16中,第一個(gè)全連接層FC1有4096個(gè)節(jié)點(diǎn),上一層POOL2是7*7*512 = 25088個(gè)節(jié)點(diǎn),則需要4096*25088 = 102760448個(gè)權(quán)值,需要耗很大的內(nèi)存。

軟件工程師,入門下深度學(xué)習(xí)吧

?????????損失層(Loss Layer)

????????損失層設(shè)置了一個(gè)損失函數(shù)(也叫目標(biāo)函數(shù))用來比較網(wǎng)絡(luò)的輸出和目標(biāo)值,通過最小化損失來驅(qū)動網(wǎng)絡(luò)的訓(xùn)練。網(wǎng)絡(luò)損失通過前向傳播計(jì)算,網(wǎng)絡(luò)權(quán)重參數(shù)相對于損失函數(shù)的梯度通過反向傳播計(jì)算。

????????損失函數(shù)是在前向傳播計(jì)算中得到的,同時(shí)也是反向傳播的起點(diǎn)。損失函數(shù)基本都是由真實(shí)值和預(yù)測值兩部分組成。正確的損失函數(shù),可以起到讓預(yù)測值一直逼近真實(shí)值的效果,當(dāng)預(yù)測值和真實(shí)值相等時(shí),loss值最小。

軟件工程師,入門下深度學(xué)習(xí)吧

經(jīng)典模型

????????2012年深度學(xué)習(xí)爆火之后,相繼出現(xiàn)了很多經(jīng)典的網(wǎng)絡(luò)模型,這些模型對深度學(xué)習(xí)的迅速發(fā)展起到了非常重要的作用。

????????經(jīng)典模型之AlexNet

????????在2012年ILSVRC(ImageNet Large-Scale Visual Recognition Challenge)贏得了分類識別第一名的好成績(TOP 5錯誤率為15.4%)。AlexNet由5層卷積層、最大池化層、dropout層和3層全連接層組成,用于對1000個(gè)類別圖像進(jìn)行分類。

????????1、在ImageNet數(shù)據(jù)集上訓(xùn)練網(wǎng)絡(luò),其中數(shù)據(jù)集超過22000個(gè)類,總共有大于1500萬張注釋的圖像。

????????2、使用ReLU非線性激活函數(shù),并利用dropout方法解決過擬合問題。

????????3、在兩臺GTX 580 GPU上訓(xùn)練了五至六天。

軟件工程師,入門下深度學(xué)習(xí)吧

?????????經(jīng)典模型之VGGNet

????????2014年,牛津大學(xué)學(xué)者創(chuàng)建了一個(gè)新的卷積神經(jīng)網(wǎng)絡(luò)模型,19層卷積層,卷積核尺寸為3×3 (TOP 5錯誤率為7.3%) 。

????????1、AlexNet模型中卷積核尺寸11×11,VGG Net的卷積核為3×3。兩個(gè)3×3的conv層相當(dāng)于一個(gè)5×5的有效感受野,這樣就可以用較小的卷積核尺寸模擬更大尺寸的卷積核,好處是可以減少卷積核參數(shù)的數(shù)量。

????????2、三個(gè)3×3的conv層擁有7×7的有效感受野。

????????3、在4個(gè)Nvidia Titan Black GPU上訓(xùn)練兩到三周。

軟件工程師,入門下深度學(xué)習(xí)吧

?????????經(jīng)典模型之GoogleNet

????????GoogleNet是一個(gè)具有22個(gè)conv層的CNN網(wǎng)絡(luò),在ILSVRC 2014中以6.7%的TOP5錯誤率登頂冠軍。

????????1、在整個(gè)架構(gòu)中使用了Inception模塊,總共超過100層。

????????2、沒有使用全連接層,使用的是average polling。

????????3、參數(shù)是AlexNet的1/12,原因包括:一是除去了全連接層;二是1×1卷積核降維的效果。

????????4、利用一些高端的GPU進(jìn)行了大概一周的訓(xùn)練。

軟件工程師,入門下深度學(xué)習(xí)吧

?????????經(jīng)典模型之ResNet

????????2015年,微軟亞洲研究院創(chuàng)造了一種令人難以置信的152層的深度學(xué)習(xí)模型ResNet,其在ILSVRC 2015的錯誤率僅僅為3.6%,已經(jīng)高于人類肉眼識別的錯誤率。

????????1、微軟亞洲研究院的研究小組曾經(jīng)嘗試過1202層的網(wǎng)絡(luò)結(jié)構(gòu),但是測試精度很低,可能是由于過擬合的原因?qū)е碌摹?/p>

????????2、在8臺GPU機(jī)器上訓(xùn)練了2到3周。

軟件工程師,入門下深度學(xué)習(xí)吧

框架簡介

????????深度學(xué)習(xí)的框架非常之多,每個(gè)框架的特性和側(cè)重點(diǎn)不同。這里,我們僅選擇幾個(gè)有代表性的框架進(jìn)行介紹。

軟件工程師,入門下深度學(xué)習(xí)吧

?????????Caffe/Caffe2

????????Caffe的全稱是Convolutional Architecture for Fast Feature Embedding,它是一個(gè)清晰、高效的深度學(xué)習(xí)框架,核心語言是C++,它支持命令行、Python和MATLAB接口,既可以在CPU上運(yùn)行,也可以在GPU上運(yùn)行。Caffe的作者是賈揚(yáng)清。

????????Caffe憑借其易用性、簡潔明了的源碼、出眾的性能和快速的原型設(shè)計(jì)獲取了眾多用戶,曾經(jīng)占據(jù)深度學(xué)習(xí)領(lǐng)域的半壁江山。但是在深度學(xué)習(xí)新時(shí)代到來之時(shí),Caffe已經(jīng)表現(xiàn)出明顯的力不從心,諸多問題逐漸顯現(xiàn)(包括靈活性缺失、擴(kuò)展難、依賴眾多環(huán)境難以配置、應(yīng)用局限等)。盡管現(xiàn)在在GitHub上還能找到許多基于Caffe的項(xiàng)目,但是新的項(xiàng)目已經(jīng)越來越少。

????????Caffe2繼承了Caffe的優(yōu)點(diǎn),在速度上令人印象深刻。Facebook 人工智能實(shí)驗(yàn)室與應(yīng)用機(jī)器學(xué)習(xí)團(tuán)隊(duì)合作,利用Caffe2大幅加速機(jī)器視覺任務(wù)的模型訓(xùn)練過程,僅需1小時(shí)就訓(xùn)練完ImageNet這樣超大規(guī)模的數(shù)據(jù)集。然而盡管已經(jīng)發(fā)布半年多,開發(fā)一年多,Caffe2仍然是一個(gè)不太成熟的框架,官網(wǎng)至今沒提供完整的文檔,安裝也比較麻煩,編譯過程時(shí)常出現(xiàn)異常,在GitHub上也很少找到相應(yīng)的代碼。

軟件工程師,入門下深度學(xué)習(xí)吧

?????????TensorFlow

????????TensorFlow主要用于進(jìn)行機(jī)器學(xué)習(xí)和深度神經(jīng)網(wǎng)絡(luò)研究,但它是一個(gè)非常基礎(chǔ)的系統(tǒng),因此也可以應(yīng)用于眾多領(lǐng)域。由于Google在深度學(xué)習(xí)領(lǐng)域的巨大影響力和強(qiáng)大的推廣能力,TensorFlow一經(jīng)推出就獲得了極大的關(guān)注,并迅速成為如今用戶最多的深度學(xué)習(xí)框架。

????????TensorFlow編程接口支持Python和C++。隨著1.0版本的公布,Java、Go、R和Haskell API的alpha版本也被支持。此外,TensorFlow還可在Google Cloud和AWS中運(yùn)行。TensorFlow還支持 Windows 7、Windows 10和Windows Server 2016。

????????作為當(dāng)前最流行的深度學(xué)習(xí)框架,TensorFlow獲得了極大的成功,但對它的批評也不絕于耳,總結(jié)起來主要有以下四點(diǎn):1、過于復(fù)雜的系統(tǒng)設(shè)計(jì);2、頻繁變動的接口;3、接口設(shè)計(jì)過于晦澀難懂;4、文檔混亂脫節(jié)。

軟件工程師,入門下深度學(xué)習(xí)吧

?????????MXNet

????????MXNet是一個(gè)深度學(xué)習(xí)庫,支持C++、Python、R、Scala、Julia、MATLAB及JavaScript等語言;支持命令和符號編程;可以運(yùn)行在CPU、GPU、集群、服務(wù)器、臺式機(jī)或者移動設(shè)備上。

????????MXNet以其超強(qiáng)的分布式支持,明顯的內(nèi)存、顯存優(yōu)化為人所稱道。同樣的模型,MXNet往往占用更小的內(nèi)存和顯存,并且在分布式環(huán)境下,MXNet展現(xiàn)出了明顯優(yōu)于其他框架的擴(kuò)展性能。

????????由于MXNet最初由一群學(xué)生開發(fā),缺乏商業(yè)應(yīng)用,極大地限制了MXNet的使用。2016年11月,MXNet被AWS正式選擇為其云計(jì)算的官方深度學(xué)習(xí)平臺。2017年1月,MXNet項(xiàng)目進(jìn)入Apache基金會,成為Apache的孵化器項(xiàng)目。

????????盡管MXNet擁有最多的接口,也獲得了不少人的支持,但其始終處于一種不溫不火的狀態(tài),這在很大程度上歸結(jié)于推廣不給力及接口文檔不夠完善。MXNet長期處于快速迭代的過程,其文檔卻長時(shí)間未更新,導(dǎo)致新手用戶難以掌握MXNet,老用戶常常需要查閱源碼才能真正理解MXNet接口的用法。

????????

軟件工程師,入門下深度學(xué)習(xí)吧

?????????PyTorch

????????Torch是一個(gè)有大量機(jī)器學(xué)習(xí)算法支持的科學(xué)計(jì)算框架,其誕生已有十年之久,但是真正起勢得益于Facebook開源了大量Torch的深度學(xué)習(xí)模塊和擴(kuò)展。Torch的特點(diǎn)在于特別靈活,但是另一個(gè)特殊之處是采用了編程語言Lua,在深度學(xué)習(xí)大部分以Python為編程語言的大環(huán)境之下,一個(gè)以Lua為編程語言的框架有著更多的劣勢,這一項(xiàng)小眾的語言增加了學(xué)習(xí)使用Torch這個(gè)框架的成本。

????????PyTorch的前身便是Torch,其底層和Torch框架一樣,但是使用Python重新寫了很多內(nèi)容,不僅更加靈活,支持動態(tài)圖,而且提供了Python接口。它是由Torch7團(tuán)隊(duì)開發(fā),是一個(gè)以Python優(yōu)先的深度學(xué)習(xí)框架,不僅能夠?qū)崿F(xiàn)強(qiáng)大的GPU加速,同時(shí)還支持動態(tài)神經(jīng)網(wǎng)絡(luò),這是很多主流深度學(xué)習(xí)框架比如Tensorflow等都不支持的。

軟件工程師,入門下深度學(xué)習(xí)吧

基本原理

????????神經(jīng)網(wǎng)絡(luò)由其權(quán)重來參數(shù)化

????????神經(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ù)值將會影響其他所有參數(shù)的行為。

軟件工程師,入門下深度學(xué)習(xí)吧

?????????損失函數(shù)用來衡量網(wǎng)絡(luò)輸出結(jié)果的質(zhì)量

????????想要控制一件事物,首先需要能夠觀察它。想要控制神經(jīng)網(wǎng)絡(luò)的輸出,就需要能夠衡量該輸出與預(yù)期值之間的距離。這是神經(jīng)網(wǎng)絡(luò)損失函數(shù)(loss function)的任務(wù)。損失函數(shù)的輸入是網(wǎng)絡(luò)預(yù)測值與真實(shí)目標(biāo)值(即你希望網(wǎng)絡(luò)輸出的結(jié)果),然后計(jì)算一個(gè)距離值,衡量該網(wǎng)絡(luò)在這個(gè)示例上的效果好壞。

軟件工程師,入門下深度學(xué)習(xí)吧

?????????將損失值作為反饋信號來調(diào)節(jié)權(quán)重

????????深度學(xué)習(xí)的基本技巧是利用這個(gè)距離值作為反饋信號來對權(quán)重值進(jìn)行微調(diào),以降低當(dāng)前示例對應(yīng)的損失值。這種調(diào)節(jié)由優(yōu)化器(optimizer)來完成,它實(shí)現(xiàn)了所謂的反向傳播(back propagation)算法,這是深度學(xué)習(xí)的核心算法。

軟件工程師,入門下深度學(xué)習(xí)吧

?????????整個(gè)學(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ù),得到的權(quán)重值可以使損失函數(shù)最小。具有最小損失的網(wǎng)絡(luò),其輸出值與目標(biāo)值盡可能地接近,這就是訓(xùn)練好的網(wǎng)絡(luò),其輸出我們稱之為模型。

軟件工程師,入門下深度學(xué)習(xí)吧

?????????前向傳播

????????輸入信號與權(quán)重矩陣進(jìn)行運(yùn)算,得到每一層的輸出,最終到達(dá)輸出層。

軟件工程師,入門下深度學(xué)習(xí)吧

?????????反向傳播(BP算法)

????????BP算法(即誤差反向傳播算法)是適合于多層神經(jīng)網(wǎng)絡(luò)的一種學(xué)習(xí)算法,它建立在梯度下降法的基礎(chǔ)上。

????????當(dāng)前向傳播完成后,會逐層求出損失函數(shù)對各神經(jīng)元權(quán)值的偏導(dǎo)數(shù)(鏈?zhǔn)椒▌t),構(gòu)成損失函數(shù)對權(quán)值向量的梯量,作為修改權(quán)值的依據(jù),網(wǎng)絡(luò)的學(xué)習(xí)在權(quán)值修改過程中完成。誤差達(dá)到所期望值時(shí),網(wǎng)絡(luò)學(xué)習(xí)結(jié)束。

軟件工程師,入門下深度學(xué)習(xí)吧

?????????梯度下降法的場景假設(shè)

????????一個(gè)人被困在山上,需要從山上下來。但此時(shí)山上的濃霧很大,導(dǎo)致可視度很低。因此,下山的路徑就無法確定,他必須利用自己周圍的信息去找到下山的路徑。這個(gè)時(shí)候,他就可以利用梯度下降算法來幫助自己下山。具體來說就是,以他當(dāng)前的所處的位置為基準(zhǔn),尋找這個(gè)位置最陡峭的地方,然后朝著山的高度下降的地方走。然后每走一段距離,都反復(fù)采用同一個(gè)方法,最后就能成功的抵達(dá)山谷。

????????我們同時(shí)可以假設(shè)這座山最陡峭的地方是無法通過肉眼立馬觀察出來的,而是需要一個(gè)復(fù)雜的工具來測量。所以,此人每走一段距離,都需要一段時(shí)間來測量所在位置最陡峭的方向,這是比較耗時(shí)的。那么為了在太陽下山之前到達(dá)山谷,就要盡可能的減少測量方向的次數(shù)。這是一個(gè)兩難的選擇,如果測量的頻繁,可以保證下山的方向是絕對正確的,但又非常耗時(shí),如果測量的過少,又有偏離軌道的風(fēng)險(xiǎn)。所以需要找到一個(gè)合適的測量方向的頻率,來確保下山的方向不錯誤,同時(shí)又不至于耗時(shí)太多!

軟件工程師,入門下深度學(xué)習(xí)吧

?????????梯度下降法

????????梯度下降的基本過程就和下山的場景很類似。

????????首先,我們有一個(gè)可微分的損失函數(shù),這個(gè)函數(shù)就代表著一座山。我們的目標(biāo)就是找到這個(gè)函數(shù)的最小值,也就是山谷。根據(jù)之前的場景假設(shè),最快的下山的方式就是找到當(dāng)前位置最陡峭的方向,然后沿著此方向向下走,對應(yīng)到函數(shù)中,就是找到給定點(diǎn)的梯度,然后朝著梯度相反的方向,就能讓函數(shù)值下降的最快!

????????所以,我們重復(fù)利用這個(gè)方法,反復(fù)求取梯度,最后就能到達(dá)局部的最小值,這就類似于我們下山的過程。而求取梯度就確定了最陡峭的方向,也就是場景中測量方向的手段。

????????上面提到,需要找給定點(diǎn)的梯度,那么,梯度是什么?

軟件工程師,入門下深度學(xué)習(xí)吧

?????????微分

????????看待微分的意義,可以有不同的角度,最常用的兩種是:

????????1、函數(shù)圖像中,某點(diǎn)的切線的斜率。

????????2、函數(shù)的變化率。

軟件工程師,入門下深度學(xué)習(xí)吧

?????????梯度

????????梯度實(shí)際上就是多變量微分的一般化。

????????我們可以看到,梯度就是分別對每個(gè)變量進(jìn)行微分,然后用逗號分割開,梯度是用<>括起來,說明梯度其實(shí)是一個(gè)向量。

????????梯度是微積分中一個(gè)很重要的概念,梯度的意義:

????????1、在單變量的函數(shù)中,梯度其實(shí)就是函數(shù)的微分,代表著函數(shù)在某個(gè)給定點(diǎn)的切線的斜率。

????????2、在多變量函數(shù)中,梯度是一個(gè)向量,向量有方向,梯度的方向就指出了函數(shù)在給定點(diǎn)的上升最快的方向。

軟件工程師,入門下深度學(xué)習(xí)吧

?????????梯度下降法的數(shù)學(xué)公式

????????J是關(guān)于Θ的一個(gè)函數(shù),我們當(dāng)前所處的位置為Θ0點(diǎn),要從這個(gè)點(diǎn)走到J的最小值點(diǎn),也就是山谷。首先我們先確定前進(jìn)的方向,也就是梯度的反向,然后走一段距離的步長,也就是α,走完這個(gè)段步長,就到達(dá)了Θ1這個(gè)點(diǎn)!

????????α在梯度下降算法中被稱作為學(xué)習(xí)率或者步長,意味著我們可以通過α來控制每一步走的距離,以保證不要步子跨的太大扯著蛋(其實(shí)就是不要走太快,錯過了最低點(diǎn))。同時(shí)也要保證不要走的太慢,導(dǎo)致太陽下山了,還沒有走到山谷。

軟件工程師,入門下深度學(xué)習(xí)吧

?????????α學(xué)習(xí)率

????????α的選擇在梯度下降法中往往是很重要的!α不能太大也不能太小,太小的話,可能導(dǎo)致遲遲走不到最低點(diǎn),太大的話,會導(dǎo)致錯過最低點(diǎn)!

軟件工程師,入門下深度學(xué)習(xí)吧

?????????假設(shè)有一個(gè)下面的損失函數(shù)、起始點(diǎn)以及學(xué)習(xí)率。現(xiàn)在要通過梯度下降法計(jì)算這個(gè)函數(shù)的最小值。我們通過觀察就能發(fā)現(xiàn)最小值其實(shí)就是(0,0)點(diǎn)。但是接下來,我們會從梯度下降算法開始一步步計(jì)算到這個(gè)最小值!

軟件工程師,入門下深度學(xué)習(xí)吧

軟件工程師,入門下深度學(xué)習(xí)吧文章來源地址http://www.zghlxwxcb.cn/news/detail-512703.html

到了這里,關(guān)于軟件工程師,入門下深度學(xué)習(xí)吧的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 軟件測試工程師

    軟件測試工程師

    一、什么是軟件測試? 1、定義:使用技術(shù)手段驗(yàn)證軟件是否滿足使用需求 2、目的:減少軟件缺陷,保障軟件質(zhì)量。 二、主流技術(shù): 1、功能測試:驗(yàn)證程序的功能是否滿足需求 2、自動化測試:使用代碼或工具代替手工,對項(xiàng)目進(jìn)行測試 3、接口測試:有硬件接口、軟件接

    2023年04月10日
    瀏覽(32)
  • 面試(軟件實(shí)施工程師)

    應(yīng)聘軟件實(shí)施工程師時(shí),面試時(shí)常會問到的問題。 在面試時(shí)面試官常問的幾個(gè)問題做一個(gè)總結(jié)。 專業(yè)能力,工作思維,軟實(shí)力,意識,進(jìn)取心。我們要具有項(xiàng)目進(jìn)度、優(yōu)先級別、質(zhì)量觀念和服務(wù)意識。 1、具有扎實(shí)的計(jì)算機(jī)專業(yè)知識。這是軟件開發(fā)人員能夠從事軟件一切工作

    2024年02月16日
    瀏覽(22)
  • 你被騙了嗎?別拿低價(jià)誘騙機(jī)器視覺小白,4000元機(jī)器視覺系統(tǒng)怎么來的?機(jī)器視覺工程師自己組裝一個(gè)2000元不到,還帶深度學(xué)習(xí)

    你被騙了嗎?別拿低價(jià)誘騙機(jī)器視覺小白,4000元機(jī)器視覺系統(tǒng)怎么來的?機(jī)器視覺工程師自己組裝一個(gè)2000元不到,還帶深度學(xué)習(xí)

    淘寶閑魚,大家搜搜鋪價(jià)格,特別是機(jī)器視覺小白。 機(jī)架:(新的)200元以下。(看需求,自己簡單打光,買個(gè)50元的。如果復(fù)雜,就拿給供應(yīng)商免費(fèi)打光) 相機(jī),鏡頭:(新的)800元以下(一線大品牌,看需求,沒什么需求可以選個(gè)130萬??迪鄼C(jī),賊便宜)。 光源,光源控制

    2024年02月07日
    瀏覽(17)
  • 軟件開發(fā)工程師 - 面試手冊

    軟件開發(fā)工程師是IT行業(yè)中最常見的崗位之一,主要負(fù)責(zé)設(shè)計(jì)、開發(fā)和維護(hù)軟件應(yīng)用。他們需要熟悉至少一種編程語言,了解軟件開發(fā)的基本流程和原理,具備良好的解決問題能力和團(tuán)隊(duì)合作精神。 在招聘廣告中,公司通常會對軟件開發(fā)工程師的要求做出如下描述: 熟悉至少

    2024年02月06日
    瀏覽(22)
  • SaaS軟件工程師成長路徑

    SaaS軟件工程師成長路徑

    ????? ?SaaS軟件工程師的成長需要循序漸進(jìn),和SaaS業(yè)務(wù)一樣有耐心。SaaS工程師需要在“業(yè)務(wù)”、“技術(shù)”、“管理”三個(gè)維度做好知識儲備、技能沉淀。本文基于“能力-知識-技能”模型,給出SaaS軟件工程師成長路徑、學(xué)習(xí)建議及要求。 ? ? ? ? “Ability(能力)”更多依

    2024年02月15日
    瀏覽(28)
  • 小白到運(yùn)維工程師自學(xué)之路 第三十九集 (HAproxy 負(fù)載均衡)
一、概述

    小白到運(yùn)維工程師自學(xué)之路 第三十九集 (HAproxy 負(fù)載均衡) 一、概述

    ????????HAProxy是一款高性能的負(fù)載均衡軟件,可以將來自客戶端的請求分發(fā)到多個(gè)服務(wù)器上,以提高系統(tǒng)的可用性和性能。HAProxy支持多種負(fù)載均衡算法,包括輪詢、加權(quán)輪詢、最少連接數(shù)等。同時(shí),HAProxy還支持會話保持、健康檢查、SSL終止等功能,可以滿足不同場景下的

    2024年02月09日
    瀏覽(22)
  • 軟件工程師,全面思考問題很重要

    軟件工程師,全面思考問題很重要

    為什么要全面思考問題 ????????□ 在軟件開發(fā)中,對一個(gè)問題思考得越全面,編寫出的代碼就會越嚴(yán)謹(jǐn),出現(xiàn)bug的幾率就越低;反之,如果沒有對一個(gè)問題進(jìn)行全面而深入的思考,編寫出的代碼就會漏洞百出,出現(xiàn)各種莫名其妙、無法復(fù)現(xiàn)的bug的幾率也就急劇增加。 ??

    2024年02月08日
    瀏覽(26)
  • 軟件工程師,TypeScript值得你擁有

    軟件工程師,TypeScript值得你擁有

    背景 ?????????□ TypeScript起源于使用JavaScript開發(fā)的大型項(xiàng)目。由于JavaScript語言本身的局限性,難以勝任和維護(hù)大型項(xiàng)目開發(fā),因此微軟開發(fā)了TypeScript,使得其能夠勝任開發(fā)大型項(xiàng)目。 ????????□ TypeScript是微軟開發(fā)的一個(gè)開源的編程語言,通過在JavaScript的基礎(chǔ)上添

    2024年02月16日
    瀏覽(21)
  • 8年經(jīng)驗(yàn)的軟件工程師建議

    8年經(jīng)驗(yàn)的軟件工程師建議

    我希望在職業(yè)生涯早期就開始做的事情和我希望以不同的方式做的事情。 大家好,我已經(jīng)做了八年半的軟件工程師。這篇文章來源于我最近對自己在職業(yè)生涯中希望早點(diǎn)開始做的事情以及希望以不同方式做的事情的自我反思。 我在這里分享的對任何希望提高和進(jìn)步到高級甚

    2024年02月05日
    瀏覽(15)
  • 軟件UI工程師的職責(zé)模板

    軟件UI工程師的職責(zé)模板

    ? 軟件UI工程師的職責(zé)模板1 職責(zé): 1.負(fù)責(zé)產(chǎn)品的UI視覺設(shè)計(jì)(手機(jī)軟件界面 網(wǎng)站界面 圖標(biāo)設(shè)計(jì)產(chǎn)品廣告及 企業(yè)文化的創(chuàng)意設(shè)計(jì)等); 2.負(fù)責(zé)公司各種客戶端軟件客戶端的UI界面及相關(guān)圖標(biāo)制作; 3.設(shè)定產(chǎn)品界面的整體視覺風(fēng)格; 4.為開發(fā)工程師創(chuàng)建詳細(xì)的界面說明文檔,保證工程師

    2024年02月13日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包