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) và một số ứng dụng

21 3 0
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) và một số ứng dụng

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

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 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) = Vector x gọi vng góc với tập hợp M, ký hiệu Một tập hợp M gọi họ trực giao Một tập hợp M gọi họ trực chuẩn, M họ trực giao  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 vuông A k.x vector riêng ứng với λ  Nếu λ giá trị riêng ma trận vuông 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) = trị riêng A • Lưu ý: ma trận vng cấp tìm λk cách: + Tr(A)  Tìm vector riêng: Ứng với λk, giải phương trình (A – λ0I).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:  Ma trận vuông P gọi trực giao nếu:  Điều tương đương:  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 vuông 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 ln ln 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 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 cịn 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ó: Dấu cuối xảy ma trận trực giao Quan sát thấy ma trận đường chéo với phần tử đường chéo là.Vậy (*) Eigen Decomposition (phương trình đặc trưng) Thêm trị riêng Ma trận ln 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ị riêng gọi Singular Values A tên Singular Value Decomposition xuất phát từ Vd: Tìm phân tích SVD ma trận sau Lời giải: Ta chéo hóa trực giao ma trận Ta có Giải phương trình: + Ứng với ta sở + Ứng với ta sở Chia vector cho độ dài lập ma trận trực giao: - Tương tự cho Giải phương trình: + Ứng với ta sở E1 + Ứng với ta sở E2 + Ứng với ta sở E3 Chia vector cho độ dài lập ma trận trực giao Vậy phân tích SVD ma trận A với U V ma trận 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 có hạ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 giúp số lượng tham số cần tính tốn nên tính tố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 σ ≥ σ ≥ ≥ σ r σi 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 σi có giá trị nhỏ, ảnh không nhiều thông tin thay chúng Từ đó, ảnh xấp xỉ tạo sau: k Ak = ∑ σ i ui vTi i =1 Điều có nghĩa thay tồn A, cần lưu trữ truyền nhận u1 , u , …, u k , v1 , v , …, v k σ ≥ σ ≥ ≥ σ k - 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, V , phần trắng ma trận tượng trưng cho phần tử không cần lưu trữ U , Hình1 Mơ tả cách thức SVD nén ảnh - Khi k đủ nhỏ, ta có tổng số cần lưu ( k (m + n + 1) ) < (m × n) nén ảnh SVD trở nên hiệu Chú ý ảnh A có hạng r nhỏ khiến cho ( r (m + n + 1) ) < (m × n) 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 k=301 Hình Ảnh gốc (a) kết giải nén với giá trị k 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ị k khác nhau, thể Hình Hình Sai số ảnh nén ảnh gốc với giá trị k khác Rõ ràng giá trị k 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 k lớn, thơng tin ít, sai biệt với ảnh gốc giảm Do tỉ lệ nén k (m + n + 1) mn nên tỉ lệ thuận với k 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 dùng ma trận A k 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 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 độ ( đạ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 ảnh L05_NHOM_18.png làm ví dụ *Figure 1: *Figure 2: *Figure 3: *Figure 4: *Figure *Figure 6: 5: *Figure 7: *Figure 8: *Figure 9: *Figure 10: *Figure 11: *Đồ tốn thị tính sai lệch nén ảnh: D Nguồn tham khảo - Đại số tuyến tính – Đặng Văn Vinh - Đạ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

Ngày đăng: 06/05/2023, 15:36

Tài liệu cùng người dùng

Tài liệu liên quan