Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 20 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
20
Dung lượng
486,37 KB
Nội dung
TRƯỜNG ĐẠI HỌC BÁCH KHOA – ĐHQG-HCM Khoa Kỹ thuật Hóa học & Khoa học ứng dụng BÁO CÁO BÀI TẬP LỚN Mơn: Đại số tuyến tính Chủ đề 4: Phương pháp phân tích Singular Value Decomposition (SVD) số ứng dụng Giảng viên: TS Nguyễn Hữu Hiệp Nhóm: L05_ĐSTT_18 TP Hồ Chí Minh, tháng 12 năm 2021 Danh sách thành viên: Họ tên MSSV Phần trăm làm việc Trần Liêm Tài Vinh 2115305 100% Võ Thị Mộng Vy 2115360 100% Võ Tường Vy 2115361 100% Trần Ý 2115380 100% MỤC LỤC A Cơ sở lý thuyết .4 Hệ trực giao hệ trực chuẩn: Định nghĩa: Tính chất: Giá trị riêng, vector riêng ma trận: Định nghĩa: Tính chất: Cách tìm trị riêng vector riêng: Chéo hóa ma trận: Định Nghĩa: Tính chất: Singular Value Decomposition SVD): .6 Nguồn gốc tên gọi Singular Value Decomposition: B Một số ứng dụng SVD .9 Giảm chiều liệu : Nén ảnh : PCA : 12 C Chương trình dùng để phân tích SVD ma trận tùy ý dùng để nén liệu .12 Code: 12 Kết code: 13 *Đồ thị tính tốn sai lệch nén ảnh: 19 D Nguồn tham khảo 19 A Cơ sở lý thuyết Hệ trực giao hệ trực chuẩn: Định nghĩa: Vector x gọi vng góc với vector y, ký hiệu x ⊥ y (x,y) = Vector x gọi vng góc với tập hợp M, ký hiệu x ⊥ M ∀ y ∈ M x ⊥ y Một tập hợp M gọi họ trực giao ∀ x , y ∈ M x ≠ y x ⊥ y Một tập hợp M gọi họ trực chuẩn, M họ trực giao ∀ x ∈ M ‖x‖=1 Tính chất: U-1 = UT : nghịch đảo ma trận trực giao chuyển vị Nếu U ma trận trực giao chuyển vị UT ma trận trực giao Giá trị riêng, vector riêng ma trận: Định nghĩa: Cho A ∈ Mn (K) Số λ0 ∈ K gọi giá trị riêng ma trận A, tồn vector X0 ≠ cho A X0 = λ0 X0 Vector X0 gọi vector riêng ma trận A tương ứng với giá trị riêng λ0 Tính chất: Mỗi vector riêng có giá trị Nếu x vector riêng ứng với giá trị riêng λ ma trận vng A k.x vector riêng ứng với λ Nếu λ giá trị riêng ma trận vng A λn giá trị riêng ma trận An Một ma trận đối xứng: A = AT, vector riêng vng góc với Giả sử ma trận đối xứng A có vector riêng x,y ứng với giá trị riêng phân biệt λ, γ Khi đó: λ.xT.y = (λ.x)T.y = ¿>¿ ¿>¿ (A.x)T.y = xT.AT.y = xT.A.y = xT.γ.y=γ.xT.y (λ – γ).xT.y = xT.y = Cách tìm trị riêng vector riêng: Tìm trị riêng: Giải phương trình: det(A - λI) = ¿> λk trị riêng A Lưu ý: ma trận vng cấp tìm λk cách: −λ + Tr(A) λ 2−( A11 + A 22+ A 33 ) λ+det ( A )=0 Tìm vector riêng: Ứng với λk, giải phương trình (A – λ0I).X = ¿> X ≠ vector riêng A ứng với λk Chéo hóa ma trận: Định Nghĩa: Ma trận vuông A gọi đối xứng nếu: AT = A Ma trận vuông P gọi trực giao nếu: P−1=P T Điều tương đương: P P−1=P PT ≤¿ P P T =I Ma trận A ma trận trực giao họ vector cột ( họ vector hàng) A họ trực chuẩn (các vector vng góc độ dài vector 1) Ma trận vuông A gọi chéo hóa tồn ma trận chéo D ma trận khả nghịch P thỏa A = P.D.P-1 = PT.D.P Tính chất: Ma trận vng A cấp n chéo hóa tồn n vector riêng độc lập tuyến tính A Nếu ma trận A chéo hóa trực giao được, A ma trận đối xứng Ma trận vng A chéo hóa bội hình học trị riêng với bội đại số Nếu A ma trận đối xứng, thì: Trị riêng A số thực A luôn chéo hóa trực giao Hai vector riêng ứng với trị riêng khác vng góc với Singular Value Decomposition (SVD): Phương pháp phân tích trị riêng (SVD- SingularValue Decomposition) đề tài quan tâm đại số tuyến tính Phương pháp có nhiều ứng dụng thực tế Đặc điểm quan trọng phương pháp áp dụng cho ma trận thực m x n Nội dung là: A =USVT (1) *Trong đó: U V ma trận trực giao S ma trận đường chéo Ma trận U ma trận gồm vector riêng trái A, ma trận V ma trận gồm vector riêng phải A ma trận S ma trận đường chéo, phần tử đường chéo trị riêng A Các trị riêng đường chéo theo thứ tự sau: s1 > s > > s r > s r +1 = = s p = Để tìm ma trận S, U, V ta thực bước sau: Bước 1: Tìm ma trận V Nhân AT vào hai vế (1), ta có: AT A = (USVT )T USVT = V.ST UT U.S.V T = V.ST S.V T = V.S2.V T Do UT.U=I Như vậy, để tìm ma trận S V, ta cần tìm trị riêng vector riêng AT.A từ (1) ta thấy trị riêng AT.A bình phương phần tử S vector riêng AT.A cột V Bước 2: Tìm ma trận U Nhân hai vế (1) với AT sử dụng: VTV = I ta có: A AT= U.S2 U T Vậy cột U vector riêng A AT Cuối cùng, ta phân tích ma trận A dạng sau: Nguồn gốc tên gọi Singular Value Decomposition: Tạm bỏ qua chiều ma trận, từ (1) ta có: T T A A =US V ( USV ) =US V V S U T T T T T ¿ US S T U T =US ST U −1 (¿) T Dấu cuối xảy V V =I V ma trận trực giao T Quan sát thấy S S ma trận đường chéo với phần tử đường chéo λ , λ2 , … , λr Vậy (*) Eigen Decomposition (phương trình đặc trưng) A AT Thêm λ , λ2 , … , λr trị riêng A AT Ma trận A AT ma trận nửa xác định dương nên trị riêng không âm Các σ1 bậc hai trị T riêng A A gọi Singular Values A tên Singular Value Decomposition xuất phát từ ( ) −1 Vd: Tìm phân tích SVD của ma trận sau A= Lời giải: Ta chéo hóa trực giao ma trận AAT =UM U T ( ) T Ta có AA = =B [ ( ) λ =3 Giải phương trình: det (B− λ I )=0=¿ λ 1=9 =¿ M = + Ứng với λ 1=3 ta được sở E1=(1 ,1)T + Ứng với λ 2=9 ta được sở E2=(−1 , 1)T ( ) √2 Chia mỗi vector cho độ dài của nó và lập ma trận trực giao: U = √2 ( ) −1 √2 √2 −1 −1 T - Tương tự cho A A= [ λ1=0 Giải phương trình: −λ +12 λ −27 λ=0=¿ λ2 =3 λ3=9 ( 0 ¿> M = 0 ) + Ứng với λ 1=0 ta sở E1 ¿( 2,1,−1)T + Ứng với λ 2=3 ta sở E2 ¿(0 ,1 , 1)T + Ứng với λ 3=9 ta sở E3 ¿(−7 ,1 ,−1)T Chia vector cho độ dài lập ma trận trực giao ( ) √6 ¿>V = √6 −1 √6 √2 √2 −7 √ 51 √ 51 −1 √ 51 Vậy phân tích SVD ma trận A A=US V T với U V ma trận S= √ M = (√03 0 ) B Một số ứng dụng SVD Ngoài ứng dụng tối ưu cực trị rời rạc, lát cắt cực đại, K-means Clustering, Graph Partitioning,…SVD sử dụng nhiều lĩnh vực (nhất Machine Learning) ứng dụng nén xử lý hình ảnh Giảm chiều liệu : - Các ma trận Ak gần khít với A và có hạng bằng k nên ta dùng SVD để giảm chiều liệu - Việc giảm chiều liệu giúp ta có khả biễu diễn liệu cách xác đồ thị Giả sử ta có tập liệu chiều ta muốn biểu diễn tập liệu đồ thị ta dùng SVD để giảm chiều liệu - Việc giảm chiều liệu giữ đặc trưng liệu cịn giúp số lượng tham số cần tính tốn nên tính toán nhanh Nén ảnh : Cách thức dùng phương pháp SVD để nén ảnh sau: - Cho A ảnh xám, thành phần ảnh màu, biểu diễn ma trận m×n Sử dụng biến đổi SVD A biểu diễn ma trận ảnh với r bậc ma trận A S ma trận đường chéo m×n gồm trị đơn A, Trong nén ảnh, ta không cần lưu trữ hay truyền toàn liệu ảnh lưu trữ truyền đủ thông tin quan trọng giúp khơi phục ảnh Biến đổi SVD thích hợp với điều ta xấp xỉ A cách bỏ thành phần ảnh tương ứng với trị đơn có giá trị nhỏ, ảnh không nhiều thông tin thay chúng Từ đó, ảnh xấp xỉ tạo sau: Điều có nghĩa thay tồn A, cần lưu trữ truyền nhận - Hình 1: Minh họa việc sử dụng SVD để nén ảnh Ảnh ban đầu kích thước m×n, sử dụng biến đổi SVD cho ảnh kích thước m×n ta thu thành phần S, , , phần trắng ma trận tượng trưng cho phần tử không cần lưu trữ = Amn Umm VnnT Smn Hình1 Mơ tả cách thức SVD nén ảnh - Khi đủ nhỏ, ta có tổng số cần lưu nén ảnh SVD trở nên hiệu Chú ý ảnh A có hạng r nhỏ khiến cho việc phân tích SVD làm giảm khơng gian lưu trữ mà không làm thông tin ảnh - Sử dụng phần mềm Matlab, thực nén ảnh sử dụng biến đổi SVD với giá trị khác cho ảnh kích thước 1920 × 1080 - Kết thu thể Hình 2: Hình gốc k=1 k=61 k=301 Hình Ảnh gốc (a) kết giải nén với giá trị khác - Đồ thị mô tả sai số ảnh gốc ban đầu ảnh sau nén, với đánh giá hiệu nén áp dụng SVD với giá trị khác nhau, thể Hình Hình Sai số ảnh nén ảnh gốc với giá trị khác Rõ ràng giá trị lớn, ảnh khôi phục sau nén gần với ảnh gốc ngược lại Điều dễ hiểu lớn, thơng tin ít, sai biệt với ảnh gốc giảm Do tỉ lệ nén nên tỉ lệ thuận với minh họa Hình Ở hình có cấu trúc đặc biệt có hạng nhỏ hiệu nén cao PCA : - Ta thấy rằng, từ tập điểm cho trước, việc giảm chiều kẻ siêu phẳng biểu diễn khít tập điểm cho Ta khơng thể dùng ma trận A k một cách trực tiếp được, ma trận Ak biểu diễn siêu phẳng qua góc tọa độ - Ta thấy rằng v1 biểu diễn phương mà tập điểm phân bố tập trung nhìn từ gốc tọa độ (‖ A v 1‖ đạt giá trị lớn nhất) Sau đó v2 lại biểu diễn phương vng góc với v1 mà phương tập điểm phân bố tập trung nhìn từ gốc tọa độ Vậy cách đơn giản, ta cần dời trọng tâm tập điểm dùng SVD giảm chiều xuống C Chương trình dùng để phân tích SVD ma trận tùy ý dùng để nén liệu Code: close all clear all clc inImage=imread('L05_nhom18.png'); % doc file anh inImage=rgb2gray(inImage); % chuyen anh mau sang mau trang den inImageD=double(inImage); % chuyen doi du lieu cua hinh anh [U,S,V]=svd(inImageD); % phan tich hinh anh % dung phuong phap SVD de phan tich va tao lai anh dispEr = []; % tao ma tran rong dispEr numSVals = []; % tao ma tran rong numSVals for k=1:30:301 % cho k chay tu den 301 voi buoc nhay la 30 C = S; % gan du lieu ma ta muon giu lai cua ma tran S vao C C(k+1:end,:)=0; % tu hang k+1 den het cho = C(:,k+1:end)=0; % tu cot k+1 den het cho = % => tao ma tran cheo C D=U*C*V'; % dung lai anh bang viec phan tich anh % xuat hinh anh man hinh va tinh toan loi figure; % lam moi lai hinh anh buffer = sprintf('Hinh anh moi xuat su dung %d Singular Value', k) % chuyen doi du lieu imshow(uint8(D)); % xuat hinh anh o 8bit title(buffer); % xuat ten cua hinh anh duoc tao lai voi gia tri k tuong ung error=sum(sum((inImageD-D).^2)); % tinh toan lai bang cong thuc (sai lech giua anh duoc tao lai va anh goc) % luu gia tri de xuat len man hinh dispEr = [dispEr; error]; %bieu dien gia tri lai ma tran cot nhieu hang numSVals = [numSVals; k]; % bieu dien gia tri lai ma tran cot nhieu hang end % ve thi tinh toan sai lech figure; % lam moi thi title('Do thi tinh toan sai lech nen anh'); % dat ten thi plot(numSVals, dispEr); % ve thi grid on % ke luoi toa xlabel('So luong Singular Value duoc su dung'); % tao truc x ylabel('Sai lech giua anh nen va anh goc'); % tao truc y Kết code: Lấy L05_ 8.png *Figure 1: ảnh NHOM_1 làm ví dụ *Figure 2: *Figure 3: *Figure 4: 5: *Figure *Figure 6: *Figure 7: *Figure 8: 9: *Figure *Figure 10: 11: *Figure *Đồ thị tính tốn sai lệch nén ảnh: D Nguồn tham khảo Văn Vinh Đại số tuyến tính – Đặng - Đại số tuyến tính nâng cao – Đặng Văn Vinh - Singular Value Decomposition - Mathworks - Matlab ứng dụng viễn thông - TS Phạm Hồng Liên, Đặng Ngọc Khoa Trần Thanh Phương - Sử dụng Matlab đại số tuyến tính - Giới thiệu ứng dụng TF-IDF SVD thu thập thông tin liệu Website - Tóm tắt luận văn thạc sĩ chuyên ngành Khoa học Máy tính – Phạm Hồng Trương - SVD nén ảnh (Khoa Điện – Điện tử, Đại học Duy Tân) - http://vimach.net/threads/matlab-trong-xu-ly-anh-7-ham-co-ban-cho-xu-ly-anh - https://stackoverrun.com/Using SVD to compress an image in MATLAB - https://viblo.asia/p/handbook-singular-values-decomposition-va-mot-so-ung-dung - https://machinelearningcoban.com/ Bài 26: Singular Value Decomposition