Kalman Filtresi Performans ve Tutarlılık Testleri
- 2 views
- Last updated
- Engineering
- @bilal
Bir Kalman filtresinin gerçekten doğru çalışıp çalışmadığını nasıl anlarız? Bu ders, altı değerlendirme boyutunu sırayla kuruyor: RMSE ile kestirim doğruluğu, NEES ve ANEES ile kovaryans tutarlılığı ve ki kare güven sınırları, NIS ile ölçüm tutarlılığı ve hipotez testi, inovasyon otokorelasyonu ile beyazlık ve Kolmogorov Smirnov ile normallik, Monte Carlo koşularıyla istatistiksel dayanıklılık, ve sırası bozuk ölçümler, replay ve gerçek zamanlı çalışma ile zamanlama güvenilirliği. Her testin sezgisi, formülü, aşırı güvenli ve fazla temkinli filtrenin nasıl göründüğü ve test başarısız olduğunda nereye bakılacağı gösteriliyor.
Bir Kalman filtresi yazdınız, kod çalışıyor ve kestirimler makul görünüyor. Peki filtrenin gerçekten doğru çalıştığını nasıl bilirsiniz? Bu derste bunun için kullandığımız testleri tek tek kuracağız. Filtreyi altı ayrı soruyla sorgulayacağız. Birincisi doğruluk: hata ne kadar büyük? Bunu RMSE ile ölçeriz. İkincisi kovaryans tutarlılığı: filtre kendi belirsizliğini doğru biliyor mu? NEES ve ANEES bunu ölçer. Üçüncüsü ölçüm tutarlılığı, yani NIS. Dördüncüsü inovasyonların beyaz ve Gauss dağılımlı olup olmadığı. Beşincisi Monte Carlo ile istatistiksel dayanıklılık. Altıncısı da zamanlama: geç gelen ölçümler, kayıttan tekrar oynatma ve gerçek zaman. Bu altı sorunun ortak bir fikri var. Filtre her adımda bize iki şey verir: bir kestirim ve bu kestirime ne kadar güvendiğini söyleyen bir kovaryans. Testler, bu ikisinin gerçekle uyuşup uyuşmadığına bakar. Önce doğruluk. Gerçek durumu bildiğimiz bir benzetimde her an kestirim hatasını hesaplayabiliriz: gerçek durumdan kestirimi çıkarırız. Bu mavi eğri, tek bir koşudaki hatanın zamanla değişimi. Bazen pozitif, bazen negatif, ortalaması sıfıra yakın. Bu yüzden hatayı doğrudan ortalamak bize büyüklüğü söylemez. Çözüm, önce karesini almak. Sarı eğri hatanın karesi, artık her şey pozitif. Sonra bu kareleri ortalarız ve karekök alarak birimi geri getiririz. Formüldeki N, Monte Carlo koşu sayısı. Her koşunun hata karesi toplanır, koşu sayısına bölünür ve karekökü alınır. Bu örnekte sonuç yaklaşık sıfır virgül yetmiş üç metre. Yeşil çizgiler bu seviyeyi gösteriyor: hata tipik olarak bu bandın içinde dolaşır. Ama dikkat. RMSE yalnızca hatanın ne kadar büyük olduğunu söyler. Filtrenin bu hatayı önceden bilip bilmediğini söylemez. Bunun için kovaryansa bakmamız gerekiyor.
Kalman filtresi yalnızca bir kestirim üretmez, bu kestirimin ne kadar belirsiz olduğunu da söyler: kovaryans matrisi P. Sarı kesikli çizgiler, filtrenin kendi iddiası olan artı eksi iki sigma bandı. Tutarlı bir filtrede gerçek hata bu bandın içinde kalır, yalnızca arada bir dışarı taşar. Burada durum tam olarak böyle. Şimdi filtrenin kendine fazla güvendiğini düşünün. Kovaryans gerçekte olduğundan küçük. Bant daralıyor ve hata sürekli dışarı taşıyor. Buna aşırı güvenli filtre diyoruz. Tersi de olabilir. Kovaryans gereğinden büyükse bant genişler ve hata kenarlara hiç yaklaşmaz. Bu da fazla temkinli bir filtre. İkisi de kötü. Aşırı güvenli filtre yeni ölçümleri dinlemeyi bırakır ve sapar. Fazla temkinli filtre gürültüye gereğinden çok tepki verir. Doğru bant ikisinin arasında. Bunu tek bir sayıya dökelim. Hatayı kovaryansın tersiyle ağırlıklandırırız. Sonuç NEES: normalleştirilmiş kestirim hatası karesi. Kilit nokta, ortadaki P üzeri eksi bir terimi. Hata büyük ama filtre küçük kovaryans iddia ediyorsa NEES büyür. Yani NEES, gerçek hatayı filtrenin iddiasıyla kıyaslar. Filtre tutarlıysa hata sıfır ortalamalı Gauss dağılımlıdır ve kovaryansı gerçekten P olur. O zaman NEES, serbestlik derecesi durum boyutu olan bir ki kare dağılımına uyar. Ki kare dağılımının ortalaması serbestlik derecesine eşittir. Dolayısıyla tutarlı bir filtrede NEES ortalaması durum boyutuna eşit olmalı. İki boyutlu bir durum için bu sayı iki. Tek bir koşudaki NEES çok gürültülüdür, tek başına karar vermeye yetmez. Bu yüzden aynı senaryoyu N kez, farklı rastgele gürültülerle koşarız. Her zaman adımında N tane NEES değerinin ortalamasını alırız. Buna ortalama NEES, kısaca ANEES denir. Mavi eğri, elli koşuluk bir deneyin ANEES değeri. Peki ne kadar sapma kabul edilebilir? N çarpı ANEES, serbestlik derecesi N çarpı durum boyutu olan bir ki kare dağılımına uyar. Bu dağılımın yüzde doksan beşlik aralığını N ile böleriz. Elli koşu ve iki boyutlu durum için sınırlar bir virgül kırk sekiz ve iki virgül elli dokuz. İşte yeşil kesikli çizgiler. Tutarlı bir filtrenin ANEES eğrisi zamanın büyük bölümünde bu bandın içinde kalır. Bizim eğrimiz de tam iki civarında dolaşıyor. Eğri üst sınırın üstüne çıkarsa filtre aşırı güvenlidir, yani kovaryansı küçüktür. İlk şüpheliler çok küçük seçilmiş bir süreç gürültüsü Q ya da modelde eksik bir dinamiktir. Eğri alt sınırın altına inerse filtre fazla temkinlidir. Q ya da başlangıç kovaryansı gereğinden büyük seçilmiş olabilir. Ayarlar düzeltildiğinde eğri banda geri döner. Dikkat: bu test gerçek durumu bilmeyi gerektirir, yani yalnızca benzetimde yapılabilir.
NEES testinin bir zayıflığı var: gerçek durumu bilmemiz gerekiyor. Sahadaki gerçek bir araçta bu bilgi yoktur, elimizde yalnızca ölçümler vardır. Filtre her adımda gelecek ölçümü tahmin eder. Gelen ölçüm ile bu tahmin arasındaki farka inovasyon denir. Filtre bu farkın büyüklüğünü de öngörür: inovasyon kovaryansı S. Durum belirsizliğinin ölçüm uzayına taşınmış hali, artı ölçüm gürültüsü R. İnovasyonu S matrisinin tersiyle ağırlıklandırırsak NIS elde ederiz: normalleştirilmiş inovasyon karesi. Yapı NEES ile aynı, ama gerçek değere hiç ihtiyaç yok. Tutarlı bir filtrede NIS, serbestlik derecesi ölçüm boyutu olan bir ki kare dağılımına uyar. Sağdaki mavi eğri, iki boyutlu bir ölçüm için bu dağılımdır. Hipotez testini kuralım. Sıfır hipotezi, filtrenin tutarlı olduğudur. Yeşil alan, yüzde doksan beş güvenlik kabul bölgesidir. Sınırlar sıfır virgül sıfır beş ve yedi virgül otuz sekiz. Bir adımda NIS bir virgül sekiz çıktı diyelim. Kabul bölgesinin içinde, reddetmek için bir neden yok. Peki on virgül beş çıkarsa? Bu, kuyrukta kalan ve çok olası olmayan bir değer. Bir kez olursa tesadüftür, sık sık oluyorsa filtre aşırı güvenlidir. Tipik nedenler, çok küçük seçilmiş bir ölçüm gürültüsü R, yanlış bir ölçüm modeli H ya da aykırı ölçümlerdir. Ters yönde, NIS sürekli sıfıra çok yakınsa filtre ölçümleri olduğundan gürültülü sanıyordur. Bu kez R büyük seçilmiş olabilir. Tek bir adım yerine K adımlık zaman ortalaması çok daha güçlü bir testtir. K çarpı ortalama NIS, K çarpı ölçüm boyutu serbestlikli bir ki kare dağılımına uyar. En güzeli şu: bu test gerçek değer istemediği için sahada, canlı veriyle de çalıştırılabilir.
Tutarlılık testleri büyüklüğe bakar. Optimal bir Kalman filtresinin inovasyonları bir şey daha sağlamalı: zaman içinde birbirinden bağımsız olmalı. Buna beyazlık denir. Mantık şu: inovasyon, ölçümün tahmin edilemeyen kısmıdır. Bugünkü inovasyon yarınkini tahmin etmeye yarıyorsa, filtre eldeki bilgiyi tam kullanmıyor demektir. Bunu otokorelasyonla ölçeriz. İnovasyon dizisini, l adım kaydırılmış haliyle çarpar, toplar ve normalleştiririz. Beyaz bir dizide sıfırdan farklı her gecikmede bu değer küçüktür. Mavi çubuklar sıfır çevresinde rastgele dağılıyor. Ne kadar küçük? K örnekte yüzde doksan beş sınırı, bir virgül doksan altı bölü kök K. Yüz örnekte yaklaşık sıfır virgül iki. Yeşil kesikli çizgiler bu sınır. Şimdi modelde eksik bir dinamik olduğunu düşünün, örneğin ivmeyi modellemedik. İnovasyonlar renklenir: ilk gecikmeler sınırın çok üstüne çıkar ve yavaşça söner. Bu görüntü, modelin bir şeyi kaçırdığını gösterir. Çare, model yapısını gözden geçirmek ya da süreç gürültüsünü doğru yapıda kurmaktır. Beyazlık bağımsızlığı sınar. Bir de dağılımın şekline bakarız: inovasyonlar gerçekten Gauss mu? Her inovasyonu kendi standart sapmasına böleriz, tutarlı filtrede sonuç standart normal dağılır. Sarı eğri standart normalin birikimli dağılım fonksiyonu. Mavi merdiven ise on iki normalleştirilmiş inovasyonun deneysel birikimli dağılımı. Kolmogorov Smirnov testi, bu iki eğri arasındaki en büyük dikey uzaklığa bakar. Bu uzaklığa D istatistiği denir. Burada D yaklaşık sıfır virgül sıfır dokuz. On iki örnek için yüzde doksan beşlik kritik değer sıfır virgül otuz dokuz. D bunun çok altında, normallik reddedilmez. Test başarısız olursa genellikle kalın kuyruklu gürültü ya da aykırı ölçümler vardır. O zaman ölçüm kapısı ya da sağlam bir gürültü modeli düşünülür. Unutmayın, NIS ortalaması tutsa bile dağılımın şekli yanlış olabilir.
Şimdiye kadar konuştuğumuz testlerin çoğu tek bir koşuya güvenmez. Gürültü rastgeledir, tek bir şanslı ya da şanssız koşu bizi yanıltabilir. Çözüm Monte Carlo benzetimidir. Her koşuda başlangıç durumunu, süreç gürültüsünü ve ölçüm gürültüsünü bağımsız olarak yeniden çekeriz. Senaryo aynı, rastgelelik farklı. Sonra RMSE, ANEES ve NIS gibi metrikleri tüm koşular üzerinden ortalarız. Peki kaç koşu yeterli? Koşu sayısı arttıkça ANEES kabul bandı daralır. On koşuda bant sıfır virgül doksan altı ile üç virgül kırk iki arasında, oldukça geniş. Elli koşuda bir virgül kırk sekiz ile iki virgül elli dokuz arasına iner. Yüz koşuda ise bir virgül altmış üç ile iki virgül kırk bir arası. Bant, beklenen değer olan ikinin çevresinde sıkışıyor. Daha çok koşu, daha keskin bir test demektir ve küçük tutarsızlıklar da yakalanır. Pratikte elli ile yüz koşu iyi bir başlangıçtır. Bir uyarı daha: tek senaryo yetmez. Farklı manevralar, başlangıç hataları ve gürültü seviyeleriyle de deneriz. Rastgele tohumları da kaydederiz ki her sonuç birebir tekrarlanabilsin.
Son boyut zamanlama. Gerçek sistemlerde ölçümler her zaman sırayla gelmez. Bir radar ölçümü üç virgül dördüncü saniyede alınmış, ama ağ gecikmesi yüzünden ancak beş virgül altıda gelmiş olabilir. Bu arada filtre çoktan beşinci saniyeye ilerlemiştir. Buna sırası bozuk ölçüm, kısaca OOSM denir. Üç yol var. En basit yol, ölçümü atmaktır, ama bilgi kaybederiz. İkinci yol, geçmiş durumları bir tamponda saklamak, ölçüm anına geri sarmak ve sonrasını yeniden işlemektir. Doğrudur ama hesap yükü getirir. Üçüncü yol, gecikmiş ölçümü geriye doğru bir kestirimle doğrudan bugünkü duruma katmaktır. Daha ucuzdur ama dikkatli bir türetme ister. Nasıl test ederiz? Kaydedilmiş veriyi, gecikmeleri yapay olarak karıştırıp tekrar oynatırız ve sonucu sıralı işlenmiş referansla karşılaştırırız. NEES ve NIS burada da tutmalı. Bir de kayıttan tekrar oynatma testi var. Aynı kayıt aynı filtreye verildiğinde her seferinde birebir aynı sonucu almalıyız. Almıyorsak kodda bir zamanlama ya da başlatma hatası vardır. Son olarak gerçek zaman. Her döngüde hesap süresi ile gecikmenin toplamı, örnekleme periyodundan küçük olmalı. Mavi eğri döngü başına hesap süresi, kırmızı çizgi on milisaniyelik sınır. Ortalama süre sınırın rahatça altında. Ama yetmişinci döngü civarında bir sıçrama sınırı aşıyor. Gerçek zamanda önemli olan ortalama değil, en kötü durumdur. Bir de her ölçümü varış anına göre değil, gerçek ölçüm anına göre işleyin. Zaman damgası hatası, tutarlılık testlerini sessizce bozar. Toparlayalım. Bir test başarısız olduğunda nereye bakacağımızı bu tablo özetliyor. ANEES ya da NIS üst sınırı aşıyorsa filtre aşırı güvenlidir: Q ya da R çok küçük, ya da model eksik. Alt sınırın altındaysa tersi, kovaryanslar şişkin. İnovasyonlar renkliyse modelde eksik bir dinamik aranır. KS testi başarısızsa aykırı değerlere ve Gauss dışı gürültüye bakılır. Replay ile gerçek zamanlı sonuçlar ayrışıyorsa zaman damgalarına ve geciken ölçümlere bakılır. Bu testlerin hepsinden geçen bir filtre artık yalnızca çalışan değil, kendi belirsizliğini doğru bilen bir filtredir. Dersin amacı da tam olarak buydu.
Loading discussion…