Chương trình dùng để phân tích SVD của ma trận tùy ý và dùngđểnéndữliệu...12 1... 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đó:... Singu
Trang 1KhoaKỹthuậtHóahọc&Khoahọcứngdụng
BÁOCÁO BÀITẬPLỚN Môn:Đạisốtuyếntính
Chủ đề 4: P h ư ơ n g phápphântích SingularValueDecomposition(SVD)vàmộtsốứngdụng
Giảng viên: TS.NguyễnHữuHiệpNh
óm:L05_ĐSTT_18
TP.HồChíMinh,tháng12năm2021
Trang 2Danhsáchthànhviên:
Trang 3A Cơsởlýthuyết 4
1. Hệtrực giaovàhệtrựcchuẩn 4
Địnhnghĩa: 4
Tính chất: 4
1 Giátrịriêng,vectorriêngcủamộtmatrận 4
Định nghĩa: 4
Tính chất: 4
Cáchtìmtrị riêng vàvectorriêng: 5
2 Chéohóamatrận 5
Định Nghĩa: 5
Tính chất: 5
3 SingularValueDecompositionSVD) 6
5.NguồngốctêngọiSingularValueDecomposition 7
B MộtsốứngdụngcủaSVD 9
1. Giảmchiềudữ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éndữliệu 12
1. Code 12
2. Kếtquảcode 13
*Đồthịtính toánsailệchkhinénảnh: 19
D Nguồnthamkhảo 19
Trang 41 Hệ trực giaovàhệ trực chuẩn:
Đ ị n h n g h ĩ a :
Vectorxđược gọilà vuônggócvớivector y, kýhiệux⊥ynếu (x,y)=0
VectorxđượcgọilàvuônggócvớitậphợpconM,kýhiệulàx⊥Mn ế u ∀ y∈M
thìx⊥y
MộttậphợpconMđượcgọilàhọtrựcgiaonếu∀ x,y∈M v à x≠yt h ì x⊥y
MộttậphợpconMđượcgọilàhọtrựcchuẩn,nếuMlàhọtrựcgiaovà∀ x∈M
thì‖x‖=1
Tí n h ch ất:
U-1=UT:nghịchđảocủamộtmatrậntrựcgiaochínhlàchuyểnvịcủanó
NếuUlàmatrậntrựcgiaothìchuyểnvịcủanóUTcũnglàmộtmatrậntrựcgiao
2. Giá trị riêng, vector riêng củamột matrận:
Đ ị n h n g h ĩ a :
ChoA∈Mn(K).Sốλ0∈KđượcgọilàgiátrịriêngcủamatrậnA,nếutồntạivectorX0≠0s aochoA.X0=λ0.X0
VectorX0đượcgọilàvectorriêngcủamatrậnAtươngứngvớigiátrịriêngλ0.
Tín h ch ất:
Mỗivectorriêngcómộtgiátrịduynhất
NếuxlàvectorriêngứngvớigiátrịriêngλcủamatrậnvuôngAthìk.xcũnglàvectorriêng ứng vớiλ
Nếu λlàgiátrịriêngcủamatrận vuôngAthìλncũnglàgiátrịriêngcủamatrậnAn
Mộtmatrậnđốixứng:A=AT,thìcácvectorriêngvuônggócvớinhau
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 511 22 33
λ.xT.y=(λ.x)T.y= (A.x)T.y=xT.AT.y=xT.A.y=xT.γ.y=γ.xT.y
¿>¿(λ –γ).xT.y=0
¿>¿xT.y=0
Cá ch t ìm tr ị r i ê n g và v e ctor r iê n g :
Tìm trịriêng:
Giảiphươngtrình:det(A-λI)=0¿>λkl àcáctrịriêngcủaA
Lưu ý: matrậnvuôngcấp3thìtìmλkbằngcách:
−λ3+Tr(A)λ2−(A+A+A)λ+det(A)=0
Tìmvectorriêng:
Ứngvớimỗiλk,giảiphươngtrình(A–λ0I).X=0
¿ X≠0làvectorriêngcủaAứngvớiλk
3 Chéo hóama trận:
Đ ị n h N g h ĩ a :
MatrậnvuôngAgọilàđốixứngnếu:A T=A
MatrậnvuôngPgọilàtrựcgiaonếu:P−1=P T
Điềunàytươngđương:P P−1=P.P T≤¿PPT =I
Matrận A là matrận trực giao khi vàchỉ khi họ vector cột ( hoặch ọ
v e c t o r hàng) của A là họ trực chuẩn (các vector vuông góc nhau và độ dài mỗi vectorbằng1)
Ma trận vuông A được gọi là chéo hóa được nếu tồn tại ma trận chéo D và matrậnkhảnghịchP thỏa
Tí n h ch ấ t :
MatrậnvuôngAcấpnchéohóađượckhivàchỉkhitồntạinvectorriêngđộclậptuy
ến tínhcủaA
Trang 6 Nếuma trậnAchéohóatrực giaođược, thìAlàmatrậnđốixứng.
MatrậnvuôngAchéohóađượckhivàchỉkhibộihìnhhọccủamọitrịriêngb ằngvới bộiđại số củanó
NếuAlàmatrậnđốixứng, thì:
Trị riêngcủa Alà cácsốthực
Aluônluônchéohóatrựcgiaođược
Haivectorriêngứngvớicác trịriêngkhácnhauvuông gócvớinhau
4 Singular ValueDecomposition (SVD):
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ụngthực tế Đặc điểm quan trọng của phương pháp này có thể áp dụng cho bất kỳ matrậnthựcmx nnào Nộidung củanó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ảicủaAvàmatrậnSlàmatrận đườngchéo,mỗiphần tửđườngchéolàmộttrịriêng của A.Cáctrịriêngđượcsắptrênđườngchéochínhtheothứtựsau:
s1>s 2> >sr> sr+1= = sp= 0
Đ ể t ìm c á c ma tr ận S , U , V ta thự c h iện c á c bư ớ c nh ư s a u :
Bước1:TìmmatrậnV.NhânA T vàohaivế của(1),tacó:
A T A=(USV T ) T USV T =V.S T U T U.S.V T
=V.S T S.V T
=V.S 2 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ácvectorriêngcủa
AT.Avìtừ(1)tathấycáctrịriêngcủaAT.Achínhlàbìnhphươngcácphầntửcủa
ScòncácvectorriêngcủaAT.A chínhlàcác cộtcủa V
Bước2:TìmmatrậnU.Nhânhaivếcủa(1)vớiA T vàsửdụng:VTV= Itacũngcó:
Trang 71 2 1
3 6
A. A T =U.S 2 U T
VậycáccộtcủaUchínhlà cácvectorriêngcủaA.AT.Cuốicùng,taphântíchmatrậnAdưới
5 Nguồn gốc tên gọi Singular Value Decomposition:
Tạmbỏqua chiềucủamỗimatrận,từ(1)ta có:
AA T=USV T(USV T)T=USV T VS T U T
¿USS T U T =USS T U−1(¿)
Dấubằngcuốicùngxảy ravìVTV =IdoVl à một matrậntrựcgiao
QuansátthấyrằngSSTlàmộtmatrậnđườngchéovớicácphầntửtrênđườngchéolàλ1, λ2,
…,λ r.Vậy (*) chính là Eigen Decomposition (phương trình đặc trưng) củaA
A T.Thêmnữaλ1,λ2,…,λ r chínhlàcáctrịriêngcủa A A T.MatrậnA A T l u ô n làmatrận nửa
xácđịnhdươngnêncáctrịriêngcủanólàkhôngâm.Cácσ1làcănbậchaicủacáctrị
riêngc ủ a A AT
cònđượcgọilàSingularValuescủaAcáitênSingularValueDecompositionxuấtpháttừđây
Vd:TìmphântíchSVDcủamatrậnsauA=(−1 1 2).
Lờigiải:
TachéohóatrựcgiaomatrậnA A T =UMU T
TacóAA T=(6 3)=B
Trang 81 2
( )
)
λ2=3
λ3=9
2
√6 0
−7
√51 1
√6
−1
√6
1
√2 1
√2
1
√51
−1
√51
1
Giải phươngtrình:det (B−λI)=0=¿[λ1=3
=¿M=(3 0)
λ2=9 +Ứngvớiλ1=3tađượccơsởE = ( 1,1)T
+Ứng vớiλ2=9tađượccơsởE =(−1,1)T
0 9
(1
1
− 1
)
Chiamỗi vectorchođộ dài củanóvàlập matrận trựcgiao:U=√2 √2
√2 √2
(2 1 −1
)
-TươngtựchoATA=1 5 4
−1 4 5
[λ1=0
0 0 0
¿>M=0 3 0
0 0 9 +Ứngvớiλ1=0tađượccơsởE1¿(2,1,−1) T
+Ứngvớiλ2=3ta đượccơsởE2¿(0,1,1) T
+Ứngvớiλ3=9 tađượccơsởE3¿(−7,1,−1) T
Chiamỗivectorchođộdàicủanóvàlậpmatrậntrựcgiao
()
VậyphântíchSVDcủamatrậnAlàA=USV T v ớ iUvàVlàma trậnởtrênvà
S=M =√3 0 0
0 3 0
Giảip h ư ơ n g t r ì n h :
− λ3+12λ2−27λ=0=¿
¿>V=
Trang 9B MộtsốứngdụngcủaSVD
Ngoàicácứngdụngtrongtốiưucựctrịrờirạc,látcắtcựcđại,K-meansClustering,Graph
Partitioning,…SVD được sử dụng nhiều trong các lĩnh vực (nhất là MachineLearning)ứng dụngcơbản nhấtlàtrongnénvàxửlý hìnhảnh
1 Giảm chiềudữliệu :
- Các ma trận Akgần khít với A và có hạng bằng k nên ta có thể dùng SVD để giảmchiềudữ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ệunàytrênđồthịthìtacóthểdùngSVDđểgiảmchiềudữliệuvề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ượngthamsốcầntínhtoánlàíthơnnêntínhtoánnhanhhơn
2 Nén ảnh :
Cáchthức dùngphươngphápSVDđểnénảnhnhưsau:
- ChoAlàảnhxám,hoặcmộttrong3thànhphầnảnhmàu,đượcbiểudiễnbởimatrận
m×n.SửdụngbiếnđổiSVD của Achúngta cóthểbiểudiễnmatrậnảnh
vớirlàbậccủamatrậnAvàSlàmatrậnđườngchéom×ngồmcáctrịđơncủ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đổiSVDthíchhợpvớiđiềunàyvìtacóthểxấpxỉAbằngcáchbỏđicácthành
phần ảnh tương ứng với các trị đơncó giá trị nhỏ, do đó ảnh sẽ không mất nhiềuthôngtin khithaychúngbằng 0 Từđó,ảnhxấpxỉ đượctạo ranhưsau:
Điềuđócónghĩalà thayvìtoànbộA,chúngtacóthể chỉcầnlưutrữvàtruyềnnhậnvà
Trang 10- Hình 1:Minh họa việc sử dụng SVD để nén ảnh Ảnh ban đầu kích thướcm×n,
cóthể sửdụngbiếnđổiSVD choảnhkíchthướcm×nở trêntathuđược3thànhphần
,S, ,phầntrắngcủamatrậntượngtrưngchocácphầntửkhôngcầnlưutrữ.
=
Hình1.MôtảcáchthứcSVDnénảnh.
- Khi đủnhỏ,tasẽcótổngsốcầnlưulà và
nénảnhbằngSVDtrởnênhiệuquả.ChúýrằngnếuảnhAcóhạngrnhỏkhiếncho
thìviệcphântíchSVDsẽlàmgiảmkhônggianlưutrữmà khônglàmmấtthôngtin ảnh
- SửdụngphầnmềmMatlab,thựchiệnnénảnhsửdụngbiếnđổiSVDvớicácgiátrịkhácnhauc
homột tấmảnh kích thước1920 × 1080
- Kếtquảthuđượcthể hiệnởHình2:
Hìnhgốc
Trang 11k=61 k=1
k=301
Hình 2.Ảnhgốc(a)vàkếtquả giảinénvớicácgiátrị khácnhau
- Đồthịmôtảsựsaisốgiữaảnhgốcbanđầuvàảnhsaukhinén,cùngvớiđánhgiávềhiệuquả
nénkhiápdụngSVDvớicác giátrị khácnhau,thểhiệnởHình3.
Hình3.Sai
sốgiữaảnh nén vàảnh gốcvới các giátrị khácnhau
Rõ ràng làkhigiátrị càng
Trang 12lớ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ìkhic à n g lớn,thôngtinmấtđicàngít,saibiệtvớiảnhgốccũnggiảmđi.Dotỉlệnén
bằng nên nó tỉ lệ thuận vớinhư minh họa trongHình 3Ở những
hìnhcócấutrúc đặcbiệthơnnhư làcó hạngnhỏthìhiệuquảnéncàngcao
3 PCA :
- 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ậnAkmột cách trựctiếpđược, vìcác matrậnAkbiểudiễnmộtsiêuphẳngđiquagóctọa độ
- Ta có thể thấy rằngv1biểu diễn phương mà tập điểm đó phân bố tập trung nhất khinhìntừgốctọađộ(‖Av1‖đạtgiátrịlớnnhất).Sauđóv2lạibiểudiễnphươngvuông góc vớiv1mà 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ềuxuống
và dùng để néndữliệu.
1 Code:
closeallc
learallclc
inImage=imread('L05_nhom18.png');% doc file
anhinImage=rgb2gray(inImage);%chuyenanhmausang2mautrangden
inImageD=double(inImage);%chuyendoidulieucuahinhanh
[U,S,V]=svd(inImageD);%phantichhinhanh
%taomatranrongdispEr
numSVals=[];%taomatranrongnumSVals
SvaoC
Trang 13C(k+1:end,:)=0;%tuhangk+1denhetcho=0C(:,k+1:end)=0;%tucotk+1den hetcho=0
%=>taomatrancheoC
D=U*C*V';%dunglaianhbangviecphantichanh
%xuathinhanhramanhinhvatinhtoanloifigure;
%lammoilaihinhanh
buffer=sprintf('Hinhanhmoixuatrasudung
imshow(uint8(D));% xuat hinh anh o
8bittitle(buffer);%xuattencuahinhanhduoctaolai
voigiatriktuongung
error=sum(sum((inImageD-D).^2));% tinh toan
laibangcongthuc(sailechgiuaanhduoctaolaivaanhgoc)
%luugiatridexuatlenmanhinh
dispEr=[dispEr;error];
%bieudiengiatrilaithanhmatran1cotnhieuhang
numSVals=[numSVals;k];
%bieudiengiatrilaithanhmatran1cotnhieuhang
end
% ve do thi tinh toan sai
lechfigure;%lammoidothi
title('Dothitinhtoansailechkhinenanh');%dattendothi
plot(numSVals, dispEr);% ve do
xlabel('SoluongSingularValueduocsudung');%taotrucx
ylabel('Sailechgiuaanhnenvaanhgoc');%taotrucy
2 Kết quả code:
*Figure1:
Trang 14*Figure3:
Trang 15*Figure 5:
Trang 16*Figure7:
Trang 17*Figure 9:
Trang 18*Figure 11:
Trang 19*Đồ thị tínhtoán sai lệch khi nénảnh:
D.Nguồn thamkh ảo
tính–Đặng VănVinh
- Đạisốtuyếntínhnângcao–ĐặngVănVinh
- SingularValueDecomposition-Mathworks
- Matlabvàứngdụngtrongviễnthông-TS.PhạmHồngLiên,ĐặngNgọcKhoa-TrầnThanh
Phương
- SửdụngMatlabtrongđạisốtuyếntính
- GiớithiệuvềứngdụngTF-IDFvàSVDtrongthuthậpthôngtindữliệuWebsite.
- TómtắtluậnvănthạcsĩchuyênngànhKhoahọcMáytính–PhạmHoàngTrương
- SVDtrongnénảnh(KhoaĐiện–Điệntử,ĐạihọcDuyTân)
- http://vimach.net/threads/matlab-trong-xu-ly-anh-7-ham-co-ban-cho-xu-ly-anh
- https://stackoverrun.com/ UsingSVDtocompressanimageinMATLAB
- https://viblo.asia/p/handbook-singular-values-decomposition-va-mot-so-ung-dung
- https://machinelearningcoban.com/ Bài26:SingularValueDecomposition