Gamit ang mga filter ng Kalman. Mga modernong problema ng agham at edukasyon

Kalman filter

Pahayag ng problema

Tukuyin natin ng x k ang halaga na susukatin natin at pagkatapos ay i-filter. Ito ay maaaring posisyon, bilis, acceleration, halumigmig, temperatura, presyon, atbp.

Magsimula tayo sa simpleng halimbawa, na magdadala sa atin sa pagbabalangkas karaniwang gawain. Isipin na mayroon tayong radio-controlled na gumagalaw na bagay na maaari lamang sumulong at paatras. Kami, na nalalaman ang bigat ng bagay, hugis, takip sa ibabaw kung saan ito gumagalaw, atbp., ay kinakalkula kung paano nakakaapekto ang pagkontrol ng joystick sa bilis ng paggalaw v k .

Ri. 19 Gumagalaw na bagay

Pagkatapos ang coordinate ng bagay ay magbabago ayon sa batas:

x k+1 = x k + v k dt (3.7)

Sa totoong buhay, hindi natin maaaring isaalang-alang sa ating mga kalkulasyon ang mga maliliit na kaguluhan na kumikilos sa isang bagay (hangin, hindi pantay sa ibabaw, mga hadlang), samakatuwid tunay na bilis bagay ay mag-iiba mula sa kinakalkula. Ang isang random na variable ay idadagdag sa kanang bahagi ng nakasulat na equation O k :

x k+1 = x k + v k dt +o k (3.8)

Nag-install kami sa site GPS sensor, na sumusubok na sukatin ang tunay na coordinate x k bagay, at, siyempre, hindi ito masusukat nang tumpak, ngunit sinusukat ito nang may pagkakamali h l, na isa ring random na variable.

Bilang resulta, nakakatanggap kami ng maling data mula sa sensor:

z k = x k + z k (3.9)

Ang problema ay na, alam ang maling pagbabasa ng sensor z k, humanap ng magandang approximation para sa totoong object coordinate x k. Ipahiwatig namin ang magandang pagtatantya na ito bilang.

Sa pagbabalangkas ng pangkalahatang problema, para sa coordinate x k maaaring sagutin ang anumang bagay (temperatura, halumigmig, atbp.), at tinutukoy namin ang miyembro na responsable sa pagkontrol sa system mula sa labas bilang u k(sa halimbawa na may object u k =v k dt).

Ang mga equation para sa mga coordinate at pagbabasa ng sensor ay magiging ganito:

x k+1 = x k +u k +o k

z k = x k + z k (3.10)

At kaya ang alam natin:

· u k ay isang kilalang dami na kumokontrol sa ebolusyon ng system. Alam namin ito mula sa pisikal na modelo na aming binuo.

Error sa modelo O k at error sa sensor h k- mga random na variable. At ang kanilang mga batas sa pamamahagi ay hindi nakasalalay sa oras (sa numero ng pag-ulit k).

· Ang average na mga halaga ng error ay zero: k = Eз k = 0 .

· Ang batas ng pamamahagi ng mga random na variable mismo ay maaaring hindi alam sa atin, ngunit ang kanilang mga pagkakaiba ay kilala. Tandaan na ang mga pagkakaiba ay hindi nakasalalay sa k, dahil ang mga batas ng pamamahagi ay hindi nakasalalay dito.

· Ipinapalagay na ang lahat ng mga random na error ay independiyente sa isa't isa: kung ano ang magiging error sa sandali ng oras k ganap na independyente sa error sa isa pang punto ng oras k".

Magiging kapaki-pakinabang na tandaan na ang gawain sa pag-filter ay hindi isang gawain sa pagpapakinis. Hindi kami nagsusumikap na pakinisin ang data ng sensor, nagsusumikap kaming makuha ang pinakamalapit na halaga sa tunay na coordinate x k .

Kalman algorithm

Magtatalo kami sa pamamagitan ng induction. Isipin na sa k Sa -th na hakbang, nakahanap na kami ng na-filter na halaga mula sa sensor, na mahusay na tinatantya ang tunay na coordinate ng system x k. Huwag kalimutan na alam natin ang equation na kumokontrol sa pagbabago sa hindi kilalang coordinate:

x k+1 = x k +u k +o k ,

samakatuwid, nang hindi pa natatanggap ang halaga mula sa sensor, maaari nating ipagpalagay na sa hakbang k+1 nagbabago ang system ayon sa batas na ito at ang sensor ay magpapakita ng isang bagay na malapit sa Sa kasamaang palad, wala pa kaming masasabing mas tumpak. Sa kabilang banda, sa hakbang k+1 magkakaroon tayo ng hindi tumpak na pagbabasa ng sensor sa ating mga kamay z k+1 .

Ang ideya ni Kalman ay upang makuha ang pinakamahusay na pagtatantya sa tunay na coordinate x k+1, dapat tayong pumili ginintuang ibig sabihin sa pagitan ng mga pagbasa z k+1 isang hindi tumpak na sensor at - ang aming hula sa kung ano ang inaasahan naming makita mula dito. Bibigyan namin ng timbang ang pagbabasa ng sensor K, at mananatili ang timbang sa hinulaang halaga ( 1-K):

Coefficient K tinatawag na Kalman coefficient. Depende ito sa hakbang ng pag-ulit, kaya mas tama ang pagsusulat K k+1, ngunit sa ngayon, upang hindi magulo ang mga formula ng pagkalkula, aalisin namin ang index nito.

Dapat nating piliin ang koepisyent ng Kalman K tulad na ang resulta pinakamainam na halaga ang mga coordinate ay magiging pinakamalapit sa totoong coordinate x k+1. Halimbawa, kung alam nating napakatumpak ng ating sensor, mas pagtitiwalaan natin ang pagbabasa nito at ibibigay ang halaga z k+1 mas timbang ( K malapit sa pagkakaisa). Kung ang sensor, sa kabaligtaran, ay hindi tumpak, kung gayon mas tututuon natin ang teoretikal na hinulaang halaga.

Sa pangkalahatan, upang mahanap eksaktong halaga Kalman coefficient K, kailangan mo lang bawasan ang error:

Gumagamit kami ng mga equation (3.10) upang muling isulat ang expression para sa error:

Patunay:

Ngayon kailangan nating malaman kung ano ang ibig sabihin ng pag-minimize ng isang error? Pagkatapos ng lahat, ang error, tulad ng nakikita natin, ay isang random na variable at tumatagal ng iba't ibang mga halaga sa bawat oras.

Talagang walang one-size-fits-all na diskarte sa pagtukoy kung ano ang ibig sabihin ng pagkakaroon ng kaunting error.

Eksakto tulad ng sa kaso ng pagpapakalat random variable, kapag sinubukan naming tantyahin ang katangian ng lapad ng pagkalat nito, dito rin pipiliin namin ang pinakasimpleng pamantayan para sa mga kalkulasyon. I-minimize namin ang ibig sabihin ng squared error:

Isulat natin ang huling expression:

Patunay:

Mula sa katotohanan na ang lahat ng mga random na variable ay kasama sa expression (5.13) para sa e k+1, ay independyente, sumusunod na ang lahat ng mga terminong "krus" ay katumbas ng zero: E(o k h k+1 ) = E(e k O k ) = E(e k h k+1 ) =0.

Gayundin Ez k+1 =Eо k =0 , kung gayon ang formula para sa mga pagkakaiba ay mukhang mas simple:

Ang pagpapahayag (3.15) ay tumatagal pinakamababang halaga, kapag (tinutumbas natin ang derivative sa zero):

Pinapalitan namin sa expression (3.15) para sa mean square error ang halaga ng Kalman coefficient (5.17) na nagpapaliit nito. Nakukuha namin:

Ang aming problema ay nalutas. Nakuha namin ang iterative formula (3.18) upang makalkula ang koepisyent ng Kalman. Praktikal na pagpapatupad sa Appendix A.

