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ằng1: ảnh tái tạo phẳng lì, cả64ô đúng một mức xám0,5975, tức mức xám trung bình của ảnh gốc. Một con số thì chỉ đủ nói ảnh sáng tối cỡ nào, chưa nói được hình gì. Lỗi tái tạo ở góc phải lên0,1733. Kéo sangkbằng2: không có gì đổi cả, y hệt tấm vừa rồi. - Kéo
klên dần: chi tiết hiện trở lại, viền hình rõ hơn, lỗi tái tạo giảm dần. Nhưng quá nửa số bước không đổi gì hết: trên toàn dảiktừ1tới64có34trên63bước cho lại đúng tấm ảnh cũ, và riêng trong tầm với của thanh trượt,ktừ1tới16, là7trên15bước. Lý do nằm ở mẫu: trái tim đối xứng trái phải nên32trong64thành phần bằng đúng0, thêm chúng vào nút thắt là thêm số không. Vẽ một hình lệch rồi thử lại thì cả63bước đều đổi ảnh. - 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ì?