1. Trang chủ
  2. » Giáo Dục - Đào Tạo

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 8 0

Đ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

Thông tin cơ bản

Tiêu đề Phương pháp phân tích Singular Value Decomposition (SVD) và một số ứng dụng
Tác giả Nhóm: L05_ĐSTT_18
Người hướng dẫn TS. Nguyễn Hữu Hiệp
Trường học Trường Đại học Bách Khoa – ĐHQG-HCM
Chuyên ngành Đại số tuyến tính
Thể loại Báo cáo bài tập lớn
Năm xuất bản 2021
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 21
Dung lượng 1,75 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

 Nếu x là vector riêng ứng với giá trị riêng λ của ma trận vuông A thì k.x cũng là vector riêng ứng với λ..  Nếu λ là giá trị riêng của ma trận vuông A thì λn cũng là giá trị riêng của

Trang 1

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) và một 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

Trang 2

Danh sách thành viên:

Trang 3

MỤC LỤC

A Cơ sở lý thuyết 4

1 Hệ trực giao và hệ trực chuẩn: 4

Định nghĩa: 4

Tính chất: 4

1 Giá trị riêng, vector riêng của một ma trận: 4

Định nghĩa: 4

Tính chất: 4

Cách tìm trị riêng và vector riêng: 5

2 Chéo hóa ma trận: 5

Định Nghĩa: 5

Tính chất: 5

3 Singular Value Decomposition SVD): 6

5 Nguồn gốc tên gọi Singular Value Decomposition: 7

B Một số ứng dụng của SVD 9

1 Giảm chiều dữ liệu : 9

2 Nén ảnh : 9

3 PCA : 12

C Chương trình dùng để phân tích SVD của ma trận tùy ý và dùng để nén dữ liệu 12

1 Code: 12

2 Kết quả code: 13

*Đồ thị tính toán sai lệch khi nén ảnh: 19

D Nguồn tham khảo 19

Trang 4

A Cơ sở lý thuyết

1 Hệ trực giao và hệ trực chuẩn:

Định nghĩa :

 Vector x được gọi là vuông góc với vector y, ký hiệu x ⊥ y nếu (x,y) = 0

 Vector x được gọi là vuông góc với tập hợp con M, ký hiệu là x ⊥ M nếu ∀ y ∈

M thì x ⊥ y

 Một tập hợp con M được gọi là họ trực giao nếu ∀ x, y ∈M x≠ y thì x ⊥ y

 Một tập hợp con M được gọi là họ trực chuẩn, nếu M là họ trực giao và ∀ x ∈M

thì ‖x‖=1

Tính chất:

 U-1 = UT : nghịch đảo của một ma trận trực giao chính là chuyển vị của nó

 Nếu U là ma trận trực giao thì chuyển vị của nó UT cũng là một ma trận trực giao

2 Giá trị riêng, vector riêng của một ma trận:

 Mỗi vector riêng có một giá trị duy nhất

 Nếu x là vector riêng ứng với giá trị riêng λ của ma trận vuông A thì k.x cũng là vector riêng ứng với λ

 Nếu λ là giá trị riêng của ma trận vuông A thì λn cũng là giá trị riêng của ma trận

An

 Một ma trận đối xứng: A = AT, thì các vector riêng vuông góc với nhau

Giả sử ma trận đối xứng A có các vector riêng x,y ứng với các giá trị riêng phân biệt

λ, γ Khi đó:

Trang 5

λ.xT.y = (λ.x)T.y = (A.x)T.y = xT.AT.y = xT.A.y = xT.γ.y=γ.xT.y

Ứng với mỗi λk, giải phương trình (A – λ0I).X = 0

¿> X ≠ 0là vector riêng của A ứng với λk

Định Nghĩa :

 Ma trận vuông A gọi là đối xứng nếu: A T = A

Ma trận vuông P gọi là trực giao nếu: P−1=P T  Điều này tương đương: P

Trang 6

 Nếu ma trận A chéo hóa trực giao được, thì A là ma trận đối xứng.

 Ma trận vuông A chéo hóa được khi và chỉ khi bội hình học của mọi trị riêng bằng với bội đại số của nó

 Nếu A là ma trận đối xứng, thì: Trị riêng của A là các số thực

A luôn luôn chéo hóa trực giao được

Hai vector riêng ứng với các trị riêng khác nhau vuông góc với nhau

 Phương pháp phân tích trị riêng (SVD- SingularValue Decomposition) là một đề tài rấtđược quan tâm của đại số tuyến tính Phương pháp này có nhiều ứng dụng thực tế Đặc điểmquan trọng của phương pháp này có thể áp dụng cho bất kỳ ma trận thực m x n nào Nội dungcủa nó là:

A =USVT (1)

*Trong đó: U và V là các ma trận trực giao và S là ma trận đường chéo Ma trận U là

ma trận gồm các vector riêng trái của A, ma trận V là ma trận gồm các vector riêng

phải của A và ma trận S là ma trận đường chéo, mỗi phần tử đường chéo là một trị

riêng của A Các trị riêng được sắp trên đường chéo chính theo thứ tự sau:

