Chuyển tới nội dung chính

Autoencoder

NénNút thắtTái tạoTương tác thật

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

Autoencoder · nén qua nút thắt rồi dựng lại
k = 4·tỉ lệ nén 4/64 (6.3%)·lỗi tái tạo 0.0892
Ảnh gốc✎ vẽ được
Ảnh gốc · bấm và kéo để vẽ
Mã nén · 4 số
c14.8
c20.0
c31.8
c4-1.5
Ảnh tái tạo
Tái tạo từ 4 số · lỗi 0.0892

Thử điều này:

  • Kéo Kích thước nút thắt về k bằng 1: ảnh tái tạo phẳng lì, cả 64 ô đúng một mức xám 0,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ên 0,1733. Kéo sang k bằng 2: không có gì đổi cả, y hệt tấm vừa rồi.
  • Kéo k lê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ải k từ 1 tới 6434 trên 63 bước cho lại đúng tấm ảnh cũ, và riêng trong tầm với của thanh trượt, k từ 1 tới 16, là 7 trên 15 bước. Lý do nằm ở mẫu: trái tim đối xứng trái phải nên 32 trong 64 thành phần bằng đúng 0, 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ả 63 bướ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ị k là 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 k lớ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.

Điều rút ra

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.

Kiểm tra nhanh0/3 đúngchưa trả lời
  1. 1Vai trò của nút thắt (bottleneck) trong autoencoder là gì?
  2. 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?
  3. 3Tỉ lệ nén k/64 trong sim cho biết điều gì?