一、PReLU的定義和背景
PReLU是一種激活函數,相比於ReLU,它對輸入的負值的響應做了調整,將響應值從0變成了一個 learnable 的負數值。PReLU的參數基於訓練數據進行更新。
ReLU激活函數在深度學習中大獲成功,將前向傳播過程中的非線性層轉化為簡單的閾值函數。ReLU本身非常簡單,易於計算,幾乎不會降低模型的擬合能力,但訓練時有時可能會出現「神經元死亡」的問題。具體地,如果輸入小於零,整個神經元死亡(輸出恆為0),從而導致相應的權重和偏置量一直沒有被更新。同時,ReLU的矩陣積累應該是離均差的,因此其在限制網路分布方面欠缺一些性質。
PReLU由何凱明在2015年提出。與ReLU不同,PReLU將負軸(negative axis)上不滿足線性關係的部分進行函數轉換。
二、PReLU的表達式
設 $x$ 是一個scalar,$y$ 是一個scalar。令 $w$ 是一個可學習的參數,$w \leq 0$。那麼 PReLU 的表達式定義為:
$$ y=\begin{cases} x &\text{if } x>0 \\ wx &\text{if } x\leq 0 \end{cases} $$
在機器學習中,不是w
本身,而是它在訓練集上的值被學習並保留的參數對 $w$ 進行優化。如果 $w = 0$,則退化為ReLU激活函數。
三、PReLU的特點和優點
1. 適用性廣泛:PReLU廣泛用於圖像分類和目標檢測領域;經過實驗發現,PReLU不僅在圖像識別網路中表現良好,而且在人臉識別和自然語言處理中也非常成功。
2. 防止ReLU神經元死亡的問題:PReLU通過調整負數輸入的值,解決了ReLU中存在的神經元死亡問題。這樣,神經元不再是”dead”狀態,從而使神經網路具有更強的魯棒性。
3. 可學習的參數:$w$ 和其他模型參數一起被優化,因此可以將具體的情況融入到模型設計之中。
四、PReLU的應用
應用PReLU在LeNet-5、AlexNet、VGGNet、GoogLeNet和殘差網路(ResNet)等多個深度學習網路中都具有很好的效果表現,例如,ResNet-34網路在圖像分類領域中的優勢就是把PReLU與殘差結構相結合。
五、PReLU的代碼實現
import tensorflow as tf class PReLU(tf.keras.layers.Layer): def __init__(self): super(PReLU, self).__init__() self.alpha = tf.Variable(0.01, dtype=tf.float32) def call(self, x): alpha = tf.keras.backend.maximum(0.01, self.alpha) return tf.keras.activations.relu(x) - alpha * tf.keras.activations.relu(-x)
六、總結
本文詳細介紹了一個適用於深度神經網路的PReLU,對PReLU 的定義和背景,表達式,特點和優點,應用和代碼實現均有闡述。
原創文章,作者:ZVBA,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/135103.html