Do đó, việc tìm ra các phương pháp hiệu quả để khử nhiễu đã trở thành một chủ đề nghiên cứu quan trọng trong các lĩnh vực như xử lý tín hiệu, xử lý hình ảnh và học máy.. Bằng cách sử dụn
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA KHOA HỌC ỨNG DỤNG
BÀI TẬP LỚN HỌC PHẦN ĐẠI SỐ TUYẾN TÍNH
ĐỀ TÀI PHÂN TÍCH SVD ĐỂ KHỬ NHIỄU ÂM THANH
LỚP L11-NHÓM 11-HK 241 NGÀY NỘP:
GIẢNG VIÊN HƯỚNG DẪN: TS NGUYỄN XUÂN MỸ
Sinh viên thực hiện Mã số sinh viên Điểm số Chữ ký
Trần Bảo Anh 2410146
Trần Quốc An 2410043
Phan Thị Minh Anh 2410136
Tô Thành Trung 2413714
Trần Tấn Tài 2413050
Trần Quang Vinh 2413988
Trần Minh Tiến 2413489
Trần Quang Huy 2411277
Trần Kỳ Thông 2413370
Thành phố Hồ Chí Minh-2024
Trang 2MỤC LỤC
LỜI NÓI ĐẦU 3
CHƯƠNG 1 CƠ SỞ LÍ THUYẾT CỦA PHÂN TÍCH SVD 4
1.1 Giới thiệu chung về svd 4
1.2 Phân tích ma trận svd 3
1.3 Svd rút gọn 3
1.4 Biểu diễn của svd qua các trường hợp của ma trận 3
1.5 Ví Dụ về phân tích svd của một ma trận bất kì 3
CHƯƠNG 2 ỨNG DỤNG CỦA PHÂN TÍCH SVD TRONG KHỬ NHIỄU ÂM THANH 3
2.1 Các vấn đề liên quan đến âm thanh 3
2.2 Ý nghĩa của việc khử nhiễu 3
CHƯƠNG 3 CHƯƠNG TRÌNH PHÂN TÍCH SVD (MATLAB) 3
3.1 Các câu lệnh được sử dụng 3
3.2 Viết chương trình matlab ví dụ về svd trong khử nhiễu âm thanh 3
a Các câu lệnh 3
b Đoạn code 3
CHƯƠNG 4 KẾT LUẬN 3
TÀI LIỆU THAM KHẢO 3
2
Trang 3LỜI NÓI ĐẦU
Trong thời đại kỹ thuật số hiện nay, việc xử lý và tối ưu hóa chất lượng
âm thanh và hình ảnh đóng vai trò vô cùng quan trọng trong nhiều lĩnh vực của đời sống, từ truyền thông, giải trí, đến y học và an ninh Tuy nhiên, trong quá trình thu thập và truyền tải dữ liệu âm thanh hay hình ảnh, việc xuất hiện nhiễu là điều không thể tránh khỏi Nhiễu có thể làm giảm chất lượng và độ chính xác của dữ liệu, gây khó khăn trong việc nhận dạng, phân tích hoặc truyền thông tin Do đó, việc tìm ra các phương pháp hiệu quả để khử nhiễu đã trở thành một chủ đề nghiên cứu quan trọng trong các lĩnh vực như xử lý tín hiệu, xử lý hình ảnh và học máy
Một trong những phương pháp nổi bật hiện nay là Singular Value Decomposition – SVD SVD không chỉ là một công cụ toán học mạnh
mẽ giúp phân rã các ma trận phức tạp mà còn mang lại nhiều lợi ích trong việc cải thiện chất lượng âm thanh và hình ảnh Bằng cách sử dụng SVD, các thành phần quan trọng của tín hiệu có thể được giữ lại, trong khi những thành phần chứa nhiễu sẽ được loại bỏ hoặc giảm thiểu một cách hiệu quả Chẳng hạn như các tai nghe đời mới hiện nay đều có công nghệ lọc tiếng ồn để giúp người nhận tín hiệu có hiệu quả cao hơn Điều này làm cho SVD trở thành một phương pháp hữu hiệu trong việc khử nhiễu
âm thanh và hình ảnh, đặc biệt là trong những tình huống dữ liệu bị suy giảm do môi trường thu thập hoặc truyền tải không lý tưởng
Việc ứng dụng SVD vào khử nhiễu không chỉ cải thiện chất lượng dữ liệu đầu ra mà còn giúp tối ưu hóa quá trình truyền tải, lưu trữ và xử lý dữ liệu Trong lĩnh vực truyền thông đa phương tiện, điều này có thể mang lại những trải nghiệm âm thanh và hình ảnh rõ ràng hơn cho người dùng
Mục tiêu của báo cáo này là mang đến cái nhìn toàn diện và dễ hiểu về việc ứng dụng SVD trong việc khử nhiễu, qua đó giúp người đọc nắm rõ hơn về kỹ thuật này và những lợi ích mà nó mang lại cho công nghệ xử lý
dữ liệu đa phương tiện trong kỷ nguyên số
Trang 4CHƯƠNG 1 CƠ SỞ LÍ THUYẾT CỦA PHÂN TÍCH SVD
1.1 Giới thiệu chung về SVD
Như đã nói ở trên, (Singular Value Decomposition) SVD là một trong
những kỹ thuật quan trọng và phổ biến nhất trong đại số tuyến tính, với ứng dụng rộng rãi trong nhiều lĩnh vực như xử lý tín hiệu, xử lý hình ảnh, học máy, và thống kê Phương pháp SVD sẽ tìm ra một lớp các ma trận xấp xỉ tốt nhất với một ma trận cho trước dựa trên khoảng cách norm Frobenios giữa 2 ma trận Người ta đã chứng minh được rằng ma trận xấp xỉ tốt nhất được biểu diễn dưới dạng tích của 3 ma trận rất đặc biệt bao gồm 2 ma trận trực giao (orthogonal matrix) và 1 ma trận đường chéo (diagonal matrix) Quá trình nhân ma trận thực chất là quá trình biến đổi các điểm dữ liệu của ma trận gốc thông qua những phép xoay trục (rolation) và phép biến đổi độ lớn (scaling) và từ đó tạo ra những điểm dữ liệu mới trong không gian mới Điều đặc biệt của ma trận đường chéo đó là các phần tử của nó chính là những giá trị riêng của ma trận gốc Những điểm dữ liệu trong không gian mới có thể giữ được 100% thông tin ban đầu hoặc chỉ giữ một phần lớn thông tin ban truncate SVD Bằng cách sắp xếp các trị riêng theo thứ tự giảm dần trên đường chéo chính thuật toán SVD có thể thu được ma trận xấp xỉ tốt nhất mà vẫn đảm bảo giảm được hạng của ma trận sau biến đổi và kích thước các ma trận nhân tử nằm trong giới hạn cho phép Do đó nó tiết kiệm được thời gian
và chi phí tính toán và đồng thời cũng tìm ra được 1 giá trị dự báo cho
ma trận gốc với mức độ chính xác cao
1.2 Phân tích ma trận SVD
SVD có thể áp dụng cho bất kỳ ma trận nào, bất kể là vuông hay chữ nhật, và phân rã ma trận đó thành ba thành phần: ma trận U (ma trận các vector kỳ dị bên trái), ma trận đường chéo Σ (chứa các giá trị kỳ dị), và
ma trận V (ma trận các vector kỳ dị bên phải) Cụ thể, nếu ta có một ma trận A có kích thước m x n, thì SVD sẽ phân rã ma trận này theo công thức:
A =UΣ V T
4
Trang 5Trong đó:
- U là ma trận gồm các vecto riêng bên trái của A, kích thước mxm sao cho các vecto cột tạo thành hệ trực chuẩn
- V là ma trận gồm các vecto riêng bên phải của A, kích thước nxn sao cho các vecto cột tạo thành hệ trực chuẩn
- Ʃ là ma trận đường chéo không vuông, kích thước mxn với các phần tử trên đường
chéo σ1 ≥ σ2 ≥⋯≥ σr ≥ 0=0=⋯=0
- r là hạng của A, số lượng phần tử ≠ 0 trong Ʃ là hạng của A
=> A phụ thuộc vào r cột đầu tiên của P, Q và r phần tử ≠ 0 trên đường chéo Ʃ
Từ đó, ta có phân tích gọn hơn của A (compact SVD): A = UrDVr, với Ur và Vr là các ma trận tạo nên từ các cột của U và V tương ứng
1.3 SVD rút gọn
Chúng ta đã biết rằng phân tích giá trị kỳ dị chia nhỏabất kỳama trận A nào thành A = U*S*V' Hãy cùng xem xét kỹ
hơn ma trận S
Hãy nhớ S là một ma trận có dạnga trong đó D là ma trận đường chéo chứa các giá trị kỳ dị D, như người ta có thể xét, trông như thế này:a
Trong đóa là các giá trị kỳ dị của ma trận A
có hạng r Phân tíchahạng đầy đủacủa A thường được biểu thị như thế này:a
Trang 6 Chúng ta có thể tìm ra một phép xấp xỉ thứ hạng rút gọn (hoặc SVD rút gọn) thành A bằng cách đặt tất cả các giá trị
kỳ dị lớn nhất ngoại trừ k đầu tiên bằng không và chỉ sử dụng k cột đầu tiên của U và V
*Tính chất tối ưu của SVD rút gọn
Tại sao chúng ta sử dụng phân tích cụ thể này cho các phép xấp xỉ bậc k của chúng ta? Theo tính chất tối ưu, phân tích giá trị kỳ dị đưa ra phép xấp xỉ bậc kagần nhấtacủa một ma trận Vậy gần là như thế nào?
Một định lý được chứng minh bởi Eckart và Young cho thấy rằng lỗi khi xấp xỉ ma trận A bằng Aakacó thể được viết như sau:
Trong đó B làabất kỳama trận nào có hạng k Ký hiệu bên trái có nghĩa là chúng ta đang lấy chuẩn Frobenius của ma trận AAak Bạn có thể nhớ việc tìm độadàiahoặc độ lớn của một vectơ như một cách để đo kích thước của nó Chuẩn Frobenius thực hiện điều tương tự ngoại trừ với toàn bộ ma trận Vì vậy, công thức này có nghĩa là cho chúng ta biết rằng sự khác biệt giữa A và Aakanhỏ hơn
sự khác biệt giữa A vàabất kỳ ma trận hạng k nào khácaB Chúng
ta không thể tìm thấy hoặc thậm chí tạo ra một ma trận khác có hạng kagầnavới A hơn
1.4 Biểu Diễn SVD Qua Các Trường Hợp Của Ma Trận
Bất kỳ ma trận Am×n nào cũng có thể được phân rã dưới dạng:
Amxn= Um×m m×nΣ VTn×n
Trong đó, U và V là các ma trận trực giao, là ma trận đường chéo không vuông với các phần tử trên đường chéo thỏa mãn σ1≥σ ≥…σ2 r≥0=0…=0, và r
6
Trang 7là hạng của ma trận A Lưu ý rằng dù Σ không phải là ma trận vuông, nó vẫn được coi là ma trận chéo nếu các phần tử không bằng 0 chỉ xuất hiện trên đường chéo chính, tức là tại các vị trí mà chỉ số hàng và cột trùng nhau
*Trương hợp 1 Amxn (m < n)
* Trường hợp 2 Amxn (m > n)
1.5 Biểu Diễn SVD Của Ma Trận Bất Kì
Bước 1 : Xác định ma trận A (cỡ bao nhiêu) để tiến hành phân tíchSVD
Bước 2 : Thực hiện chéo hóa trực giao:
+ Viết phương trình đặc trưng của Từ đó chúng ta sẽ tính đượccác giá trị riêng của Viết được ma trận đường chéo D có các phần tử là những giá trị riêng, 1
ta vừa tìm được (Lưu ý phải sắp xếp nótheo thứ tự giảm dần)
+ Tìm vecto riêng của Từ đó ta tính được ma trận Q, các cột của Q là các vecto riêng của
Trang 8Bước 3: Thực hiện chéo hóa trực giao
+ Tương tự các bước 2.1, 2.2 ta tính được P và D 2
+ Chọn Σm x n bằng cách chọn ma trận cỡ tương ứng phù hợp với D hay D Sau 1 2
đó lấy căn bậc 2 của tất cả những phần tử trên đường chéo
Bước 4: Vậy phân tích SVD của ma trận A sẽ là:
Am x n = Qm x n Σm x n(Pn x n)T *Nhận xét: Như vậy từ dữ liệu ban đầu, chúng ta có thể viết nó dướidạng một ma trận Quá trình chéo hóatrực giao ma trận và ma trận chuyển vịcủa nó, chúng ta được phân tích SVD Trên cơ sở đó, ta có thể dễdàng ứngdụng chúng vào nhiều lĩnh vực khác nhau trong khoa học
Tìm phân tích SVD của ma trận A =(3 2 2
2 3 − 2)
=> AA = T (17 8
8 17)
- Phương trình đặc trưng củaAA T: det (AA T- λI) = 0
<=>λ2
- 34λ + 225 = 0
<=> λ1= 25 hay λ2 = 9
=> D = 1 (25 0
0 9)
- Vớiλ1= 25 <=> (AA T- λ1I)X = 0 <=> {−8 x1+8 x2 =0
8x1−8 x2 =0 <=> {x1=a
x2=a
=>Cơsởtrựcchuẩnứngvớiλ1 là √12 x(1;1)T
- Tương tự với λ2= 9 ta có: {x1=a
x2=a
=> Cơ sở trực chuẩn ứng với λ2 là √12 x(1;-1)T
=> Ma trậnU=1
√2 x(1 1
1 −1)
8
Trang 9- Tiếp theo ta có A A = T (13 12 2
2 −2 8)
- Tương tự ta chéo hoá trực giao A A:T
=> D2 = (25 0 0
0 0 0)
=> V = (1
√2
1
√18
−2 3 1
√2
−1
√18
2 3
√18
1
3)
- Từ đó ta có: Ʃ2x3 = (5 0 0
0 3 0)
Vậy phân tích SVD của A = U2X 2xƩ2X 3x(V3X 3)T
= 1
√2 x(1 1
1 −1)x(5 0 0
0 3 0)xx(1
√2
1
√18
−2 3 1
√2
−1
√18 2 3
√18 1
3 )T
CHƯƠNG 2 ỨNG DỤNG CỦA PHÂN TÍCH SVD TRONG KHỬ NHIỄU ÂM THANH
2.1 Các vấn đề liên quan đến âm thanh
Trong cuộc sống hàng ngày, chúng ta rất dễ để bắt gặp được những loại âm thanh khác nhau trong nhiều khoảnh khắc
Trang 10khác nhau Những âm thanh quen thuộc như: tiếng nhạc trong 1 buổi concert, tiếng xe cộ chạy ngoài đường, tiếng trẻ con nô đùa ríu rít,
Cùng thời buổi hiện đại, ta có thể ghi lại những âm thanh, những khoảnh khắc bất chợt nào đó bằng nhiều phượng tiện khác nhau như điện thoại, máy ghi âm,… Nhưng chắc chắn
sẽ không thể tránh khỏi được những âm thanh tạp âm( có thể là tiếng ồn xung quanh hay tiếng gió,… )khiến cho chất lượng âm thanh trở nên khó nghe và chất lượng gâm thanh giảm đáng kể
Ví dụ điển hình là khi một bạn sinh viên Đại Học Bách Khoa TPHCM muốn ghi âm hay quay video lại lời thầy cô giảng bài trên lớp, thế nhưng bản ghi âm ấy lại chứa quá nhiều tạp âm như tiếng gió của quạt, tiếng ồn của mưa hay tiếng nói chuyện của bạn kế bên Như vậy sẽ làm ảnh hưởng rất nhiều đến chất lượng âm thanh và sẽ khiến cho bạn ấy khó chịu và làm giảm chất lượng học tập, tiếp thhu của bạn sinh viên đó 2.2 Ý nghĩa cảu việc khử nhiễu
Việc khử nhiễu âm thanh không chỉ có ý nghĩa trong việc nâng cao trải nghiệm nghe mà còn có ý nghĩa quan trọng trong các lĩnh vực cần âm thanh tốt như truyền thông, xử
lý tín hiệu trong các thiết bị y tế (trợ thính) và nhận dạng giọng nói, nơi mà chất lượng âm thanh có ảnh hưởng trực tiếp đến độ chính xác của các ứng dụng liên quan
Việc khử nhiễu cũng góp phần giảm thiểu các lỗi trong các ứng dụng xử lý tín hiệu Khi tiếng ồn được giảm xuống mức tối thiểu, các thuật toán xử lý âm thanh sẽ hoạt động hiệu quả hơn, dẫn đến kết quả đầu ra chính xác, tin cậy hơn và tiết kiệm nhiều chi phí hơn
Kết luận: Khử nhiễu âm thanh thông qua phân tích SVD là một quá trình quan trọng và có nhiều ý nghĩa, từ việc cải thiện chất lượng âm thanh, giữ lại thông tin quan trọng, đến việc nâng cao hiệu suất của các hệ thống nhận diện Phân
10
Trang 11tích SVD không chỉ giúp tối ưu hóa âm thanh mà còn mở ra nhiều cơ hội ứng dụng trong các lĩnh vực khác nhau, từ truyền thông đến y tế và công nghệ giải trí
CHƯƠNG 3 CHƯƠNG TRÌNH PHÂN TÍCH SVD(MATLAB)
3.1 Các câu lệnh được sử dụng
-Clear all: Xóa các biến, dữ liệu trước đó.
-Audioread (‘Tên file’): Mở 1 file âm thanh cần khử nhiễu có
sẵn trong máy tính
-Reshape: Sắp xếp thứ tự các số hạng trong 1 ma trận hay tạo
ra nhiều mảng trong ma trận đó
- [U, S, V] = svd(A): Phân tích SVD ma trận A.
-Sigma = diag(S): Gán các giá trị trên đường chéo chính của
ma trận S
-plot: Vẽ đồ thị.
-rank = [1000]: Đặt giá trị k để file xuất ra âm thanh không bị
nhiễu
-for i = 1: length (rank): approx_sigma = sigmas: loại bỏ các
trị riêng thấp
-approx_S = S: Gán trị riêng đã xử lý vào ma trận S.
-Figure: Đặt tên file đồ thị.
-xlabel, ylabel: Đặt tên trục x, trục y.
-Sound: Lệnh phát âm thanh.
-Pause: Thực hiện câu lệnh sau 20s.
-Diag: Lấy các giá trị trên đường chéo.
3.2 Viết chương trình Matlab ví dụ về ứng dụng SVD trong khử nhiễu âm thanh
a , Các câu lệnh
Trang 12b , Đoạn code
CHƯƠNG 4 KẾT LUẬN
Phần nhóm đã làm tốt:
+Nhóm đã hoàn thành bài toán “Nêu cơ sở lí thuyết của phân tích SVD
và ứng dụngcủa SVD để phân tích dữ liệu” theo đúng yêuacầu của giáo viên
+ Sử dụng matlab để code cơ bản cũng như phân tích SVD để khử nhiễu âm thanh
Phần nhóm làm chưa tốt:
TÀI LIỆU THAM KHẢO
https://www.studocu.com/vn/document/ho-chi-minh-university-of-technology/dai-so-tuyen-tinh/lop-p03-nhom-1-btl-btl/76712181
Chat GPT, Machine Learning cơ bản, hefc.edu.vn
https://fr.scribd.com/document/772487161/SVD-%C4%91%E1%BB%83-nen-d%E1%BB%AF-li%E1%BB%87u
https://www.studocu.com/vn/document/ho-chi-minh- university-of-technology/dai-so-tuyen-tinh/lop-p03-nhom-1-btl-btl/76712181?origin=course-trending-4
sklearn.decomposition.TruncatedSVD.html
12