Autoencoder
Autoencoder
Ép một ảnh qua nút thắt chỉ vài con số rồi dựng lại. Nút thắt càng hẹp, mạng càng phải chọn lọc thứ đáng giữ nhất.
Autoencoder là một mạng học cách tự chép lại chính đầu vào của nó, nhưng có một chỗ thắt lại ở giữa. Ảnh đi vào bị ép qua một lớp rất hẹp chỉ vài con số, rồi từ vài con số đó mạng phải dựng lại ảnh gốc cho giống nhất. Nếu lớp giữa mà rộng bằng đầu vào thì việc chép lại quá dễ, chẳng học được gì. Chính chỗ thắt hẹp mới thú vị: không đủ chỗ để nhớ từng điểm ảnh, mạng buộc phải giữ lại cái cốt lõi và bỏ đi chi tiết vụn vặt. Cái cốt lõi đó chính là một bản tóm tắt gọn của ảnh.
Ba phần ghép lại thành một đường ống. Bộ mã hóa (encoder) nén ảnh xuống một dãy
ngắn gồm k con số. Chỗ hẹp nhất giữa đường ống là nút thắt (bottleneck), nơi cả
ảnh chỉ còn được mô tả bằng đúng k số đó, gọi là mã nén. Bộ giải mã (decoder)
nhận k số ấy và cố dựng lại ảnh ban đầu. Sim dưới đây dùng một bộ cơ sở trực
giao cố định (biến đổi cosine) làm encoder và decoder, nên bạn thấy đúng hiệu ứng
đó mà không cần huấn luyện gì: giữ k thành phần đầu tiên rồi dựng lại.
Thử ngay
Thử điều này:
- Kéo Kích thước nút thắt về
kbằng1hoặc2: ảnh tái tạo chỉ còn là một vệt sáng mờ, và lỗi tái tạo ở góc phải nhảy lên cao. - Kéo
klên dần: chi tiết hiện trở lại, viền hình rõ hơn, và lỗi tái tạo giảm dần. Đôi khi tăngkmột bước mà ảnh gần như không đổi, vì thành phần vừa thêm xấp xỉ 0 (trái tim mẫu đối xứng trái phải nên nhiều thành phần triệt tiêu); vẽ một hình lệch rồi thử lại sẽ thấy hầu như bước nào cũng đổi. - Nhìn cột Mã nén ở giữa: đó là toàn bộ những gì đi qua được nút thắt.
Thêm một đơn vị
klà thêm đúng một thanh, tức thêm một con số để mô tả ảnh. - Vẽ một hình mới bằng cách bấm và kéo trên ảnh gốc: hình càng nhiều nét
nhỏ thì càng cần
klớn mới tái tạo sát, vì chi tiết nằm ở các thành phần sau.
Nút thắt buộc chọn lọc
Khi nút thắt hẹp hơn ảnh, không có cách nào nhét trọn 64 điểm ảnh vào k số nếu
k nhỏ. Mạng phải quyết định giữ gì bỏ gì, và cái đáng giữ nhất là hình dạng
chung, thứ giải thích được nhiều điểm ảnh cùng lúc. Chi tiết lẻ tẻ bị hy sinh
trước. Tỉ lệ nén k/64 cho biết bạn đang ép mạnh tới đâu: k/64 càng nhỏ thì nén
càng mạnh, tái tạo càng mờ, nhưng mã nén càng gọn.
Nút thắt hẹp buộc autoencoder bỏ chi tiết vụn và chỉ giữ lại cái cốt lõi giải thích được nhiều nhất, nên k càng nhỏ thì tái tạo càng mờ nhưng bản tóm tắt càng gọn.
- 1Vai trò của nút thắt (bottleneck) trong autoencoder là gì?
- 2Khi giảm k (thu hẹp nút thắt) trong sim, ảnh tái tạo và lỗi tái tạo thay đổi ra sao?
- 3Tỉ lệ nén k/64 trong sim cho biết điều gì?