一、什麼是Residual Block
Residual Block(殘差塊)是深度殘差網路(ResNet)中的一個基本組成單元。ResNet是由何凱明等人提出的一個經典的深度學習神經網路模型。ResNet採用了殘差學習的思想,使得神經網路的深度提升到更高層次時,準確率反而不會下降,反而會進一步提升。殘差塊是負責實現這一思想的基本單元。
殘差學習思想的基本假設是:應該可以通過多層神經網路來實現一個恆等映射。換句話說,如果在深層神經網路中添加一個恆等塊(將輸入直接傳遞到輸出),那麼整個網路的表達能力不應該下降。殘差塊正是基於這一思想提出的。
殘差塊由兩個卷積層和一個shortcut連接組成,如下圖所示。左側為帶有shortcut連接的殘差塊,右側為一個普通的卷積塊。
def ResidualBlock(x, filters, kernel_size=(3, 3), activation='relu'):
y = Conv2D(filters=filters, kernel_size=kernel_size, padding='same')(x)
y = Activation(activation)(y)
y = BatchNormalization()(y)
y = Conv2D(filters=filters, kernel_size=kernel_size, padding='same')(y)
y = BatchNormalization()(y)
shortcut = Conv2D(filters=filters, kernel_size=(1, 1), padding='same')(x)
y = Add()([shortcut, y])
y = Activation(activation)(y)
return y
二、Residual Block的優點
Residual Block的主要優點有兩個:
1、解決梯度消失問題。在深度學習神經網路中,通過反向傳播演算法計算梯度值是一個關鍵步驟。但是,隨著網路深度的增加,梯度會變得越來越小,最終消失,導致神經網路無法優化。Residual Block中的shortcut連接使得梯度可以直接傳遞到前面的層,解決了梯度消失問題。
2、避免過擬合。在機器學習中,過擬合是一個棘手的問題。而殘差學習思想的引入可以引導模型去學習殘差,這樣可以避免過擬合,使得模型更加健壯。
三、Residual Block的應用
Residual Block已經被廣泛應用在計算機視覺領域,如圖像分類、目標檢測、圖像分割、圖像超解析度等任務中。以下是一個使用Residual Block的圖像分類模型:
def ResNet(input_shape, num_classes):
inputs = Input(shape=input_shape)
x = Conv2D(filters=64, kernel_size=(7, 7), strides=(2, 2), padding='same')(inputs)
x = BatchNormalization()(x)
x = Activation('relu')(x)
x = MaxPooling2D(pool_size=(3, 3), strides=(2, 2), padding='same')(x)
for i in range(3):
x = ResidualBlock(x, filters=64)
x = MaxPooling2D(pool_size=(3, 3), strides=(2, 2), padding='same')(x)
for i in range(4):
x = ResidualBlock(x, filters=128)
x = MaxPooling2D(pool_size=(3, 3), strides=(2, 2), padding='same')(x)
for i in range(6):
x = ResidualBlock(x, filters=256)
x = MaxPooling2D(pool_size=(3, 3), strides=(2, 2), padding='same')(x)
for i in range(3):
x = ResidualBlock(x, filters=512)
x = GlobalAveragePooling2D()(x)
outputs = Dense(num_classes, activation='softmax')(x)
model = Model(inputs=inputs, outputs=outputs)
return model
四、總結
Residual Block作為深度殘差網路的基本組成單元,已經被廣泛應用在計算機視覺任務中,如圖像分類、目標檢測、圖像分割、圖像超解析度等領域。其主要優點是能夠解決梯度消失問題和過擬合問題,使得深度神經網路具有更好的表達能力和泛化能力。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/160096.html