- Motivation: Từ VGG → network rất deep → “vanishing gradient problem” (backprop và gradient ~> 0 → weights ko được updated) ← ResNet helps
- Network này cũng rất deep (152 layers of simple architecture) ← Ex: Resnet 34 / 101 / 152
- “Residual” is just a fancy name of “leftover” (ref)
- Residual block → “skip connection”
- ⭐ CS 152 NN—17: CNN Architectures: Resnet - YouTube
- Thay vì block bình thường x → conv → output, giờ từ x sẽ có 1 đường đến output nữa. Hay nói cách khác, output (y) giờ = x + residual h(x) cũng chính là computation của cái conv block.
- ResNet không có skip connection in every convolution, instead, cứ cách 2 conv mới có 1 cái.
- Giống như mọi conv nets khác, có 1 shrinking của height and width as we go through the network. Chúng ta often reduce w, h dimensions & increase d dimension → question: how to reduce h, w dimensions?
- It’s easy to increase the d dimension, it’s just number of conv, number of kernels (it controls the depth)
- Chúng ta phải ensure input X matches the shape of the output conv ← 2 things: make sure depth match & h,w matches.
- Cho h,w, manipulate padding (half), stripe (one),… ← check từ phút này
- How about the depth? ← có 2 cách
- It’s very easy for this network to turn on or off these modules (những block ở giữa skip connections), xem từ phút này. ← chỉ cần w, b =0 thì x sẽ đi thẳng từ input đến output luôn (Xem lại hình F-2 ở trên) ← Tự hiểu: nếu khi backprop đến 1 đoạn nào đó mà w,b vanish (~0) thì khi ấy nó chỉ việc đi thẳng x → x để tiếp tục (hay nói cách khác nó đã “skip” cái block đó rùi)
So, convolution is no longer responsible for computing the final value y (where it used to be khi mà x → conv → output → …), bây giờ: “Hey, convolution, your only job is instead of coming for the final result, tao chỉ muốn mày làm rõ what is the difference from x” ← how should the output be different from the input.
- ⭐ [Classic] Deep Residual Learning for Image Recognition (Paper Explained) - YouTube —> giải thích dựa vào bài báo gốc. → very good explanation!!!
The intuition is that it is easier to optimize the residual mapping than to optimize the original
→ Note that in practice, Bottleneck Residual Blocks are used for deeper ResNets, such as ResNet-50 and ResNet-101, as these bottleneck blocks are less computationally intensive.
The advantage of adding this type of skip connection is that if any layer hurt the performance of architecture then it will be skipped by regularization. ← how? ❓
- a variant of the residual block that utilises 1x1 convolutions to create a bottleneck.
- Use: reduces the number of parameters and matrix multiplications ← idea: make residual blocks as thin as possible to increase depth and have less parameters
👇 Có thêm mấy cái tìm hiểu bên ngoài của mình. Tuy nhiên sau khi đọc lại lần 2, cũng ko quá hiểu, chỉ biết motivation của block này, idea chính nhưng tại sao sâu hơn thì ko!