Thuật toán lặp QR tìm trị riêng và vector riêng

Một phần của tài liệu Dò tìm phát hiện mặt người bằng mạng neural nhân tạo và PCA (Thuần code) (Trang 90 - 92)

Dù thuật toán QR khác với cách tính truyền thống, tuy nhiên để tính được trị riêng thì ma trận cần tính cũng phải thỏa mãn các tính chất để tồn tại trị riêng:

- Ma trận cần tính phải là ma trận vuông (phân tích QR thì không cần phải vuông).

- Ma trận cần tính phải là ma trận đối xứng (Việc phân tích QR ma trận bất kỳ phải sử dụng thêm một bước đệm, mà trong đồ án này tác giả chỉ để cập tới ma trận đối xứng).

78 - Thuật toán lặp sẽ dừng lại khi ma trận cần phân tích hội tụ về dạng ma trận chéo, khi đó trị riêng sẽ nằm trên đường chéo này.

Thuật toán “Pure” QR

Thuật toán “Pure” QR cực kỳ đơn giản, được phát biểu như sau:

“𝐴(0) = A

for k = 1,2, …

𝑄𝑘𝑅𝑘 = 𝐴(𝑘−1) 𝐴𝑘 = 𝑅𝑘𝑄𝑘

Thuật toán này quá dễ hiểu, ta cứ việc phân tích ma trận A thành 2 ma trận Q và R, sau đó gán ma trận A này lại bằng tích của 2 ma trận R và Q. Lặp lại việc này cho đến khi A trở thành ma trận đường chéo, khi đó các phần tử nằm trên đường chéo chính chính là trị riêng của ma trận A cần tìm.

Thuật toán QR thực tế

Trong thực tế, người ta dùng 1 biến gọi là QR shift để tăng tốc cho thuật toán. Biến shift là 1 biến nằm trên đường chéo chính, người ta thường chọn biến cuối cùng (dòng n, cột n) [24]. Nếu phần tử được chọn đã hội tụ (các phần tử cột thứ n và dòng thứ n ngoài đường chéo chính đã hội tụ về 0) thì ta tiến hành phân tích một biến shift khác, có thể chọn bằng dòng n–i, cột n–i với i là lần chọn.

Thuật toán như sau:

“𝐴(0) = A

for k = 1,2, …

Chọn shift 𝜇𝑘 = 𝐴𝑚𝑚𝑘−1

𝑄𝑘𝑅𝑘 = 𝐴(𝑘−1)𝜇𝑘𝐼 𝐴𝑘 = 𝑅𝑘𝑄𝑘 + 𝜇𝑘𝐼

Nếu có trị riêng thứ k–1 hội tụ, thì ta tiến thành chọn lại shift μk = Ak−1m−1 m−1 Vậy là ta đã đi xong phần phân tích ma trận QR tìm trị riêng, tuy nhiên hãy nhớ lại về PCA, ta đang cần tìm vector riêng để tạo thành không gian mới, vì vậy mục đích chính của chúng ta là tìm tập vector riêng.

79 Nếu gọi Φ là ma trận của vector riêng (mỗi cột là 1 vector riêng tương ứng với trị riêng đã hội tụ), ta có:

Φ = Q1Q2 … Qk

Vậy ở mỗi bước tính Qk, ta nên tính ngay ma trận vector riêng bằng cách lưu lại các ma trận Q này, và mỗi lần lặp ta nhân ma trận S hiện tại với ma trận Qk vừa tính được.

Một phần của tài liệu Dò tìm phát hiện mặt người bằng mạng neural nhân tạo và PCA (Thuần code) (Trang 90 - 92)

Tải bản đầy đủ (PDF)

(170 trang)