給定卷積神經(jīng)網(wǎng)絡(luò)輸入逻住,卷積核大小,padding创肥,步長达舒,求輸出的shape?
推薦下我自己創(chuàng)建的Python學(xué)習(xí)交流群960410445叹侄,這是Python學(xué)習(xí)交流的地方,不管你是小白還是大牛趾代,小編都歡迎,不定期分享干貨撒强,包括我整理的一份適合零基礎(chǔ)學(xué)習(xí)Python的資料和入門教程。
各個激活函數(shù)的優(yōu)缺點
Sigmod
優(yōu)點
1胚想、輸出值0-1(很重大的優(yōu)點)
2、其余的和其他眾多激活函數(shù)比起來顿仇,感覺沒有什么優(yōu)點淘正,方便入門理解
缺點
1、容易梯度消失
2臼闻、x的可變值區(qū)域太小鸿吆,極其容易陷入級值的狀況(-0.9~0.9)
3、指數(shù)exp計算復(fù)雜
Tanh
優(yōu)點
和sigmod比起來述呐,是零均值化處理惩淳。(零均值化可以加快模型的收斂)
缺點
和sigmod一樣的缺點
Relu
優(yōu)點
計算復(fù)雜度低(只有一個if>0判斷,大于0則激活值為1)乓搬,部分區(qū)域線性遞增思犁,沒有冪運算與指數(shù)運算
缺點
x小于0時無法產(chǎn)生激活值
訓(xùn)練到后期可能權(quán)重參數(shù)更新太大
Leakly ReLu
優(yōu)點
相對于relu來說,激活值必然可以產(chǎn)生
缺點
Relu的其他缺點一概繼承下來了
ELU
優(yōu)點
相對于Leaky relu來說进肯,激活值更平滑
缺點
其他的Leaky relu的缺點一并繼承下來了激蹲。
如何選擇激活函數(shù)?
Relu-小心設(shè)置learning
rate(因為x>0的情況下江掩,導(dǎo)數(shù)均為1)学辱,最好是設(shè)置一個比較小的值。
不要使用sigmod(缺點太多环形,計算復(fù)雜)
如何初始化CNN策泣?(理論)
不要全部把超參數(shù)設(shè)置為0(單層網(wǎng)絡(luò)可以)
容易梯度消失
如何初始化CNN?(實踐)
Xavier-tanh(不太適合relu)
fan_in輸出通道數(shù)
Fan_out輸出通道數(shù)
代碼Np.randon.rand(fan_in,fan_out)/np.sqrt(fan_in/2)
如何分析初始化參數(shù)結(jié)果好壞抬吟?
查看初始化后各層的激活值分布
是否在固定的萨咕,穩(wěn)定的,同一個區(qū)間的均勻分布
比較好的初始化結(jié)果
均值為0火本,方差為0.02
如tanh危队,relu函數(shù)
什么叫梯度消失,梯度爆炸
當網(wǎng)絡(luò)層數(shù)過多時钙畔,前面層由于求導(dǎo)過程乘積運算交掏,出現(xiàn)weight與bias變得異常大與異常小的情況
左下角的內(nèi)容清楚的說明了梯度爆炸和梯度消失的場景
BN是什么,為什么能提高收斂速度
批歸一化是什么刃鳄?
標準化處理,特征縮放的一個方式钱骂,將數(shù)據(jù)規(guī)整到一定范圍內(nèi)叔锐。
如上圖所示,BN步驟主要分為4步:
求每一個訓(xùn)練批次數(shù)據(jù)的均值
求每一個訓(xùn)練批次數(shù)據(jù)的方差
使用求得的均值和方差對該批次的訓(xùn)練數(shù)據(jù)做歸一化愉烙,獲得0-1分布步责。其中εε是為了避免除數(shù)為0時所使用的微小正數(shù)。
尺度變換和偏移:將xixi乘以γγ調(diào)整數(shù)值大小遂鹊,再加上ββ增加偏移后得到y(tǒng)iyi秉扑,這里的γγ是尺度因子舟陆,ββ是平移因子秦躯。這一步是BN的精髓裆装,由于歸一化后的xixi基本會被限制在正態(tài)分布下米母,使得網(wǎng)絡(luò)的表達能力下降。為解決該問題妙色,我們引入兩個新的參數(shù):γγ,ββ身辨。 γγ和ββ是在訓(xùn)練時網(wǎng)絡(luò)自己學(xué)習(xí)得到的煌珊。
為什么能提高收斂速度?
解決internal covariate shift問題定庵。
特征沒有消失蔬浙,而是歸一到一定范圍內(nèi)贞远,加快學(xué)習(xí)速度
因為最終都是映射到歸一化范圍內(nèi)蓝仲,所以前一層的權(quán)重調(diào)整對后一層的影響程度都會降低,不用重新適應(yīng)新的分布亮隙,從而讓模型學(xué)的更快咱揍,避免完全從頭學(xué)習(xí)
Tips
BN不用于輸入層和輸出層(經(jīng)驗論)
BN(實踐)
每次batch傳入時都做BN
各個優(yōu)化器的優(yōu)缺點
優(yōu)化器分兩種
固定學(xué)習(xí)率的優(yōu)化算法
SGD隨機梯度下降
優(yōu)點
只隨機采樣一個樣本來計算梯度煤裙,加快學(xué)習(xí)效率,并且避免了普通GD一次性參數(shù)更新的壞處(導(dǎo)致模型無法收斂)
缺點
選擇合適的學(xué)習(xí)率較為困難
Momentum動量
優(yōu)點
動量梯度下降且蓬,動力火車恶阴,慣性火車冯事,這一次梯度下降的值昵仅,會影響下一次梯度下降的值摔笤,相對于簡單的梯度下降來說垦写,Momentum動量帶有延續(xù)性相對于簡單的梯度下降來說梯投,
減少梯度震蕩
缺點
和SGD一樣分蓖,選擇合適的學(xué)習(xí)率較為困難
自適應(yīng)學(xué)習(xí)率的優(yōu)化算法
Adagrad
優(yōu)點
更新參數(shù)時咆疗,會針對原梯度值乘上一個變量午磁,即其所有梯度歷史平均值總和的平方根(如上圖)
這樣在訓(xùn)練初期迅皇,分母較小,學(xué)習(xí)率較大搅荞,學(xué)習(xí)比較快咕痛,后期時茉贡,學(xué)習(xí)會逐漸減慢
缺點
從訓(xùn)練開始就積累梯度方差會導(dǎo)致有效學(xué)習(xí)率過早和過量的減小
只能解決凸問題腔丧,當應(yīng)用于非凸函數(shù)訓(xùn)練神經(jīng)網(wǎng)絡(luò)時愉粤,學(xué)習(xí)可能會到達一個局部是凸碗的區(qū)域
RMSProp
優(yōu)點
能夠解決凸問題
由累計平方梯度變成和平均梯度
缺點
缺少Momentum動量元素
Adam(結(jié)合了動量和RMSProp衣厘,通用方案)
結(jié)合了Momentum和RMSProp的優(yōu)點
手畫一下LSTM
梯度裁剪
介紹一下殘差網(wǎng)絡(luò)
ResNet 基于VGG沒解決深層網(wǎng)絡(luò)下出現(xiàn)性能[梯度消失头滔,導(dǎo)致學(xué)不到東西]與效率下降[反向傳播運算成本大]的問題坤检,優(yōu)化出來的一個新的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)早歇,如圖所示箭跳,兩條路一起走谱姓,最終線性激活輸入值f(x)+x刨晴,然后將f(x)+x傳遞給激活函數(shù)[假設(shè)為relu]。那么在反向傳播的時候茄靠,后面層的梯度更加“無損”的直接傳遞到前面層慨绳,前面層的參數(shù)因此也能繼續(xù)更新脐雪。
為什么殘差網(wǎng)絡(luò)會有效果?
□ 先驗證明《深層網(wǎng)絡(luò)效果會比淺層網(wǎng)絡(luò)好》
只要有理想的訓(xùn)練方式召锈,更深的網(wǎng)絡(luò)肯定會比較淺的網(wǎng)絡(luò)效果要好涨岁。證明過程也很簡單:假設(shè)在一種網(wǎng)絡(luò)A的后面添加幾層形成新的網(wǎng)絡(luò)B梢薪,如果增加的層級只是對A的輸出做了個恒等映射(identity mapping)秉撇,即A的輸出經(jīng)過新增的層級變成B的輸出后沒有發(fā)生變化琐馆,這樣網(wǎng)絡(luò)A和網(wǎng)絡(luò)B的錯誤率就是相等的恒序,也就證明了加深后的網(wǎng)絡(luò)不會比加深前的網(wǎng)絡(luò)效果差歧胁。
當層數(shù)比較多時喊巍,容易導(dǎo)致模型學(xué)不到東西,甚至出現(xiàn)反效果呵曹,然而deep layers又確實是能使模型效果變好的奄喂,所以出現(xiàn)殘差網(wǎng)絡(luò)砍聊。
效率不影響玻蝌,層數(shù)增加俯树,可以低成本高效率的學(xué)到更多非線性的特征许饿。
解決梯度彌漫問題
如上所說陋率,關(guān)鍵點在于反向傳播的時候秽晚,梯度可以沿著shortcut無損進行回傳赴蝇,避免梯度彌漫問題句伶。
解決模型退化問題
避免了過渡訓(xùn)練后,導(dǎo)致模型準確率反而降低的情況先嬉。paper中稱為degration坝初。經(jīng)過實驗后發(fā)現(xiàn)確實能解決這個問題钾军。
本人對于這個問題的確切原因并不清楚,但是猜測這個原因很可能是由于梯度消失以及眾多其他原因所造成的拗小。
Q:既然說中間層是不必要的哀九,那么為什么不直接把這些層去掉呢?可事實上呼胚,ResNet的結(jié)果比淺層網(wǎng)絡(luò)的結(jié)果好的多蝇更,這應(yīng)該怎么解釋呢年扩?
加入中間層主要是為了說明會產(chǎn)生退化的效果。 ResNet效果好是因為解決了退化問題厨幻,,梯度爆炸/梯度彌散况脆,調(diào)節(jié)了網(wǎng)絡(luò)結(jié)構(gòu)漠另,簡化了反向傳播求導(dǎo)運算的流程跃赚。這和砍掉深一點的層是不一樣的思想
風格轉(zhuǎn)換的原理
由風格特征與內(nèi)容特征共同計算得出
風格特征
風格的抽象度(越往后層满败,加入了越多內(nèi)容的元素叹括,更加具像)
內(nèi)容特征
內(nèi)容的相似度(越往后層,加入了越多風格的元素净嘀,和原圖越不像)
## 怎么解決過擬合
簡化模型
正則化(包含dropout)
數(shù)據(jù)增強
集成學(xué)習(xí)
早停
減少特征數(shù)或使用較少的特征組合
## 怎么解決欠擬合
增加特征數(shù)或者使用較多的特征組合
減小正則權(quán)重
增加模型復(fù)雜度
使用boosting集成學(xué)習(xí)
如何提高學(xué)習(xí)算法性能的指導(dǎo)方針
->低可擬合偏差
更大的模型挖藏,更深的層
更好的優(yōu)化器方案
探索更合適的超參數(shù)
->低方差
找尋更多的數(shù)據(jù)
正則化膜眠,dropout
對抗神經(jīng)網(wǎng)絡(luò)
探索更合適的超參數(shù)
->清晰的正交化方案
……
思路邏輯清晰的調(diào)試
數(shù)據(jù)預(yù)處理一般步驟有哪些宵膨?
指定原始數(shù)據(jù)的文件列表 -> 創(chuàng)建文件列表隊列 ->
從文件中讀取數(shù)據(jù) -> 數(shù)據(jù)預(yù)處理 -> 整理成batch
作為神經(jīng)網(wǎng)絡(luò)輸入
如何用指標和方案去評判一個優(yōu)秀的模型?
train/Validation/Test 準確率/召回率
方差
偏差
CNN模型加速與壓縮匯總
1. 合理設(shè)計模型2. 權(quán)值剪枝(編程稀疏矩陣)
3. 權(quán)值量化(聚類)
4. 二值化(BWN谷扣,XNorNet)
5. 霍夫曼編碼
6. 奇異值分解(projection層)
7. 1×1卷積的恰當使用減少通道量
8. 卷積分解為deepwise Conv和pointwise
Conv可大幅度減小計算量和參數(shù)量1/(Dk^2)
9. Group Conv(可節(jié)省1/g計算量)
10. Channel Shuffle
11. 蒸餾法
12. 低秩分解
13. 模型裁剪
# 怎么選擇超參數(shù)
神經(jīng)網(wǎng)路中的超參數(shù)主要包括1. 學(xué)習(xí)率 η抑钟,
2. 正則化參數(shù) λ野哭,
3. 神經(jīng)網(wǎng)絡(luò)的層數(shù) L
4. 每一個隱層中神經(jīng)元的個數(shù) j
5. 學(xué)習(xí)的回合數(shù)Epoch
6. 小批量數(shù)據(jù) minibatch 的大小
由神經(jīng)網(wǎng)絡(luò)的機理進行選擇
7. 輸出神經(jīng)元的編碼方式
8. 代價函數(shù)的選擇
9. 權(quán)重初始化的方法
10. 神經(jīng)元激活函數(shù)的種類
11 . 寬泛策略的核心在于簡化和監(jiān)控
12. 參加訓(xùn)練模型數(shù)據(jù)的規(guī)模