kanin. 20

Kung susundin mo kung paano sa hakbang ng pag-ulit k Nagbabago ang koepisyent ng Kalman K k, pagkatapos ay maipapakita na ito ay palaging nagpapatatag sa isang tiyak na halaga K saksakin. Halimbawa, kapag ang root mean square error ng sensor at ang modelo ay may ratio na sampu sa isa, ang graph ng Kalman coefficient depende sa iteration step ay ganito ang hitsura:


kanin. 21

Ang pangunahing ideya ng filter ng Kalman ay upang mahanap ang koepisyent K na ang na-filter na halaga ay:

sa karaniwan ay hindi bababa sa pagkakaiba sa tunay na halaga ng coordinate x k+1. Nakikita namin na ang na-filter na halaga ay isang linear na function ng pagbabasa ng sensor z k+1 at ang dating na-filter na halaga. At ang dating na-filter na halaga ay, sa turn, linear function mula sa pagbabasa ng sensor z k at ang dating na-filter na halaga. At iba pa hanggang sa tuluyang maiikot ang kadena. Iyon ay, ang na-filter na halaga ay nakadepende nang linear sa lahat ng nakaraang pagbabasa ng sensor:

Samakatuwid, ang Kalman filter ay tinatawag na linear filter.

Sa paanuman nangyari na talagang gusto ko ang lahat ng uri ng mga algorithm na may malinaw at lohikal na batayan sa matematika) Ngunit kadalasan ang kanilang mga paglalarawan sa Internet ay sobrang puno ng mga formula at kalkulasyon na pangkalahatang kahulugan Imposibleng maunawaan ang algorithm. Ngunit ang pag-unawa sa kakanyahan at prinsipyo ng pagpapatakbo ng isang aparato/mekanismo/algorithm ay higit na mahalaga kaysa sa pagsasaulo ng malalaking formula. Kahit na karaniwan, ang pagsasaulo ng kahit na daan-daang mga formula ay hindi makakatulong sa anumang paraan kung hindi mo alam kung paano at saan ilalapat ang mga ito 😉 Sa totoo lang, para saan ang lahat ng ito.. Napagpasyahan kong gumawa ng isang paglalarawan ng ilang mga algorithm na Kinailangan kong makaharap sa practice. Susubukan kong huwag mag-overload sa mga kalkulasyon sa matematika upang ang materyal ay maunawaan at madaling basahin.

At ngayon ay pag-uusapan natin Kalman filter, alamin natin kung ano ito, bakit at paano ito ginagamit.

Magsimula tayo sa isang maliit na halimbawa. Harapin natin ang gawain ng pagtukoy ng mga coordinate ng isang lumilipad na sasakyang panghimpapawid. Bukod dito, natural, ang coordinate (ipahiwatig natin ito) ay dapat na matukoy nang tumpak hangga't maaari.

Nag-install kami ng sensor sa eroplano nang maaga, na nagbibigay sa amin ng kinakailangang data ng lokasyon, ngunit, tulad ng lahat ng bagay sa mundong ito, ang aming sensor ay hindi perpekto. Samakatuwid, sa halip na ang halaga na nakukuha natin:

nasaan ang sensor error, iyon ay, isang random variable. Kaya, mula sa mga hindi tumpak na pagbabasa ng kagamitan sa pagsukat, dapat tayong kumuha ng coordinate value () na mas malapit hangga't maaari sa totoong posisyon ng sasakyang panghimpapawid.

Naitakda na ang gawain, magpatuloy tayo sa paglutas nito.

Ipaalam sa amin ang control action (), salamat kung saan lumipad ang eroplano (sinabi sa amin ng piloto kung aling mga lever ang hinihila niya 😉). Pagkatapos, alam ang coordinate sa kth na hakbang, makukuha natin ang halaga sa (k+1) na hakbang:

Mukhang ito ang kailangan natin! At walang Kalman filter ang kailangan dito. Ngunit hindi lahat ay napakasimple... Sa katotohanan, hindi natin maaaring isaalang-alang ang lahat panlabas na mga kadahilanan, na nakakaapekto sa paglipad, kaya ang formula ay nasa sumusunod na anyo:

nasaan ang error na dulot ng mga panlabas na impluwensya, di-kasakdalan ng makina, atbp.

Kaya ano ang mangyayari? Sa hakbang (k+1) mayroon kami, una, isang hindi tumpak na pagbabasa ng sensor , at pangalawa, isang hindi tumpak na nakalkulang halaga na nakuha mula sa halaga sa nakaraang hakbang.

Ang ideya ng Kalman filter ay upang makakuha ng tumpak na pagtatantya ng nais na coordinate (para sa aming kaso) mula sa dalawang hindi tumpak na mga halaga (pagkuha ng mga ito na may iba't ibang mga koepisyent ng timbang). Sa pangkalahatan, ang sinusukat na halaga ay maaaring maging ganap na anuman (temperatura, bilis...). Narito kung ano ang mangyayari:

Sa pamamagitan ng mga kalkulasyon sa matematika makakakuha tayo ng pormula para sa pagkalkula ng koepisyent ng Kalman sa bawat hakbang, ngunit, tulad ng napagkasunduan sa simula ng artikulo, hindi na tayo lalalim sa mga kalkulasyon, lalo na dahil sa pagsasagawa ay itinatag na ang koepisyent ng Kalman ay palaging may posibilidad na isang tiyak na halaga habang tumataas ang k. Nakukuha namin ang unang pagpapasimple ng aming formula:

Ngayon, ipagpalagay natin na walang koneksyon sa piloto, at hindi natin alam ang aksyong kontrol. Mukhang sa kasong ito ay hindi natin magagamit ang filter ng Kalman, ngunit hindi ito ganoon 😉 "Itapon" lang natin mula sa formula ang hindi natin alam, pagkatapos

Nakukuha namin ang pinaka-pinasimpleng formula ng Kalman, na, gayunpaman, sa kabila ng gayong "mahirap" na pagpapasimple, ay ganap na nakayanan ang gawain nito. Kung ipinakita mo ang mga resulta nang graphic, makakakuha ka ng ganito:

Kung ang aming sensor ay napakatumpak, natural na ang weighting coefficient K ay dapat na malapit sa pagkakaisa. Kung ang sitwasyon ay kabaligtaran, iyon ay, ang aming sensor ay hindi napakahusay, kung gayon ang K ay dapat na mas malapit sa zero.

Iyon lang marahil, tulad niyan, naisip namin ang algorithm ng pag-filter ng Kalman! Umaasa ako na ang artikulo ay kapaki-pakinabang at naiintindihan =)

Kalman filter

Ang Kalman filter ay malawakang ginagamit sa engineering at econometric na mga aplikasyon, mula sa radar at vision system hanggang sa pagtatantya ng parameter ng mga macroeconomic na modelo. Ang pag-filter ng Kalman ay isang mahalagang bahagi ng teorya ng kontrol at gumaganap ng malaking papel sa paglikha ng mga control system. Kasama ang isang linear-quadratic controller, pinapayagan ka ng Kalman filter na lutasin ang problema ng linear-quadratic Gaussian control. Kalman filter at linear quadratic regulator - posibleng solusyon pinakapangunahing mga problema sa control theory.

Sa karamihan ng mga application, ang bilang ng mga parameter na tumutukoy sa estado ng isang bagay ay mas malaki kaysa sa bilang ng mga nakikitang parameter na magagamit para sa pagsukat. Gamit ang isang modelo ng isang bagay batay sa isang bilang ng magagamit na mga sukat, pinapayagan ng filter na Kalman ang isa na makakuha ng pagtatantya ng panloob na estado.

