1. 舉例講解殘差單元為什麼有效。
來自知乎鏈結 :【模型解讀】resnet中的殘差連線,你確定真的看懂了?
首先大家已經形成了乙個通識,在一定程度上,網路越深表達能力越強,效能越好。
不過,好是好了,隨著網路深度的增加,帶來了許多問題,梯度消散,梯度**;在resnet出來之前大家沒想辦法去解決嗎?當然不是。更好的優化方法,更好的初始化策略,bn層,relu等各種啟用函式,都被用過了,但是仍然不夠,改善問題的能力有限,直到殘差連線被廣泛使用。
在反向傳播過程中,一旦其中某乙個導數很小,多次連乘後梯度可能越來越小,這就是常說的梯度消散,對於深層網路,傳到淺層幾乎就沒了。但是如果使用了殘差,每乙個導數就加上了乙個恒等項1,dh/dx=d(f+x)/dx=1+df/dx。此時就算原來的導數df/dx很小,這時候誤差仍然能夠有效的反向傳播,這就是核心思想。
我們舉個例子直觀理解一下:
假如有乙個網路,輸入x=1,非殘差網路為g,殘差網路為h,其中h=f(x)+x
有這樣的乙個輸入輸出關係:
在t時刻:
非殘差網路g(1)=1.1,
殘差網路h(1)=1.1, h(1)=f(1)+1, f(1)=0.1
在t+1時刻:
非殘差網路g』(1)=1.2,
殘差網路h』(1)=1.2, h』(1)=f』(1)+1, f』(1)=0.2
這時候我們看看:
非殘差網路g的梯度 = (1.2-1.1)/1.1
而殘差網路f的梯度 = (0.2-0.1)/0.1
因為兩者各自是對g的引數和f的引數進行更新,可以看出這一點變化對f的影響遠遠大於g,說明引入殘差後的對映對輸出的變化更敏感,輸出是什麼?不就是反應了與真值的誤差嗎?
所以,這麼一想想,殘差就應該是有效的,各方實驗結果也證明了。
2. 解釋了什麼叫做神經網路的退化
知乎鏈結 :殘差網路解決了什麼,為什麼有效?
神經網路的退化:在神經網路可以收斂的前提下,隨著網路深度增加,網路的表現先是逐漸增加至飽和,然後迅速下降。
迭代器的有效性
在stl中,對於容器vector,deque,如果執行了插入或者刪除操作之後,之前的迭代器都失效了。用例子來說明情況。我們先構造乙個vector vector v int i 0 for i 1 i 6 i for i 5 i 0 i cout for i 0 icout cout 這時要求刪除ve...
判斷日期的有效性
方法描述 去除字串前後的所有空格 引數 str 字串 function trim str 方法描述 日期格式的校驗 如 2008 02 29或者2008 02 29等這樣的才算合法 引數 datastr 日期的字串 function validatedate datastr d d var day ...
檢測PE檔案的有效性
2008年01月14日 星期一 13 41 本文刊登於2007年第8期的 黑客防線 有內容部分改動。正文如下 從防毒軟體的角度來講檢測檔案是否為pe檔案,並再進一步判斷使用何種方式對檔案進行操作。在病毒感染可執行檔案時,也是應該有這樣步驟的。那麼,就來看看防毒軟體是如何檢測pe檔案的有效性了。pe檔...