Mạng hồi tiếp RNN
Mạng hồi tiếp RNN
Đưa chuỗi vào từng bước một, trạng thái ẩn cập nhật và mang ký ức của quá khứ sang hiện tại.
Nhiều dữ liệu tới theo trình tự chứ không phải một cục: câu văn là chuỗi từ, nhạc là chuỗi nốt, giá cổ phiếu là chuỗi ngày. Muốn hiểu bước hiện tại thường phải nhớ những gì đã xảy ra trước đó. Một mạng chỉ nhìn từng ô rời rạc thì không có chỗ nào để cất cái đã thấy, nên nó không phân biệt được một số 1 vừa xuất hiện với một số 1 từ mười bước trước.
Mạng hồi tiếp giải bài toán này bằng một cuốn sổ tay nhỏ mang theo suốt chuỗi: trạng thái ẩn. Ở mỗi bước, mạng trộn trạng thái ẩn cũ với đầu vào mới rồi ép qua hàm tanh để ra trạng thái ẩn mới. Trạng thái này vừa là bộ nhớ tóm tắt quá khứ, vừa được đưa ngược trở lại làm đầu vào cho bước sau. Chính vòng đưa ngược đó là chữ "hồi tiếp".
Thử ngay
Dãy đầu vào cố định là một xung đơn ở bước 2 rồi toàn số 0. Hãy xem trạng thái ẩn dâng lên khi gặp xung, rồi phai dần qua các bước sau tuỳ theo trọng số hồi tiếp.
Thử điều này:
- Bấm Bước để đi từng thời điểm, nhìn
h_tcập nhật từh_{t-1}và đầu vàox_t. Mũi tên nối hai bước chính là đường hồi tiếp. - Kéo W về gần
1rồi tự chạy hết: ký ức của xung giữ lại rất lâu, các cột sau xung vẫn còn cao. - Kéo W xuống nhỏ, ví dụ
0.2: ngay bước sau xung trạng thái đã gần như bằng 0, mạng quên gần hết. - Tăng U để xung vào mạnh hơn, cột
h_ttại bước xung dâng cao hơn, nhưng nếu W nhỏ thì nó vẫn phai nhanh.
Trạng thái ẩn là ký ức
Công thức h_t = tanh(W·h_{t-1} + U·x_t + b) nói rằng mỗi trạng thái ẩn mới được nặn từ hai nguồn: phần W·h_{t-1} là quá khứ mang sang, phần U·x_t là tin tức mới của bước này. Trọng số hồi tiếp W là núm điều chỉnh trí nhớ: W gần 1 thì gần như toàn bộ trạng thái cũ được giữ lại nên ký ức bền, W gần 0 thì quá khứ bị nhân nhỏ đi rất nhanh nên chỉ vài bước là phai hết. Hàm tanh giữ trạng thái luôn nằm trong khoảng -1 đến 1 để nó không phình ra vô hạn.
Trạng thái ẩn là bộ nhớ chạy dọc chuỗi, và trọng số hồi tiếp quyết định bộ nhớ đó giữ quá khứ lâu hay quên gần như tức thì.
- 1Vai trò của trạng thái ẩn h_t trong một RNN là gì?
- 2Kéo trọng số hồi tiếp W về gần 1 thì ký ức của xung diễn ra thế nào?
- 3Vì sao phần W·h_{t-1} được ép qua hàm tanh ở mỗi bước?