Ang Kalman filter ay inilaan para sa recursive na pagtatantya ng state vector ng isang priori na kilalang dynamic na sistema, iyon ay, para sa pagkalkula kasalukuyang estado kailangang malaman ng mga sistema ang kasalukuyang pagsukat pati na rin nakaraang estado ang filter mismo. Kaya, ang filter ng Kalman, tulad ng maraming iba pang mga recursive na filter, ay ipinatupad sa isang oras, sa halip na isang dalas, na representasyon.

Ang isang malinaw na halimbawa ng mga kakayahan ng filter ay ang pagkuha ng tumpak, patuloy na na-update na mga pagtatantya ng posisyon at bilis ng ilang bagay batay sa mga resulta ng isang serye ng oras ng mga hindi tumpak na sukat ng lokasyon nito. Halimbawa, sa radar ang gawain ay upang subaybayan ang isang target, matukoy ang lokasyon nito, bilis at acceleration, habang ang mga resulta ng pagsukat ay unti-unting dumating at napakaingay. Gumagamit ang Kalman filter ng probabilistic model ng target dynamics na tumutukoy sa uri ng posibleng paggalaw ng object, na nagbibigay-daan sa pagbabawas ng epekto ng ingay at pagkuha magandang grades ang posisyon ng isang bagay sa kasalukuyan, hinaharap o nakaraang punto ng panahon.

Panimula

Gumagana ang filter ng Kalman sa konsepto ng isang vector ng estado ng system (isang hanay ng mga parameter na naglalarawan sa estado ng system sa isang tiyak na punto ng oras) at ang paglalarawan ng istatistika nito. Sa pangkalahatang kaso, ang dynamics ng isang tiyak na vector ng estado ay inilalarawan ng probability density ng pamamahagi ng mga bahagi nito sa bawat sandali ng oras. Kung may tiyak modelo ng matematika gumawa ng mga obserbasyon sa system, pati na rin ang isang modelo ng isang priori na pagbabago sa mga parameter ng state vector (ibig sabihin, bilang isang proseso ng Markov formative), maaari tayong magsulat ng isang equation para sa posterior probability density ng state vector sa anumang oras. Ibinigay differential equation ay tinatawag na Stratonovich equation. Ang Stratonovich equation ay hindi malulutas sa pangkalahatang anyo nito. Ang isang analytical na solusyon ay maaaring makuha lamang sa kaso ng isang bilang ng mga paghihigpit (pagpapalagay):

  • Gaussianity ng isang priori at posterior probability density ng state vector anumang oras (kabilang ang una)
  • Gaussianity ng paghubog ng ingay
  • Gaussianity ng ingay sa pagmamasid
  • kaputian ng pagmamasid ingay
  • linearity ng observation model
  • linearity ng modelo ng proseso ng pagbuo (na kung saan, maalala, ay dapat na isang proseso ng Markov)

Ang klasikal na Kalman filter ay isang equation para sa pagkalkula ng una at pangalawang sandali ng posterior probability density (sa kahulugan ng isang vector ng mga inaasahan sa matematika at isang matrix ng mga pagkakaiba, kabilang ang mga katumbas) sa ilalim ng mga ibinigay na paghihigpit. Dahil sa ang katunayan na para sa normal na probability density ang matematikal na inaasahan at ang dispersion matrix ay ganap na tumutukoy sa probability density, maaari nating sabihin na ang Kalman filter ay kinakalkula ang posterior probability density ng state vector sa bawat punto ng oras. Nangangahulugan ito na ganap nitong inilalarawan ang vector ng estado bilang isang random na dami ng vector.

Ang mga kinakalkula na halaga ng mga inaasahan sa matematika ay pinakamainam na mga pagtatantya ayon sa pamantayan ng root-mean-square error, na tumutukoy sa malawakang paggamit nito.

Mayroong ilang mga uri ng filter ng Kalman, na naiiba sa mga pagtatantya at mga trick na kailangang gamitin upang bawasan ang filter sa inilarawang anyo at bawasan ang sukat nito:

  • Extended Kalman filter (EKF). Ang pagbabawas ng mga nonlinear observational na modelo at ang proseso ng paghubog gamit ang linearization sa pamamagitan ng Taylor series expansion.
  • Unscented Kalman filter (UKF). Ginagamit sa mga problema kung saan ang simpleng linearization ay humahantong sa pagkawasak kapaki-pakinabang na mga koneksyon sa pagitan ng mga bahagi ng vector ng estado. Sa kasong ito, ang "linearization" ay batay sa unscented transformation.
  • Ensemble Kalman filter (EnKF). Ginagamit upang bawasan ang sukat ng isang problema.
  • Mga posibleng opsyon na may nonlinear karagdagang filter, na ginagawang posible na bawasan ang mga hindi Gaussian na obserbasyon sa mga normal.
  • Ang mga opsyon na may filter na "pagpapaputi" ay posible, na nagpapahintulot sa iyo na magtrabaho sa "kulay" na ingay
  • atbp.

Ginamit ang modelo ng dynamic na sistema

Ang mga filter ng Kalman ay batay sa time-sampled linear dynamic system. Ang mga ganitong sistema ay namodelo ng mga chain ng Markov gamit ang mga linear na operator at mga termino na may normal na distribusyon. Ang estado ng system ay inilalarawan ng isang vector ng may hangganan na dimensyon - ang state vector. Sa bawat tibok ng oras linear operator kumikilos sa vector ng estado at inililipat ito sa isa pang vector ng estado (deterministikong pagbabago ng estado), idinagdag ang ilang vector normal na ingay(random factor) at, sa pangkalahatang kaso, isang control vector na nagmomodelo sa epekto ng control system. Ang filter ng Kalman ay maaaring tingnan bilang kahalintulad sa mga nakatagong modelo ng Markov, na may pagkakaiba na ang mga variable na naglalarawan sa estado ng system ay mga elemento ng isang walang katapusang hanay ng mga tunay na numero (kumpara sa isang may hangganang hanay ng espasyo ng estado sa mga nakatagong modelo ng Markov). Bukod pa rito, ang mga nakatagong modelo ng Markov ay maaaring gumamit ng mga di-makatwirang pamamahagi para sa kasunod na mga halaga ng vector ng estado, hindi katulad ng Kalman filter, na gumagamit ng isang normal na distributed na modelo ng ingay. Mayroong mahigpit na ugnayan sa pagitan ng Kalman filter at nakatagong mga equation ng modelo ng Markov. Ang pagsusuri sa mga ito at iba pang mga modelo ay ibinigay nina Roweis at Chahramani (1999).

Kapag ginagamit ang filter ng Kalman upang makakuha ng mga pagtatantya ng vector ng estado ng proseso mula sa isang serye ng mga maingay na sukat, kinakailangan na kumatawan sa isang modelo prosesong ito alinsunod sa istraktura ng filter - sa anyo equation ng matrix tiyak na uri. Para sa bawat beat k pagpapatakbo ng filter, kinakailangan upang matukoy ang mga matrice alinsunod sa paglalarawan sa ibaba: proseso ng ebolusyon F k; matris ng pagmamasid H k; proseso ng covariance matrix Q k; pagsukat ng ingay covariance matrix R k; sa pagkakaroon ng mga aksyon na kontrol - isang matrix ng kanilang mga coefficient B k .

Ilustrasyon kung paano gumagana ang filter. Ang mga matrice ay minarkahan ng mga parisukat. Ang mga ellipse ay nagmamarka ng mga matrice ng multivariate na normal na distribusyon (kabilang ang mga mean at covariance). Ang mga vector ay naiwang walang bilog. Sa pinakasimpleng kaso, ang ilang mga matrice ay hindi nagbabago sa paglipas ng panahon (huwag nakasalalay sa index k), ngunit ginagamit pa rin ng filter sa bawat cycle ng operasyon.

Ipinapalagay ng system/process model na ang totoong estado sa panahong iyon k ay nakuha mula sa totoong estado sa kasalukuyan k−1 ayon sa equation:

