本文目錄一覽:
- 1、CNN、RNN、DNN的內部網絡結構有什麼區別?
- 2、CNN、RNN、DNN的一般解釋
- 3、關於YouTube推薦系統的論文學習
- 4、證明設n階行列式Dnn,D中元素aij的代數餘子式Aij。證明n維列向量(An1,……,Ann)’是齊次線性方程
- 5、嵌入式與神經網絡(四):DNN算法
- 6、CNN(卷積神經網絡)、RNN(循環神經網絡)、DNN(深度神經網絡)的內部網絡結構有什麼區別?
CNN、RNN、DNN的內部網絡結構有什麼區別?
從廣義上來說,NN(或是更美的DNN)確實可以認為包含了CNN、RNN這些具體的變種形式。在實際應用中,所謂的深度神經網絡DNN,往往融合了多種已知的結構,包括卷積層或是LSTM單元。但是就題主的意思來看,這裡的DNN應該特指全連接的神經元結構,並不包含卷積單元或是時間上的關聯。
因此,題主一定要將DNN、CNN、RNN等進行對比,也未嘗不可。其實,如果我們順着神經網絡技術發展的脈絡,就很容易弄清這幾種網絡結構發明的初衷,和他們之間本質的區別。神經網絡技術起源於上世紀五、六十年代,當時叫感知機(perceptron),擁有輸入層、輸出層和一個隱含層。輸入的特徵向量通過隱含層變換達到輸出層,在輸出層得到分類結果。
早期感知機的推動者是Rosenblatt。(扯一個不相關的:由於計算技術的落後,當時感知器傳輸函數是用線拉動變阻器改變電阻的方法機械實現的,腦補一下科學家們扯着密密麻麻的導線的樣子…)但是,Rosenblatt的單層感知機有一個嚴重得不能再嚴重的問題,即它對稍複雜一些的函數都無能為力(比如最為典型的「異或」操作)。
連異或都不能擬合,你還能指望這貨有什麼實際用途么。隨着數學的發展,這個缺點直到上世紀八十年代才被Rumelhart、Williams、Hinton、LeCun等人(反正就是一票大牛)發明的多層感知機(multilayer perceptron)克服。多層感知機,顧名思義,就是有多個隱含層的感知機。
CNN、RNN、DNN的一般解釋
CNN(卷積神經網絡)、RNN(循環神經網絡)、DNN(深度神經網絡)的內部網絡結構有什麼區別?
轉自知乎 科言君 的回答
神經網絡技術起源於上世紀五、六十年代,當時叫 感知機 (perceptron),擁有輸入層、輸出層和一個隱含層。輸入的特徵向量通過隱含層變換達到輸出層,在輸出層得到分類結果。早期感知機的推動者是Rosenblatt。 (扯一個不相關的:由於計算技術的落後,當時感知器傳輸函數是用線拉動變阻器改變電阻的方法機械實現的,腦補一下科學家們扯着密密麻麻的導線的樣子…)
但是,Rosenblatt的單層感知機有一個嚴重得不能再嚴重的問題,即它對稍複雜一些的函數都無能為力(比如最為典型的「異或」操作)。連異或都不能擬合,你還能指望這貨有什麼實際用途么o(╯□╰)o
隨着數學的發展,這個缺點直到上世紀八十年代才被Rumelhart、Williams、Hinton、LeCun等人(反正就是一票大牛)發明的 多層感知機 (multilayerperceptron)克服。多層感知機,顧名思義,就是有多個隱含層的感知機(廢話……)。好好,我們看一下多層感知機的結構:
圖1 上下層神經元全部相連的神經網絡——多層感知機
多層感知機可以擺脫早期離散傳輸函數的束縛,使用sigmoid或tanh等連續函數模擬神經元對激勵的響應,在訓練算法上則使用Werbos發明的反向傳播BP算法。對,這貨就是我們現在所說的 神經網絡 NN ——神經網絡聽起來不知道比感知機高端到哪裡去了!這再次告訴我們起一個好聽的名字對於研(zhuang)究(bi)很重要!
多層感知機解決了之前無法模擬異或邏輯的缺陷,同時更多的層數也讓網絡更能夠刻畫現實世界中的複雜情形。相信年輕如Hinton當時一定是春風得意。
多層感知機給我們帶來的啟示是, 神經網絡的層數直接決定了它對現實的刻畫能力 ——利用每層更少的神經元擬合更加複雜的函數[1]。
(Bengio如是說:functions that can be compactly
represented by a depth k architecture might require an exponential number of
computational elements to be represented by a depth k − 1 architecture.)
即便大牛們早就預料到神經網絡需要變得更深,但是有一個夢魘總是縈繞左右。隨着神經網絡層數的加深, 優化函數越來越容易陷入局部最優解 ,並且這個「陷阱」越來越偏離真正的全局最優。利用有限數據訓練的深層網絡,性能還不如較淺層網絡。同時,另一個不可忽略的問題是隨着網絡層數增加, 「梯度消失」現象更加嚴重 。具體來說,我們常常使用sigmoid作為神經元的輸入輸出函數。對於幅度為1的信號,在BP反向傳播梯度時,每傳遞一層,梯度衰減為原來的0.25。層數一多,梯度指數衰減後低層基本上接受不到有效的訓練信號。
2006年,Hinton利用預訓練方法緩解了局部最優解問題,將隱含層推動到了7層[2],神經網絡真正意義上有了「深度」,由此揭開了深度學習的熱潮。這裡的「深度」並沒有固定的定義——在語音識別中4層網絡就能夠被認為是「較深的」,而在圖像識別中20層以上的網絡屢見不鮮。為了克服梯度消失,ReLU、maxout等傳輸函數代替了sigmoid,形成了如今DNN的基本形式。單從結構上來說, 全連接的 DNN 和圖 1 的多層感知機是沒有任何區別的 。
值得一提的是,今年出現的高速公路網絡(highway network)和深度殘差學習(deep residual learning)進一步避免了梯度消失,網絡層數達到了前所未有的一百多層(深度殘差學習:152層)[3,4]!具體結構題主可自行搜索了解。如果你之前在懷疑是不是有很多方法打上了「深度學習」的噱頭,這個結果真是深得讓人心服口服。
圖2 縮減版的深度殘差學習網絡,僅有34 層,終極版有152 層,自行感受一下
如圖1所示,我們看到 全連接 DNN 的結構里下層神經元和所有上層神經元都能夠形成連接 ,帶來的潛在問題是 參數數量的膨脹 。假設輸入的是一幅像素為1K*1K的圖像,隱含層有1M個節點,光這一層就有10^12個權重需要訓練,這不僅容易過擬合,而且極容易陷入局部最優。另外,圖像中有固有的局部模式(比如輪廓、邊界,人的眼睛、鼻子、嘴等)可以利用,顯然應該將圖像處理中的概念和神經網絡技術相結合。此時我們可以祭出題主所說的卷積神經網絡CNN。對於CNN來說,並不是所有上下層神經元都能直接相連,而是 通過「卷積核」作為中介。同一個卷積核在所有圖像內是共享的,圖像通過卷積操作後仍然保留原先的位置關係。 兩層之間的卷積傳輸的示意圖如下:
圖3 卷積神經網絡隱含層(摘自Theano 教程)
通過一個例子簡單說明卷積神經網絡的結構。假設圖3中m-1=1是輸入層,我們需要識別一幅彩色圖像,這幅圖像具有四個通道ARGB(透明度和紅綠藍,對應了四幅相同大小的圖像),假設卷積核大小為100*100,共使用100個卷積核w1到w100(從直覺來看,每個卷積核應該學習到不同的結構特徵)。用w1在ARGB圖像上進行卷積操作,可以得到隱含層的第一幅圖像;這幅隱含層圖像左上角第一個像素是四幅輸入圖像左上角100*100區域內像素的加權求和,以此類推。同理,算上其他卷積核,隱含層對應100幅「圖像」。每幅圖像對是對原始圖像中不同特徵的響應。按照這樣的結構繼續傳遞下去。CNN中還有max-pooling等操作進一步提高魯棒性。
圖4 一個典型的卷積神經網絡結構,注意到最後一層實際上是一個全連接層(摘自Theano 教程)
在這個例子里,我們注意到 輸入層到隱含層的參數瞬間降低到了 100*100*100=10^6 個 !這使得我們能夠用已有的訓練數據得到良好的模型。題主所說的適用於圖像識別,正是由於 CNN 模型限制參數了個數並挖掘了局部結構的這個特點 。順着同樣的思路,利用語音語譜結構中的局部信息,CNN照樣能應用在語音識別中。
全連接的DNN還存在着另一個問題——無法對時間序列上的變化進行建模。然而, 樣本出現的時間順序對於自然語言處理、語音識別、手寫體識別等應用非常重要 。對了適應這種需求,就出現了題主所說的另一種神經網絡結構——循環神經網絡RNN。
在普通的全連接網絡或CNN中,每層神經元的信號只能向上一層傳播,樣本的處理在各個時刻獨立,因此又被成為前向神經網絡(Feed-forward Neural Networks)。而在 RNN 中,神經元的輸出可以在下一個時間戳直接作用到自身 ,即第i層神經元在m時刻的輸入,除了(i-1)層神經元在該時刻的輸出外,還包括其自身在(m-1)時刻的輸出!表示成圖就是這樣的:
圖5 RNN 網絡結構
我們可以看到在隱含層節點之間增加了互連。為了分析方便,我們常將RNN在時間上進行展開,得到如圖6所示的結構:
圖6 RNN 在時間上進行展開
Cool, ( t+1 )時刻網絡的最終結果O(t+1) 是該時刻輸入和所有歷史共同作用的結果 !這就達到了對時間序列建模的目的。
不知題主是否發現,RNN可以看成一個在時間上傳遞的神經網絡,它的深度是時間的長度!正如我們上面所說, 「梯度消失」現象又要出現了,只不過這次發生在時間軸上 。對於t時刻來說,它產生的梯度在時間軸上向歷史傳播幾層之後就消失了,根本就無法影響太遙遠的過去。因此,之前說「所有歷史」共同作用只是理想的情況,在實際中,這種影響也就只能維持若干個時間戳。
為了解決時間上的梯度消失,機器學習領域發展出了 長短時記憶單元 LSTM ,通過門的開關實現時間上記憶功能,並防止梯度消失 ,一個LSTM單元長這個樣子:
圖7 LSTM 的模樣
除了題主疑惑的三種網絡,和我之前提到的深度殘差學習、LSTM外,深度學習還有許多其他的結構。舉個例子,RNN既然能繼承歷史信息,是不是也能吸收點未來的信息呢?因為在序列信號分析中,如果我能預知未來,對識別一定也是有所幫助的。因此就有了 雙向 RNN 、雙向 LSTM ,同時利用歷史和未來的信息。
圖8 雙向RNN
事實上, 不論是那種網絡,他們在實際應用中常常都混合著使用,比如 CNN 和RNN 在上層輸出之前往往會接上全連接層,很難說某個網絡到底屬於哪個類別。 不難想像隨着深度學習熱度的延續,更靈活的組合方式、更多的網絡結構將被發展出來。儘管看起來千變萬化,但研究者們的出發點肯定都是為了解決特定的問題。題主如果想進行這方面的研究,不妨仔細分析一下這些結構各自的特點以及它們達成目標的手段。入門的話可以參考:
Ng寫的Ufldl: UFLDL教程 – Ufldl
也可以看Theano內自帶的教程,例子非常具體: Deep Learning Tutorials
歡迎大家繼續推薦補充。
當然啦,如果題主只是想湊個熱鬧時髦一把,或者大概了解一下方便以後把妹使,這樣看看也就罷了吧。
參考文獻:
[1]
Bengio Y. Learning Deep
Architectures for AI[J]. Foundations Trends® in Machine Learning, 2009,
2(1):1-127.
[2]
Hinton G E, Salakhutdinov R R.
Reducing the Dimensionality of Data with Neural Networks[J]. Science, 2006,
313(5786):504-507.
[3]
He K, Zhang X, Ren S, Sun J. Deep
Residual Learning for Image Recognition. arXiv:1512.03385, 2015.
[4]
Srivastava R K, Greff K,
Schmidhuber J. Highway networks. arXiv:1505.00387, 2015.
關於YouTube推薦系統的論文學習
本文是2010年發表在RecSys上的文章。本文主要介紹的是YouTube的個性化推薦的相關內容。
用戶使用YouTube一般有三個原因:
–看他們在其他地方找到的單一視頻(直接導航);
–圍繞某個主題(搜索和目標導向瀏覽)查看特定視頻;
–受他們感興趣內容的吸引。
推薦系統主要是針對第三點,目的是幫助用戶發現他們感興趣的高質量視頻,並且推薦結果應該隨時間和用戶最近的行為更新。
在YouTube的推薦應用中,面臨以下挑戰:
–用戶上傳的視頻的元信息非常少;
–視頻時長比較短(一般小於10分鐘);
–用戶行為短暫、多變而且噪聲很多;
–視頻生命周期短。
這是YouTube的推薦和普通視頻網站推薦不同的地方,這些挑戰也是現在很多短視頻公司關注的問題。
推薦系統算法應該保持時效性和新鮮性,另外,用戶必須了解為什麼向他們推薦視頻,這樣可以幫助用戶根據自己的喜好改善推薦引擎。推薦的視頻是通過用戶的行為來生成的,用戶的行為包括觀看、收藏、喜歡等來作為種子視頻,然後使用各種相關性和多樣性的 signals 對視頻集進行排序。推薦系統的工程設計方面,保持各個模塊的獨立性,並且還需要對故障具有恢復能力,並在出現部分故障時適度降級。
這裡有2種數據可以考慮:
1)是內容數據視頻流、視頻元信息(標題,標籤等);
2)用戶行為數據,包括顯性和隱性數據。前者是指用戶評分、明確表示喜歡、不喜歡等行為,後者是瀏覽、觀看等行為。
原始數據中還含有非常多的噪聲,很多不可控因素會影響原始數據的質量。
作者將相關視頻定義為用戶在觀看給定的種子視頻 v 之後可能會觀看的視頻,使用關聯規則挖掘技術來確定視頻間的相關性。視頻i和j的相關性定義為:
將用戶觀看過的視頻、喜歡過的視頻、收藏過的視頻等等作為種子集合,對它們進行N級的級聯擴展,也就是YouTube選擇召回的不是1步相關視頻,而是n-步相關視頻,即種子視頻迭代n次後得到的相關視頻集合,產生廣闊和多樣的候選結果。
在生成一組候選視頻後,需要對這些相關視頻進行排序。
用於排序的數據主要包括:
–視頻質量:包括觀看次數、視頻評分、評論、收視和上傳時間等;
–用戶特徵:考慮用戶觀看歷史記錄中種子視頻的屬性,例如觀看次數和觀看時間等;
–多樣性:要在被推薦的視頻集合的類別中做一個平衡,以保持結果的多樣性。
這些數據最終被線性組合起來,得到ranking的評分。
本文雖然是2010年發表的,近年來有很多內容升級複雜化了,但是作為初學者,本文的知識點和整體思路是非常值得學習的。當時的YouTube推薦系統的核心算法就是基於Item的協同過濾算法,也就是對於一個用戶當前場景下和歷史興趣中喜歡的視頻,找出它們相關的視頻,並從這些視頻中過濾掉已經看過的,剩下就是可以用戶極有可能喜歡看的視頻。
本文是Google的YouTube團隊在推薦系統上DNN方面的嘗試,發表在16年9月的RecSys會議。本文第1節介紹了YouTube推薦系統主要面臨的挑戰。第2節介紹了一個簡要的系統概述。第3節更詳細地描述了候選集生成模型,包括如何對其進行訓練並用於提供推薦服務;實驗結果顯示模型添加特徵和DNN深度後可以顯著提升預測效果。第4節詳細說明了排序模型,包括使用加權邏輯回歸技術以訓練預測預期觀察時間的模型;實驗結果表明,增加隱層網絡寬度和深度都能提升模型效果。 最後,第5節做了總結。
-規模大:用戶和視頻的數量都很大,傳統適合小規模的算法無法滿足;
-新鮮度:要求對新視頻作出及時和合適的反饋;
-噪音:YouTube上的歷史用戶行為由於稀疏性和各種不可觀察的外部因素而不可預測。 我們很少能獲得基本真實的用戶滿意度,更多的是隱式反饋噪聲信號。
推薦系統的整體結構如圖所示:
該系統由兩個神經網絡組成:一個用於候選集的生成,一個用於排序。候選集生成網絡將用戶的Youtube活動歷史記錄作為輸入,然後從海量視頻集中篩選出一小部分(數百個)以高精度與用戶相關的視頻。排序網絡負責基於更加精細的特徵對候選集進行排序,最後將最高得分的視頻呈現給用戶(按它們的得分排名)。
該模型把這個推薦問題轉化成極端多分類問題:對於用戶U和上下文C,把語料庫V中的數百萬個視頻(分類)i,在時間t處做準確的分類,如下所示:
其中u為用戶U的embedding表示,vi 代表各個候選視頻的embedding。embedding是指稀疏實體(單個視頻,用戶等)到實數密集向量的映射;DNN的目標就是在用戶信息和上下文信息為輸入條件下學習用戶的embedding向量u,這對於用softmax分類器來區分視頻是有用的。
整個模型架構是包含三層全連接層,使用relu激活函數。把用戶觀看歷史數據、搜索數據做一個embedding,加上age、gender等特徵作為DNN的輸入;輸出分線上和離線訓練兩個部分。訓練階段使用softmax輸出概率,在服務期間則直接使用接近最近鄰搜索來進行生產候選的N個視頻。
1)把用戶觀看過的視頻id列表做embedding,並對所有歷史觀看視頻ID的embedding做平均,得到觀看embedding向量。
2)同時把用戶搜索過的視頻id列表也做如上的embedding,得到搜索embedding向量。
3)用戶的人口統計學屬性做embedding得到特徵向量。
4)簡單的二值和連續特徵,例如用戶的性別,登錄狀態和年齡作為歸一化為[0,1]的實數值直接輸入到網絡中。
5)example age:機器學習系統總是利用歷史的例子去預測未來,所以對過去總會有一個隱含的偏差。為了矯正偏差,YouTube把訓練樣本的年齡當作一個特徵。
1.訓練樣本要用youtube上的所有視頻觀看記錄,而不只是我們的推薦的視頻的觀看記錄。
2.為每個用戶生產固定數量的訓練樣本。
3.丟棄搜索信息的順序,用無序的詞袋錶示搜索查詢。
4.如下圖,圖(a)從歷史觀看記錄中隨機拿出來一個作為正樣本來預測它,其餘的歷史觀看記錄作為上下文;這樣其實泄露了未來的信息,並且忽略了任何非對稱的消費模式。相反,圖(b)是從用戶的歷史視頻觀看記錄中隨機拿出來一個作為正樣本,然後只用這個視頻之前的歷史觀看記錄作為輸入;這樣的預測效果好得多。
– 深度為0:這時網絡就是一個把連接起來的輸入層轉換一下,和softmax的256維輸出對應起來
– 深度為1:第一層 256個節點,激活函數 是ReLU (rectified linear units 修正線性單元)
– 深度為2:第一層512個節點,第二層256個節點,激活函數都是ReLU
– 深度為3:第一層1024個節點,第二層512個節點,第三層256個節點,激活函數都是ReLU
– 深度為4:第一層2048個節點,第二層1024個節點,第三層512個節點,第四層256個節點,激活函數都是ReLU
實驗結果如下圖所示:
可以看出,特徵選取較多時,並且模型深度在四層時,可以得到較好的結果。
排序階段最重要的任務就是精準的預估用戶對視頻的喜好程度。在排序階段面對的數據集比較小,因此會採用更多的特徵來計算。
作者在排序階段所設計的DNN和上文的DNN的結構是類似的,但在訓練階段對視頻的打分函數不再是softmax,而是採用的邏輯回歸。如下圖所示:
1)特徵工程
儘管神經網絡能夠減輕人工特徵工程的負擔,但是我們依然需要花費精力將用戶及視頻數據轉化為有效的特徵。其主要的挑戰在於如何表示用戶動作的時間序列以及這些動作如何與正被評分的視頻展現相關。但是通過對用戶和物品之間的交互行為,我們能提取出一些有用信息,比如: 用戶從這個頻道里看過多少視頻,用戶上次觀看這個主題的視頻是什麼時候等。
2)embedding 離散特徵
每個維度都有獨立的embedding空間,實際並非為所有的id進行embedding,比如視頻id,只需要按照點擊排序,選擇top N視頻進行embedding,其餘置為0向量;而當多值離散特徵映射成embedding之後,像在候選集生成階段一樣,在輸入網絡之前需要做一下加權平均。另外一個值得注意的是,離散特徵對應的ID一樣的時候,他們的底層embedding也是共享的,其優勢在於提升泛化能力、加速訓練、減小內存佔用等。
3)連續特徵歸一化
對連續值類的特徵進行歸一化,作者設計一種積分函數將特徵映射為一個服從[0,1]分佈的變量;還可以對某些特徵進行取根號、取對數和取平方的相關操作,使得網絡有更強的表達能力。
給定正負樣本,正樣本為有點擊視頻,負樣本為無點擊視頻;用觀看時長對正樣本做了加權,負樣本都用單位權重(即不加權);採用的是基於交叉熵損失函數的邏輯回歸模型訓練的。
上表顯示了在保留數據集上用不同的隱層配置得到的結果,這些結果表明增加隱層的寬度提升了效果,增加深度也是一樣。
本文內容方面,介紹了YouTube基於深度學習的推薦系統,先用視頻和用戶的主要信息通過深度候選生成模型從百萬級視頻中找出數百個相關的視頻,再用視頻和用戶的其他信息通過深度排序模型從數百個視頻中找出幾十個最有可能受用戶歡迎的視頻給用戶。這樣使得推薦系統對用戶喜好的刻畫能力大大增強,刻畫的範圍更加廣泛。
本文結構方面,從推薦系統的整體結構講起,劃分為候選集生成和排序兩個階段,然後對每個階段詳細地展開講解。整體過程條理清晰,邏輯嚴密,值得我們學習。
證明設n階行列式Dnn,D中元素aij的代數餘子式Aij。證明n維列向量(An1,……,Ann)’是齊次線性方程
這道題n階行列式D應該不為0。
行列式的性質中有這樣一個:求和(k從1到n)aikAik=D(行列式),求和(k從1到n)aikAjk=0,利用這個性質,把向量(An1,…,Ann)代入上述方程組,全部為0,因此是解。另外,由於n階行列式不為0,因此D的行向量線性無關,因此題目中的齊次線性方程組的係數矩陣的行向量也線性無關,其秩為n-1,故基礎解系只含一個向量,顯然(An1,…,Ann)是非零向量,因此是基礎解系。
嵌入式與神經網絡(四):DNN算法
姓名:王央京 學號:18050100052 學院:電子工程學院
轉自:
【嵌牛導讀】本文介紹了DNN中的前後向傳播算法
【嵌牛鼻子】DNN(深度神經網絡)
【嵌牛提問】對於DNN進行初步學習,需要了解的具體算法有哪些?
【嵌牛正文】
DNN前向傳播算法數學原理
對於下圖的三層DNN,利用和感知機一樣的思路,我們可以利用上一層的輸出計算下一層的輸出,也就是所謂的DNN前向傳播算法。
4 DNN前向傳播算法
所謂的DNN前向傳播算法就是利用若干個權重係數矩陣W,偏倚向量b來和輸入值向量x進行一系列線性運算和激活運算,從輸入層開始,一層層的向後計算,一直到運算到輸出層,得到輸出結果為值。
輸入: 總層數L,所有隱藏層和輸出層對應的矩陣W,偏倚向量b,輸入值向量x
輸出:輸出層的輸出。
5 DNN反向傳播算法要解決的問題
如果我們採用DNN的模型,即我們使輸入層n_in個神經元,而輸出層有n_out個神經元。再加上一些含有若干神經元的隱藏層。此時需要找到合適的所有隱藏層和輸出層對應的線性係數矩陣W,偏倚向量b,讓所有的訓練樣本輸入計算出的輸出儘可能的等於或很接近樣本輸出。怎麼找到合適的參數呢?
可以用一個合適的損失函數來度量訓練樣本的輸出損失,接着對這個損失函數進行優化求最小化的極值,對應的一系列線性係數矩陣W,偏倚向量b即為我們的最終結果。在DNN中, 損失函數優化極值求解的過程 最常見的一般是通過梯度下降法來一步步迭代完成的,也可以是其他的迭代方法比如牛頓法與擬牛頓法。
6 DNN反向傳播算法的基本思路
在進行DNN反向傳播算法前,我們需要選擇一個損失函數,來度量訓練樣本計算出的輸出和真實的訓練樣本輸出之間的損失。
DNN可選擇的損失函數有不少,為了專註算法,這裡使用最常見的均方差來度量損失。即對於每個樣本,我們期望最小化下式:
損失函數有了,用梯度下降法迭代求解每一層的w,b。
首先是輸出層第 L層 。注意到輸出層的W,b滿足下式:
對於輸出層的參數,損失函數變為:
求解W,b的梯度:
7 DNN反向傳播算法過程
由於梯度下降法有批量(Batch),小批量(mini-Batch),隨機三個變種,為了簡化描述,這裡我們以最基本的批量梯度下降法為例來描述反向傳播算法。實際上在業界使用最多的是mini-Batch的梯度下降法。區別僅僅在於迭代時訓練樣本的選擇。
輸入:總層數 L,以及各隱藏層與輸出層的神經元個數,激活函數,損失函數,迭代步長 a,最大迭代次數 max與停止迭代閾值 ,輸入的m個訓練樣本
輸出:各隱藏層與輸出層的線性關係係數矩陣W和偏倚向量。
CNN(卷積神經網絡)、RNN(循環神經網絡)、DNN(深度神經網絡)的內部網絡結構有什麼區別?
如下:
1、DNN:存在着一個問題——無法對時間序列上的變化進行建模。然而,樣本出現的時間順序對於自然語言處理、語音識別、手寫體識別等應用非常重要。對了適應這種需求,就出現了另一種神經網絡結構——循環神經網絡RNN。
2、CNN:每層神經元的信號只能向上一層傳播,樣本的處理在各個時刻獨立,因此又被稱為前向神經網絡。
3、RNN:神經元的輸出可以在下一個時間戳直接作用到自身,即第i層神經元在m時刻的輸入,除了(i-1)層神經元在該時刻的輸出外,還包括其自身在(m-1)時刻的輸出!
介紹
神經網絡技術起源於上世紀五、六十年代,當時叫感知機(perceptron),擁有輸入層、輸出層和一個隱含層。輸入的特徵向量通過隱含層變換達到輸出層,在輸出層得到分類結果。早期感知機的推動者是Rosenblatt。
在實際應用中,所謂的深度神經網絡DNN,往往融合了多種已知的結構,包括卷積層或是LSTM單元。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/197540.html