Locally Linear Embedding (LLE)
Nội dung bài viết
Locally Linear Embedding (LLE) là một thuật toán giảm chiều dữ liệu phi tuyến thuộc nhóm Manifold Learning. Manifold là gì nhỉ? Trong toán học tôpô, manifold được gọi là đa tạp. Đa tạp tôpô chiều là một không gian tôpô mà cục bộ của nó trông giống như một không gian euclidean chiều ở các điểm gần nhau. Nói một cách chính xác, theo ngôn ngữ tôpô thì đa tạp chiều là một không gian tôpô mà mỗi điểm có lân cận đồng phôi với tập con mở của .
Để hiểu rõ hơn khái niệm này, hãy nghĩ về một ví dụ khá thú vị sau đây! Vì sao người cổ đại lại nghĩ bề mặt Trái Đất “bằng phẳng” trong khi thực tế nó lại gần như là “mặt cầu”? Một lí do khá đơn giản, nhìn một cách cục bộ thì có vẻ như bề mặt Trái Đất bằng phẳng chẳng khác nào không gian euclidean chiều. Tuy nhiên, cấu trúc toàn cục lại lại là mặt cầu. Mặt cầu chiều có thể xem là một đa tạp chiều.
Những thuật toán học thuộc nhóm Manifold Learning giả định rằng dữ liệu thu thập được nằm trên một không gian với số chiều nhỏ hơn bằng với số chiều đa tạp. Hay nói cách khác các thuật toán Manifold Learning đặt ra giả thuyết đa tạp, giả định này được đưa ra bằng quan sát thực nghiệm. Lưu ý là giả định này không phải lúc nào cũng đúng, việc lựa chọn thuật toán giảm chiều dữ liệu cần am hiểu về dữ liệu mình đang xử lí.
Việc chạy một thuật toán giảm chiều dữ liệu Manifold Learning tương tự như việc bạn đang có những điểm dữ liệu chiều của Trái Đất và bạn đang cố gắng vẽ lại bản đồ chiều của Trái Đất vậy!
1. Tổng quan thuật toán học Locally Linear Embedding
Trước khi đi vào phần diễn giải chi tiết thuật toán, chúng ta sẽ điểm qua vài điểm tổng quan của thuật toán Locally Linear Embedding.
Đầu vào
:- : ma trận dữ liệu chiều với hàng dữ liệu, chiều thuộc tính ban đầu. Mỗi vector chuyển vị của ( là một hàng dữ liệu của .
- : số lượng lân cận láng giềng gần nhất.
- : số chiều thấp hơn muốn giảm .
Đầu ra
:- : ma trận giảm chiều dữ liệu chiều. Mỗi vector chuyển vị của ( là một hàng dữ liệu của .
Phân loại thuật toán
: Manifold Learning, Học không giám sát (Unsupervised Learning), giảm chiều dữ liệu (Dimensionality Reduction).Độ phức tạp thuật toán
: độ phức tạp trung bình của LLE gồm 3 bước theo cách cài đặt scikit-learn là
Mã giả thuật toán có thể chia ra làm 3 bước:
- Tìm lân cận gần nhất với mỗi .
- Tìm ma trận trọng số .
- Tìm chiều trong không gian mới với bài toán trị riêng, vector riêng.
2. Locally Linear Embedding
Thuật toán LLE được xây dựng dựa trên ý tưởng hình học. Giả sử có vector dữ liệu huấn luyện (với ), thuật toán LLE sẽ tìm lân cận gần nhất với và tái thiết lập như là một hàm tuyến tính của các điểm lân cận láng giềng.
Cụ thể hơn, thuật toán tìm trọng số sao cho từng bình phương khoảng cách càng nhỏ càng tốt, hay nói cách khác tổng của các bình phương khoảng cách này nhỏ nhất:
Với ma trận trọng số (chứa trọng số ), ràng buộc và nếu như không nằm trong tập lân cận gần nhất của .
Ý tưởng này có thể được hiểu như sau, với mỗi điểm dữ liệu xung quanh nó tương tự một không gian euclidean ở chiều thấp hơn, và tọa độ của nó chỉ phụ thuộc vào các điểm lân cận trong vùng cục bộ, không phụ thuộc hoàn toàn vào tất cả các điểm dữ liệu toàn cục.
Điều kiện ràng buộc lại mang ý nghĩa hình học, với điều kiện này cho phép chúng ta bất biến với phép tịnh tiến. Thật vậy nếu chúng ta tịnh tiến toàn bộ điểm dữ liệu theo một vector thì lúc này ta có:
Viết gọn lại:
Điều này ngụ ý rằng khi chúng ta bất biến với phép tịnh tiến bởi vì triệt tiêu. Và đây là một tính chất tuyệt vời mà chúng ta muốn!
Tìm ma trận trọng số |
---|
Nhiệm vụ của chúng ta là đi tìm ma trận trọng số (chứa trọng số ) sao cho: Thỏa mãn điều kiện trọng số: |
Để cực tiểu chúng ta sẽ đi cực tiểu từng một, hay nói cách khác:
Như đã trình bày ở trên, tịnh tiến mỗi điểm dữ liệu với vector không làm thay đổi , tịnh tiến mỗi điểm dữ liệu một khoảng ta có:
Đặt . Để tiện việc tính toán chúng ta định nghĩa một số ma trận mới như sau:
- ma trận với mỗi hàng của ma trận là điểm lân cận gần nhất của .
- ma trận chứa trọng số , lưu ý là chúng ta chỉ quan tâm đến trọng số của điểm lân cận gần nhất vì những trọng số còn lại bằng .
(lưu ý ở đây ký hiệu và , cẩn thận tránh gây nhầm lẫn)
Khi đó có thể viết lại dưới dạng như sau:
Lưu ý rằng là một ma trận Gram (Gramian matrix), chúng ta có thể ký hiệu , khi đó
Để tối tiểu chịu điều kiện giới hạn chúng ta có thể sử dụng phương pháp nhân tử Lagrange. Để trình bày dưới dạng ma trận, chúng ta ký hiệu ma trận với tất cả phần tử đều là bằng ký hiệu . Khi đó chúng ta có thể viết lại ràng buộc Lagrange dưới dạng hay:
Khi đó Lagrangian của bài toán này là:
Lấy đạo hàm theo giải tích ma trận, lưu ý là ma trận đối xứng, cực tiểu của bài này thỏa:
Hay nói cách khác:
Nếu là ma trận khả nghịch, khi đó lời giải của ma trận trọng số của điểm lân cận gần nhất là:
Khi đó chúng ta có thể điều chỉnh để kết quả cuối cùng thỏa mãn tổng các phần tử của bằng . (ban đầu chọn sau đó tính tính tổng của nó và cuối lấy chia cho tổng để chuẩn hóa về ).
Lưu ý, thông thường khi khi thì tập vector của và điểm lân cận gần nhất phụ thuộc tuyến tính, do đó lúc này sẽ có vô số lời giải giải trọng số có thể có!
Đến đây, bạn có thể cảm giác rằng lời giải bài toán tối ưu mà chúng ta đang giải là “bất ổn định”, bởi vì có vô số lời giải, việc tìm một lời giải tối ưu trong một không gian như trên không dể. Một kỹ thuật thường dùng để giải quyết những bài toán trên là bình thường hóa bài toán Tikhonov regularization, nó sẽ giúp chúng ta có lời giải ổn định hơn bằng cách thêm vào hàm mục tiêu một tổng bình phương trọng số.
Khi hàm mục tiêu trở thành:
Với là bậc regularization, thông thường chúng ta chọn
Khi đó Lagrangian của bài toán này là:
Tương tự, lời giải ma trận trọng số là:
Sau khi hoàn tất việc tìm trọng số, chúng ta mong muốn một tập các điểm dữ liệu mới trong không gian mới bảo toàn quan hệ tuyến tính cục bộ của các điểm dữ liệu. Điều này dẫn đến ý tưởng xây dựng một hàm mục tiêu mới giúp chúng ta hoàn thành mục tiêu này.
Gọi là điểm dữ liệu chiều (với ) tương ứng của sau khi ánh xạ sang không gian mới, là ma trận với mỗi dòng là vector dòng của . Chúng ta mong muốn các điểm dữ liệu trong không gian mới thỏa mãn tính chất sau đây:
Giảm chiều dữ liệu nhưng vẫn bảo tồn quan hệ tuyến tính cục bộ |
---|
Tìm các điểm dữ của ma trận tối tiểu hàm : |
Liệu việc đưa ra hàm mục tiêu như trên là đủ để chúng ta có thể tìm hay chưa? Có vô số lời giải cho bài toán trên, vì chúng ta có thể tịnh tiến tất cả điểm theo một vector bất kì và thu được một lời giải mới mà giá trị của không thay đổi!
Để tránh suy biến, chúng ta đưa thêm một điều kiện đặc biệt sau đây:
Một điều kiện khác tránh suy biến, mà chúng ta mong muốn có, đó chính là ma trận hiệp phương sai của là ma trận đơn vị:
Trước khi suy nghĩ về bài toán giảm xuống chiều, trước hết chúng ta hãy cùng nhau phân tích bài toán giảm về một chiều và khi đó là một đại lượng vô hướng, sau đó chúng ta sẽ dẫn dắt lời giải khi đến lời giải , hãy kiên nhẫn. Với giả định trên là một ma trận viết lại dưới dạng ma trận:
Đặt khi đó là một ma trận . Ta có:
Lagrangian của bài toán này với các ràng buộc trên (lưu ý tạm thời chúng ta sẽ bỏ ra ràng buộc vì nghiệm bài có một số tính chất đặc biệt dẫn đến ràng buộc này không cần thiết, phần này sẽ được giải thích sau) với giả định thì :
Lấy đạo hàm theo giải tích ma trận ta có:
Hay nói cách khác:
Phương trình trên, bạn có cảm giác quen thuộc không? Nó giống phương trình của trị riêng, vector riêng không?
Nghiệm của bài toán này là một vector riêng của với trị riêng (lưu ý hiện tại đang là vector , cẩn thận nhầm lẫn).
Thông thường là ma trận sẽ có cặp trị riêng - vector riêng. Đặc biệt trong trường hợp này vì là ma trận đối xứng, nên các cặp vector riêng của hai trị riêng phân biệt trực giao nhau từng đôi một!
Chứng minh |
---|
Gọi , lần lượt là hai vector riêng của hai trị riêng phân biệt , của ma trận đối xứng (với số chiều ). Chúng ta sẽ chứng minh rằng , trực giao nhau, hay nói cách khác tích vô hướng của nó bằng : . Thay vì chứng minh bài toán ban đầu chúng ta sẽ chứng minh Vì và là hai vector cột nên chúng ta có thể viết lại tích vô hướng dưới dạng sau: Từ khi , là vector riêng nó thỏa: và khi đó: Vì và là hai trị riêng phân biệt nên , mà ta lại có: Hay nói cách khác: (điều cần phải chứng minh). |
Một cặp trị riêng, vector riêng đặc biệt trong bài toán này là trị riêng và vector riêng . Thật vậy:
Hay nói cách khác . Từ khi vector riêng này luôn là một hằng không thay đổi, nó thực sự không hữu ích trong việc mang lại bất kì thông tin gì trong bài toán giảm chiều dữ liệu mà chúng ta mong muốn.
Với bài toán việc chúng ta cần thiết là tìm vector riêng với trị riêng nhỏ nhất (bởi vì trị riêng nhỏ nhất là và đồng thời bài toán mà chúng ta đang giải là tối tiểu hàm mục tiêu) sau đó lấy vector riêng còn lại làm chiều mới cho dữ liệu.
Với điều kiện tránh suy biến ban đầu mà chúng ta thảo luận, trong trường hợp này điều kiện ma trận hiệp phương sai bằng tự động thỏa mãn. Bởi vì các vector riêng của các trị riêng phân biệt trong bài toán này trực giao từng đôi một với nhau.
Điều gì đã xảy ra với điều kiện tránh suy biến trung bình ? Tại sao chúng ta không ràng buộc vào bài toán trên?
Nếu để ý kỹ thì dạng trung bình của các vector phải là vector chúng ta có thể viết lại với dạng . Điều đặc biệt thú vị của bài toán này là mỗi cột của giờ đây là một vector riêng của , hơn nữa lại tồn tại một vector riêng đặc biệt là phần chứng minh phía trên và một cặp vector riêng của hai trị riêng phân biệt thì trực giao nhau. Nó dẫn đến điều kiện ban đầu chúng ta đặt ra tự động thỏa mãn!
3. Cài đặt thuật toán
Thuật toán LLE, nếu bạn không muốn tự cài đặt lại có thể sử dụng các gói thư viện hổ trợ:
- Python: Scikit-Learn hổ trợ LLE ở trong Manifold Learning.
- R-lang: RDRToolbox là một thư viện cài đặt sẳn thuật toán LLE.
Phần dưới đây là một cài đặt đơn giản mà mình tự lập trình, bạn có thể tham khảo:
Trước hết là nạp các thư viện cần thiết:
Phiên bản các thư viện mà ThetaLog đang sử dụng trong bài này:
- Numpy: ‘1.14.3’
- Scipy: ‘1.1.0’
- Sklearn: ‘0.19.1’
- Matplotlib: ‘2.2.2’
Thuật toán LLE chúng ta có thể cài đặt như sau:
Tạo dữ liệu mẫu và chạy thử thuật toán:
Chạy thuật toán Locally Linear Embedding:
Visualize dữ liệu ban đầu (bên trái) và dữ liệu sau khi giảm chiều (bên phải):
Kết quả thu được:
4. Một số công trình
Một số công trình nghiên cứu về ứng dụng của Locally Linear Embedding các bạn có thể tìm thấy ở: https://cs.nyu.edu/~roweis/lle/gallery.html.
Kết quả trên là những công trình nghiên cứu về giảm chiều dữ liệu để visualize sang chiều. Như chúng ta thấy các điểm dữ liệu trong không gian mới bảo tồn tính chất phụ thuộc tuyến tính cục bộ (giữa hai khung hình khi di chuyển môi là không mấy khác biệt, và mỗi điểm dữ liệu có thể biểu diễn lại phụ thuộc tuyến tính vào các điểm dữ liệu lân cận, tuy nhiên càng xa lại càng khác biệt).
5. Tổng kết
Thuật toán Locally Linear Embedding là một thuật toán Manifold Learning, nó đặt ra giả thuyết dữ liệu tồn tại một đa tạp chiều, thuật toán cố gắng ánh xạ dữ liệu ban đầu sang không gian mới mà vẫn bảo toàn tính chất phụ thuộc tuyến tính cục bộ của dữ liệu. Điểm yếu lớn nhất của thuật toán này là không phù hợp với các bài toán dữ liệu cực lớn khi mà độ phức tạp không hề nhỏ.
Tham khảo
Ryan Tibshirani. Nonlinear Dimensionality Reduction I: Local Linear Embedding 36-350, Data Mining. 5 October 2009. https://www.stat.cmu.edu/~cshalizi/350/lectures/14/lecture-14.pdf
Rowland, Todd. “Manifold.” From MathWorld–A Wolfram Web Resource, created by Eric W. Weisstein. http://mathworld.wolfram.com/Manifold.html
Roweis, S. & Saul, L. “Nonlinear dimensionality reduction by locally linear embedding”. Science 290:2323 (2000)
Wikipedia contributors. “Manifold.” Wikipedia, The Free Encyclopedia. Wikipedia, The Free Encyclopedia, 10 Jul. 2018. Web. 28 Aug. 2018.
Wikipedia contributors. “Matrix calculus.” Wikipedia, The Free Encyclopedia. Wikipedia, The Free Encyclopedia, 6 Jul. 2018. Web. 30 Aug. 2018.