,
  • F k- process/system evolution matrix na nakakaapekto sa vector x k−1 (vector ng estado sa ngayon k−1 );
  • B k- control matrix, na inilalapat sa vector ng mga aksyon na kontrol u k ;
  • w k- normal na random na proseso na may zero mathematical expectation at covariance matrix Q k, na naglalarawan sa random na kalikasan ng ebolusyon ng system/proseso:

Sa ngayon k ginagawa ang pagmamasid (pagsukat). z k tunay na vector ng estado x k, na nauugnay sa bawat isa sa pamamagitan ng equation:

saan H k- matrix ng pagsukat na nagkokonekta sa totoong vector ng estado at ang vector ng mga sukat na kinuha, v k- puting Gaussian na ingay ng mga sukat na may zero na mathematical na inaasahan at covariance matrix R k :

Paunang estado at mga vector ng mga random na proseso sa bawat ikot ng orasan ( x 0 , w 1 , …, w k , v 1 , …, v k) ay itinuturing na independyente.

Marami ang totoo mga dynamic na sistema hindi tumpak na mailarawan ng modelong ito. Sa pagsasagawa, ang mga dinamika na hindi isinasaalang-alang sa modelo ay maaaring seryosong masira ang pagganap ng filter, lalo na kapag nagtatrabaho sa isang hindi kilalang stochastic input signal. Bukod dito, ang dynamics na hindi isinasaalang-alang sa modelo ay maaaring gawing hindi matatag ang filter. Sa kabilang banda, independent puting ingay bilang isang signal ay hindi hahantong sa isang pagkakaiba-iba ng algorithm. Ang problema sa paghihiwalay ng ingay ng pagsukat mula sa mga dinamika na hindi isinasaalang-alang sa modelo ay kumplikado;

Kalman filter

Ang Kalman filter ay isang uri ng recursive filter. Upang kalkulahin ang pagtatasa ng estado ng system para sa kasalukuyang cycle ng operasyon, kailangan nito ng pagtatasa ng estado (sa anyo ng isang pagtatasa ng estado ng system at isang pagtatantya ng error sa pagtukoy ng estado na ito) sa nakaraang cycle ng operasyon at mga sukat sa kasalukuyang cycle. Ang ari-arian na ito kinikilala ito sa mga packet filter, na nangangailangan ng kaalaman sa kasaysayan ng mga sukat at/o mga pagtatantya sa kasalukuyang cycle ng operasyon. Dagdag pa, sa pamamagitan ng notasyon ay mauunawaan natin ang pagtatantya ng totoong vector sa ngayon n isinasaalang-alang ang mga sukat mula sa sandaling nagsimula ang trabaho hanggang m kasama.

Ang katayuan ng filter ay tinukoy ng dalawang variable:

Ang mga pag-ulit ng filter ng Kalman ay nahahati sa dalawang yugto: extrapolation at correction. Sa panahon ng extrapolation, natatanggap ang filter paunang pagtatasa estado ng sistema (sa panitikan sa wikang Ruso madalas itong tinutukoy , kung saan nangangahulugang "extrapolation", at k- bilang ng cycle ng orasan kung saan ito natanggap) para sa kasalukuyang hakbang batay sa panghuling pagtatasa ng estado mula sa nakaraang hakbang (o isang paunang pagtatantya para sa susunod na ikot ng orasan batay sa panghuling pagtatasa ng kasalukuyang hakbang, depende sa ang interpretasyon). Ang paunang pagtatantya na ito ay tinatawag ding priori estimate ng estado, dahil ang mga obserbasyon sa kaukulang hakbang ay hindi ginagamit upang makuha ito. Sa yugto ng pagwawasto, ang a priori extrapolation ay dinadagdagan ng nauugnay na kasalukuyang mga sukat upang itama ang pagtatantya. Ang isinaayos na pagtatantya ay tinatawag ding posterior state estimate, o simpleng state vector estimate. Kadalasan, ang dalawang yugtong ito ay kahalili: ang extrapolation ay isinasagawa batay sa mga resulta ng pagwawasto hanggang sa susunod na obserbasyon, at ang pagwawasto ay isinasagawa kasama ng mga obserbasyon na makukuha sa susunod na hakbang, atbp. Gayunpaman, ang isa pang pag-unlad ng mga kaganapan ay posible, kung para sa ilan dahilan kung bakit naging hindi available ang pagmamasid, kung gayon ang yugto ng pagwawasto ay maaaring laktawan at i-extrapolate mula sa hindi nababagay na pagtatantya (isang priori extrapolation). Katulad nito, kung ang mga independiyenteng sukat ay magagamit lamang sa ilang partikular na mga siklo ng trabaho, posible pa rin ang mga pagwawasto (karaniwan ay gumagamit ng ibang observation matrix H k ).

Yugto ng extrapolation

Yugto ng pagwawasto

Natanggap ang paglihis sa hakbang k mga obserbasyon mula sa obserbasyon na inaasahan mula sa extrapolation:
Covariance matrix para sa deviation vector (error vector):
Ang Kalman optimal gain matrix, na nabuo batay sa mga covariance matrice ng umiiral na extrapolation ng state vector at ang nakuhang mga sukat (sa pamamagitan ng covariance matrix ng deviation vector):
Pagwawasto ng dating nakuhang extrapolation ng state vector - pagkuha ng pagtatantya ng system state vector:
Pagkalkula ng covariance matrix para sa pagtatantya ng system state vector:

Ang expression para sa covariance matrix ng pagtatantya ng vector ng estado ng system ay wasto lamang kapag ginagamit ang ibinigay na pinakamainam na vector ng mga coefficient. Sa pangkalahatan, ang expression na ito ay may mas kumplikadong anyo.

Mga invariant

Kung ang modelo ay ganap na tumpak at ang mga paunang kundisyon at ganap na tiyak na tinukoy, kung gayon ang mga sumusunod na halaga ay napanatili pagkatapos ng anumang bilang ng mga pag-ulit ng filter - sila ay mga invariant:

Ang mga inaasahan sa matematika ng mga pagtatantya at mga extrapolasyon ng vector ng estado ng system at mga error matrice ay mga null vectors:

nasaan ang mathematical expectation.

Ang nakalkulang covariance matrice ng mga extrapolations, system state estimates at error vectors ay kasabay ng tunay na covariance matrice:

Halimbawa ng pagbuo ng filter

Isipin natin ang isang troli na nakatayo sa walang katapusang mahabang riles sa kawalan ng alitan. Sa una, ito ay nasa pahinga sa posisyon 0, ngunit sa ilalim ng impluwensya ng mga random na kadahilanan ito ay napapailalim sa random acceleration. Sinusukat namin ang posisyon ng troli bawat ∆ t segundo, ngunit ang mga sukat ay hindi tumpak. Gusto naming makakuha ng mga pagtatantya ng posisyon ng troli at ang bilis nito. Ilapat natin ang filter ng Kalman sa problemang ito at tukuyin ang lahat ng kinakailangang matrice.

Sa problemang ito ang mga matrices F , H , R At Q huwag umasa sa oras, aalisin natin ang kanilang mga indeks. Bilang karagdagan, hindi namin kontrolin ang troli, kaya ang control matrix B wala.

Ang mga coordinate at bilis ng troli ay inilalarawan ng isang vector sa linear state space

nasaan ang bilis (ang unang derivative ng coordinate na may paggalang sa oras).

Ipagpalagay natin na sa pagitan ng ( k−1)ika at k sa th cycle ang troli ay gumagalaw na may patuloy na pagbilis isang k, ibinahagi ayon sa normal na batas na may zero mathematical expectation at standard deviation σ a. Alinsunod sa Newtonian mechanics, maaari tayong sumulat

.

Covariance matrix ng mga random na epekto

(σ a- scalar).

Sa bawat hakbang ng trabaho, sinusukat ang posisyon ng troli. Ipagpalagay natin na ang error sa pagsukat vk may normal na pamamahagi na may zero mathematical expectation at standard deviation σ z. Pagkatapos

