2020-02-22

Koodausideaani, yhden bitin kannalta

Kuten mua seuranneet tietää, olen pitkään pyöritellyt ideaa siitä, olisiko jatkuvista konvoluutioista kohinan kanssa koodausteoreettiseksi primitiiviksi. Mahdollisesti jopa tavoin, jotka takaisivat oikein käytettyinä esim. yksipuolisen dekoodauslatenssin säätämisen sekä minimoinnin. Uusimman mietteeni ajamana yritän siis vähän fundamentaalisemmalla tasolla hahamotella miksi tämä todella saattaisi kiertää niitä intuitioita jotka ovat itseänikin vaivanneet.

Perinteinen kysymyksenasettelu

Tavallisesti kun informaatioteoriassa ja käytännön demodulaatiotyössä kysytään, mikä on optimaalinen tapa ilmaista jokin signaali AWGN-kohinasta, vastaus on sovitettu suodatin/matched filter. Se on pohjimmiltaan lineaarisuodatin jonka impulssivaste on sama kuin ilmaistavan signaalin, paitsi että sen vaihevaste on käännetty. Se ei ole (yleisesti) lainkaan sama kuin käänteissuodatin/inverse filter, koska jos alkuperäisen signaalin spektri on yhtään kenossa (tai herra paratkoon menee jossain kohdin nollaan), käänteissuodatin vahvistaisi hälyä mahdollisesti voimakkaastikin, ja tekisi ilmaisulle vain hallaa. Vaihevasteen käänteisyys kuitenkin on sovitetun kuten käänteissuodattimenkin ehdoton hyöty: siinä määrin kuin ilmaistavan signaalin energia on hajonnut eri tavoin ajassa, käänteinen vaihevaste ilmaisusuodattimessa uudelleenkeskittää parhaiten energian lineaarisessa ilmaisussa, ja sitä kautta johtaa tilastollisesti vahvimpaan päätöskriteerioon. (Näin standardineliönormissa, jonka laillisuuteen AWGN-raamin on tarkoituskin johtaa.)

Näyttäisi, ettei lineaarisessa raamissa voi olla parempaa ilmaisukriteeriota kuin tuo sovitettu suodatin plus binaarinen valinta; todistushan sille on jo.

Shannon ja sen seuraamukset

Informaatioteoriassa kanavan kapasiteettilause kuitenkin pelaa ikävästi tätä vastaan. Pohjimmiltaan toisessa ääripään regiimissään, eli puhtaasti tehon hallitsemassa äärettömän kaistanleveyden kanavassa, on aivan ilmeinen teoreettinen tapa lähettää virheetön pulssi, eli bitti: tuupataan kaikki bitin siirtoon tarkoitettu energia mielivaltaisen kapeaan delta-distribuutioon. Tuo ei tietenkään sovi yhteen jatkuvan kohinaprosessin kanssa, analyysissa, sinänsä, mutta niin kauan kun Shannonin teoreeman tehoehdot täyttyvät, riittävän tehon pulssi tasoitettuna mielivaltaisen pieneen ympäristöön aina rikkoo kohinan ja on ilmaistavissa mielivaltaisella tarkkuudella. Virhetodennäköisyys ilmaisussa on ajettaissa nollaan kunhan pulssin amplitudi/teho vain on riittävä suhteessa kohinaan.

Silloin pitäisi myös kaiken järjen mukaan olla niin, että jos me lohkomme taajuuskaistan sattumanvaraisiin osiin suodattamalla tuon pulssin joukolla tiukkoja kaistanpäästösuodattimia, tulos ei muutu. Näin siksi että tuo esitys on edelleen täysin legitiimisti luotavissa, hävittämättä tai luomatta informaatiota; se on matemaattisesti ns. partition of unity, eikä se edes distribuutioraamissa kärsi mistään konvergenssiongelmista.

Lisäksi, tuollainen kaistaleikkaus suodattaa periaatteessa kaikilla taajuuksilla pois saman osan kohinasta kuin itse pulssistakin. Eli pulssin jonkinlainen epämääräinen suhteellinen ilmaistavuus kullakin kanavalla pitäisi olla täysin vakio, ja siis riippua vain siitä meneekö alkuperäisen pulssin informaatio- tai koodausteoreettinen ilmaistavuus yli kapasiteettilauseen, vai eikö mene.

Kuitenkaan tuo optimaaliseksi kehuttu sovitettu suodatin ei tule lähellekään moista. Se kohisee niin maan perkeleesti. Eli mikä tässä nyt mättää? Tässä puhutaan niin lineaarisista asioistakin vielä yhden Nyquist-pulssin (rajalla deltan) kanssa, että mitään epälineaaristakaan parannuksenvaraa ei oikein näytä olevan. What gives?!?

Jäikö jotain sittenkin pöydälle?

Uusin ajatukseni on, että itse asiassa tässä pelkistetyssä yhden pulssin tapauksessa jätettiin itse asiassa koodausraamissa pöydälle hyödyntämätöntä. Nimittäin, tuo analyysi lähtee pohjimmiltaan jostain tutkatekniikasta tai aikasarja-analyysista, jossa me emme tiedä missä se ilmaistava signaali ylipäänsä alunperin oli tai ei ollut. Tuossa raamissa on aivan oikein käyttää sovitettua suodatinta, eikä lisätietoa ole saatavissa mistään.

Kommunikaatiopuolella oletus on kuitenkin vähän eri. Siellä me yleisesti ottaen tiedämme mistä tiettyä bittiä pitäisi etsiä: se on jo-tarkoituksella-synkronisoidussa pakettiliikenteessä tismalleen niin ja niin monen nanosekunnin päässä edellisestä. Eli oikea formalisaatio yksinkertaisimmalle mallille ei olekaan, löytyykö jostain joskus joku bitti vai ei, ehkä, vaan suora päätösongelma siitä onko origokeskeinen pulssi paikalla, vai ei. Ja vielä eritoten bayesilaisessa raamissa sillä priorilla, että mitään muita pulsseja ei ylipäänsä ole lähetetty, eikä mikään vastaanotettu signaali voi olla muuta kuin toinen kahdesta täsmällisestä, AWGN-hälyä (eli siis että jopa pisteittäin, jatkuvasti, kaikki poikkeamat jommasta kummasta muodosta ovat väkisin kohinaperäisiä).

Eli näin siis modulo synkronisaatio ja se mitä tiedetään jo aiemmasta datasignaalista/dekoodauksesta, ja mahdollisesti mitä tullaan tietämään myöhemmin, jos sallitaan dekoodausviive analyysiin. Mun ajatukset myös on hakemassa minimaalista viivettä lopulta.

Tämä on yhtäkkiä aivan eri pallopeli. Aiemmin tilastopäättelyn priori oli täysin tasainen ajassa sekä AWGN-muotoa. Nyt se on tuntuvasti rakenteisempi: on vain yksi tarkka origon ympäri symmetrinen pulssi joka on lähetetty (vastaanotettava koodivektori on siis eksaktisti se, jatkuvana suureena; muoto vaihtuu kaistarajauksen mukaan muttei muuta) tai jos sitä ei ole lähetetty, on lähetetty eksaktisti nollaa ajan alusta ajan loppuun. Tuota vastaan ideaalinen vektorikvantisaatio toimii aivan toisella tasolla kuin mikään matched-filter-plus-quantizer.

Lisäksi, kaistarajatussa raamissa tiedämme, että se alkuperäinen mahdollinen delta-impulssi muuntuu (alimmassa partition osassa/basebandilla) tismalleen Nyquist-pulssiksi, joka on tasavälisesti ajassa nolla, silloin kun ei ole origossa tismalleen ykkönen; jos me suodatamme basebandille tarkasti, kaikki poikkeamat nollasta (origossa ykkösestä tai nollasta) noissa pulssin herkissä kohdissa ovat välttämättä kohinan tekosia. Näytteistysteoreema vielä kaistan sisällä takaa senkin, että informaatiota ei häviä siinä kun katsellaan asioita diskreetissä versus jatkuvassa kannassa. Eli tilastollisesti optimaalinen päättely ei enää olekaan sitä että meneekö sovitettu suodatin tietyn rajan yli jos sattuu joskus menemään, vaan että meneekö sovitettu suodatin tasan origossa tasan nollaan vai tasan ykköseen, oletettaen että kaikkialla tunnetuissa kaistarajatun pulssin nollakohdissa se kuitenkin väkisin menee nollaan.

Tuo on aivan hysteerisen paljon vahvempi priori kuin mitä olen koskaan nähnyt käytettävän tämän sortin analyysissa. Vaikka se on minusta täysin hyvin perusteltu, ja ehkä jopa ilmeinen: joko sinä lähetit bitin/pulssin tai et, jos teit sen oikein niin se näyttää ideaalisesti sinc()-funktiolta jolla on täsmällinen muoto, näytteistysteoreeman eri versiot antaa sun pomppia aika vapaasti noiden distribuutio- ja diskreettien yms. formalismien välillä sotkematta matikkaa, eikä kukaan siinä standardianalyysissa muutenkaan selitä miksei käsitteellisestä signalointihetkestä ajallisesti eroavaa nollatietoa oteta aktiiviseksi prioriksi tuossa kaistarajatussa raamissa. Vaikka kaikkihan jo tietää että kaistarajaus on väkisinkin epälokaali operaatio sinänsä. Varsin vittumainenkin sellainen vielä, kun se sinc()-pulssi häviää ajassa sub-eksponentiaalisesti, niin ettei kaistarajattua kommunikaatiota ylipäänsä voida millään mittarilla edes puoliksi pitää aikalokaalina abstraktiona.

Hilpeänä esimerkkinä tuosta muuten… Noin teknisesti, jos sulla on mitkä vain n näytettä kaistarajatusta signaalista, ja ikään kuin loput (äärettömät, huoh—) näytteet (tarkemmin vapausasteet) on nollia, mitkä vain muut annetut n näytettä siitä—täysin ajasta tai mistään riippumatta—on täydellisesti rekonstruoitavissa. En yrittäis tota hetä numeerisesti, koska ongelma on ihan jäätävän ill-posed, mutta noin teoreettisesti kaistarajatut funktiot on just noin jäätävän jäykkiä. Matemaatikon mielessä kompleksianalyyttisyydensä tähden. Eli ne siis sallii tosi perverssejä, epälokaaleja manipulaatioita. Ne vaatii esim. välttämättä epäkausaalisuutta, niin etteivät voine kuvata koskaan fysikaalista todellisuutta järin tarkasti.

Sovellukseni

Jos siis käytät sovitettuna suodattimena kaistarajattua impulssia (taajuuspuolella toi on kaistallaan identiteetti, koska se on määritelmällisesti nollavaiheinen ja ykkösmagnitudinen kaistan yli) ajassa-nolla lähetetyn impulssin päätösongelmaan, kaikesta siitä kivasta lineaarikoneistosta minusta noin intuitiivisesti pitäisi seurata, että sovelletaan sitä suodatinta muuallakin kuin vain origossa. Katsotaan mitä hälinää siitä tuli läpi, ja kun tiedetään a priori että kaikkialla muualla tietyissä tasavälisissä pisteissä se alkuperäinen signaali meni nollaan, no konditionalisoidaan koko ongelma sen mukaan myös. Ja kun tää nyt on niinkin simppeliä lineaarikoneistoa, ainakin vähennetään se energia joka meni överiksi noin alkuun: jos vastaanotit jotain mikä on muuta kuin nolla siellä impulssin reunanollakohdissa, jostain se energia tuli, eli otetaan se vaan pois ja suodatetaan lineaarisesti takaisin. Vähintäänkin toi on turvallinen operaatio, ja jos siitä voi jotenkin kehittää kontraktiivisen iteraation, no sitten vakaa piste ois jo olemassa.

Toki tuonkin jälkeen meillä olisi käsissä edelleen vektorikvantisaatio-ongelma. Mutta tällä kertaa sillä olisi selvä numeerinen ja voimakkaan lineaarialgebrallinen rakenne, joka viittaa separoituvuuteen. Ei pitäisi olla erityisen vaikeaa tasoittaa sen koordinaattikohtaisia virhekontribuutioita yli koko virhevektorin, matkalla kohti globaalia VQ-optimia. Varsinkaan kun tässä (ja omissa allpass-ajatuksissani aiemmin) on läsnä kuitenkin taatusti häipyvä aikarakenne, joka tekee kaikenlaisesta numeerisesta optimoinnista lokaalista myös. Ja miltei vähän luulen myös, että algoritmit joissa väliin lyödään harkittu konvoluutio ja sitten vasta pyöristystä ja/tai iterative shrinkingiä, voisivat ratkaista ongelman aidosti.

No comments:

Post a Comment