Jste zde

GMDH neuronová síť (filtr) pro digitální zpracování signálů

GMDH je neuronová síť, která se od klasických neuronových sítí liší tím, že dá přirovnat k adaptivnímu filtru. Tím je vhodná pro aplikace vyžadující složitější filtraci, a v kterých se nehodí klasický FIR adaptivní filtr s NLMS algoritmem. Následující článek se snaží GMDH síť co jednodušeji popsat..

Co je to GMDH neuronová síťť

GMDH síť / filtr je algoritmus patřící do oblasti číslicového zpracování signálů typu neuronová síť. Strukturou se vzdáleně podobá vzájemnému propojení mnoha jednoduchých FIR filtrů za sebou. Princip je, ale úplně jiný. GMDH síť patří trochu k netypickým neuronovým sítím, protože se tak chová pouze při tzv. učení sítě, kdy dochází k automatické adaptaci koeficientů a struktury na druh signálů, které má později filtrovat. Po naučení se již síť GMDH chová jako filtr pevné struktury s pevně danými koeficienty (jako například FIR filtr, který je ale nutné navrhnout "ručně"). Právě nastavená struktura i koeficienty jsou výsledkem předchozího učení. To probíhá tzv. metodou učení s učitelem, kdy je nutné síti předkládat jak druh filtrovaného, například nějak zarušeného signálu, tak i ideální výstup, tzn. stejný užitečný signál bez rušení. Proto je nutné pro fázi učení, tj. automatické tvoření struktury pro odstranění daného typu rušení, míst k dispozici dvojici signálů: reálný užitečný signál obsahující nežádané složky a ideální užitečný signál. Tím se tato metoda například liší od adaptivního FIR filtru s LMS algoritmem, který se adaptuje průběžně bez fáze učení.

K čemu to je ť

GMDH síť je vhodná pro filtrování všech signálů, které mají nějakou společnou vlastnost, na kterou je možné síť naučit.
Nejvhodnější je pro filtraci úzkopásmových a stacionárních signálů nebo rušení.
Například:

  • filtrace rušících harmonických signálů o neznámých frekvencích
  • filtrace slabého šumu z užitečného signálu

Z obecného praktického použití lze jmenovat:

  • Náhrada adaptivního FIR filtru vysokého řádu
  • Odstranění sinusových rušících signálů na indukovaných ve vedení od senzoru
  • Automatické zjištění a dorovnání útlumu některých frekvencí způsobené vedením
  • Odstranění síťového rušení 50Hz z přenášeného signálu
  • Odstranění hluku nahraného společně se zvukem

Na jakém principu GMDH síť pracuje ť

Základem je vytvoření GMDH sítě, resp. filtru, v závislosti na neznámém rušení, které chceme odstranit. V případě porovnání s jiným filtrem, například s adaptivním FIR filtrem s LMS, je tedy princip trošku složitější. Celou fázi práce filtru lze rozdělit do dvou částí:

 

  • Učící a testovací fáze filtru - nastavení koeficientů a adaptivní tvoření struktury filtru z předkládaných zarušených signálů, tzv. učících a testovacích signálů.
  • Pracovní fáze filtru - filtrace libovolného signálu s rušením, na které byla předtím síť (filtr) naučena. Struktura filtru i jeho koeficienty se již nemění (jsou pevné) a struktura se tak chová jako pevný filtr.

Hlavní rozdíl proti jiným metodám je adaptivní změna struktury samotného filtru během fáze učení tak, aby filtr co nejlépe postihoval chybový rušící signál, který má být odstraněn ze signálu užitečného. Není tedy nutné dopředu nic vědět o povaze a parametrech signálu. U adaptivního filtru již se například musí vhodně zvolit řád filtru k dané aplikaci, jinak je filtr nepoužitelný.


 

STRUKTURA GMDH sítě