at ang covariance matrix ng observation noise ay may anyo

.

Panimulang posisyon siguradong kilala ang mga troli

, .

Kung ang posisyon at bilis ng troli ay kilala lamang nang humigit-kumulang, kung gayon ang dispersion matrix ay maaaring masimulan nang sapat. isang malaking bilang L, upang ang bilang ay lumampas sa pagkakaiba-iba ng mga sukat ng coordinate

, .

Sa kasong ito, sa mga unang cycle ng operasyon, gagamitin ng filter ang mga resulta ng pagsukat na may mas malaking timbang kaysa sa available na a priori na impormasyon.

Pagkuha ng mga formula

Covariance matrix ng pagtatantya ng vector ng estado

Sa pamamagitan ng kahulugan ng covariance matrix P k|k

palitan ang expression upang matantya ang vector ng estado

at isulat ang expression para sa error vector

at mga vector ng pagsukat

kinuha namin ang vector ng error sa pagsukat v k

dahil ang vector ng error sa pagsukat v k ay hindi nauugnay sa iba pang mga argumento, nakuha namin ang expression

alinsunod sa mga katangian ng vector covariance expression na ito na-convert sa form

pinapalitan ang expression para sa state vector extrapolation covariance matrix na may P k|k−1 at pagpapasiya ng covariance matrix ng pagmamasid ingay sa R k, nakukuha namin

Ang resultang expression ay wasto para sa isang arbitrary coefficient matrix, ngunit kung ito ay isang Kalman optimal coefficient matrix, kung gayon ang expression na ito para sa covariance matrix ay maaaring gawing simple.

Pinakamainam na Gain Matrix

Pinaliit ng filter ng Kalman ang kabuuan ng mga parisukat ng mga inaasahan sa matematika ng mga error sa pagtatantya ng vector ng estado.

Vektor ng error sa pagtatantya ng vector ng estado

Ang gawain ay upang mabawasan ang kabuuan ng mga inaasahan sa matematika ng mga parisukat ng mga bahagi ng isang naibigay na vector

,

na katumbas ng pagliit ng bakas ng covariance matrix ng pagtatantya ng vector ng estado P k|k. Palitan natin ang mga umiiral na expression sa expression para sa covariance matrix ng pagtatantya ng vector ng estado at kumpletuhin ito sa isang kumpletong parisukat:

Tandaan na ang huling termino ay ang covariance matrix ng ilang random na variable, kaya ang bakas nito ay hindi negatibo. Ang minimum na bakas ay makakamit kapag ang huling termino ay nakatakda sa zero:

Nakasaad na ibinigay na matrix ay ang ninanais at, kapag ginamit bilang isang matrix ng mga coefficient sa Kalman filter, pinapaliit ang kabuuan ng mga mean squared error sa pagtatantya ng state vector.

Covariance matrix ng state vector estimation gamit ang pinakamainam na coefficient matrix

Expression para sa covariance matrix ng pagtatantya ng vector ng estado P k|k kapag ginagamit ang pinakamainam na coefficient matrix ay kukuha ng anyo:

Ang formula na ito ay mas simple sa computation at samakatuwid ay halos palaging ginagamit sa pagsasanay, ngunit ito ay tama lamang kapag gumagamit ng pinakamainam na coefficient matrix. Kung, dahil sa mababang katumpakan ng computational, lumitaw ang isang problema sa katatagan ng computational, o kung ang isang coefficient matrix ay partikular na ginagamit na naiiba sa pinakamainam, dapat mong gamitin pangkalahatang pormula para sa covariance matrix ng pagtatantya ng vector ng estado.

Pagpuna sa filter ng Kalman

Naka-on kasalukuyang sandali Ang pangunahing pagpuna sa filter ng Kalman ay isinasagawa sa mga sumusunod na lugar

Ang Random Forest ay isa sa aking mga paboritong algorithm data mining. Una, ito ay hindi kapani-paniwalang maraming nalalaman; Maghanap ng mga anomalya at pumili ng mga predictor. Pangalawa, ito ay isang algorithm na talagang mahirap ilapat nang hindi tama. Dahil lang, hindi tulad ng iba pang mga algorithm, mayroon itong kaunting mga nako-customize na parameter. At ito rin ay nakakagulat na simple sa kakanyahan nito. At sa parehong oras, ito ay nailalarawan sa pamamagitan ng kamangha-manghang katumpakan.

Ano ang ideya sa likod ng napakagandang algorithm? Ang ideya ay simple: sabihin nating mayroon tayong napakahinang algorithm, sabihin nating . Kung marami tayong gagawin iba't ibang modelo gamit ang mahinang algorithm na ito at pag-average ng resulta ng kanilang mga hula, ang huling resulta ay magiging mas mahusay. Ito ang tinatawag na ensemble learning in action. Ang algorithm ng Random Forest ay tinatawag na "Random Forest" para sa natanggap na data, lumilikha ito ng maraming mga puno ng desisyon at pagkatapos ay i-average ang resulta ng kanilang mga hula. Isang mahalagang punto Mayroong elemento ng pagkakataon sa paglikha ng bawat puno. Pagkatapos ng lahat, ito ay malinaw na kung lumikha tayo ng maraming magkatulad na mga puno, kung gayon ang resulta ng kanilang pag-average ay magkakaroon ng katumpakan ng isang puno.

Paano ito gumagana? Ipagpalagay natin na mayroon tayong ilang input data. Ang bawat column ay tumutugma sa ilang parameter, bawat row ay tumutugma sa ilang elemento ng data.

Maaari tayong random na pumili ng isang tiyak na bilang ng mga column at row mula sa buong set ng data at bumuo ng decision tree batay sa mga ito.


Huwebes, Mayo 10, 2012

Huwebes, Enero 12, 2012


Iyon lang. Tapos na ang 17-hour flight, nananatili sa ibang bansa ang Russia. At sa bintana ng maaliwalas na 2-bedroom apartment, tinitingnan kami ng San Francisco, ang sikat na Silicon Valley, California, USA. Oo, ito ang mismong dahilan kung bakit halos hindi ako nagsulat kani-kanina lang. Lumipat na kami.

Nagsimula ang lahat noong Abril 2011 nang magkaroon ako ng panayam sa telepono kay Zynga. Pagkatapos ang lahat ay tila isang uri ng laro na walang kaugnayan sa katotohanan at hindi ko maisip kung ano ang hahantong sa. Noong Hunyo 2011, dumating si Zynga sa Moscow at nagsagawa ng isang serye ng mga panayam, humigit-kumulang 60 na kandidato na nakapasa sa isang panayam sa telepono ay isinasaalang-alang at humigit-kumulang 15 tao ang napili mula sa kanila (hindi ko alam ang eksaktong numero, ang ilan ay nagbago ng kanilang isip, ang iba pa agad na tumanggi). Ang panayam ay naging nakakagulat na simple. Walang mga problema sa programming, walang nakakalito na tanong tungkol sa hugis ng mga hatch, kadalasang sinusubok ang iyong kakayahang makipag-chat. At ang kaalaman, sa aking palagay, ay nasuri lamang nang mababaw.

At pagkatapos ay nagsimula ang rigmarole. Una naming hinintay ang mga resulta, pagkatapos ay ang alok, pagkatapos ay ang pag-apruba ng LCA, pagkatapos ay ang pag-apruba ng petisyon ng visa, pagkatapos ay mga dokumento mula sa USA, pagkatapos ay ang pila sa embahada, ​​tapos karagdagang tseke, pagkatapos ay isang visa. Sa mga oras na tila sa akin ay handa akong isuko ang lahat at umiskor. Sa mga oras na nagdududa ako kung kailangan ba natin itong Amerika, pagkatapos ng lahat, ang Russia ay hindi rin masama. Ang buong proseso ay tumagal ng halos anim na buwan, sa huli, noong kalagitnaan ng Disyembre ay nakatanggap kami ng mga visa at nagsimulang maghanda para sa pag-alis.

