Kết nối tắt ResNet
Kết nối tắt ResNet
Một công tắc: có đường tắt hay không. Xem gradient qua mạng rất sâu tóp về 0 hay giữ được quanh 1.
Càng xếp thêm lớp, mạng nơ ron lẽ ra càng mạnh, nhưng thực tế thì ngược lại: mạng rất sâu lại khó học hơn mạng nông. Lý do nằm ở lan truyền ngược. Gradient bắt đầu từ lớp ra rồi đi ngược về lớp đầu, và ở mỗi lớp nó bị nhân với một hệ số. Khi hệ số nhỏ hơn 1, nhân dồn qua vài chục lớp sẽ ép gradient về gần 0 trước khi kịp tới các lớp gần đầu vào, nên những lớp đó gần như không nhận được tín hiệu nào để chỉnh. Đó là gradient biến mất, và nó là bức tường chặn mọi cố gắng làm mạng sâu hơn.
Kết nối tắt của ResNet gỡ đúng chỗ nghẽn đó. Thay vì bắt mỗi khối tính y = F(x), ta cho nó tính y = x + F(x): đầu vào x được cộng thẳng vào đầu ra qua một đường tắt identity. Khi gradient truyền ngược, nó tách làm hai nhánh, một nhánh chui qua lớp F và bị nhân hệ số như cũ, một nhánh đi thẳng theo đường tắt và được chuyển qua nguyên vẹn. Vì luôn tồn tại một lối identity thẳng từ lớp ra về bất kỳ lớp nào, gradient luôn có một thành phần bằng 1 không phụ thuộc độ sâu, nên nó không còn tóp về 0 nữa.
Thử ngay
Thử điều này:
- Để công tắc
TẮTrồi kéo độ sâu lên40: các cột xám bên trái (lớp gần đầu vào) tụt xuống gần đáy thang log, gradient tới đó gần như bằng0. - Bật công tắc sang
BẬT: các cột đậm hiện ra nằm trên đường vànggradient = 1chứ không tụt xuống dưới nó, dù mạng vẫn sâu như vậy. So sánh cột xám tụt dốc với cột đậm phẳng ngang là thấy đường tắt đã cứu gradient. - Kéo hệ số mỗi lớp xuống
0.30khi công tắcTẮT: cột xám sụp còn nhanh hơn. Bật đường tắt lên: cột đậm vẫn giữ quanh1, đo được là1.43. - Đọc ô số bên phải toolbar:
lớp 1 không tắtlà con số bé xíu, cònlớp 1 có tắtkhông bao giờ xuống dưới1, kèm nhãn trạng thái đổi từgradient biến mấtsanggradient ổn định.
Nhưng đừng đọc cái sàn đó thành một cái trần. Đường tắt chặn được chiều biến mất, không chặn chiều bùng nổ: ở trạng thái mở bài, tức độ sâu 20 và hệ số 0.7, lớp 1 có tắt đã là 3.33 chứ không phải 1; đẩy hệ số lên 1.0 ở độ sâu 40 thì nó thành đúng 40, và ở hệ số 1.5 thì nó lên tới hơn 22 triệu. Trên toàn bộ lưới hai thanh kéo có 925 cấu hình, 236 cấu hình trong đó bị chính sim gắn nhãn gradient bùng nổ dù đã bật đường tắt. Cái đường tắt hứa là gradient không tụt về 0, chỉ có thế.
Đường tắt cho gradient
Đường tắt identity cho gradient một lối đi thẳng không bị nhân nhỏ đi ở từng lớp. Lối đi đó luôn góp đúng 1 bất kể mạng sâu bao nhiêu, nên nó đặt một sàn bằng 1 dưới gradient: tín hiệu học vẫn tới được các lớp gần đầu vào dù mạng chồng hàng trăm lớp, và đó là lý do ResNet huấn luyện được những mạng rất sâu mà trước đó không ai làm nổi. Cái sàn đó không kèm theo một cái trần, nên bùng nổ vẫn phải chữa bằng thứ khác, chẳng hạn khởi tạo trọng số hoặc chuẩn hoá theo lô.
Đường tắt cộng thẳng đầu vào vào đầu ra tạo một lối identity góp đúng 1 ở mọi độ sâu, tức một sàn dưới gradient, nên mạng rất sâu vẫn học được thay vì nghẽn vì gradient biến mất. Nó không đặt trần: với hệ số mỗi lớp từ 1 trở lên thì gradient vẫn bùng nổ dù đã có đường tắt.
- 1Để công tắc TẮT và độ sâu 40, các cột xám ở những lớp gần đầu vào trông ra sao?
- 2Một khối residual tính gì thay cho y = F(x) thường?
- 3Vì sao có đường tắt thì gradient ở lớp đầu không tóp về 0 dù mạng rất sâu?