Samotná výsledná struktura se tvoří během fáze učení a testování. Výsledná struktura naučeného sítě, která pak již tvoří pevný filtr, může například vypadat jako na obrázku 1, kde X jsou vstupy a y je výstup.

Obr. 1. Příklad naučené struktury GMDH sítě

Struktura je složená z tzv. aktivních neuronů - výkonný prvek (modré prvky v obrázku 1.) a pasivních neuronů - transportní prvek (černé prvky v obrázku 1.). Pasivní neurony se vyskytují jen v tzv. vstupní vrstvě a fyzicky jsou vlastně tvořeny jen paměťovými místy (buffer) v paměti CPU. Jejich počet určuje šířku (velikost) filtru. V dalších vrstvách se vyskytují jen aktivní neurony (viz. obrázek 2.), jejichž počet je závislý buï na programátorovy nebo na učícím algoritmu, který sám zvolí potřebný počet vrstev i počet neuronu v každé z nich.

Obr. 2. Blokové schéma aktivního neuronu a jeho rovnice výstupu

Každý aktivní neuron realizuje kvadratický polynom s výstupem y ( pozn. k určuje pořadí neuronu ve vrstvě) určeným vstupy i a j a rovnicí na obrázku 2. Cílem učícího algoritmu je najít hodnoty koeficientů a f tohoto polynomu. K tomu je potřeba použít sadu 6 hodnot vstupů (i a j) ze vstupního zarušeného signálu a k tomu odpovídající 6 výstupů y čistého užitečného signálu bez rušení. K učení je tedy nutné mít dvojce zarušených vstupů a čistých výstupů stejného užitečného signálu na něž se filtr tzv. naučí.

Princip a postup učení GMDH sítě na zarušený signál

Cíl je tedy vytvoření takového GMDH filtru, který pak bude při praktickém využívání odstraňovat dané rušení (harmonické, šum nebo jiné). Samotný postup učení sítě, kterým cíl dosáhneme se dá popsat několika kroky. Já jej ukážu na praktické ukázce vytvoření filtru pro odstranění šumu ze signálu zpracovávaného v čase, tzn. jednotlivé vzorky (například přímo z A/D převodníku ) se přímo nebo s časovým zpožděním přivádějí na vstup GMDH sítě. V mém případě jde o 4 následující vzorky v čase získávané z zpožïovacího buffer (viz. obrázek 3.).

Postup (kroky) učení:

  1. Zvolení velikosti vstupní vrstvy - tj. počet pasivních transportních prvků = N1 prvků
  2. Vytvoření 1. skryté vrstvy obsahující N*(N-1) / 2 aktivních výkonných prvků sítě a jejich propojení se vstupní vrstvou tak, aby žádná kombinace vstupů se neopakovala (viz. obrázek vpravo)
  3. Z vybraných šesti čtveřic vstupů X1X2 a k nim příslušné hodnoty výstupů y1y6, kterých chceme dosáhnout (tj. vstupní signál je zarušený a výstupní ideální čistý bez rušení), se vypočítají koeficienty af (soustava rovnic dle obrázku 2).
  4. Na vstup se přiloží jiné signály, tzv. testovací, a určí se chyba získaná rozdílem získaných výstupů y1y6 s referenčním ideálně čistým signálem.
  5. Vyberou se a ponechají jen N2 výstupů, které mají nejmenší chybu (rozdíl). V mém případě jsou to prvky onačené čísly 2, 3, 4 a 6 (viz. obrázek 3.).
  6. Pak se již vše opakuje s tím rozdílem, že na vstup další nové vytvořené vrstvy již přivádíme výstupy vrstvy předchozí , tzn. výstupy y2, y3, y4 a y6.
  7. Postup se stále opakuje, dokud se nevytvoří struktura podobná například obrázku 3. Vyvedené výstupy z každé vrstvy (y1 až y3) označují v mém případě výstupy s nejmenší chybou od ideálního výsledku.

Obr. 3. Příklad postupného vytváření struktury GMDH sítě / filtru při učení

