Singular Value Decomposition - SVD là một trong những phép phân tích quan trọng nhất trong đại số tuyến tính vì nó được áp dụng cực kỳ phổ biến trong các lĩnh vực về Machine Learning để giảm chiều dữ liệu hay nén ảnh... Bài viết này mình muốn giới thiệu đến bạn về phương pháp này và một interactive demo để các bạn có thể “vọc“ tận tay với nó :)
SVD cho phép ta phân rã một ma trận bất kỳ kích thước thành ba ma trận khác:
là ma trận trực giao kích thước với các cột là là eigenvectors của
là ma trận chéo kích thước chứa các singular values (luôn không âm)
là ma trận trực giao kích thước với các cột là eigenvectors của
Cho ma trận vuông , một vector được gọi là eigenvector nếu:
trong đó là eigen value. Điều này có nghĩa là khi nhân ma trận với chỉ làm cho thay đổi độ dài chứ không thay đổi hướng.
Nếu ma trận có thể viết dưới dạng
với là ma trận chéo chứa các eigenvalues, thì ta nói có thể chéo hóa.
Trong SVD, ta không yêu cầu phải vuông hay khả nghịch. Thay vào đó, ta khai thác eigen-decomposition của hai ma trận vuông đối xứng , các eigenvectors của chúng sẽ tạo nên ma trận
Giả sử ma trận có phân rã: , nếu sắp xếp các singular values với là rank của , ta có thể viết lại
Trong đó:
là cột thứ của
là cột thứ của (chú ý là công thức là , nên trở thành hàng)
Nếu chỉ giữ lại thành phần lớn nhất, ta sẽ có:
Lúc đó sẽ là xấp xỉ lớn nhất của trong chuẩn Frobenius và chuẩn 2 (Eckart–Young–Mirsky theorem)
Như vậy:
Trong xử lý ảnh: chỉ cần vài chục singular values lớn để khôi phục ảnh gần như đầy đủ, thay vì lưu toàn bộ ma trận pixel.
Trong machine learning: thay vì lưu một ma trận lớn (ví dụ 1 triệu user × 100 nghìn sản phẩm), ta có thể xấp xỉ bằng hạng thấp → tiết kiệm bộ nhớ và tính toán.
Ví dụ: Nếu ta lưu một ảnh kích thước 1,920 × 1,080 thì số pixel phải lưu là 2,073,600. Nếu áp dụng SVD với k=100 ta cần:
: 100 cột đầu tiên của ma trận là 100×1,920 = 192,000
: 100 phần tử trên đường chéo
: 100 cột đầu tiên của của ma trận là 100×1,080 = 108,000
Tổng cộng là 300,100 phần tử so với 2,073,600 phần tử của ma trận gốc.
No comments yet. Be the first to comment!