Cheatsheet: Khóa 5: Toán cho Machine Learning — tích chập, softmax và lan truyền ngược cho deep learning
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