Lunes ang unang araw ng trabaho ko sa bagong lugar. Ang opisina ay may lahat ng mga kondisyon para hindi lamang sa pagtatrabaho, kundi pati na rin sa pamumuhay. Mga almusal, tanghalian at hapunan mula sa sarili nating mga chef, maraming sari-saring pagkain na pinalamanan sa bawat sulok, gym, masahe at kahit hairdresser. Ang lahat ng ito ay ganap na libre para sa mga empleyado. Maraming tao ang nagbi-commute papunta sa trabaho sakay ng bisikleta, at maraming kuwarto ang nilagyan ng mga sasakyan. Sa pangkalahatan, hindi pa ako nakakita ng ganito sa Russia. Gayunpaman, ang lahat ay may sariling presyo; Kung ano ang "maraming", ayon sa kanilang mga pamantayan, ay hindi masyadong malinaw sa akin.

Umaasa ako, gayunpaman, na sa kabila ng dami ng trabaho, sa nakikinita na hinaharap ay maipagpapatuloy ko ang pag-blog at, marahil, magkuwento ng isang bagay tungkol sa buhay Amerikano at pagtatrabaho bilang isang programmer sa Amerika. Maghintay at tingnan. Samantala, binabati ko ang lahat ng Manigong Bagong Taon at Pasko at magkita-kita tayong muli!


Para sa isang halimbawa ng paggamit, i-print natin ang ani ng dibidendo Mga kumpanyang Ruso. Bilang batayang presyo, kinukuha namin ang pagsasara ng presyo ng stock sa araw na isinara ang rehistro. Para sa ilang kadahilanan, ang impormasyong ito ay wala sa website ng Troika, ngunit ito ay mas kawili-wili kaysa sa ganap na mga halaga mga dibidendo.
Pansin! Ang code ay tumatagal ng medyo mahabang oras upang maisagawa, dahil... Para sa bawat promosyon kailangan mong humiling sa mga server ng finam at makuha ang halaga nito.

Resulta<- NULL for(i in (1:length(divs[,1]))){ d <- divs if (d$Divs>0)( subukan(( quotes<- getSymbols(d$Symbol, src="Finam", from="2010-01-01", auto.assign=FALSE) if (!is.nan(quotes)){ price <- Cl(quotes) if (length(price)>0)(dd<- d$Divs result <- rbind(result, data.frame(d$Symbol, d$Name, d$RegistryDate, as.numeric(dd)/as.numeric(price), stringsAsFactors=FALSE)) } } }, silent=TRUE) } } colnames(result) <- c("Symbol", "Name", "RegistryDate", "Divs") result


Katulad nito, maaari kang bumuo ng mga istatistika para sa mga nakaraang taon.

Sa Internet, kasama ang Habré, makakahanap ka ng maraming impormasyon tungkol sa filter ng Kalman. Ngunit mahirap makahanap ng madaling natutunaw na konklusyon sa mga formula mismo. Kung walang konklusyon, ang buong agham na ito ay itinuturing na isang uri ng shamanismo, ang mga formula ay mukhang isang walang mukha na hanay ng mga simbolo, at higit sa lahat, maraming mga simpleng pahayag na namamalagi sa ibabaw ng teorya ay hindi maunawaan. Ang layunin ng artikulong ito ay pag-usapan ang filter na ito sa isang wikang madaling ma-access hangga't maaari.
Ang Kalman filter ay isang mahusay na tool sa pag-filter ng data. Ang pangunahing prinsipyo nito ay ang pagsasala ay gumagamit ng impormasyon tungkol sa pisika ng kababalaghan mismo. Sabihin nating, kung mag-filter ka ng data mula sa speedometer ng kotse, ang inertia ng kotse ay nagbibigay sa iyo ng karapatang madama ang masyadong mabilis na paglukso sa bilis bilang isang error sa pagsukat. Ang filter ng Kalman ay kawili-wili dahil, sa isang kahulugan, ito ang pinakamahusay na filter. Tatalakayin natin nang mas detalyado sa ibaba kung ano ang eksaktong ibig sabihin ng mga salitang "ang pinakamahusay". Sa dulo ng artikulo ay ipapakita ko na sa maraming mga kaso ang mga formula ay maaaring gawing simple sa isang lawak na halos wala nang natitira sa kanila.

Programang pang-edukasyon

Bago makilala ang filter ng Kalman, iminumungkahi ko na alalahanin ang ilang mga simpleng kahulugan at katotohanan mula sa teorya ng posibilidad.

Random na variable

Kapag sinabi nila na ang isang random na variable ay ibinigay, ang ibig nilang sabihin ay ang halagang ito ay maaaring kumuha ng mga random na halaga. Ito ay tumatagal sa iba't ibang mga halaga na may iba't ibang mga probabilidad. Kapag gumulong ka, sabihin nating, isang die, isang discrete set of values ​​ang lalabas: . Kapag pinag-uusapan natin, halimbawa, ang tungkol sa bilis ng isang gumagala na butil, kung gayon, malinaw naman, kailangan nating harapin ang isang tuluy-tuloy na hanay ng mga halaga. Ipapahiwatig namin ang mga "na-drop out" na mga halaga ng isang random na variable sa pamamagitan ng , ngunit kung minsan ay gagamitin namin ang parehong titik kung saan tinutukoy namin ang random na variable: .
Sa kaso ng isang tuluy-tuloy na hanay ng mga halaga, ang isang random na variable ay nailalarawan sa pamamagitan ng isang probability density, na nagdidikta sa amin na ang posibilidad na ang isang random na variable ay "mahulog" sa isang maliit na kapitbahayan ng isang punto ng haba ay katumbas ng . Tulad ng nakikita natin mula sa larawan, ang posibilidad na ito ay katumbas ng lugar ng may kulay na rektanggulo sa ilalim ng graph:

Kadalasan sa buhay, ang mga random na variable ay ipinamahagi ng Gaussian kapag ang probability density ay katumbas ng .

Nakikita namin na ang function ay may hugis ng isang kampana na may sentro sa isang punto at isang katangian na lapad ng pagkakasunod-sunod.
Dahil pinag-uusapan natin ang pamamahagi ng Gaussian, nakakahiyang hindi banggitin kung saan ito nanggaling. Kung paanong ang mga numero ay matatag na itinatag sa matematika at matatagpuan sa mga hindi inaasahang lugar, ang distribusyon ng Gaussian ay nagkaroon ng malalim na ugat sa teorya ng probabilidad. Ang isang kahanga-hangang pahayag na bahagyang nagpapaliwanag ng Gaussian omnipresence ay ito:
Hayaang magkaroon ng random variable na may arbitrary distribution (sa katunayan, may ilang mga paghihigpit sa arbitrariness na ito, ngunit hindi sila mahigpit). Magsagawa tayo ng mga eksperimento at kalkulahin ang kabuuan ng mga "na-drop out" na mga halaga ng isang random na variable. Gumawa tayo ng maraming ganitong mga eksperimento. Malinaw na sa bawat oras na makakatanggap kami ng ibang halaga ng halaga. Sa madaling salita, ang halagang ito mismo ay isang random na variable na may sarili nitong partikular na batas sa pamamahagi. Lumalabas na kapag sapat na ang laki, ang batas ng pamamahagi ng kabuuan na ito ay may posibilidad na pamamahagi ng Gaussian (sa pamamagitan ng paraan, ang lapad ng katangian ng "kampanilya" ay lumalaki bilang ). Nabasa namin nang mas detalyado sa Wikipedia: central limit theorem. Sa buhay, napakadalas na may mga dami na kabuuan ng isang malaking bilang ng mga identically distributed independent random variables, at samakatuwid sila ay Gaussian distributed.

Average na halaga

