日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

淺析激活函數(shù)之Relu函數(shù),relu函數(shù)


如何更好地調(diào)試神經(jīng)網(wǎng)絡(luò)?

淺析激活函數(shù)之Relu函數(shù),relu函數(shù)


聲明:本文適用于神經(jīng)網(wǎng)絡(luò)初學(xué)者 。神經(jīng)網(wǎng)絡(luò)的調(diào)試要比絕大多數(shù)程序更困難,因?yàn)榇蠖鄶?shù)bug不會(huì)導(dǎo)致運(yùn)行錯(cuò)誤,只會(huì)導(dǎo)致不良的收斂 。也許還會(huì)有許多看似模棱兩可的錯(cuò)誤信息:性能錯(cuò)誤:你的神經(jīng)網(wǎng)絡(luò)沒有訓(xùn)練好(Performance Error: your neural net did not train well.) 。
如果你經(jīng)驗(yàn)豐富,就應(yīng)該知道這表示代碼還需要大改動(dòng) 。一、處理NaN?多數(shù)情況下,NaN錯(cuò)誤在前100次迭代中出現(xiàn),原因很簡單:你的學(xué)習(xí)率過高了 。當(dāng)學(xué)習(xí)率非常高的時(shí)候,就會(huì)在前100次迭代的時(shí)候出現(xiàn)NaN錯(cuò)誤 。用因子為3來降低學(xué)習(xí)率,直到前100次迭代不再出現(xiàn)NaN錯(cuò)誤 。這么做一旦有效,你就有了一個(gè)非常好的學(xué)習(xí)率作為開端 。
根據(jù)我的經(jīng)驗(yàn),最好的學(xué)習(xí)率是你得到NaN錯(cuò)誤的范圍的一到十分之一 。如果你在100次迭代之后碰到了NaN錯(cuò)誤,又有兩種常見原因 。如果你使用的是RNN,確保你使用了梯度下降,并對(duì)梯度使用L2正則化 。RNN似乎在訓(xùn)練早期會(huì)產(chǎn)生梯度,10%或更少的批次有學(xué)習(xí)峰值,此時(shí)的梯度幅值是相當(dāng)高的 。沒有對(duì)梯度削減,這些峰值會(huì)產(chǎn)生NaN 。
如果寫的是自定義的網(wǎng)絡(luò)層,那么很有可能因?yàn)槌?而引發(fā)NaN 。另一個(gè)眾所周知會(huì)產(chǎn)生Nan錯(cuò)誤的層是Softmax層 。Softmax計(jì)算包括分子分母的exp(x)操作,它可以用無窮大除以無窮大,會(huì)產(chǎn)生NaN 。確保你使用了穩(wěn)定的Softmax實(shí)現(xiàn) 。二、神經(jīng)網(wǎng)絡(luò)無法學(xué)習(xí)?一旦你沒有了NaN錯(cuò)誤,那么你的神經(jīng)網(wǎng)絡(luò)就可以在上千次迭代中平穩(wěn)運(yùn)行,而且不會(huì)在前幾百次迭代后減少訓(xùn)練損失 。
當(dāng)你第一次構(gòu)建代碼庫的時(shí)候,最好別使用2000次迭代 。這并不是因?yàn)樗械木W(wǎng)絡(luò)可以從低于2000次迭代開始學(xué)習(xí) 。相反,從開頭開始編碼網(wǎng)絡(luò)很可能出現(xiàn)bug,在達(dá)到高迭代次數(shù)之前,你會(huì)想要過早進(jìn)行調(diào)試 。現(xiàn)在的目的是一次又一次地縮小問題范圍,直到你得到了一個(gè)在2000次迭代以下訓(xùn)練出來的網(wǎng)絡(luò) 。幸運(yùn)地是,有兩種方式來降低復(fù)雜性 。
將訓(xùn)練集大小減小到10個(gè)實(shí)例 。在幾百次的迭代中,在這10個(gè)實(shí)例上,神經(jīng)網(wǎng)絡(luò)通常會(huì)出現(xiàn)過度擬合的情況 。許多編碼錯(cuò)誤不會(huì)導(dǎo)致過擬合的出現(xiàn) 。如果你的網(wǎng)絡(luò)在10個(gè)實(shí)例的訓(xùn)練集上沒有出現(xiàn)過度擬合,那么確保你使用的數(shù)據(jù)掛上了正確的標(biāo)簽 。將批次大小減小到1來檢查批次計(jì)算錯(cuò)誤 。在代碼中添加打印語句確保輸出與你期望的一致 。
通常情況下,你可以通過上面介紹的純粹蠻力來找出錯(cuò)誤 。一旦網(wǎng)絡(luò)可以在10個(gè)實(shí)例上訓(xùn)練,你可以試著讓它在100個(gè)實(shí)例上訓(xùn)練 。如果這種方式運(yùn)行正常,但效果不是很好,你可以試試下面的方法 。解決你感興趣的最簡單的問題 。如果你想翻譯句子,首先可以建立一個(gè)針對(duì)特定語言的語言模型 。如果你完成了,那么試著在給出3個(gè)詞語的情況下預(yù)測翻譯出來的第一個(gè)詞 。
如果你想檢測圖像中的物體,那么在訓(xùn)練回歸網(wǎng)絡(luò)之前,你可以對(duì)圖像中物體數(shù)目進(jìn)行分類 。在網(wǎng)絡(luò)能夠解決的棘手問題和使用最少的時(shí)間讓代碼得到合適的數(shù)據(jù)之間需要權(quán)衡 。這個(gè)時(shí)候就要發(fā)揮你的創(chuàng)造能力了 。將神經(jīng)網(wǎng)絡(luò)運(yùn)用于其他新場景的技巧是合理使用上面介紹的兩個(gè)步驟 。這是一種協(xié)調(diào)機(jī)制,并且效果不錯(cuò) 。首先,你表明這個(gè)神經(jīng)網(wǎng)絡(luò)至少可以記住幾個(gè)例子 。
然后這個(gè)神經(jīng)網(wǎng)絡(luò)可以泛化到更簡單問題的驗(yàn)證集中 。你慢慢在取得穩(wěn)步進(jìn)展時(shí)提升難度 。這并沒有高手第一次使用的Karpathy風(fēng)格那么有趣,但至少它起作用 。有時(shí)候你會(huì)碰到棘手的問題,你會(huì)發(fā)現(xiàn)它在2000次迭代中不會(huì)繼續(xù)學(xué)習(xí)了 。那很棒!但它的迭代次數(shù)很少會(huì)是這個(gè)問題之前復(fù)雜度下迭代次數(shù)的10倍 。如果你發(fā)現(xiàn)是這種情況,嘗試搜索中等水平的復(fù)雜度 。

推薦閱讀