Điều tiết Rung-Lắc và Điều chỉnh Rung-Thả cho Mạng Thặng dư Sâu

Tram Ho

Khi overfit xảy ra, một trong các biện pháp hiệu quả là tăng cường lượng data học (train data). Các phương pháp phổ biến hiện nay bao gồm Data augmentation, Adversarial traning thực hiện thêm dữ liệu với Input đầu vào hoặc 1 phương pháp gần đây là Label smoothing và MixCut thực hiện cả augmentation cho Label. Từ ý tưởng này, Xavier Gastaldi đã nghĩ ra kỹ thuật ứng dụng augmentation với các internal representation (hay có thể hiểu là feature space) với Shake-shake regularization áp dụng với họ kiến trúc nhà ResNet. Hãy cùng tìm hiểu nhé!

1. Shake-Shake Regularization

Kiến trúc mạng ResNet nhánh thông thường

xi+1=xi+F(xi,(Wi(1))+F(xi,Wi(2))x_{i+1} = x_i + mathcal{F}(x_i, mathcal(mathcal{W_i^{(1)}}) + mathcal{F}(x_i, mathcal{W_i^{(2)}})
xi+1=xi+F(xi,(Wi(1))+F(xi,Wi(2))

trong đó xix_ixi là input, xi+1x_{i+1}xi+1 là output
Fmathcal{F}F là hàm Residual Aggregated Transformations
Wi(1)W_i^{(1)}Wi(1)Wi(2)W_i^{(2)}Wi(2) lần lượt là các weight với các khối residual tương ứng

Shake-Shake regularization sẽ có thêm 1 tham số scaling coefficient αalphaα

xi+1=xi+αiF(xi,(Wi(1))+(1−α)F(xi,Wi(2))x_{i+1} = x_i + alpha_imathcal{F}(x_i, mathcal(W_i^{(1)}) + (1-alpha)mathcal{F}(x_i, W_i^{(2)})
xi+1=xi+αiF(xi,(Wi(1))+(1α)F(xi,Wi(2))

trong đó αialpha_iαi sẽ là biến ngẫu nhiêu theo uniform distribution (0, 1)

Note: Với tập test, αalphaα = 0.5 sẽ cho kết quả như một lớp Dropout(0.5) thông thường

Tham số αalphaα được thay đổi với các giá trị ngẫu nhiên theo distribution trước khi thực hiện lượt backward pass tiếp theo. Từ đó tạo kết quả ngẫu nhiên giữa các lần backward pass và forward pass trong quá trình traning, làm giảm khả năng học thuộc dữ liệu của model. Tác giả cũng đề cập có thể hiểu đây là 1 dạng của gradient augmentation.

2. Phân tích kết quả

Khi training, tác giả có đề xuất 1 số mode để thử nghiệm
Shake: random tất cả coefficient (random αalphaα) trước khi forward pass
Even: scaling coefficient đặt bằng 0.5 trước forward pass
Keep: trong quá trình backward pass, scaling coefficient giữ nguyên với forward pass

Mức độ áp dụng:
Cấp độ Batch: giá trị scaling coefficient trong mỗi batch giống nhau
Cấp độ Image: giá trị scaling coefficient khác nhau trong mỗi điểm dữ liệu (ảnh)

Kết quả trên tập CIFAR10

Kết quả trên tập CIFAR100

Nhìn chung với mô hình shake với forward và shake với backward cho kết quả tốt nhất trên tập CIFAR10 với Error rate thấp hơn khá nhiều (chỉ 2.86). Có lẽ vì lý do này nên tác giả đặt tên là Shake-Shake (Forward – Backward)

So sánh với các SOTA khác


Với Shake-Shake regularization, model có error rate thấp hơn khá nhiều so với các mô hình trước đó.

3. Shake-Drop Regularization

Shake-Shake regularization tuy có kết quả rất tốt nhưng vẫn tồn tại 1 số điểm yếu

  • được thiết kế cho mạng ResNet cấu trúc 3 nhánh (ResNeXt)
  • nguyên nhân thực sự về độ hiệu quả chưa được làm rõ

Yoshihiro Yamada và các đồng nghiệp đã áp dụng một phương pháp để nâng cấp khả năng ứng dụng của Shake-Shake
Cụ thể, nhóm nghiên cứu đã thêm RandomDrop (hay ResDrop) vào trong mạng. RandomDrop có thể hiểu là dạng đơn giản của Dropout, tuy nhiên RandomDrop thực hiện drop layer thay vì các node như Dropout

Kiến trúc mạng Resnet:

xi+1=G(x)=x+F(x)x_{i+1} = G(x) = x + mathcal{F(x)}
xi+1=G(x)=x+F(x)

Random Drop:

G(x)={x+blF(x) in train forwardx+blF(x) in train backwardx+E[bl]F(x) in test G(x) =
begin{cases}
x + b_l mathcal{F(x)} & text{ in train forward}\
x + b_l mathcal{F(x)} &text{ in train backward}\
x + E[b_l] mathcal{F(x)} &text{ in test}
end{cases}
G(x)=x+blF(x)x+blF(x)x+E[bl]F(x) in train forward in train backward in test

trong đó bl∈{0,1}b_l in {0,1}bl{0,1} là biến ngẫu nhiên Bernoulli với xác suất P(bl=1)=E[bl]=plP(b_l = 1) = E[b_l] = p_lP(bl=1)=E[bl]=pl
pl=1−lL(1−pl)p_l = 1 – frac{l}{L}(1 – p_l)pl=1Ll(1pl)
được chọn với plp_lpl = 0.5

Phương pháp tác giả đề xuất ShakeDrop:

G(x)={x+(bl+α−blα)F(x) in train forwardx+(bl+β−blβ)F(x) in train backwardx+E[bl+α−blα]F(x) in test G(x) =
begin{cases}
x + (b_l + alpha – b_l alpha) mathcal{F(x)} & text{ in train forward}\
x + (b_l +beta – b_lbeta) mathcal{F(x)} &text{ in train backward}\
x + E[b_l + alpha – b_l alpha] mathcal{F(x)} &text{ in test}
end{cases}
G(x)=x+(bl+αblα)F(x)x+(bl+βblβ)F(x)x+E[bl+αblα]F(x) in train forward in train backward in test

Phương pháp regularization cho mạng ResNet. a) và b) là các phương pháp được sử dụng trước đây như Shake-Shake và RandomDrop
c) là phương pháp regularization đơn giản 1 nhánh với đạo hàm của d)
“Conv” thể hiện lớp convolution; E[x] là giá trị expected của x; với α,βalpha, betaα,β, và blb_lbl là tham số coefficients ngẫu nhiên

4. Thí nghiệm

Theo thí nghiệm, ShakeDrop phù hợp nhất với PyramidNet khi thu được error rate 3.08 trên tập CIFAR-10 và 14.96 trên tập CIFAR-100. ShakeDrop cũng cho kết quả tốt hơn khi cùng áp dụng với mô hình 3 nhánh ResNeXt.

5. Kết luận

ShakeDrop là phương pháp stochastic regularization có thể được ứng dụng cho mạng ResNet nhằm hạn chế quá trình overfit. Qua các thí nghiệm, tác giả đã chứng minh được ShakeDrop có performance tốt hơn các phương pháp trước đó (Shake-Shake và RandomDrop). Các bạn có thể tham khảo paper gốc ShakeDrop để có thể xem thêm kết quả thí nghiệm của tác giả trên các mạng ResNeXt, Wide-ResNet, PyramidNet với các layer khác nhau trên các tập dữ liệu ImageNet, COCO mà mình chưa đề cập trong bài Viblo này.

Cảm ơn các bạn đã đọc bài!

Reference

  1. Shake-Shake regularization
  2. ShakeDrop Regularization for Deep Residual Learning
  3. RandomDrop
  4. Review: Shake-Shake Regularization (Image Classification)
  5. Shake-Shake regularization with Interactive Code [ Manual Back Prop with TF ]
Chia sẻ bài viết ngay

Nguồn bài viết : Viblo