s1 > s 2 > > s r > s r +1 = = s p = 0

Để tìm các ma trận S, U, V ta thực hiện các bước như sau:

Bước 1: Tìm ma trận V Nhân A T vào hai vế của (1), ta có:

A T A = (USV T ) T USV T = V.S T U T U.S.V T

Do UT.U=I Như vậy, để tìm ma trận S và V, ta chỉ cần tìm các trị riêng và các

vector riêng của AT.A vì từ (1) ta thấy các trị riêng của AT.A chính là bình

phương các phần tử của S còn các vector riêng của AT.A chính là các cột của V

 Bước 2: Tìm ma trận U Nhân hai vế của (1) với A T và sử dụng: VTV = I ta cũng có:

Trang 7

A A T = U.S 2 U T

Vậy các cột của U chính là các vector riêng của A AT Cuối cùng, ta phân tích ma

5 Nguồn gốc tên gọi Singular Value Decomposition:

Tạm bỏ qua chiều của mỗi ma trận, từ (1) ta có:

A A T =US V T (USV T)T =US V T V S T U T

¿ US S T U T =US S T U−1( ¿ )

Dấu bằng cuối cùng xảy ra vì V T V =I do V là một ma trận trực giao.

Quan sát thấy rằng SS T là một ma trận đường chéo với các phần tử trên đường chéo là

λ 1, λ2 , … , λ r.Vậy (*) chính là Eigen Decomposition (phương trình đặc trưng) của A A T Thêm nữa λ1 , λ2 , … , λ rchính là các trị riêng của A A T Ma trận A A T luôn là ma trận nửa xác định dương nên các trị riêng của nó là không âm Các σ1 là căn bậc hai của các trị

riêng của A A T còn được gọi là Singular Values của A cái tên Singular Value

Decomposition xuất phát từ đây

