![](https://ccc72111d9.cbaul-cdnwnd.com/f951a4aa49571d2fcffb5ed9217f5e14/200000042-d6829d8791/200000062.jpg?ph=ccc72111d9)
Always with the passion...
Rudolf Kalman (sinh năm 1930) là một nhà toán học Mỹ gốc Hungary được biết đến nhiều nhất vì các công trình về cái gọi là lọc Kalman (Kalman filter). Vì các công trình này mà năm 2009 Kalman được Obama trao tặng National Medal of Science của Mỹ.
Lọc Kalman là một phương pháp thuật toán lọc nhiễu ra khỏi thông tin, và nó được dùng rất nhiều trong các lĩnh vực điều khiển, hàng không, quân sự, vũ trụ, v.v, ví dụ như để ước lượng và điểu khiển quĩ đạo của tên lửa, của phi thuyền. Nó còn được dùng trong rất nhiều lĩnh vực khác, từ nhận dạng tiếng nói cho đến marketing !
Ngoài Kalman, còn có Thiele và Swerling nghĩ ra thuật toán tương tự trước đó, Bucy tham ra vào phát triển lý thuyết, và Stratonovich ở Nga còn phát triển một lý thuyết thuật toán phi tuyến mở rộng hơn từ trước đó. Bởi vậy lọc này còn được gọi là Kalman-Bucy-Stratonovich filter.
Lọc Kalman nhằm ước lượng giá trị đích thực của một cái gì đó, bằng cách dự đoán giá trị của nó và tính độ tin cậy (hay độ bất định) của dự đoán đó, đồng thời đo đạc giá trị (nhưng bị sai số vì có các nhiễu), sau đó lấy một trung bình có trọng giữa giá trị dự đoán và giá trị đo đạc được, làm giá trị ước lượng. Có thể coi nó là một trường hợp của “suy diễn có điều kiện kiểu bayes” (bayesian inference) ?
Mô hình toán học:
(Đây là một mô hình tuyến tính, các trạng thái được viết bởi các vector còn các biến đổi được viết bởi các ma trận).
Gọi là vector giá trị thực sự của một cái gì đó (ví dụ như vị trí của tên lửa) tại thời điểm thứ
. Ta sẽ giả sử
biến đổi theo qui luật sau:
trong đó là ma trận thay đổi trạng thái (state transition matrix),
là vector điểu khiển,
là ma trận điều khiển, còn
là nhiễu ngẫu nhiên, với giả sử là nó có phân bố Gaussian (phân bố normal nhiều chiều)
, trong đó
là ký hiệu của ma trận hiệp phương sai tương ứng.
Tại mỗi thời điểm thứ , có một đo đạc (measurement) trạng thái
cho kết quả là
trong đó là ma trận của mô hình quan sát, còn
là nhiễu trong lúc đo đạc, và ta giả sử nhiễu này cũng tuân theo một phân bố Gaussian
.
Các mà trận được coi là đã biết. Ta giả sử thêm là các nhiễu
là một bộ biến ngẫu nhiên độc lập và cũng độc lập với trạng thái ban đầu
.
Câu hỏi đặt ra là làm sao ước lượng được các trạng thái $x_k$ từ các quan sát ?
Nếu không hề có nhiễu, thì ta chỉ cần đặt . Nhưng vì có nhiễu nên không tính được chính xác
mà chỉ có thể ướng lượng nó. Kalman filter là một hàm ước lượng đệ quy (recursive estimator) cho phép làm việc này.
Thuật toán ước lượng như sau: Có thể chia nó thành 2 bước, bước dự đoán ban đầu (predict) và bước điều chỉnh sau đó (update)
Predict:
,
Ở đây là ký hiệu dự đoán giá trị của
dựa trên thông tin về giá trị tại thời điểm
, còn $\hat{x}_{k|k}$ là ước lượng giá trị của
sau khi đã sử dụng mọi thông tin tại thời điểm
. Ma trận
dùng để chỉ (ước lượng) ma trận hiệp phương sai của ước lượng của
.
Update:
Độ lệch so với quan sát (measurement residual):
Thặng dư hiệp phương sai (residual covariance):
Kalman tối ưu:
Ước lượng được điều chỉnh (updated estimate):
Hiệp phương sai cho ước lượng mới (updated estimate covariance):
Tài liệu tham khảo:
Trang web về Kalman filter: https://www.cs.unc.edu/~welch/kalman/
Speyer & Chung, Stochastic processes, estimation, and control, 2008. (Có chương về Kalman filter).
Wikipedia