通常反向傳播最重要的類型有卷積網絡與循環網絡。卷積網絡在卷積層為常用。從一個張量的角度看,常用卷積層為梯度下降層的一個中間層。這是因為,在一般地,要實現多層卷積層,需要採用上一層的上一層的結果作為結果損失進行梯度下降的輸入,但卷積層非常稀疏,存在採樣誤差。
因此對於多層的卷積網絡來說,通常需要採用中間層的卷積,以放棄採樣誤差。循環神經網絡是現代很多神經網絡都基於神經元之間的依賴關係進行的組合傳播。卷積不能用,則採用循環網絡作為通道。其中循環層通常採用中間層的第一個循環節的低維表達。基於中間層的每一個循環節,將結果進行組合再輸出,因此可以加快網絡的訓練。它可以看作是更多層的網絡之間的映射。
到目前為止,大多數計算機視覺任務仍處於有監督的子任務。人工神經網絡通過提取規則或使用非線性函數進行學習,通常可以達到特定的水平或目標。大部分現代的深度神經網絡通過融合多個領域的數據,能夠達到準確率,但大部分網絡也無法達到人類視覺水平。中間層的每一個循環節都是通過一個特徵映射(但通常只使用一個映射)來與底層網絡結合,從而構成神經網絡的基礎。
然而,使用循環網絡在一些特定領域受到限制。例如,對於對光線條件非常敏感的領域來說,當網絡結構中出現光線的抖動時,效果可能會大打折扣。最近,已經有許多研究對這一問題提出了一些建議。其中較為常見的網絡結構是resnet,如resnetinception。儘管如此,這些網絡仍然面臨挑戰。首先,循環層中不能使用一個warp算子或softmax作為激活函數,因為激活函數會收到位置相反的映射,並在任意位置上產生輸出,導致網絡難以理解。其次,如果一個warp中的每一個,都不能收到線性的效果,那麼生成的神經網絡更像是一個數學模型,而不是真正的神經網絡。在gpu上,對大量數據進行分組是一個有挑戰性的問題。即使如此,這項工作仍被其他工作所影響。
在其他研究中,可以使用relu來減少累積的激活層的數量,這樣可以使網絡在學習時容易進行routing,從而避免逐層進行梯度的小的衰減,增強網絡的梯度傳播的速度。開篇所謂神經網絡本質就是一個普通的二階導數,這個東西有很多個激活函數去處理。那到底該使用什麼樣的激活函數?我們通常有兩種方法得到這個激活函數。一種是直接得到初始值,如sigmoid,tanh等,然後對所有的初始值做一個求導。