Postup je trošku složitější na vysvětlování, ale z hlediska programování v programu Matlab nebo v jazyku C, jde o docela jednoduchou záležitost s několika cykly. Případně si lze celý postup ozřejmit na pěkných interaktivních stránkách o neuronových sítích čVUT FEL, katedry počítačů - http://neuron.felk.cvut.cz/courseware/. Zde je i podrobný příklad způsobu počítání koeficientů af pomocí matic.

Příklady výsledků z testování

V následujících řádcích ukážu některé mé výsledky testování struktury GMDH filtru podobné té na obrázku 3.

Rušení neznámím sinusovým signálem

Na následujícím obrázku 4. jsou výsledky získané filtrací zarušeného užitečného signálu proměnného v čase sinusovým signálem o neznámé frekvenci. Struktura má však 10 vstupních hodnot, resp. ve vstupní vrstvě je 10 prvků. Užitečný čistý signál ( Reference signal ) má průběh uvedený v pořadí 3. (nespodnějším) průběhem na obrázku 4. Zarušený signál (Input signal - směs čistého užitečného signálu a sinusovky), zobrazen úplně horním 1. průběhem na obr. 4., je přiveden na vstup naučené GMDH sítě, přefiltrován a výstupní signál ( Output signal) je zobrazen jako 2. průběh. Je tedy možné porovnat téměř shodu výstupního signálu a referenčního čistého. Pouze v okolí skokové změny průběhu užitečného signálu je oba průběhy lehce liší.

Obr. 4. Výsledky získané použitím naučeného GMDH filtru na rušení sinusovým signálem neznámé frekvence - průběh signálu v čase (vlevo) a spektrogram (vpravo)

Zvukový signál rušený šumem

Též jsem provedl složitější test a to filtraci řečového signálu (nahraná řeč) smíchaná s hlukem jedoucího automobilu. Struktura přesně odpovídá té na obrázku 4. Průběhy signálů a výsledek je zobrazen na obrázku 5. stejným způsobem, jak je tomu na obrázku 4. Vstupní zašuměný signál má SNR = 5 dB. Výstupní signál z naučeného filtru (prostřední průběhy obrázku 5.) se tentokrát dost liší od ideálního čistého průběhu (spodní průběh). Filtrace je příliš silná a s odstraněním šumu se odstraní a některé složky řeči. Samotný GMDH síť/filtr není tedy příliš vhodný pro filtraci a odstranění tak složitého a silného rušení z řeči, jako v uvedeném případě.

Obr. 5. Výsledky získané použitím naučeného GMDH filtru na směs řeči a hluku - průběh signálu v čase (vlevo) a spektrogram (vpravo)

Závěr

V tomto článku jsem se pokusil zjednodušeně přiblížit princip a funkci GMDH neuronové sítě. Protože se nejedná o typickou neuronovou síť, jak se obvykle v literatuře a časopisech prezentuje na síti typu perceptron, její funkce a vhodnost použití se trochu liší. Obecně s neuronovými sítěmi typu perceptron má společný princip učení - učení s učitelem, naopak rozdílná je struktura, která se vytváří během samotného učení narozdíl. To je odlišnost od jiných typů neuronových sítí, jejichž velikost a strukturu je nutné pevně stanovit již před učením. Naučená struktura se pak dále používá celá, narozdíl od GMDH, kde se využívají jen některé prvky (neurony) a spoje. Ty prvky, které se nakonec neuplatní a nemají vliv na výstup, se totiž mohou odstatranit a struktura (např. na obrázku 3.) se pak výrazně zjednoduší. To snižuje náročnost implementace na signálových procesorech DSP. Z hlediska použití se hodí pro aplikace, kde by možná šlo použít adaptivní filtr, ale s nejistými nebo horšími výsledky.

Antonín Vojáček
vojacek@ hwg.cz

DOWNLOAD & Odkazy

 

Hodnocení článku: