Օգտագործելով Kalman ֆիլտրը տվիչներից ստացված արժեքները զտելու համար: Kalman ֆիլտրում Օպտիմալ Kalman ֆիլտր

Ինտերնետում, ներառյալ Habré-ն, կարող եք շատ տեղեկություններ գտնել Kalman ֆիլտրի մասին: Բայց դժվար է գտնել հենց իրենց բանաձևերի դյուրամարս ածանցյալը: Առանց եզրակացության, այս ամբողջ գիտությունը ընկալվում է որպես մի տեսակ շամանիզմ, բանաձևերը նման են խորհրդանիշների անդեմ հավաքածուի, և ամենակարևորը, շատ պարզ հայտարարություններ, որոնք ընկած են տեսության մակերեսին, հասկանալի չէ: Այս հոդվածի նպատակը կլինի խոսել այս ֆիլտրի մասին առավել մատչելի լեզվով:
Kalman ֆիլտրը տվյալների զտման հզոր գործիք է: Դրա հիմնական սկզբունքն այն է, որ զտելիս օգտագործվում է բուն երեւույթի ֆիզիկայի մասին տեղեկատվությունը։ Ենթադրենք, եթե դուք տվյալները զտում եք մեքենայի արագաչափից, ապա մեքենայի իներցիան ձեզ իրավունք է տալիս արագության չափազանց արագ թռիչքները որպես չափման սխալ ընկալել։ Կալմանի ֆիլտրը հետաքրքիր է, քանի որ որոշ իմաստով այն լավագույն զտիչն է: Թե կոնկրետ ինչ են նշանակում «լավագույն» բառերը, մենք ավելի մանրամասն կքննարկենք ստորև: Հոդվածի վերջում ես ցույց կտամ, որ շատ դեպքերում բանաձևերը կարելի է այնքան պարզեցնել, որ դրանցից գրեթե ոչինչ չմնա։

Լիքբեզ

Նախքան Կալմանի ֆիլտրին ծանոթանալը, ես առաջարկում եմ հիշել մի քանի պարզ սահմանումներ և փաստեր հավանականության տեսությունից։

Պատահական արժեք

Երբ ասում են, որ տրված է պատահական արժեք, նկատի ունեն, որ այդ արժեքը կարող է պատահական արժեքներ վերցնել: Այն ընդունում է տարբեր արժեքներ՝ տարբեր հավանականություններով: Երբ գցեք, ասենք, մեռնոց, արժեքների մի առանձին խումբ դուրս կգա. Երբ խոսքը, օրինակ, թափառող մասնիկի արագության մասին է, ապա, ակնհայտորեն, պետք է գործ ունենալ արժեքների շարունակական շարքի հետ: Պատահական փոփոխականի «դուրս եկած» արժեքները կնշանակվեն , բայց երբեմն մենք կօգտագործենք նույն տառը, որը նշանակում է պատահական փոփոխական.
Արժեքների շարունակական բազմության դեպքում պատահական փոփոխականը բնութագրվում է հավանականության խտությամբ, որը մեզ թելադրում է, որ հավանականությունը, որ պատահական փոփոխականը «ընկնի» երկարության կետի փոքր հարևանությամբ, հավասար է . Ինչպես տեսնում ենք նկարից, այս հավանականությունը հավասար է գրաֆիկի տակ գտնվող ստվերային ուղղանկյունի մակերեսին.

Շատ հաճախ կյանքում պատահական փոփոխականները բաշխվում են ըստ Գաուսի, երբ հավանականության խտությունը .

Մենք տեսնում ենք, որ ֆունկցիան ունի զանգի ձև, որը կենտրոնացած է մի կետի վրա և ի կարգի բնորոշ լայնությամբ:
Քանի որ խոսքը Գաուսի բաշխման մասին է, մեղք կլինի չասել, թե որտեղից է այն եկել։ Ինչպես թվերը ամուր են հաստատված մաթեմատիկայում և հայտնվում են ամենաանսպասելի վայրերում, այնպես էլ Գաուսի բաշխումը խոր արմատներ է գցել հավանականությունների տեսության մեջ: Մեկ ուշագրավ հայտարարություն, որը մասամբ բացատրում է Գաուսի ամենուր ներկայությունը, հետևյալն է.
Թող լինի պատահական փոփոխական, որն ունի կամայական բաշխում (իրականում կան որոշակի սահմանափակումներ այս կամայականության համար, բայց դրանք ամենևին էլ կոշտ չեն): Եկեք փորձեր կատարենք և հաշվարկենք պատահական փոփոխականի «դուրս եկած» արժեքների գումարը։ Եկեք այս փորձերից շատ անենք: Հասկանալի է, որ ամեն անգամ մենք կստանանք գումարի տարբեր արժեք։ Այլ կերպ ասած, այս գումարն ինքնին պատահական փոփոխական է՝ իր որոշակի բաշխման օրենքով: Ստացվում է, որ բավական մեծի դեպքում այս գումարի բաշխման օրենքը հակված է Գաուսի բաշխմանը (ի դեպ, «զանգի» բնորոշ լայնությունը աճում է որպես ): Կարդալ ավելին Վիքիպեդիայում՝ կենտրոնական սահմանային թեորեմ։ Կյանքում շատ հաճախ լինում են մեծություններ, որոնք կազմված են մեծ թվով հավասարապես բաշխված անկախ պատահական փոփոխականներից և, հետևաբար, բաշխվում են ըստ Գաուսի։

Նշանակում է

Պատահական փոփոխականի միջին արժեքն այն է, ինչ մենք ստանում ենք սահմանում, եթե մենք բազմաթիվ փորձեր ենք կատարում և հաշվում ենք բաց թողնված արժեքների միջին թվաբանականը: Միջին արժեքը նշվում է տարբեր կերպ՝ մաթեմատիկոսները սիրում են նշել (ակնկալիքով), իսկ օտարերկրյա մաթեմատիկոսները՝ (ակնկալիքով): Ֆիզիկա նույն միջոցով կամ. Մենք օտար ձեւով կնշանակենք.
Օրինակ, Գաուսի բաշխման համար միջինը .

Ցրվածություն

Գաուսի բաշխման դեպքում մենք կարող ենք հստակ տեսնել, որ պատահական փոփոխականը նախընտրում է ընկնել իր միջին արժեքի որոշ հարևանությամբ: Ինչպես երևում է գրաֆիկից, պատվերի արժեքների բնորոշ ցրվածությունը . Ինչպե՞ս կարող ենք գնահատել արժեքների այս տարածումը կամայական պատահական փոփոխականի համար, եթե գիտենք դրա բաշխումը: Դուք կարող եք նկարել դրա հավանականության խտության գրաֆիկը և աչքով գնահատել բնորոշ լայնությունը: Բայց մենք նախընտրում ենք գնալ հանրահաշվական ճանապարհով։ Դուք կարող եք գտնել միջին արժեքից շեղման (մոդուլի) միջին երկարությունը՝ . Այս արժեքը կլինի արժեքների բնորոշ տարածման լավ գնահատական: Բայց դուք և ես շատ լավ գիտենք, որ մոդուլների օգտագործումը բանաձևերում գլխացավանք է, ուստի այս բանաձևը հազվադեպ է օգտագործվում բնորոշ տարածումը գնահատելու համար:
Ավելի հեշտ միջոց (հաշվարկների առումով պարզ) գտնելն է: Այս մեծությունը կոչվում է շեղում և հաճախ կոչվում է որպես . Տարբերության արմատը կոչվում է ստանդարտ շեղում: Ստանդարտ շեղումը պատահական փոփոխականի տարածման լավ գնահատական ​​է:
Օրինակ, Գաուսի բաշխման համար մենք կարող ենք ենթադրել, որ վերը նշված շեղումը ճշգրիտ հավասար է , ինչը նշանակում է, որ ստանդարտ շեղումը հավասար է , ինչը շատ լավ համընկնում է մեր երկրաչափական ինտուիցիայի հետ:
Փաստորեն, այստեղ թաքնված է մի փոքրիկ խաբեություն։ Փաստն այն է, որ Գաուսի բաշխման սահմանման մեջ ցուցիչի տակ դրված է արտահայտությունը: Այս երկուսը հայտարարի մեջ հենց այնպես է, որ ստանդարտ շեղումը հավասար լինի գործակցին: Այսինքն, Գաուսի բաշխման բանաձևն ինքնին գրված է հատուկ սրված ձևով այն բանի համար, որ մենք հաշվի կառնենք դրա ստանդարտ շեղումը:

Անկախ պատահական փոփոխականներ

Պատահական փոփոխականները կարող են կախված լինել կամ չլինել: Պատկերացրեք, որ ասեղ եք նետում ինքնաթիռի վրա և գրեք դրա երկու ծայրերի կոորդինատները։ Այս երկու կոորդինատները կախված են, դրանք կապված են պայմանով, որ նրանց միջև հեռավորությունը միշտ հավասար է ասեղի երկարությանը, թեև դրանք պատահական փոփոխականներ են։
Պատահական փոփոխականները անկախ են, եթե առաջինի արդյունքը լիովին անկախ է երկրորդի արդյունքից: Եթե ​​պատահական փոփոխականները անկախ են, ապա դրանց արտադրյալի միջին արժեքը հավասար է նրանց միջին արժեքների արտադրյալին.

Ապացույց

Օրինակ՝ կապույտ աչքեր ունենալը և դպրոցը ոսկե մեդալով ավարտելը անկախ պատահական փոփոխականներ են։ Եթե ​​կապույտ աչքերով, ասենք ոսկե մեդալակիրները, ապա կապույտ աչքերով մեդալակիրներ Այս օրինակը մեզ ասում է, որ եթե պատահական փոփոխականները և տրված են իրենց հավանականության խտությամբ և , ապա այդ մեծությունների անկախությունն արտահայտվում է նրանով, որ հավանականության խտությունը (առաջին արժեքը դուրս է մնացել, իսկ երկրորդը ) գտնում ենք բանաձևով.

Այստեղից անմիջապես հետևում է, որ.

Ինչպես տեսնում եք, ապացույցն իրականացվում է պատահական փոփոխականների համար, որոնք ունեն արժեքների շարունակական սպեկտր և տրված են դրանց հավանականության խտությամբ: Այլ դեպքերում, ապացույցի գաղափարը նման է.

Kalman ֆիլտր

Խնդրի ձևակերպում

Նշեք այն արժեքով, որը մենք կչափենք, այնուհետև կզտենք: Այն կարող է լինել կոորդինատ, արագություն, արագացում, խոնավություն, գարշահոտության աստիճան, ջերմաստիճան, ճնշում և այլն:
Սկսենք պարզ օրինակից, որը մեզ կտանի ընդհանուր խնդրի ձևակերպմանը։ Պատկերացրեք, որ մենք ունենք ռադիոկառավարվող մեքենա, որը կարող է միայն առաջ և հետ գնալ: Մենք, իմանալով մեքենայի քաշը, ձևը, ճանապարհի մակերեսը և այլն, հաշվարկեցինք, թե ինչպես է կառավարող ջոյսթիկն ազդում շարժման արագության վրա։

Այնուհետև մեքենայի կոորդինատը կփոխվի օրենքի համաձայն.

Իրական կյանքում մենք չենք կարող մեր հաշվարկներում հաշվի առնել մեքենայի վրա ազդող փոքր խանգարումները (քամի, բախումներ, խճաքարեր ճանապարհին), ուստի մեքենայի իրական արագությունը կտարբերվի հաշվարկվածից: Գրավոր հավասարման աջ կողմում պատահական փոփոխական է ավելացվում.

Մեքենայի վրա տեղադրված է GPS սենսոր, որը փորձում է չափել մեքենայի իրական կոորդինատը և, իհարկե, չի կարող ճշգրիտ չափել, բայց չափում է սխալմամբ, որը նույնպես պատահական փոփոխական է։ Արդյունքում, մենք սխալ տվյալներ ենք ստանում սենսորից.

Խնդիրն այն է, որ, իմանալով սենսորների սխալ ընթերցումները, գտնում ենք մեքենայի իրական կոորդինատների լավ մոտարկում:
Ընդհանուր խնդրի ձևակերպման մեջ ամեն ինչ կարող է պատասխանատու լինել կոորդինատի համար (ջերմաստիճան, խոնավություն ...), և մենք կնշանակենք համակարգը դրսից կառավարելու համար պատասխանատու տերմինը որպես (մեքենայի օրինակում): Կոորդինատների և սենսորների ընթերցումների հավասարումները այսպիսի տեսք կունենան.

Եկեք մանրամասն քննարկենք այն, ինչ գիտենք.

Օգտակար է նշել, որ զտման խնդիրը հարթեցնող խնդիր չէ: Մենք նպատակ չունենք սենսորից ստացված տվյալները հարթելու համար, մենք նպատակ ունենք ստանալ ամենամոտիկ արժեքը իրական կոորդինատին:

Կալմանի ալգորիթմ

Մենք կպատճառաբանենք ինդուկցիայի միջոցով: Պատկերացրեք, որ -րդ քայլում մենք արդեն գտել ենք սենսորից զտված արժեքը, որը լավ մոտավոր է համակարգի իրական կոորդինատին: Մի մոռացեք, որ մենք գիտենք հավասարումը, որը վերահսկում է անհայտ կոորդինատի փոփոխությունը.

հետևաբար, առանց սենսորից արժեքը դեռ ստանալու, մենք կարող ենք ենթադրել, որ այս քայլին համակարգը զարգանում է այս օրենքի համաձայն, և սենսորը ցույց կտա մոտ ինչ-որ բան: Ցավոք, առայժմ ավելի հստակ բան ասել չենք կարող։ Մյուս կողմից, քայլում մենք կունենանք ոչ ճշգրիտ սենսորային ընթերցում մեր ձեռքերում:
Կալմանի միտքը հետեւյալն է. Ճշմարիտ կոորդինատին լավագույն մոտավորությունը ստանալու համար մենք պետք է միջին հիմք ընտրենք սենսորների ոչ ճշգրիտ ընթերցման և մեր կանխատեսման միջև, թե ինչ ենք ակնկալում տեսնել: Մենք ցուցիչին կտանք կշիռ, և կանխատեսված արժեքը կունենա կշիռ.

Գործակիցը կոչվում է Կալմանի գործակից։ Դա կախված է կրկնության քայլից, ուստի ավելի ճիշտ կլինի գրել , բայց առայժմ, որպեսզի չխեղաթյուրենք հաշվարկի բանաձևերը, մենք բաց կթողնենք դրա ինդեքսը։
Մենք պետք է ընտրենք Կալմանի գործակիցը այնպես, որ ստացված կոորդինատի օպտիմալ արժեքը լինի ամենամոտը իրական արժեքին: Օրինակ, եթե մենք գիտենք, որ մեր սենսորը շատ ճշգրիտ է, ապա մենք ավելի շատ կվստահենք դրա ընթերցմանը և ավելի մեծ կշիռ կտանք (մոտ մեկին): Եթե ​​սենսորը, ընդհակառակը, բոլորովին ճշգրիտ չէ, ապա մենք ավելի շատ կկենտրոնանանք տեսականորեն կանխատեսված արժեքի վրա:
Ընդհանուր առմամբ, Կալմանի գործակցի ճշգրիտ արժեքը գտնելու համար պարզապես անհրաժեշտ է նվազագույնի հասցնել սխալը.

Մենք օգտագործում ենք (1) հավասարումները (կապույտ վանդակում)՝ սխալի արտահայտությունը վերագրելու համար.

Ապացույց

Հիմա ժամանակն է քննարկելու, թե ինչ է նշանակում նվազագույնի հասցնել սխալ արտահայտությունը: Ի վերջո, սխալը, ինչպես տեսնում ենք, ինքնին պատահական փոփոխական է և ամեն անգամ տարբեր արժեքներ է ստանում։ Իրոք, չկա միակողմանի մոտեցում՝ սահմանելու համար, թե ինչ է նշանակում սխալի նվազագույն լինելը: Ինչպես պատահական փոփոխականի շեղումների դեպքում, երբ փորձեցինք գնահատել դրա ցրման բնորոշ լայնությունը, այստեղ էլ կընտրենք հաշվարկների ամենապարզ չափանիշը։ Մենք կնվազեցնենք միջինը քառակուսի սխալից.

Գրենք վերջին արտահայտությունը.

Ապացույց

Այն փաստից, որ for արտահայտության մեջ ներառված բոլոր պատահական փոփոխականները անկախ են, հետևում է, որ բոլոր «խաչ» տերմինները հավասար են զրոյի.

Մենք օգտագործեցինք այն փաստը, որ այդ դեպքում շեղումների բանաձևը շատ ավելի պարզ է թվում.

Այս արտահայտությունը ստանում է նվազագույն արժեք, երբ (ածանցյալը հավասարեցնել զրոյի).

Այստեղ մենք արդեն գրում ենք Կալմանի գործակցի արտահայտությունը քայլի ինդեքսով, ուստի շեշտում ենք, որ դա կախված է կրկնության քայլից։
Ստացված օպտիմալ արժեքը փոխարինում ենք արտահայտության մեջ, որի համար նվազագույնի ենք հասցրել: Մենք ստանում ենք;

Մեր խնդիրը լուծված է. Մենք ստացել ենք Կալմանի գործակիցը հաշվարկելու կրկնվող բանաձև։
Ամփոփենք մեր ձեռք բերած գիտելիքները մեկ շրջանակում.

Օրինակ

Matlab կոդը

մաքրել բոլորը; N=100% նմուշների քանակը a=0.1% արագացում sigmaPsi=1 sigmaEta=50; k=1:N x=k x(1)=0 z(1)=x(1)+normrnd(0,sigmaEta); t=1:(N-1) x(t+1)=x(t)+a*t+normrnd(0,sigmaPsi); z(t+1)=x(t+1)+normrnd(0,sigmaEta); վերջ; %kalman ֆիլտր xOpt(1)=z(1); eOpt(1)=sigmaEta; 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) վերջ; հողամաս (k,xopt,k,z,k,x)

Վերլուծություն

Եթե ​​մենք հետևենք, թե ինչպես է Կալմանի գործակիցը փոխվում կրկնման քայլով, ապա կարող ենք ցույց տալ, որ այն միշտ կայունանում է մինչև որոշակի արժեք: Օրինակ, երբ սենսորի և մոդելի RMS սխալները փոխկապակցված են տասը դեպի մեկ, ապա Կալմանի գործակցի սյուժեն՝ կախված կրկնման քայլից, այսպիսի տեսք ունի.

Հետևյալ օրինակում մենք կքննարկենք, թե ինչպես դա կարող է շատ ավելի հեշտացնել մեր կյանքը:

Երկրորդ օրինակ

Գործնականում հաճախ է պատահում, որ մենք ընդհանրապես ոչինչ չգիտենք այն ֆիզիկական մոդելի մասին, որը մենք զտում ենք։ Օրինակ, դուք ցանկանում եք զտել ընթերցումները ձեր սիրելի արագացուցիչից: Դուք նախապես չգիտեք, թե ինչ օրենքով եք մտադիր պտտել արագացուցիչը։ Առավելագույն տեղեկատվությունը, որը դուք կարող եք հավաքել, սենսորի սխալի շեղումն է: Նման բարդ իրավիճակում շարժման մոդելի ողջ անտեղյակությունը կարող է առաջանալ պատահական փոփոխականի մեջ.

Բայց, անկեղծ ասած, նման համակարգն այլևս չի բավարարում այն ​​պայմաններին, որոնք մենք դրել ենք պատահական փոփոխականի վրա, քանի որ այժմ մեզ համար անհայտ շարժման ամբողջ ֆիզիկան թաքնված է այնտեղ, և, հետևաբար, չենք կարող ասել, որ ժամանակի տարբեր կետերում սխալները. մոդելները միմյանցից անկախ են, և դրանց միջին արժեքները զրո են: Այս դեպքում, մեծ հաշվով, Կալմանի ֆիլտրի տեսությունը կիրառելի չէ։ Բայց մենք ուշադրություն չենք դարձնի այս փաստին, այլ հիմարաբար կկիրառենք բանաձևերի ամբողջ վիթխարը՝ ընտրելով գործակիցները և աչքով, որպեսզի զտված տվյալները գեղեցիկ տեսք ունենան։
Բայց կա մեկ այլ, շատ ավելի հեշտ ճանապարհ. Ինչպես տեսանք վերևում, Կալմանի գործակիցը միշտ կայունանում է մինչև արժեքը: Հետևաբար, գործակիցներն ընտրելու և Կալմանի գործակիցը բարդ բանաձևերի միջոցով գտնելու փոխարեն, մենք կարող ենք այս գործակիցը համարել միշտ հաստատուն և ընտրել միայն այս հաստատունը։ Այս ենթադրությունը գրեթե ոչինչ չի փչացնի։ Նախ, մենք արդեն անօրինական կերպով օգտագործում ենք Կալմանի տեսությունը, և երկրորդը, Կալմանի գործակիցը արագորեն կայունանում է մինչև հաստատուն: Ի վերջո, ամեն ինչ շատ պարզ կլինի։ Կալմանի տեսությունից մեզ ընդհանրապես որևէ բանաձև պետք չէ, մենք պարզապես պետք է ընտրենք ընդունելի արժեք և մտցնենք այն կրկնվող բանաձևի մեջ.

Հետևյալ գրաֆիկը ցույց է տալիս երկու տարբեր եղանակներով զտված ֆիկտիվ սենսորից ստացված տվյալները: Պայմանով, որ մենք ոչինչ չգիտենք երևույթի ֆիզիկայի մասին: Առաջին ճանապարհն ազնիվ է՝ Կալմանի տեսության բոլոր բանաձեւերով։ Իսկ երկրորդը պարզեցված է՝ առանց բանաձեւերի։

Ինչպես տեսնում ենք, մեթոդները գրեթե նույնն են։ Փոքր տարբերություն նկատվում է միայն սկզբում, երբ Կալմանի գործակիցը դեռ չի կայունացել։

Քննարկում

Ինչպես տեսանք, Kalman ֆիլտրի հիմնական գաղափարը այնպիսի գործակից գտնելն է, որ զտված արժեքը

միջինում ամենից քիչը կտարբերվեր կոորդինատների իրական արժեքից: Մենք տեսնում ենք, որ զտված արժեքը սենսորի ընթերցման և նախորդ զտված արժեքի գծային ֆունկցիան է: Իսկ նախորդ զտված արժեքը, իր հերթին, ցուցիչի ընթերցման գծային ֆունկցիա է և նախորդ զտված արժեքը: Եվ այսպես շարունակ, մինչև շղթան ամբողջությամբ բացվի։ Այսինքն, զտված արժեքը կախված է բոլորընախորդ սենսորների գծային ընթերցումները.

Հետեւաբար, Կալմանի ֆիլտրը կոչվում է գծային ֆիլտր:
Կարելի է ապացուցել, որ Kalman ֆիլտրը լավագույնն է բոլոր գծային ֆիլտրերից: Լավագույնն այն առումով, որ ֆիլտրի սխալի միջին քառակուսին նվազագույն է:

Բազմաչափ գործ

Ամբողջ Կալմանի ֆիլտրի տեսությունը կարելի է ընդհանրացնել բազմաչափ դեպքին: Այնտեղի բանաձևերը մի փոքր ավելի սարսափելի են թվում, բայց դրանց ծագման գաղափարը նույնն է, ինչ միաչափ դեպքում: Դրանք կարող եք տեսնել այս հիանալի հոդվածում՝ http://habrahabr.ru/post/140274/ ։
Եվ այս հրաշալի տեսանյութօրինակ, թե ինչպես օգտագործել դրանք:

Wiener ֆիլտրերը լավագույնս համապատասխանում են մշակման գործընթացներին կամ գործընթացների հատվածներին որպես ամբողջություն (բլոկների մշակում): Հաջորդական մշակումը պահանջում է ազդանշանի ընթացիկ գնահատում յուրաքանչյուր ցիկլում՝ հաշվի առնելով դիտարկման գործընթացում ֆիլտրի մուտքագրում ստացված տեղեկատվությունը:

Wiener ֆիլտրման դեպքում յուրաքանչյուր նոր ազդանշանի նմուշ կպահանջի վերահաշվարկել ֆիլտրի բոլոր կշիռները: Ներկայումս լայնորեն օգտագործվում են հարմարվողական զտիչներ, որոնցում մուտքային նոր տեղեկատվությունը օգտագործվում է նախկինում կատարված ազդանշանի գնահատականը շարունակաբար շտկելու համար (ռադարում թիրախի հետևում, հսկողության ավտոմատ կառավարման համակարգեր և այլն): Առանձնահատուկ հետաքրքրություն են ներկայացնում ռեկուրսիվ տիպի հարմարվողական ֆիլտրերը, որոնք հայտնի են որպես Kalman ֆիլտր:

Այս զտիչները լայնորեն օգտագործվում են ավտոմատ կարգավորման և կառավարման համակարգերի կառավարման օղակներում: Ահա թե որտեղից են նրանք եկել, ինչի մասին վկայում է հատուկ տերմինաբանությունը, որն օգտագործվում է նրանց աշխատանքը որպես պետական ​​տարածք բնութագրելու համար:

Հիմնական խնդիրներից մեկը, որը պետք է լուծվի նեյրոնային հաշվարկների պրակտիկայում, արագ և հուսալի նեյրոնային ցանցի ուսուցման ալգորիթմներ ստանալն է։ Այս առումով, կարող է օգտակար լինել օգտագործել գծային ֆիլտրերի ուսուցման ալգորիթմը հետադարձ կապի հանգույցում: Քանի որ ուսուցման ալգորիթմները կրում են կրկնվող բնույթ, նման զտիչը պետք է լինի հաջորդական ռեկուրսիվ գնահատող:

Պարամետրերի գնահատման խնդիր

Վիճակագրական լուծումների տեսության խնդիրներից մեկը, որն ունի կիրառական մեծ նշանակություն, համակարգերի վիճակի վեկտորների և պարամետրերի գնահատման խնդիրն է, որը ձևակերպված է հետևյալ կերպ. Ենթադրենք, որ անհրաժեշտ է գնահատել $X$ վեկտորի պարամետրի արժեքը, որն անհասանելի է ուղղակի չափման համար։ Փոխարենը չափվում է մեկ այլ պարամետր $Z$՝ կախված $X$-ից: Գնահատման խնդիրն է պատասխանել հարցին, թե ինչ կարելի է ասել $X$-ի մասին $Z$-ով: Ընդհանուր դեպքում $X$ վեկտորի օպտիմալ գնահատման կարգը կախված է գնահատման որակի ընդունված չափանիշից։

Օրինակ, պարամետրերի գնահատման խնդրի նկատմամբ Բայեսյան մոտեցումը պահանջում է ամբողջական a priori տեղեկատվություն գնահատված պարամետրի հավանականական հատկությունների մասին, ինչը հաճախ անհնար է: Այս դեպքերում կարելի է դիմել նվազագույն քառակուսիների մեթոդին (LSM), որը շատ ավելի քիչ apriori տեղեկատվություն է պահանջում:

Դիտարկենք LSM-ի կիրառումը այն դեպքի համար, երբ $Z$ դիտորդական վեկտորը միացված է պարամետրի գնահատման վեկտորին $X$ գծային մոդելով, և դիտման մեջ կա $V$ աղմուկ, որը չի փոխկապակցված գնահատված պարամետրի հետ։ :

$Z = HX + V$, (1)

որտեղ $H$-ը փոխակերպման մատրիցն է, որը նկարագրում է կապը դիտարկվող արժեքների և գնահատված պարամետրերի միջև:

Քառակուսի սխալը նվազագույնի հասցնելու $X$-ի գնահատումը գրված է հետևյալ կերպ.

$X_(ots)=(H^TR_V^(-1)H)^(-1)H^TR_V^(-1)Z$, (2)

Թող աղմուկը $V$ լինի անկապ, որի դեպքում $R_V$ մատրիցը պարզապես նույնական մատրիցն է, և գնահատման հավասարումը դառնում է ավելի պարզ.

$X_(ots)=(H^TH)^(-1)H^TZ$, (3)

Մատրիցային ձևով ձայնագրումը մեծապես խնայում է թուղթը, բայց ինչ-որ մեկի համար կարող է անսովոր լինել: Այս ամենը ցույց է տալիս Յու.Մ.Կորշունովի «Կիբեռնետիկայի մաթեմատիկական հիմքերը» մենագրությունից վերցված հետևյալ օրինակը։
Կա հետևյալ էլեկտրական միացում.

Դիտարկվող արժեքներն են այս դեպքում գործիքի ընթերցումները $A_1 ​​= 1 A, A_2 = 2 A, V = 20 B$:

Բացի այդ, հայտնի է $R = 5$ Ohm դիմադրությունը: Պահանջվում է լավագույնս գնահատել՝ նվազագույն միջին քառակուսի սխալի չափանիշի տեսանկյունից, $I_1$ և $I_2$ հոսանքների արժեքները։ Այստեղ ամենակարևորն այն է, որ որոշակի կապ կա դիտարկված արժեքների (գործիքների ընթերցումների) և գնահատված պարամետրերի միջև: Եվ այս տեղեկությունը բերվում է դրսից։

Տվյալ դեպքում դրանք Կիրխհոֆի օրենքներն են, ֆիլտրման դեպքում (որը կքննարկվի ավելի ուշ)՝ ավտոռեգեսիվ ժամանակային շարքի մոդել, որը ենթադրում է, որ ընթացիկ արժեքը կախված է նախորդներից։

Այսպիսով, Կիրխհոֆի օրենքների իմացությունը, որը ոչ մի կերպ կապված չէ վիճակագրական որոշումների տեսության հետ, թույլ է տալիս կապ հաստատել դիտարկված արժեքների և գնահատված պարամետրերի միջև (նրանք, ովքեր ուսումնասիրել են էլեկտրատեխնիկան, կարող են ստուգել, ​​մնացածը պետք է. ընդունեք նրանց խոսքը):

$$z_1 = A_1 = I_1 + \xi_1 = 1$$

$$z_2 = A_2 = I_1 + I_2 + \xi_2 = 2$$

$$z_2 = V/R = I_1 + 2 * I_2 + \xi_3 = 4$$

Սա վեկտորային ձևով է՝

$$\begin(vmatrix) z_1\\ z_2\\ z_3 \end(vmatrix) = \begin(vmatrix) 1 & 0\\ 1 & 1\\ 1 & 2 \end(vmatrix) \begin(vmatrix) I_1\ \ I_2 \end(vmatrix) + \begin(vmatrix) \xi_1\\ \xi_2\\ \xi_3 \end(vmatrix)$$

Կամ $Z = HX + V$, որտեղ

$$Z= \begin(vmatrix) z_1\\ z_2\\ z_3 \end(vmatrix) = \begin(vmatrix) 1\\ 2\\ 4 \end(vmatrix) ; H= \begin(vmatrix) 1 & 0\\ 1 & 1\\ 1 & 2 \end(vmatrix) ; X= \begin(vmatrix) I_1\\ I_2 \end(vmatrix) ; V= \begin(vmatrix) \xi_1\\ \xi_2\\ \xi_3 \end(vmatrix)$$

Հաշվի առնելով աղմուկի արժեքները որպես միմյանց հետ անհամատեղելի, մենք գտնում ենք I 1 և I 2-ի գնահատումը նվազագույն քառակուսիների մեթոդով՝ համաձայն 3-րդ բանաձևի.

$H^TH= \begin(vmatrix) 1 & 1& 1\\ 0 & 1& 2 \end(vmatrix) \begin(vmatrix) 1 & 0\\ 1 & 1\\ 1 & 2 \end(vmatrix) = \ start(vmatrix) 3 & 3\\ 3 & 5 \end(vmatrix) ; (H^TH)^(-1)= \frac(1)(6) \begin(vmatrix) 5 & -3\\ -3 & 3 \end(vmatrix) $;

$H^TZ= \begin(vmatrix) 1 & 1& 1\\ 0 & 1& 2 \end(vmatrix) \begin(vmatrix) 1 \\ 2\\ 4 \end(vmatrix) = \begin(vmatrix) 7\ \ 10 \վերջ (vmatrix) ; X(vmatrix)= \frac(1)(6) \begin(vmatrix) 5 & -3\\ -3 & 3 \end(vmatrix) \begin(vmatrix) 7\\ 10 \end(vmatrix) = \frac (1)(6) \begin(vmatrix) 5\\ 9 \end(vmatrix)$;

Այսպիսով, $I_1 = 5/6 = 0,833 A$; $I_2 = 9/6 = 1,5 A$:

Զտիչ առաջադրանք

Ի տարբերություն ֆիքսված արժեքներ ունեցող պարամետրերի գնահատման առաջադրանքի, ֆիլտրման հարցում պահանջվում է գնահատել գործընթացները, այսինքն՝ գտնել աղմուկից աղավաղված և, հետևաբար, ուղղակի չափման համար անհասանելի ժամանակի փոփոխվող ազդանշանի ընթացիկ գնահատականները: Ընդհանուր դեպքում զտման ալգորիթմների տեսակը կախված է ազդանշանի վիճակագրական հատկություններից և աղմուկից։

Մենք կենթադրենք, որ օգտակար ազդանշանը ժամանակի դանդաղ փոփոխվող ֆունկցիա է, իսկ աղմուկը չկապված աղմուկ է: Մենք կօգտագործենք նվազագույն քառակուսիների մեթոդը՝ կրկին ազդանշանի և աղմուկի հավանականական բնութագրերի մասին ապրիորի տեղեկատվության բացակայության պատճառով։

Նախ, մենք ստանում ենք $x_n$-ի ընթացիկ արժեքի գնահատում՝ օգտագործելով $z_n, z_(n-1), z_(n-2)\կետերը z_(n-( ժամանակային շարքի վերջին $k$ արժեքները: k-1)) $. Դիտարկման մոդելը նույնն է, ինչ պարամետրերի գնահատման խնդիրում.

Հասկանալի է, որ $Z$-ը սյունակային վեկտոր է, որը բաղկացած է $z_n, z_(n-1), z_(n-2)\ dots z_(n-(k-1)) ժամանակային շարքի դիտարկված արժեքներից: $, $V $ – աղմուկի սյունակի վեկտոր $\xi _n, \xi _(n-1),\xi_(n-2)\dots \xi_(n-(k-1))$՝ աղավաղելով իրական ազդանշանը: Իսկ ի՞նչ են նշանակում $H$ և $X$ նշանները։ Ինչպիսի՞ $X$ սյունակի վեկտորի մասին կարող ենք խոսել, եթե միայն անհրաժեշտ է ժամանակային շարքի ընթացիկ արժեքի գնահատումը: Իսկ թե ինչ է նշանակում $H$ փոխակերպման մատրիցով, ամենևին էլ պարզ չէ։

Այս բոլոր հարցերին կարելի է պատասխանել միայն այն դեպքում, եթե հաշվի առնվի ազդանշանի արտադրության մոդելի հայեցակարգը: Այսինքն՝ անհրաժեշտ է օրիգինալ ազդանշանի ինչ-որ մոդել։ Սա հասկանալի է, ազդանշանի և աղմուկի հավանականական բնութագրերի մասին ապրիորի տեղեկատվության բացակայության դեպքում մնում է միայն ենթադրություններ անել։ Դուք կարող եք դա գուշակություն անվանել սուրճի մրուրի վրա, սակայն մասնագետները նախընտրում են այլ տերմինաբանություն։ Նրանց վարսահարդարիչում սա կոչվում է պարամետրային մոդել:

Այս դեպքում գնահատվում են տվյալ մոդելի պարամետրերը: Ազդանշանի արտադրության համապատասխան մոդել ընտրելիս հիշեք, որ ցանկացած վերլուծական ֆունկցիա կարող է ընդլայնվել Թեյլորի շարքում: Թեյլորի շարքի ուշագրավ հատկությունն այն է, որ ֆունկցիայի ձևը $t$ ցանկացած վերջավոր հեռավորության վրա $x=a$ ինչ-որ կետից եզակիորեն որոշվում է ֆունկցիայի պահվածքով $x=a կետի անսահման փոքր հարևանությամբ։ $ (խոսքը նրա առաջին և ավելի բարձր կարգի ածանցյալների մասին է):

Այսպիսով, Թեյլորի շարքի առկայությունը նշանակում է, որ վերլուծական ֆունկցիան ունի ներքին կառուցվածք՝ շատ ուժեղ կապով։ Եթե, օրինակ, մենք սահմանափակվենք Թեյլորի շարքի երեք անդամներով, ապա ազդանշանի ստեղծման մոդելը կունենա հետևյալ տեսքը.

$x_(n-i) = F_(-i)x_n$, (4)

$$X_n= \begin(vmatrix) x_n\\ x"_n\\ x""_n \end(vmatrix) ; F_(-i)= \begin(vmatrix) 1 & -i & i^2/2\\ 0 & 1 & -i\\ 0 & 0 & 1 \end(vmatrix) $$

Այսինքն՝ 4-րդ բանաձևը բազմանդամի տրված կարգով (օրինակում այն ​​հավասար է 2-ի), կապ է հաստատում ժամանակային հաջորդականության ազդանշանի $n$-րդ արժեքի և $(ni)$-րդի միջև։ . Այսպիսով, գնահատված վիճակի վեկտորն այս դեպքում ներառում է, ի լրումն գնահատված արժեքի, ազդանշանի առաջին և երկրորդ ածանցյալները:

Ավտոմատ կառավարման տեսության մեջ նման ֆիլտրը կկոչվի երկրորդ կարգի աստիճանական ֆիլտր։ Այս դեպքի համար $H$ փոխակերպման մատրիցը (գնահատումը հիմնված է ընթացիկ և $k-1$ նախորդ նմուշների վրա) այսպիսի տեսք ունի.

$$H= \begin(vmatrix) 1 & -k & k^2/2\\ - & - & -\\ 1 & -2 & 2\\ 1 & -1 & 0.5\\ 1 & 0 & 0 \\ վերջ (vmatrix)$$

Այս բոլոր թվերը ստացվում են Թեյլորի շարքից՝ ենթադրելով, որ հարակից դիտարկվող արժեքների միջև ժամանակային միջակայքը հաստատուն է և հավասար է 1-ի:

Այսպիսով, զտման խնդիրը, մեր ենթադրությունների համաձայն, կրճատվել է մինչև պարամետրերի գնահատման խնդիր. այս դեպքում գնահատվում են մեր կողմից ընդունված ազդանշանի արտադրության մոդելի պարամետրերը։ Իսկ $X$ վիճակի վեկտորի արժեքների գնահատումն իրականացվում է նույն բանաձևով 3.

$$X_(ots)=(H^TH)^(-1)H^TZ$$

Ըստ էության, մենք իրականացրել ենք պարամետրային գնահատման գործընթաց՝ հիմնված ազդանշանի գեներացման գործընթացի ավտոռեգեսիվ մոդելի վրա:

Բանաձև 3-ը հեշտությամբ իրականացվում է ծրագրային ապահովման մեջ, դրա համար անհրաժեշտ է լրացնել $H$ մատրիցը և $Z$ դիտարկումների վեկտորային սյունակը: Նման ֆիլտրերը կոչվում են վերջավոր հիշողության զտիչներ, քանի որ նրանք օգտագործում են վերջին $k$ դիտարկումները $X_(not)$ ընթացիկ գնահատականը ստանալու համար։ Դիտարկման յուրաքանչյուր նոր քայլի ժամանակ դիտարկումների նոր հավաքածուն ավելացվում է ընթացիկ դիտարկումների շարքին, իսկ հինը հանվում է: Այս գնահատման գործընթացը կոչվում է լոգարիթմական պատուհան.

Աճող հիշողության զտիչներ

Վերջավոր հիշողությամբ ֆիլտրերն ունեն հիմնական թերությունը, որ յուրաքանչյուր նոր դիտարկումից հետո անհրաժեշտ է վերահաշվարկել հիշողության մեջ պահվող բոլոր տվյալների ամբողջական վերահաշվարկը: Բացի այդ, գնահատումների հաշվարկը կարող է սկսվել միայն $k$ առաջին դիտարկումների արդյունքների կուտակումից հետո: Այսինքն՝ այս ֆիլտրերն ունեն անցողիկ գործընթացի երկար տեւողություն։

Այս թերությունը հաղթահարելու համար անհրաժեշտ է մշտական ​​հիշողություն ունեցող ֆիլտրից անցնել ֆիլտրի աճող հիշողություն. Նման ֆիլտրում գնահատվող դիտարկվող արժեքների թիվը պետք է համապատասխանի ընթացիկ դիտարկման n թվին: Սա հնարավորություն է տալիս ստանալ գնահատումներ՝ սկսած $X$ գնահատված վեկտորի բաղադրիչների թվին հավասար դիտարկումների քանակից։ Եվ դա որոշվում է ընդունված մոդելի հերթականությամբ, այսինքն՝ մոդելում քանի տերմին է օգտագործվում Թեյլորի շարքից։

Միաժամանակ, քանի որ n-ը մեծանում է, ֆիլտրի հարթեցման հատկությունները բարելավվում են, այսինքն՝ մեծանում է գնահատումների ճշգրտությունը։ Այնուամենայնիվ, այս մոտեցման ուղղակի իրականացումը կապված է հաշվողական ծախսերի ավելացման հետ: Հետևաբար, աճող հիշողության զտիչներն իրականացվում են որպես կրկնվող.

Բանն այն է, որ n ժամանակի համար մենք արդեն ունենք $X_((n-1)ots)$ գնահատականը, որը պարունակում է տեղեկատվություն նախորդ բոլոր դիտարկումների մասին $z_n, z_(n-1), z_(n-2) \dots z_: (n-(k-1))$. $X_(not)$-ի գնահատումը ստացվում է $z_n$-ի հաջորդ դիտարկմամբ՝ օգտագործելով $X_((n-1)) (\mbox (ot))$ գնահատման մեջ պահվող տեղեկատվությունը: Այս ընթացակարգը կոչվում է կրկնվող զտում և բաղկացած է հետևյալից.

  • ըստ $X_((n-1))(\mbox (ots))$ գնահատման, $X_n$ գնահատականը կանխատեսվում է 4 բանաձևով $i = 1$-ի համար. $X_(\mbox (noca priori)) = F_1X_((n-1 )ots)$. Սա ապրիորի գնահատական ​​է.
  • $z_n$ ընթացիկ դիտարկման արդյունքների համաձայն՝ այս a priori գնահատականը վերածվում է ճշմարիտի, այսինքն՝ հետին.
  • այս ընթացակարգը կրկնվում է յուրաքանչյուր քայլում՝ սկսած $r+1$-ից, որտեղ $r$-ը ֆիլտրի կարգն է:

Վերջնական ռեկուրսիվ զտման բանաձևը հետևյալն է.

$X_((n-1)ots) = X_(\mbox (nocapriori)) + (H^T_nH_n)^(-1)h^T_0(z_n - h_0 X_(\mbox (nocapriori)))$, (6 )

որտեղ մեր երկրորդ պատվերի ֆիլտրը.

Աճող հիշողության ֆիլտրը, որն աշխատում է 6-րդ բանաձևի համաձայն, զտման ալգորիթմի հատուկ դեպք է, որը հայտնի է որպես Kalman ֆիլտր:

Այս բանաձևի գործնական իրականացման ժամանակ պետք է հիշել, որ դրանում ներառված a priori գնահատականը որոշվում է 4-րդ բանաձևով, իսկ $h_0 X_(\mbox (nocapriori))$ արժեքը $X_( վեկտորի առաջին բաղադրիչն է։ \mbox (nocapriori))$.

Աճող հիշողության ֆիլտրն ունի մեկ կարևոր հատկություն. Նայելով Ֆորմուլա 6-ին, վերջնական միավորը կանխատեսված միավորի վեկտորի և ուղղման տերմինի գումարն է: Այս ուղղումը մեծ է փոքր $n$-ի համար և նվազում է $n$-ի աճի հետ՝ ձգվելով դեպի զրոյի որպես $n \rightarrow \infty$: Այսինքն, քանի որ n-ն աճում է, ֆիլտրի հարթեցման հատկությունները մեծանում են, և դրա մեջ ներկառուցված մոդելը սկսում է գերակշռել: Բայց իրական ազդանշանը կարող է համապատասխանել մոդելին միայն որոշ ոլորտներում, ուստի կանխատեսման ճշգրտությունը վատանում է:

Դրա դեմ պայքարելու համար, սկսած $n$-ից, արգելք է դրվում ուղղման ժամկետի հետագա կրճատման վրա։ Սա համարժեք է ֆիլտրի գոտին փոխելուն, այսինքն՝ փոքր n-ի դեպքում ֆիլտրն ավելի լայնաշերտ է (պակաս իներցիոն), մեծ n-ի դեպքում՝ ավելի իներցիոն:

Համեմատեք Նկար 1-ը և Նկար 2-ը: Առաջին նկարում ֆիլտրն ունի մեծ հիշողություն, մինչդեռ այն լավ հարթվում է, բայց նեղ գոտու պատճառով գնահատված հետագիծը հետ է մնում իրականից: Երկրորդ նկարում ֆիլտրի հիշողությունն ավելի փոքր է, այն ավելի վատ է հարթում, բայց ավելի լավ է հետևում իրական հետագծին:

գրականություն

  1. Յու.Մ.Կորշունով «Կիբեռնետիկայի մաթեմատիկական հիմքերը»
  2. Ա.Վ.Բալակրիշնան «Կալմանի ֆիլտրման տեսություն»
  3. V.N. Fomin «Հերթական գնահատում և հարմարվողական զտում»
  4. C.F.N. Cowen, P.M. «Հարմարվողական զտիչներ» շնորհում

Random Forest-ը տվյալների մայնինգի իմ սիրելի ալգորիթմներից մեկն է: Նախ, այն աներևակայելի բազմակողմանի է, այն կարող է օգտագործվել ինչպես ռեգրեսիայի, այնպես էլ դասակարգման խնդիրներ լուծելու համար: Փնտրեք անոմալիաներ և ընտրեք կանխատեսողներ: Երկրորդ, սա ալգորիթմ է, որն իսկապես դժվար է սխալ կիրառել։ Պարզապես այն պատճառով, որ, ի տարբերություն այլ ալգորիթմների, այն ունի մի քանի կարգավորելի պարամետրեր: Եվ այնուամենայնիվ, դա զարմանալիորեն պարզ է իր էությամբ: Միևնույն ժամանակ, դա զարմանալիորեն ճշգրիտ է.

Ո՞րն է նման հրաշալի ալգորիթմի գաղափարը: Գաղափարը պարզ է. ենթադրենք, մենք ունենք շատ թույլ ալգորիթմ, ասենք. Եթե ​​այս թույլ ալգորիթմով մենք պատրաստենք շատ տարբեր մոդելներ և միջինացնենք դրանց կանխատեսումների արդյունքը, ապա վերջնական արդյունքը շատ ավելի լավ կլինի: Սա այսպես կոչված անսամբլային ուսուցումն է գործողության մեջ: Պատահական անտառի ալգորիթմը, հետևաբար, կոչվում է «Պատահական անտառ», ստացված տվյալների համար այն ստեղծում է բազմաթիվ որոշումների ծառեր և այնուհետև միջինացնում է դրանց կանխատեսումների արդյունքը: Այստեղ կարևոր կետը յուրաքանչյուր ծառի ստեղծման մեջ պատահականության տարրն է: Ի վերջո, պարզ է, որ եթե մենք ստեղծենք շատ միանման ծառեր, ապա դրանց միջինացման արդյունքը կունենա մեկ ծառի ճշգրտություն։

Ինչպե՞ս է նա աշխատում: Ենթադրենք, մենք ունենք որոշ մուտքային տվյալներ: Յուրաքանչյուր սյունակ համապատասխանում է ինչ-որ պարամետրի, յուրաքանչյուր տող՝ տվյալների որոշ տարրի։

Մենք կարող ենք պատահականորեն ընտրել մի շարք սյունակներ և տողեր ամբողջ տվյալներից և դրանցից կառուցել որոշումների ծառ:


հինգշաբթի, 10 մայիսի 2012 թ

հինգշաբթի, 12 հունվարի, 2012 թ


Սա իրականում բոլորն է: 17-ժամյա թռիչքն ավարտվել է, Ռուսաստանը մնացել է արտերկրում. Եվ 2 սենյականոց հարմարավետ բնակարանի պատուհանից մեզ է նայում Սան Ֆրանցիսկոն, հայտնի Սիլիկոնյան հովտը, Կալիֆորնիա, ԱՄՆ: Այո, հենց սա է պատճառը, որ վերջերս շատ չեմ գրում։ Մենք շարժվեցինք։

Ամեն ինչ սկսվեց 2011 թվականի ապրիլին, երբ ես հեռախոսով հարցազրույց ունեցա Zynga-ի հետ: Հետո այդ ամենն ինչ-որ խաղ էր թվում, որն իրականության հետ կապ չուներ, և ես նույնիսկ չէի կարող պատկերացնել, թե դա ինչի կհանգեցնի։ 2011 թվականի հունիսին Zynga-ն եկավ Մոսկվա և անցկացրեց մի շարք հարցազրույցներ, դիտարկվեցին հեռախոսային հարցազրույց անցած մոտ 60 թեկնածուներ և նրանցից ընտրվեցին մոտ 15 հոգի (ստույգ թիվը չգիտեմ, ինչ-որ մեկը հետո մտափոխվեց. ինչ-որ մեկը անմիջապես հրաժարվեց): Հարցազրույցը զարմանալիորեն պարզ է ստացվել. Ձեզ համար ոչ մի ծրագրավորման առաջադրանք, լյուկերի ձևի վերաբերյալ ոչ մի բարդ հարց, հիմնականում զրուցելու ունակությունը չի փորձարկվել: Իսկ գիտելիքը, իմ կարծիքով, գնահատվել է միայն մակերեսորեն։

Եվ հետո սկսվեց խարդախությունը: Սկզբում սպասեցինք արդյունքներին, հետո առաջարկին, հետո LCA-ի հաստատմանը, հետո վիզայի համար միջնորդագրի հաստատմանը, այնուհետև փաստաթղթերը ԱՄՆ-ից, հետո գիծը դեսպանատան մոտ, հետո լրացուցիչ ստուգում, ապա. վիզան։ Երբեմն ինձ թվում էր, թե պատրաստ եմ ամեն ինչ թողնել և գոլ խփել: Երբեմն կասկածում էի, թե այս Ամերիկան ​​մեզ պե՞տք է, քանի որ Ռուսաստանն էլ վատը չէ։ Ամբողջ գործընթացը տևեց մոտ կես տարի, ի վերջո, դեկտեմբերի կեսերին մենք վիզաներ ստացանք և սկսեցինք պատրաստվել մեկնելուն։

Երկուշաբթին իմ առաջին օրն էր նոր աշխատանքում: Գրասենյակն ունի բոլոր պայմանները ոչ միայն աշխատելու, այլև ապրելու համար։ Նախաճաշեր, լանչեր և ընթրիքներ մեր իսկ խոհարարների կողմից, մի փունջ բազմազան ուտելիքներ՝ լցոնված բոլոր անկյուններում, մարզասրահ, մերսում և նույնիսկ վարսավիրանոց: Այս ամենը բոլորովին անվճար է աշխատակիցների համար։ Շատերը աշխատանքի են հասնում հեծանիվով, իսկ մի քանի սենյակներ ապահովված են տրանսպորտային միջոցներ պահելու համար: Ընդհանրապես Ռուսաստանում նման բան չեմ տեսել։ Ամեն ինչ, սակայն, իր գինն ունի, մեզ անմիջապես զգուշացրին, որ պետք է շատ աշխատենք։ Ինչն է «շատ», իրենց չափանիշներով, ինձ համար այնքան էլ պարզ չէ։

Այնուամենայնիվ, հուսով եմ, որ չնայած աշխատանքի ծավալին, տեսանելի ապագայում ես կկարողանամ վերսկսել բլոգերը և միգուցե ինչ-որ բան պատմեմ ամերիկյան կյանքի և Ամերիկայում որպես ծրագրավորող աշխատելու մասին: Սպասիր եւ տես. Միևնույն ժամանակ, շնորհավորում եմ բոլորիդ Ամանորն ու Սուրբ Ծնունդը և շուտով կտեսնվենք:


Օգտագործման օրինակի համար եկեք տպենք ռուսական ընկերությունների դիվիդենտային եկամտաբերությունը: Որպես բազային գին՝ վերցնում ենք բաժնետոմսի փակման գինը ռեեստրի փակման օրը: Չգիտես ինչու, այս տեղեկատվությունը հասանելի չէ «Տրոյկա» կայքում, և այն շատ ավելի հետաքրքիր է, քան շահաբաժինների բացարձակ արժեքները:
Ուշադրություն. Կոդի գործարկումը երկար ժամանակ է պահանջում, քանի որ յուրաքանչյուր բաժնետոմսի համար դուք պետք է հարցում կատարեք finam սերվերներին և ստանաք դրա արժեքը:

