你能解釋一下VGGNet和ResNet的區別嗎?這是人工智慧和機器學習領域的一個常見面試問題。雖然答案可以在網上找到,但一直還沒能找到一個簡明扼要的答案。我們將從什麼是VGGNet開始,然後看看VGGNet遇到了什麼問題,以及ResNet如何解決它。
VGGNet
VGG代表Visual Geometry Group(牛津大學的一組研究人員開發了這個架構)。VGG架構由塊組成,每個塊由2D卷積和最大池化層組成。VGGNet有兩種形式,即VGG16和VGG19,其中的16和19分別表示它們各自的層數。VGGNet架構如下圖所示:
在卷積神經網絡(CNN)中,隨著層數的增加,機器學習模型擬合更複雜函數的能力也隨之增加。因此,層數越多越好(不要與人工神經網絡相混淆,因為人工神經網絡並不一定會隨著隱層數的增加而提供更好的性能)。現在,我們可以來討論一下為什麼不使用VGG20、VGG50或VGG100等。
我們知道,神經網絡的權重更新使用了反向傳播算法。反向傳播算法對每個權值做一個小的改變,使得機器學習模型的損失減小。這是怎麼發生的呢?它會更新每一個權重,以使其在減少損失的方向上邁出一步。這個方向就是這個權重(相對於損失)的梯度。
利用鏈式法則,我們可以找到每個權重的梯度。通過神經元的梯度流如下圖所示:
問題來了。當這個梯度一直向後到達初始層時,這個值不斷乘以每個局部梯度。因此,梯度變得越來越小,這就使得對初始層的更新非常小,這樣大大增加了訓練時間。
如果局部梯度以某種方式變為1,來看看是否能夠解決我們的問題。
我們來看看ResNet(Residual Network)。
ResNet
局部梯度如何才能為1,即哪個函數的導數始終為1呢? 恆等函數(Identity function)!解決消失梯度問題背後的數學如下圖所示:
因此,當該梯度進行反向傳播時,其值不會減小,因為局部梯度為1。
ResNet體系結構現在對於如何避免梯度消失的問題應該是很有意義的。ResNet代表殘差網絡,其架構如下:
這些skip connections允許梯度不受阻礙地進行傳播。現在你可以理解為什麼ResNet具有像ResNet50、ResNet101和ResNet152這樣的版本了。