🧠 Cheatsheet: Khóa 5: Toán cho Machine Learning — tích chập, softmax và lan truyền ngược cho deep learning

By Better Wise

Tra cứu nhanh cho toàn khóa. Mỗi mục là một "công thức + khi nào dùng".


1. Tích chập 1D và 2D: kernel, stride, padding

Ký hiệu

Ký hiệu Ý nghĩa
$W$ chiều rộng input (1D)
$K$ kích thước kernel
$S$ stride
$P$ padding (mỗi bên)
$C_{in}, C_{out}$ số channel vào/ra
$N$ batch size

Công thức shape output (cốt lõi)

$$ W_{out} = \left\lfloor \frac{W + 2P - K}{S} \right\rfloor + 1 $$

  • 1D: áp dụng cho trục chiều dài.
  • 2D: áp dụng độc lập cho $H$ và $W$:

$$ H_{out} = \left\lfloor \frac{H + 2P - K}{S} \right\rfloor + 1,\quad W_{out} = \left\lfloor \frac{W + 2P - K}{S} \right\rfloor + 1 $$

Bảng chọn padding để giữ nguyên kích thước ("same")

Kernel $K$ Stride $S$ Padding $P$ để $W_{out}=W$
3 1 1
5 1 2
7 1 3
$K$ lẻ 1 $(K-1)/2$
bất kỳ $>1$ không có $P$ đơn giản giữ nguyên (dùng công thức, thường không "same")

Khi nào dùng gì

Tình huống Lựa chọn
Muốn giữ nguyên $H,W$ $P=(K-1)/2$, $S=1$
Muốn giảm một nửa kích thước $K=2,S=2$ hoặc $K=3,S=2,P=1$
Tăng receptive field, giữ chi phí $K$ lớn hơn, $S=1$, "same" padding
Giảm chi phí tính toán tăng $S$ trước khi tăng $K$

Output shape tổng quát (2D, batch)

Input $(N, C_{in}, H, W)$, kernel $(C_{out}, C_{in}, K_h, K_w)$ → output $(N, C_{out}, H_{out}, W_{out})$.

Tip: Luôn viết công thức shape ra giấy trước khi code. Nếu $W+2P-K < 0$ thì kernel lớn hơn vùng input, không hợp lệ.


2. Kiểm tra shape và vector hóa bằng im2col

Ý tưởng im2col

Biến mỗi "cửa sổ trượt" thành một cột → tích chập thành một phép nhân ma trận lớn.

Input  (N, C_in, H, W)
  │  im2col (K_h x K_w, stride S, pad P)
  ▼
Cols   (N, C_in*K_h*K_w, H_out*W_out)
Kernel (C_out, C_in*K_h*K_w)
  │  matmul
  ▼
Out    (N, C_out, H_out*W_out) → reshape (N, C_out, H_out, W_out)

Bảng shape trung gian

This cheatsheet is premium content. Sign in and purchase the course to view the full content. Sign in