արդյունք<- NULL for(i in (1:length(divs[,1]))){ d <- divs if (d$Divs>0) (փորձիր (( չակերտներ<- 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


Նմանապես, դուք կարող եք կառուցել վիճակագրություն անցյալ տարիների համար:

Կալմանի ֆիլտրը, հավանաբար, ամենահայտնի զտման ալգորիթմն է, որն օգտագործվում է գիտության և տեխնիկայի բազմաթիվ ոլորտներում: Իր պարզության և արդյունավետության շնորհիվ այն կարելի է գտնել GPS ընդունիչներում, սենսորային ընթերցումների պրոցեսորներում, կառավարման համակարգերի ներդրման մեջ և այլն։

Ինտերնետում շատ հոդվածներ և գրքեր կան Kalman ֆիլտրի մասին (հիմնականում անգլերենով), բայց այս հոդվածները բավականին մեծ մուտքի շեմ ունեն, կան շատ մառախլապատ տեղեր, չնայած իրականում դա շատ պարզ և թափանցիկ ալգորիթմ է։ Ես կփորձեմ պատմել դրա մասին պարզ լեզվով, բարդության աստիճանական աճով։

Ինչի համար է դա?

Ցանկացած չափիչ սարք ունի որոշակի սխալ, դրա վրա կարող են ազդել մեծ թվով արտաքին և ներքին ազդեցություններ, ինչը հանգեցնում է նրան, որ դրանից ստացված տեղեկատվությունը աղմկոտ է: Որքան շատ են տվյալները աղմկոտ, այնքան դժվար է նման տեղեկատվության մշակումը։

Զտիչը տվյալների մշակման ալգորիթմ է, որը հեռացնում է աղմուկը և ավելորդ տեղեկատվությունը: Kalman ֆիլտրում հնարավոր է priori տեղեկատվություն սահմանել համակարգի բնույթի, փոփոխականների փոխհարաբերությունների մասին և, դրա հիման վրա, կառուցել ավելի ճշգրիտ գնահատական, բայց նույնիսկ ամենապարզ դեպքում (առանց նախնական տեղեկատվություն մուտքագրելու), այն տալիս է գերազանց արդյունքներ:

Դիտարկենք ամենապարզ օրինակը. ենթադրենք, որ մենք պետք է վերահսկենք տանկի վառելիքի մակարդակը: Դա անելու համար տանկի մեջ տեղադրված է կոնդենսիվ սենսոր, այն շատ հեշտ է պահպանել, բայց ունի որոշ թերություններ, օրինակ՝ կախվածություն լիցքավորվող վառելիքից (վառելիքի դիէլեկտրական հաստատունը կախված է բազմաթիվ գործոններից, օրինակ՝ ջերմաստիճան), տանկի մեջ «շաղկապելու» մեծ ազդեցություն: Արդյունքում, դրանից ստացված տեղեկատվությունը տիպիկ «սղոց» է` պարկեշտ ամպլիտուդով: Նման սենսորները հաճախ տեղադրվում են հանքարդյունաբերության ծանր սարքավորումների վրա (մի ամաչեք տանկի ծավալից).

Kalman ֆիլտր

Եկեք մի փոքր շեղվենք և ծանոթանանք հենց ալգորիթմին։ Կալմանի ֆիլտրը օգտագործում է համակարգի դինամիկ մոդելը (օրինակ՝ շարժման ֆիզիկական օրենքը), կառավարման հայտնի գործողություններ և հաջորդական չափումների մի շարք՝ օպտիմալ վիճակի գնահատում ձևավորելու համար: Ալգորիթմը բաղկացած է երկու կրկնվող փուլերից՝ կանխատեսում և ուղղում: Առաջին փուլում հաշվարկվում է վիճակի կանխատեսումը հաջորդ պահին (հաշվի առնելով դրանց չափման անճշտությունը): Երկրորդում, սենսորից ստացված նոր տեղեկատվությունը ուղղում է կանխատեսված արժեքը (նաև հաշվի առնելով այս տեղեկատվության անճշտությունը և աղմուկը).

Հավասարումները ներկայացված են մատրիցային տեսքով, եթե չգիտեք գծային հանրահաշիվ - մի անհանգստացեք, ապա մեկ փոփոխականով գործի համար կլինի պարզեցված տարբերակ՝ առանց մատրիցների։ Մեկ փոփոխականի դեպքում մատրիցները վերածվում են սկալյար արժեքների:

Նախ, եկեք նայենք նշումին. ենթադասիչը ցույց է տալիս ժամանակի կետ. k - ընթացիկ, (k-1) - նախորդ, վերնագրի մինուս նշանը ցույց է տալիս, որ սա կանխատեսել էմիջանկյալ արժեք.

Փոփոխականների նկարագրությունը ներկայացված է հետևյալ պատկերներով.

Կարող է երկար և հոգնեցուցիչ լինել նկարագրել, թե ինչ են նշանակում այս բոլոր խորհրդավոր անցումային մատրիցները, բայց ավելի լավ է, իմ կարծիքով, փորձել կիրառել ալգորիթմը իրական օրինակի վրա, որպեսզի վերացական արժեքները ստանան իրական իմաստ:

Եկեք փորձենք այն գործողության մեջ

Եկեք վերադառնանք վառելիքի մակարդակի սենսորի օրինակին, քանի որ համակարգի վիճակը ներկայացված է մեկ փոփոխականով (բակում վառելիքի ծավալը), մատրիցները վերածվում են սովորական հավասարումների.
Գործընթացի մոդելի սահմանում
Ֆիլտրը կիրառելու համար անհրաժեշտ է որոշել փոփոխականների մատրիցները/արժեքները, որոնք որոշում են համակարգի դինամիկան և F, B և H չափումները.

Ֆ- համակարգի դինամիկան նկարագրող փոփոխական, վառելիքի դեպքում, դա կարող է լինել գործակից, որը որոշում է վառելիքի սպառումը պարապ վիճակում նմուշառման ժամանակ (ալգորիթմի քայլերի միջև ընկած ժամանակը): Այնուամենայնիվ, բացի վառելիքի սպառումից, կան նաև բենզալցակայաններ ... այնպես որ պարզության համար մենք կվերցնենք այս փոփոխականը հավասար 1-ի (այսինքն, մենք նշում ենք, որ կանխատեսված արժեքը հավասար կլինի նախորդ վիճակին):

Բ- փոփոխական, որը որոշում է կառավարման գործողության կիրառումը: Եթե ​​մենք լրացուցիչ տեղեկություններ ունենայինք շարժիչի արագության կամ արագացուցիչի ոտնակը սեղմելու աստիճանի մասին, ապա այս պարամետրը կորոշի, թե ինչպես է փոխվում վառելիքի սպառումը նմուշառման ժամանակ: Քանի որ մեր մոդելում չկան կառավարման գործողություններ (դրանց մասին տեղեկություններ չկան), մենք վերցնում ենք B = 0:

Հ- մատրիցա, որը որոշում է չափումների և համակարգի վիճակի հարաբերությունները, առայժմ, առանց բացատրության, մենք կընդունենք այս փոփոխականը նույնպես հավասար է 1-ի:

Հարթեցման հատկությունների սահմանում
Ռ- չափման սխալը կարող է որոշվել չափիչ գործիքների փորձարկման և դրանց չափման սխալի որոշման միջոցով:

Ք- Գործընթացի աղմուկի որոշումն ավելի բարդ խնդիր է, քանի որ անհրաժեշտ է որոշել գործընթացի շեղումը, ինչը միշտ չէ, որ հնարավոր է: Ամեն դեպքում, դուք կարող եք հարմարեցնել այս պարամետրը, որպեսզի ապահովեք զտման անհրաժեշտ մակարդակը:

Կոդով իրականացում
Մնացած անհասկանալիությունը ցրելու համար մենք իրականացնում ենք պարզեցված ալգորիթմ C #-ում (առանց մատրիցների և կառավարման գործողության).

դաս KalmanFilterSimple1D
{
հանրային կրկնակի X0 (ստանալ; մասնավոր հավաքածու;) // կանխատեսված վիճակ
հանրային կրկնակի P0 ( ստանալ; մասնավոր հավաքածու; ) // կանխատեսված կովարիանս

Հանրային կրկնակի F ( ստանալ; մասնավոր բազմություն; ) // իրական արժեքի գործակիցը նախորդ իրական արժեքին
հանրային կրկնակի Q ( ստանալ; մասնավոր հավաքածու; ) // չափման աղմուկ
հանրային կրկնակի H ( ստանալ; մասնավոր հավաքածու; ) // չափված արժեքի գործակիցը իրական արժեքին
հանրային կրկնակի R ( ստանալ; մասնավոր հավաքածու; ) // շրջակա միջավայրի աղմուկ

Հանրային կրկնակի պետություն (ստանալ; մասնավոր հավաքածու;)
հանրային կրկնակի կովարիանս (ստացեք; մասնավոր հավաքածու;)

Հանրային KalmanFilterSimple1D (կրկնակի q, կրկնակի r, կրկնակի f = 1, կրկնակի h = 1)
{
Q = q;
R = r;
F = f;
H = h;
}

Հանրային դատարկ SetState (կրկնակի վիճակ, կրկնակի կովարիանս)
{
պետություն = պետություն;
Կովարիանս = կովարիանս;
}

Public void Correct (կրկնակի տվյալներ)
{
//ժամանակի թարմացում - կանխատեսում
X0 = F * Պետություն;
P0 = F * Կովարիանս * F + Q;

//չափման թարմացում - ուղղում
var K = H * P0 / (H * P0 * H + R);
Պետություն = X0 + K * (տվյալներ - H * X0);
Կովարիանս = (1 - K * H) * F;
}
}

// Դիմում...

VarfuelData = GetData ();
var filtered = new List();

Var kalman = նոր KalmanFilterSimple1D(f: 1, h: 1, q: 2, r: 15); // սահմանել F, H, Q և R
kalman.SetState (fuelData, 0.1); // Սահմանել State and Covariance-ի սկզբնական արժեքը
foreach (var d վառելիքի տվյալների մեջ)
{
kalman.Ճիշտ (դ); // Կիրառել ալգորիթմը

Filtered.Add(kalman.State); // Պահպանել ընթացիկ վիճակը
}

Այս պարամետրերով զտման արդյունքը ներկայացված է նկարում (հարթեցման աստիճանը կարգավորելու համար կարող եք փոխել Q և R պարամետրերը).

Ամենահետաքրքիրը մնում է հոդվածի շրջանակից դուրս՝ Կալմանի ֆիլտրի կիրառումը մի քանի փոփոխականների համար, դրանց միջև հարաբերությունների կարգավորումը և չդիտարկվող փոփոխականների համար արժեքների ինքնաբերաբար ստացումը: Հենց ժամանակ ունենամ կփորձեմ շարունակել թեման։

Հուսով եմ, որ նկարագրությունը պարզվեց, որ այնքան էլ հոգնեցուցիչ և բարդ չէ, եթե ունեք հարցեր և պարզաբանումներ, համեցեք մեկնաբանություններին)

Մեխանիզմների և ագրեգատների կառավարման տեխնոլոգիական գործընթացների ավտոմատացման գործընթացում պետք է գործ ունենալ տարբեր ֆիզիկական մեծությունների չափումների հետ: Սա կարող է լինել հեղուկի կամ գազի ճնշումն ու հոսքը, պտտման արագությունը, ջերմաստիճանը և շատ ավելին: Ֆիզիկական մեծությունների չափումն իրականացվում է անալոգային սենսորների միջոցով: Անալոգային ազդանշանը տվյալների ազդանշան է, որում ներկայացվող պարամետրերից յուրաքանչյուրը նկարագրվում է ժամանակի ֆունկցիայով և հնարավոր արժեքների շարունակական շարքով: Արժեքային տարածության շարունակականությունից հետևում է, որ ազդանշանի մեջ ներմուծված ցանկացած միջամտություն չի տարբերվում օգտակար ազդանշանից: Հետեւաբար, կառավարման սարքի անալոգային մուտքագրումը կստանա անհրաժեշտ ֆիզիկական քանակի սխալ արժեք: Ուստի անհրաժեշտ է զտել սենսորից եկող ազդանշանը։

Զտման արդյունավետ ալգորիթմներից մեկը Կալմանի ֆիլտրն է: Կալմանի ֆիլտրը ռեկուրսիվ ֆիլտր է, որը գնահատում է դինամիկ համակարգի վիճակի վեկտորը՝ օգտագործելով մի շարք թերի և աղմկոտ չափումներ: Կալմանի ֆիլտրը օգտագործում է համակարգի դինամիկ մոդելը (օրինակ՝ շարժման ֆիզիկական օրենքը), վերահսկման գործողություններ և հաջորդական չափումների մի շարք՝ օպտիմալ վիճակի գնահատում ձևավորելու համար: Ալգորիթմը բաղկացած է երկու կրկնվող փուլերից՝ կանխատեսում և ուղղում: Առաջին փուլում հաշվարկվում է վիճակի կանխատեսումը ժամանակի հաջորդ կետում (հաշվի առնելով դրանց չափման անճշտությունը): Երկրորդում սենսորից ստացված նոր տեղեկատվությունը ուղղում է կանխատեսված արժեքը (նաև հաշվի առնելով այս տեղեկատվության անճշտությունը և աղմուկը):

Կանխատեսման փուլում.

  1. Համակարգի վիճակի կանխատեսում.

որտեղ է ներկա պահին համակարգի վիճակի կանխատեսումը. – վիճակների միջև անցման մատրիցա (համակարգի դինամիկ մոդել); – համակարգի վիճակի կանխատեսում ժամանակի նախորդ պահին. - վերահսկման գործողությունների կիրառման մատրիցա; վերահսկման գործողությունն է նախորդ պահին:

  1. Կովարիանսի սխալի կանխատեսում.

որտեղ է սխալի կանխատեսումը; - սխալ ժամանակի նախորդ պահին. գործընթացի աղմուկի կովարիանսն է:

Կարգավորման փուլում.

  1. Կալմանի շահույթի հաշվարկ.

որտեղ է Կալմանի շահույթը; - չափումների մատրիցա, որը ցույց է տալիս չափումների և վիճակների հարաբերակցությունը. չափման աղմուկի կովարիանսն է:

որտեղ է չափումը ներկա պահին:

  1. Կովարիանսի սխալի թարմացում.

որտեղ է ինքնության մատրիցը:

Եթե ​​համակարգի վիճակը նկարագրվում է մեկ փոփոխականով, ապա = 1, և մատրիցները վերածվում են սովորական հավասարումների:

Kalman ֆիլտրի արդյունավետությունը հստակ ցույց տալու համար փորձ է իրականացվել AVR PIC KY-037 ծավալի ցուցիչով, որը միացված է Arduino Uno միկրոկառավարիչին։ Նկար 1-ը ցույց է տալիս սենսորների ընթերցումների գրաֆիկը՝ առանց զտիչ կիրառելու (տող 1): Սենսորի ելքի վրա արժեքի քաոսային տատանումները ցույց են տալիս աղմուկի առկայությունը:

Նկար 1. Առանց զտիչ կիրառելու սենսորների ընթերցումների գրաֆիկը

Զտիչը կիրառելու համար անհրաժեշտ է որոշել փոփոխականների և , որոնք որոշում են համակարգի դինամիկան և չափումները: Մենք ընդունում ենք և հավասար է 1-ի և հավասար է 0-ի, քանի որ համակարգում չկան վերահսկողական գործողություններ: Ֆիլտրի հարթեցման հատկությունները որոշելու համար անհրաժեշտ է հաշվարկել փոփոխականի արժեքը և ընտրել պարամետրի արժեքը:

Մենք հաշվարկելու ենք փոփոխականը Microsoft Excel 2010-ում: Դա անելու համար անհրաժեշտ է հաշվարկել ստանդարտ շեղումը սենսորային ընթերցումների նմուշի համար: = 0,62: ընտրվում է կախված ֆիլտրման պահանջվող մակարդակից, մենք ընդունում ենք = 0,001: Նկար 2-ում երկրորդ տողը զտիչի օգտագործմամբ սենսորի ընթերցումների գրաֆիկն է:

Նկար 2. Կալման ֆիլտրի օգտագործմամբ սենսորների ընթերցումների գրաֆիկը

Գրաֆիկից մենք կարող ենք եզրակացնել, որ ֆիլտրը հաղթահարել է աղմուկը զտելու խնդիրը, քանի որ կայուն վիճակում զտիչն անցած սենսորների ընթերցումների տատանումները աննշան են:

Այնուամենայնիվ, Kalman ֆիլտրը ունի զգալի թերություն. Եթե ​​սենսորի չափված արժեքը կարող է արագ փոխվել, ֆիլտրացված սենսորի ընթերցումը չի փոխվի այնքան արագ, որքան չափված արժեքը: Նկար 3-ը ցույց է տալիս Kalman ֆիլտրի արձագանքը չափված արժեքի ցատկին:

Նկար 3. Kalman ֆիլտրի արձագանքը չափված արժեքի ցատկին

Չափված արժեքի ցատկին ֆիլտրի արձագանքը աննշան է ստացվել։ Եթե ​​չափված արժեքը զգալիորեն փոխվում է, և այնուհետև չի վերադառնում նախկին արժեքին, ապա զտված սենսորի ընթերցումները կհամապատասխանեն չափված արժեքի իրական արժեքին միայն զգալի ժամանակ անց, ինչը անընդունելի է բարձր արագություն պահանջող ավտոմատ կառավարման համակարգերի համար: .

Փորձից մենք կարող ենք եզրակացնել, որ Կալմանի ֆիլտրը պետք է օգտագործվի ցածր արագությամբ համակարգերում սենսորների ընթերցումները զտելու համար:

Մատենագիտություն:

  1. ԳՕՍՏ 17657-79. Տվյալների փոխանցում. Տերմիններ և սահմանումներ. - Մոսկվա: Ստանդարտների հրատարակչություն, 2005. - 2 էջ.
  2. Kalman ֆիլտր // Վիքիպեդիա. . Թարմացման ամսաթիվ՝ 26.04.2017թ. URL՝ http://ru.wikipedia.org/?oldid=85061599 (մուտքի ամսաթիվ՝ 21.05.2017):