Vd: Tim phân tich SVD cua ma trân sau A=(−

Trang 8

+ Ưng vơi λ1 =3 ta đươc cơ sở E1=(1 ,1) T +

Ưng vơi λ2 =9 ta đươc cơ sởE2=(−1 , 1) T

Chia môi vector cho đô dai cua no va lâp ma trân trưc giao:

+ Ưng vơi λ1 =0 ta được cơ sở E1 ¿(2,1,−1) T

+ Ứng với λ2 =3 ta được cơ sở E2 ¿(0,1,1) T

+ Ưng vơi λ3 =9 ta được cơ sở E3 ¿(−7 ,1,−1) T

Chia mỗi vector cho độ dài của nó và lập ma trận trực giao

Trang 9

Vậy phân tích SVD của ma trận A là A=USV T với U và V là ma trận ở trên và

S=M=( √

03 0 0)

Trang 10

B Một số ứng dụng của SVD

Ngoài các ứng dụng trong tối ưu cực trị rời rạc, lát cắt cực đại, K-meansClustering, Graph Partitioning,…SVD được sử dụng nhiều trong các lĩnh vực (nhất

là Machine Learning) ứng dụng cơ bản nhất là trong nén và xử lý hình ảnh

1 Giảm chiều dữ 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 có thể dùng SVD để giảm chiều dữ liệu

- Việc giảm chiều dữ liệu giúp ta có khả năng biễu diễn bộ dữ liệu đó một cách kháchính xác trên đồ thị Giả sử ta có một tập dữ liệu 4 chiều và ta muốn biểu diễn tập dữliệu này trên đồ thị thì ta có thể dùng SVD để giảm chiều dữ liệu về 3

- Việc giảm chiều dữ liệu nhưng vẫn giữ được đặc trưng của bộ dữ liệu còn giúp số lượng tham số cần tính toán là ít hơn nên tính toán nhanh hơn

Cách thức dùng phương pháp SVD để nén ảnh như sau:

- Cho A là ảnh xám, hoặc một trong 3 thành phần ảnh màu, được biểu diễn bởi ma trận

m×n Sử dụng biến đổi SVD của A chúng ta có thể biểu diễn ma trận ảnh

với r là bậc của ma trận A và S là ma trận đường chéo m×n gồm các trị đơn của A,

Trong nén ảnh, ta không cần lưu trữ hay truyền toàn bộ dữ liệu ảnhnhưng vẫn lưu trữ hoặc truyền đủ những thông tin quan trọng giúp khôi phục được ảnh

Biến đổi SVD thích hợp với điều này vì ta có thể xấp xỉ A bằng cách bỏ đi các thành

phần ảnh tương ứng với các trị đơn có giá trị nhỏ, do đó ảnh sẽ không mất nhiềuthông tin khi thay chúng bằng 0 Từ đó, ảnh xấp xỉ được tạo ra như sau:

Điều đó có nghĩa là thay vì toàn bộ A, chúng ta có thể chỉ cần lưu trữ và truyền nhận

Trang 11

- Hình 1: Minh họa việc sử dụng SVD để nén ảnh Ảnh ban đầu kích thước m×n, có thể

sử dụng biến đổi SVD cho ảnh kích thước m×n ở trên ta thu được 3 thành phần , S, ,

phần trắng của ma trận tượng trưng cho các phần tử không cần lưu trữ

=

Amn Umm Smn VnnT

Hình1 Mô tả cách thức SVD nén ảnh.

- Khi đủ nhỏ, ta sẽ có tổng số cần lưu là và nén ảnh bằng SVD

trở nên hiệu quả Chú ý rằng nếu ảnh A có hạng r nhỏ khiến cho

thì việc phân tích SVD sẽ làm giảm không gian lưu trữ mà không làm mất thông tinảnh

- Sử dụng phần mềm Matlab, thực hiện nén ảnh sử dụng biến đổi SVD với các giá trị khác nhau cho một tấm ảnh kích thước 1920 × 1080

- Kết quả thu được thể hiện ở Hình 2:

Hình gốc

Trang 12

k=61

k=301

- Đồ thị mô tả sự sai số giữa ảnh gốc ban đầu và ảnh sau khi nén, cùng với đánh giá về

hiệu quả nén khi áp dụng SVD với các giá trị khác nhau, thể hiện ở Hình 3.

Hình 3.

Sai số giữaảnh nén vàảnh gốc với các giátrị khác nhau

Rõ ràng là khigiá trị càng

Trang 13

lớn, ảnh khôi phục sau khi nén càng gần với ảnh gốc và ngược lại Điều này dễ hiểu vì khi càng lớn, thông tin mất đi càng ít, sai biệt với ảnh gốc cũng giảm đi Do tỉ lệ nén

bằng nên nó tỉ lệ thuận với như minh họa trong Hình 3 Ở những hình

có cấu trúc đặc biệt hơn như là có hạng nhỏ thì hiệu quả nén càng cao

- Ta thấy rằng, khi từ một tập điểm cho trước, việc giảm chiều cũng như là kẻ một siêuphẳng biểu diễn khít tập điểm đã cho Ta không thể dùng các ma trận Ak một cách trựctiếp được, vì các ma trận Ak biểu diễn một siêu phẳng đi qua góc tọa độ

- Ta có thể thấy rằng v1 biểu diễn phương mà tập điểm đó phân bố tập trung nhất khinhìn từ gốc tọa độ (‖A v1‖ đạt giá trị lớn nhất) Sau đó v2 lại biểu diễn phương vuông gócvới v1 mà phương đó tập điểm phân bố tập trung nhất cũng khi nhìn từ gốc tọa độ

Vậy một cách đơn giản, ta chỉ cần dời nó về trọng tâm của tập điểm và dùng SVD giảmchiều xuống

C Chương trình dùng để phân tích SVD của ma trận tùy ý và dùng để nén dữ liệu.

close all

clear all

clc

inImage=imread('L05_nhom18.png'); % doc file anh

inImage=rgb2gray(inImage); % chuyen anh mau sang 2

mau trang den

inImageD=double(inImage); % chuyen doi du lieu cua hinhanh

[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 1 den 301 voi buoc nhay la30

C = S; % gan du lieu ma ta muon giu lai cua ma tran

S vao C

Trang 14

C(k+1:end,:)=0; % tu hang k+1 den het cho = 0

C(:,k+1:end)=0; % tu cot k+1 den het cho = 0

% => tao ma tran cheo C

D=U*C*V'; % dung lai anh bang viec phan tich anh

% xuat hinh anh ra man hinh va tinh toan loi

figure; % lam moi lai hinh anh

buffer = sprintf('Hinh anh moi xuat ra su dung %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 laibang 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 laithanh ma tran 1 cot nhieu hang

numSVals = [numSVals; k]; % bieu dien gia tri laithanh ma tran 1 cot nhieu hang

end

% ve do thi tinh toan sai lech figure; % lam moi do thi

title('Do thi tinh toan sai lech khi nen anh'); % dat ten

do thi

plot(numSVals, dispEr); % ve do thi

grid on % ke luoi toa do

xlabel('So luong Singular Value duoc su dung'); % tao trucx

ylabel('Sai lech giua anh nen va anh goc'); % tao truc y

*Figure 1:

Trang 15

*Figure 2:

*Figure 3:

Trang 16

*Figure 4:

*Figure 5:

Trang 17

*Figure 6:

*Figure 7:

Trang 18

*Figure 8:

*Figure 9:

Trang 19

*Figure 10:

*Figure 11:

Trang 20

*Đồ thị tính toán sai lệch khi nén ảnh:

D Nguồn tham khảo

- Đại số tuyến tính nâng cao – Đặng Văn Vinh

- Singular Value Decomposition - Mathworks

- Matlab và ứng dụng trong viễn thông - TS Phạm Hồng Liên, Đặng Ngọc Khoa - TrầnThanh Phương

- Sử dụng Matlab trong đại số tuyến tính

- Giới thiệu về ứng dụng TF-IDF và SVD trong thu thập thông tin dữ 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 Hoàng Trương

- SVD trong nén ảnh (Khoa Điện – Điện tử, Đại học Duy Tân)

Ngày đăng: 09/05/2023, 14:49

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w