Ang average na halaga ng isang random na variable ay ang makukuha natin sa limitasyon kung magsasagawa tayo ng maraming eksperimento at kakalkulahin ang arithmetic mean ng mga bumabang halaga. Ang average na halaga ay tinutukoy sa iba't ibang paraan: ang mga mathematician ay gustong tukuyin ito sa pamamagitan ng (mathematical expectation), at ang mga dayuhang mathematician sa pamamagitan ng (expectation). Mga pisiko sa pamamagitan ng o. Itatalaga namin ito sa ibang paraan: .
Halimbawa, para sa isang Gaussian distribution, ang ibig sabihin ay .

Pagpapakalat

Sa kaso ng distribusyon ng Gaussian, malinaw nating nakikita na ang random na variable ay mas pinipiling mahulog sa isang tiyak na kapitbahayan ng ibig sabihin ng halaga nito. Tulad ng makikita mula sa graph, ang katangian ng pagkalat ng mga halaga ay nasa pagkakasunud-sunod ng . Paano natin matantya ang pagkalat na ito ng mga halaga para sa isang arbitrary na random na variable kung alam natin ang pamamahagi nito? Maaari kang gumuhit ng isang graph ng density ng posibilidad nito at tantyahin ang lapad ng katangian ayon sa mata. Ngunit mas gusto naming pumunta sa algebraic na ruta. Maaari mong mahanap ang average na haba ng deviation (modulus) mula sa average na halaga: . Ang halagang ito ay magiging isang mahusay na pagtatantya ng katangian ng pagkalat ng mga halaga. Ngunit alam na alam mo at ko na ang paggamit ng mga module sa mga formula ay nakakasakit ng ulo, kaya ang formula na ito ay bihirang ginagamit upang tantyahin ang katangian ng scatter.
Ang isang mas simpleng paraan (simple sa mga tuntunin ng mga kalkulasyon) ay upang mahanap . Ang dami na ito ay tinatawag na dispersion, at kadalasang tinutukoy bilang . Ang ugat ng variance ay tinatawag na standard deviation. Ang standard deviation ay isang magandang pagtatantya ng pagkalat ng isang random variable.
Halimbawa, para sa distribusyon ng Gaussian, maaari nating kalkulahin na ang variance na tinukoy sa itaas ay eksaktong katumbas ng , na nangangahulugang ang standard deviation ay katumbas ng , na napakahusay na sumasang-ayon sa ating geometric intuition.
Sa katunayan, mayroong isang maliit na scam na nakatago dito. Ang katotohanan ay sa kahulugan ng pamamahagi ng Gaussian, sa ilalim ng exponent mayroong isang expression. Ang dalawang ito ay nasa denominator nang eksakto upang ang karaniwang paglihis ay magiging katumbas ng koepisyent. Iyon ay, ang Gaussian distribution formula mismo ay nakasulat sa isang form na espesyal na iniayon upang makalkula natin ang standard deviation nito.

Mga independiyenteng random na variable

Ang mga random na variable ay maaaring umasa o hindi. Isipin ang paghahagis ng karayom ​​sa isang eroplano at i-record ang mga coordinate ng magkabilang dulo. Ang dalawang coordinate na ito ay nakasalalay; ang mga ito ay nauugnay sa kondisyon na ang distansya sa pagitan ng mga ito ay palaging katumbas ng haba ng karayom, bagaman sila ay mga random na variable.
Ang mga random na variable ay independyente kung ang resulta ng una ay ganap na independiyente sa resulta ng pangalawa. Kung ang mga random na variable ay independyente, kung gayon ang average na halaga ng kanilang produkto ay katumbas ng produkto ng kanilang mga average na halaga:

Patunay

Halimbawa, ang pagkakaroon ng asul na mga mata at pagtatapos sa paaralan na may gintong medalya ay mga independent random variable. Kung ang mga asul na mata, sabihin, ang mga gold medalist, pagkatapos ay ang mga asul na mata na mga medalist ay nagsasabi sa amin na kung ang mga random na variable ay ibinibigay sa pamamagitan ng kanilang probability density at , kung gayon ang kalayaan ng mga halagang ito ay ipinahayag sa katotohanan na ang probability density (. ang unang halaga ay bumaba at ang pangalawa) ay matatagpuan sa pamamagitan ng formula:

Kaagad na sumusunod mula dito na:

Tulad ng nakikita mo, ang patunay ay isinagawa para sa mga random na variable na may tuluy-tuloy na spectrum ng mga halaga at tinukoy ng kanilang probability density. Sa ibang mga kaso, ang ideya ng patunay ay magkatulad.

Pahayag ng problema

Tukuyin natin ang halaga na ating susukatin at pagkatapos ay i-filter. Ito ay maaaring posisyon, bilis, acceleration, halumigmig, antas ng baho, temperatura, presyon, atbp.
Magsimula tayo sa isang simpleng halimbawa, na magdadala sa atin sa pagbabalangkas ng pangkalahatang problema. Isipin na mayroon kaming isang radio-controlled na kotse na maaari lamang pumunta pasulong at paatras. Kami, alam ang bigat ng kotse, hugis, ibabaw ng kalsada, atbp., Kinakalkula kung paano nakakaapekto ang control joystick sa bilis ng paggalaw.


Pagkatapos ang mga coordinate ng kotse ay magbabago ayon sa batas:

Sa totoong buhay, hindi namin maaaring isaalang-alang sa aming mga kalkulasyon ang mga maliliit na kaguluhan na kumikilos sa kotse (hangin, bumps, pebbles sa kalsada), kaya ang tunay na bilis ng kotse ay mag-iiba mula sa kinakalkula. Ang isang random na variable ay idadagdag sa kanang bahagi ng nakasulat na equation:

Mayroon kaming GPS sensor na naka-install sa kotse na sumusubok na sukatin ang tunay na coordinate ng kotse, at, siyempre, hindi ito tumpak na masukat, ngunit sinusukat ito nang may error, na isa ring random na variable. Bilang resulta, nakakatanggap kami ng maling data mula sa sensor:

Ang gawain ay na, alam ang hindi tamang pagbabasa ng sensor, makahanap ng isang mahusay na approximation para sa tunay na coordinate ng kotse.
Sa pagbubuo ng pangkalahatang problema, ang anumang bagay ay maaaring maging responsable para sa coordinate (temperatura, halumigmig...), at tutukuyin namin ang miyembro na responsable para sa pagkontrol sa system mula sa labas bilang (sa halimbawa sa makina). Ang mga equation para sa mga coordinate at pagbabasa ng sensor ay magiging ganito:

(1)

Talakayin natin nang detalyado ang alam natin:

Magiging kapaki-pakinabang na tandaan na ang gawain sa pag-filter ay hindi isang gawain sa pagpapakinis. Hindi namin sinusubukang pakinisin ang data ng sensor, sinusubukan naming makuha ang pinakamalapit na halaga sa totoong coordinate.

Kalman algorithm

Magtatalo kami sa pamamagitan ng induction. Isipin na sa ika-hakbang ay nakahanap na kami ng na-filter na halaga mula sa sensor na mahusay na tinatantya ang tunay na coordinate ng system. Huwag kalimutan na alam natin ang equation na kumokontrol sa pagbabago sa hindi kilalang coordinate:

Samakatuwid, nang hindi pa natatanggap ang halaga mula sa sensor, maaari nating ipagpalagay na sa hakbang ang sistema ay magbabago ayon sa batas na ito at ang sensor ay magpapakita ng isang bagay na malapit sa . Sa kasamaang palad, wala pa kaming masasabing mas tumpak. Sa kabilang banda, sa panahon ng hakbang magkakaroon tayo ng hindi tumpak na pagbabasa ng sensor sa ating mga kamay.
Ang ideya ni Kalman ay ang mga sumusunod. Upang makuha ang pinakamahusay na approximation sa totoong coordinate, dapat tayong pumili ng gitna sa pagitan ng hindi tumpak na pagbabasa ng sensor at ang ating hula sa kung ano ang inaasahan nating makita nito. Bibigyan namin ng timbang ang pagbabasa ng sensor at mananatili ang timbang sa hinulaang halaga:

Ang coefficient ay tinatawag na Kalman coefficient. Depende ito sa hakbang ng pag-ulit, kaya mas tama ang pagsulat , ngunit sa ngayon, upang hindi magulo ang mga formula ng pagkalkula, aalisin natin ang index nito.
Dapat nating piliin ang koepisyent ng Kalman upang ang resultang pinakamainam na halaga ng coordinate ay pinakamalapit sa tunay. Halimbawa, kung alam namin na ang aming sensor ay napaka-tumpak, pagkatapos ay mas pagtitiwalaan namin ang pagbabasa nito at bigyan ang halaga ng mas timbang (malapit sa isa). Kung ang sensor, sa kabaligtaran, ay hindi tumpak, kung gayon mas tututuon natin ang teoretikal na hinulaang halaga.
Sa pangkalahatan, upang mahanap ang eksaktong halaga ng koepisyent ng Kalman, kailangan mo lamang i-minimize ang error:

Gumagamit kami ng mga equation (1) (yung nasa asul na background sa frame) upang muling isulat ang expression para sa error:

Patunay

Ngayon na ang oras para talakayin kung ano ang ibig sabihin ng expression na minimize error? Pagkatapos ng lahat, ang error, tulad ng nakikita natin, ay isang random na variable at tumatagal ng iba't ibang mga halaga sa bawat oras. Talagang walang one-size-fits-all na diskarte sa pagtukoy kung ano ang ibig sabihin ng pagkakaroon ng kaunting error. Tulad ng sa kaso ng pagpapakalat ng isang random na variable, kapag sinubukan naming tantyahin ang katangian ng lapad ng pagpapakalat nito, dito namin pipiliin ang pinakasimpleng criterion para sa mga kalkulasyon. I-minimize namin ang ibig sabihin ng squared error:

Isulat natin ang huling expression:

Patunay

Mula sa katotohanan na ang lahat ng mga random na variable na kasama sa expression para sa ay independyente, sumusunod na ang lahat ng mga terminong "krus" ay katumbas ng zero:

Ginamit namin ang katotohanan na , kung gayon ang formula para sa pagkakaiba ay mukhang mas simple: .

Ang expression na ito ay tumatagal ng isang minimum na halaga kapag (itinutumbas natin ang derivative sa zero):

Dito ay sumusulat na kami ng isang expression para sa Kalman coefficient na may index ng hakbang, sa gayon ay binibigyang-diin namin na ito ay nakasalalay sa hakbang ng pag-ulit.
Pinapalitan namin ang nagresultang pinakamainam na halaga sa expression para sa , na binawasan namin. Nakukuha namin;

Ang aming problema ay nalutas. Nakakuha kami ng isang umuulit na formula para sa pagkalkula ng koepisyent ng Kalman.
Ibuod natin ang ating nakuhang kaalaman sa isang frame:


Halimbawa

Matlab code

I-clear ang lahat; N=100% bilang ng mga sample a=0.1% acceleration sigmaPsi=1 sigmaEta=50; k=1:N x=k x(1)=0 z(1)=x(1)+normrnd(0,sigmaEta); para sa t=1:(N-1) x(t+1)=x(t)+a*t+normrnd(0,sigmaPsi);

z(t+1)=x(t+1)+normrnd(0,sigmaEta); wakas; %kalman filter xOpt(1)=z(1); eOpt(1)=sigmaEta; para sa t=1:(N-1) eOpt(t+1)=sqrt((sigmaEta^2)*(eOpt(t)^2+sigmaPsi^2)/(sigmaEta^2+eOpt(t)^2+ sigmaPsi^2)) K(t+1)=(eOpt(t+1))^2/sigmaEta^2 xOpt(t+1)=(xOpt(t)+a*t)*(1-K(t +1))+K(t+1)*z(t+1) dulo; plot(k,xOpt,k,z,k,x)

Pagsusuri


Kung masusubaybayan mo kung paano nagbabago ang koepisyent ng Kalman sa mga hakbang sa pag-ulit, maaari mong ipakita na palagi itong nagpapatatag sa isang tiyak na halaga. Halimbawa, kapag ang root mean square error ng sensor at ang modelo ay may ratio na sampu sa isa, ang graph ng Kalman coefficient depende sa iteration step ay ganito ang hitsura:

Sa sumusunod na halimbawa, tatalakayin natin kung paano nito mapapadali ang ating buhay.

Pangalawang halimbawa

Ngunit, tapat na pagsasalita, ang ganitong sistema ay hindi na nakakatugon sa mga kundisyon na ipinataw namin sa random variable, dahil ngayon ang lahat ng hindi kilalang pisika ng paggalaw ay nakatago doon, at samakatuwid ay hindi namin masasabi na sa iba't ibang mga sandali ng oras ang mga error sa modelo ay independyente sa isa't isa at ang kanilang mga average na halaga ay zero. Sa kasong ito, sa pangkalahatan, ang teorya ng filter ng Kalman ay hindi naaangkop. Ngunit, hindi namin bibigyan ng pansin ang katotohanang ito, ngunit stupidly ilapat ang lahat ng napakalaki ng mga formula, pagpili ng mga coefficient sa pamamagitan ng mata, upang ang na-filter na data ay mukhang maganda pare-pareho. Ang pag-aakalang ito ay halos wala nang masisira. Una, iligal na nating ginagamit ang teorya ng Kalman, at pangalawa, ang koepisyent ng Kalman ay mabilis na nagpapatatag sa isang pare-pareho. Sa huli, ang lahat ay magiging mas simple. Hindi namin kailangan ng anumang mga formula mula sa teorya ni Kalman, kailangan lang naming pumili ng isang katanggap-tanggap na halaga at ipasok ito sa umuulit na formula:

Ipinapakita ng sumusunod na graph ang data na na-filter sa dalawang magkaibang paraan mula sa isang fictitious sensor. Sa kondisyon na wala tayong alam tungkol sa physics ng phenomenon. Ang unang paraan ay tapat, kasama ang lahat ng mga pormula mula sa teorya ni Kalman. At ang pangalawa ay pinasimple, nang walang mga formula.


Tulad ng nakikita natin, ang mga pamamaraan ay halos hindi naiiba. Ang isang maliit na pagkakaiba ay sinusunod lamang sa simula, kapag ang koepisyent ng Kalman ay hindi pa nagpapatatag.

Pagtalakay

Tulad ng nakita natin, ang pangunahing ideya ng filter ng Kalman ay upang makahanap ng tulad ng isang koepisyent na, sa turn, isang linear function ng pagbabasa ng sensor at ang nakaraang na-filter na halaga. At iba pa hanggang sa tuluyang maiikot ang kadena. Iyon ay, ang na-filter na halaga ay nakasalalay sa lahat mga nakaraang pagbabasa ng sensor nang linear:

Samakatuwid, ang Kalman filter ay tinatawag na linear filter.
Mapapatunayan na sa lahat ng mga linear na filter, ang Kalman filter ang pinakamahusay. Ang pinakamahusay sa kahulugan na ang average na squared error ng filter ay minimal.

Multidimensional na kaso

Ang buong teorya ng Kalman filter ay maaaring gawing pangkalahatan sa multidimensional na kaso. Ang mga formula doon ay mukhang medyo nakakatakot, ngunit ang ideya ng pagkuha ng mga ito ay kapareho ng sa one-dimensional na kaso. Maaari mong makita ang mga ito sa kahanga-hangang artikulong ito: http://habrahabr.ru/post/140274/.
At sa kahanga-hangang ito video Isang halimbawa kung paano gamitin ang mga ito ay ibinigay.