V strojového učení , a neuronové sítě konvoluční nebo sítě neuronů konvoluce (anglický CNN nebo ConvNet pro konvoluční Neural Networks ) je druh umělé neuronové sítě acyklické ( dopředná ), přičemž spojení vzor mezi neurony je inspirovaný zrakové kůry zvířat. Neurony v této oblasti mozku jsou uspořádány tak, aby odpovídaly překrývajícím se oblastem při skládání zorného pole . Jejich provoz je inspirován biologickými procesy , skládají se z vícevrstvé sady perceptronů , jejichž účelem je předzpracování malého množství informací. Konvoluční neuronové sítě mají široké uplatnění v rozpoznávání obrazu a videa , doporučovacích systémech a zpracování přirozeného jazyka .
Uvažujme o analýze monochromatického obrazu (ve 2 rozměrech , šířce a výšce) nebo v barvě (ve 3 rozměrech , vezmeme-li v úvahu RGB obraz se 3 jednotkami hloubky, třetí odpovídá skládání 3 obrazů podle každé barvy , červená, zelená a modrá).
Konvoluční neuronová síť se skládá ze dvou typů umělých neuronů, uspořádaných do „vrstev“, které postupně zpracovávají informace:
Mezi každou vrstvou lze použít nelineární a přesné korekční ošetření, aby se zlepšila relevance výsledku.
Všechny výstupy zpracovatelské vrstvy umožňují rekonstituci přechodného obrazu, který bude sloužit jako základ pro následující vrstvu.
V souvislosti s rozpoznáváním obrazu je tento obraz „vydlážděný“, to znamená rozřezaný na malé plochy (tzv. Dlaždice). Každá dlaždice bude zpracována samostatně umělým neuronem (který provádí klasickou filtrační operaci přidružením váhy ke každému pixelu dlaždice). Všechny neurony mají stejné parametry ladění. Mít stejné zpracování (stejné parametry), mírně posunuté pro každé přijímací pole, se nazývá konvoluce . Tato vrstva neuronů se stejnými parametry se nazývá „jádro konvoluce“.
Pixely dlaždice se analyzují globálně. V případě barevného obrazu obsahuje pixel 3 vstupy (červený, zelený a modrý), které budou zpracovány globálně každým neuronem. Obraz tedy lze považovat za objem a je třeba jej zaznamenat například 30 × 10 × 3 pro šířku 30 pixelů , 10 výšek a 3 hloubky odpovídající 3 červeným, zeleným a modrým kanálům. Obecně budeme hovořit o „vstupním objemu“.
Zobecnění (hloubka a překrytí)Ve skutečnosti je analyzovaná oblast o něco větší než dlaždice a nazývá se „ přijímací pole “. Přijímací pole se proto překrývají, aby se dosáhlo lepší reprezentace původního obrazu a lepší konzistence zpracování přes vrstvy zpracování. Překrytí je definováno výškou (offset mezi dvěma sousedními přijímacími poli).
Konvoluční jádro bude analyzovat charakteristiku vstupního obrazu. Abychom mohli analyzovat několik charakteristik, budeme skládat vrstvy nezávislých konvolučních jader, přičemž každá vrstva bude analyzovat charakteristiku obrazu. Sada takto naskládaných vrstev tvoří „vrstvu s konvolučním zpracováním“, která by měla být ve skutečnosti považována za svazek (často nazývaný „výstupní svazek“). Počet zpracovatelských vrstev se nazývá hloubka konvoluční vrstvy (nezaměňovat s hloubkou konvoluční neuronové sítě, která počítá počet konvolučních vrstev).
Konvoluční vrstva se používá ke zpracování vstupního svazku k poskytnutí výstupního svazku. Lze také asimilovat výstupní objem na střední obraz.
Jinými slovy, v konvoluční neuronové síti je každé pole receptoru zpracováno jednovrstvým perceptronem. A všechny monovrstevné perceptrony spojené se všemi poli receptorů jsou nakonfigurovány identicky.
Hlavní výhodou konvolučních sítí je použití jediné váhy spojené se signály vstupujícími do všech neuronů stejného konvolučního jádra. Tato metoda snižuje nároky na paměť, zvyšuje výkon a umožňuje invariantnost zpracování překladu. To je hlavní výhoda konvoluční neuronové sítě oproti vícevrstvému perceptronu , který považuje každý neuron za nezávislý, a proto každému příchozímu signálu přiděluje jinou váhu.
Když se vstupní hlasitost v průběhu času mění (video nebo zvuk), je zajímavé přidat parametr v časové škále v parametrizaci neuronů. V tomto případě budeme hovořit o neuronové síti s časovým zpožděním ( TDNN ).
Ve srovnání s jinými algoritmy klasifikace obrazu používají konvoluční neurální sítě relativně malé předběžné zpracování. To znamená, že síť je sama zodpovědná za změnu vlastních filtrů (učení bez dohledu), což u jiných tradičnějších algoritmů neplatí. Absence počátečního nastavení a lidského zásahu je hlavní výhodou CNN.
Návrh konvolučních neuronových sítí sleduje objev vizuálních mechanismů v živých organismech. Na začátku roku 1968 ukázaly práce na zvířatech, že zraková kůra obsahuje komplexní uspořádání buněk odpovědných za detekci světla v překrývajících se podoblastech zorného pole zvaných receptivní pole. Dokument identifikoval dva základní typy buněk: jednoduché buňky, které reagují na charakteristické vrcholy (vysoký kontrast, vysoká intenzita atd.) Ve svém receptorovém poli; a komplexní buňky, které mají větší receptorová pole a jsou lokálně neměnné v přesné poloze vzoru. Tyto buňky fungují jako místní filtry ve vstupním prostoru.
Neocognitron (in) , předchůdce konvolučních sítí, byl popsán v dokumentu z roku 1980 Toto je první reálný konvoluce síť protože nutí jednotky umístěné v různých polohách mají stejnou váhu. Jeho předchozí verze, kognitron, se lišila hlavně absencí tohoto omezení, ale měla také vrstvy sdružování.
Neocognitron byl upraven v roce 1988 pro časové signály. Jeho design byl vylepšen v roce 1998, zobecněn v roce 2003 a zjednodušen ve stejném roce.
V roce 1988 byl pro aplikaci signálního rozkladu jednorozměrné elektromyografie navržen odlišný design konvolučních neuronových sítí . Tento systém byl upraven v roce 1989 dalšími konstrukcemi založenými na konvolucích.
V návaznosti na článek z roku 2005, který prokázal zájem grafických procesorů ( GPU ) o strojové učení, bude několik publikací rozvíjet tento princip, aby byly GPU velmi efektivní. V roce 2012 Ciresan a kol. výrazně zlepšil nejlepší výkon v literatuře pro několik obrazových databází , včetně MNIST databáze, databáze Norb, HWDB1, CIFAR10 datovém souboru (60.000 32 x 32 RGB s označením snímků) a ImageNet datový soubor .
I když jsou účinné pro zpracování obrazu, vícevrstvé perceptrony (MLP) mají potíže s manipulací s velkými obrazy, kvůli exponenciálnímu nárůstu počtu spojení s velikostí obrazu, protože každý neuron je „plně připojen“ ke každému z neuronů předchozí a další vrstvy . Konvoluční neuronové sítě, jejichž princip je inspirován principem vizuální kůry obratlovců, naopak omezují počet spojení mezi neuronem a neurony sousedních vrstev, což drasticky snižuje počet parametrů, které je třeba se naučit. Pro hlubokou síť, jako je například AlexNet, je více než 90% naučených parametrů způsobeno 3 nejhlubšími „plně propojenými“ vrstvami a zbytek se týká (5) konvolučních vrstev.
Například pokud pořídíme snímek o velikosti 32 × 32 × 3 (32 širokých, 32 vysokých, 3 barevné kanály), jeden plně propojený neuron v první skryté vrstvě MLP bude mít 3072 záznamů (32 * 32 * 3 ). Obraz 200 × 200 by tak vedl ke zpracování 120 000 záznamů na neuron, což by se, vynásobené počtem neuronů, stalo obrovským.
Konvoluční neuronové sítě mají za cíl omezit počet záznamů při zachování silné „prostorově lokální“ korelace přírodních obrazů. Na rozdíl od MLP mají CNN následující rozlišovací znaky:
Společně tyto vlastnosti umožňují konvolučním neuronovým sítím získat lepší robustnost v odhadu parametrů u problémů s učením, protože pro pevnou velikost korpusu učení je množství dat na parametr větší. Sdílení hmotnosti také umožňuje výrazně snížit počet volných parametrů, které se mají naučit, a tím i požadavky na paměť pro provoz sítě. Snížení paměťové stopy umožňuje učení větších sítí, a proto je často výkonnější.
Konvoluční architektura neuronové sítě je tvořena hromadou vrstev zpracování:
Konvoluční vrstva je základním stavebním kamenem CNN. Podrobnosti o jeho fungování jsou uvedeny v následujících odstavcích.
NastaveníKe zvětšení objemu konvoluční vrstvy (nazývané také výstupní objem) se používají tři hyperparametry : hloubka , výška a okraj .
Pokud krok a okraj aplikovaný na vstupní obraz umožňují řídit počet receptivních polí, která mají být spravována (povrch ošetření), hloubka umožňuje mít představu o výstupním objemu a stejným způsobem jako obraz může mít hlasitost, vezmeme-li hloubku 3 pro tři kanály RGB barevného obrazu, konvoluční vrstva bude také na výstupu představovat hloubku. Proto hovoříme spíše o "výstupním objemu" a "vstupním objemu", protože vstupem konvoluční vrstvy může být buď obrázek, nebo výstup jiné vrstvy konvoluce.
Prostorovou velikost výstupního objemu lze vypočítat na základě velikosti vstupního objemu , ošetřované oblasti (počet přijímacích polí), výšky tónu, se kterou jsou aplikovány, a velikosti okraje . Vzorec pro výpočet počtu neuronů ve výstupním objemu je .
Pokud není celý, periferní neurony nebudou mít tolik vstupů jako ostatní. Bude proto nutné zvětšit velikost marže (znovu vytvořit virtuální vstupy).
Často uvažujeme krok S = 1, proto vypočítáme okraj takto: chceme-li výstupní objem stejné velikosti jako vstupní objem. V tomto konkrétním případě se o vrstvě říká, že je „místně spojená“.
Nastavení sdíleníSdílení parametrů filtrování mezi různými neurony stejného konvolučního jádra (patch) umožňuje konvoluční neuronové síti mít vlastnost invariance zpracování translací. Je založen na rozumném předpokladu: pokud je filtr účinný v levé horní části obrázku, bude určitě stejně účinný i v pravém dolním rohu. Hodnoty filtru (patche) proto musí sdílet všechny neurony konvoluční vrstvy.
Pokud je prvek záplaty užitečný pro výpočet v určité poloze ve vesmíru, měl by být užitečný také v jiné poloze. Jinými slovy, vzhledem k dvourozměrné vrstvě (hloubce 1) konvoluční vrstvy budou mít všechny její neurony stejné váhy a předpětí.
Vzhledem k tomu, že všechny neurony v jediném hloubkovém řezu (jádru) sdílejí stejný patch, považují se tyto patche za splývající se vstupem. Výsledkem této konvoluce je přechodný obraz. Několik párů jádra / záplaty umožňuje konstrukci procesní vrstvy a vytvoření mezilehlého obrazu. Lze skládat více vrstev zpracování a vytvořit tak výsledný obraz.
V případech, kdy má analyzovaný obraz definovanou prostorovou strukturu (tvář například očima nahoru, bradou dolů atd.), Ztrácí hypotéza sdílení parametrů svůj význam. V tomto případě je běžné uvolnit systém sdílení parametrů a nahradit konvoluční vrstvu místně připojenou vrstvou.
Dalším důležitým konceptem CNN je sdružování, což je forma převzorkování obrazu. Vstupní obraz je rozřezán na řadu obdélníků s n pixely na každé straně, které se nepřekrývají (sdružování). Každý obdélník lze považovat za dlaždici. Signál na výstupu dlaždice je definován jako funkce hodnot získaných různými pixely dlaždice.
Sdružování snižuje prostorovou velikost přechodného obrazu, čímž snižuje množství parametrů a výpočtů v síti. Proto je časté periodické vkládání sdružovací vrstvy mezi dvě po sobě jdoucí konvoluční vrstvy architektury konvoluční neurální sítě, aby se snížilo nadměrné učení. Operace sdružování také vytváří formu translační invariance.
Sdružovací vrstva pracuje nezávisle na každém vstupním řezu hloubky a mění její velikost pouze na úroveň povrchu. Nejběžnější formou je vrstva bazénu s dlaždicemi velikosti 2 × 2 (šířka / výška) a jako výstupní hodnota maximální vstupní hodnota (viz obrázek). Mluvíme v tomto případě o „Max-Pool 2x2“ (komprese 4krát).
Je možné použít i jiné funkce sdružování než maximální. Můžeme použít „průměrné sdružování“ (výstupem je průměr hodnot vstupního pole), „sdružování L2-norem“. Ve skutečnosti, i když se zpočátku často používalo sdružování výhod, ukázalo se, že max-pooling byl efektivnější, protože významněji zvyšuje význam silných aktivací. Za jiných okolností můžeme použít stochastické sdružování (viz „Regularizační metody“ níže v tomto dokumentu).
Sdružování umožňuje velké zisky ve výpočetním výkonu. Vzhledem k agresivnímu zmenšení velikosti reprezentace (a tedy ke ztrátě souvisejících informací) je však současným trendem používání malých filtrů (typ 2 × 2). Je také možné se vyhnout sdružovací vrstvě, ale to zahrnuje větší riziko nadměrného učení.
Často je možné zlepšit efektivitu zpracování vložením mezi vrstvy zpracování vrstvu, která bude na výstupních signálech vykonávat matematickou funkci ( aktivační funkci ). Máme zejména:
Relu korekce je často upřednostňována, protože vede k tréninku neurální sítě několikrát rychleji, aniž by to významně ovlivnilo přesnost zobecnění.
Po několika vrstvách konvoluce a maximálního sdružování probíhá uvažování na vysoké úrovni v neuronové síti prostřednictvím plně propojených vrstev. Neurony v plně propojené vrstvě mají připojení ke všem výstupům předchozí vrstvy (jak je pravidelně vidět v běžných neuronových sítích). Jejich aktivační funkce lze proto vypočítat pomocí násobení matice následovaného polarizačním posunem.
Ztrátová vrstva určuje, jak tažení sítě penalizuje mezeru mezi očekávaným a skutečným signálem. Je to obvykle poslední vrstva v síti. Lze zde použít různé ztrátové funkce vhodné pro různé úkoly. Ztráta " Softmax " se používá k předpovědi jedné třídy mezi K vzájemně se vylučujícími třídami. Ztráta sigmoidní křížové entropie se používá k předpovědi K nezávislých hodnot pravděpodobnosti v . Euklidovská ztráta se používá k regresi na skutečné hodnoty v .
Nejběžnější forma konvoluční architektury neurální sítě stohuje několik vrstev Conv-ReLU, sleduje je vrstvami Pool a opakuje tento vzor, dokud se vstup nesbalí do prostoru dostatečné velikosti. Na jednom místě je běžné umístit plně spojené vrstvy (FC). Poslední plně připojená vrstva je připojena k výstupu. Zde jsou některé běžné architektury konvolučních neurálních sítí, které se řídí tímto vzorem:
Skládání vrstev CONV s malými filtry pro sdružování umožňuje výkonnější zpracování s menším počtem parametrů. Avšak s nevýhodou, že vyžaduje větší výpočetní výkon (aby obsahoval všechny mezivýsledky vrstvy CONV).
Konvoluční neuronové sítě používají více hyperparametrů než standardní vícevrstvý perceptron. I když stále platí obvyklá pravidla pro rychlosti učení a regulační konstanty, je třeba vzít v úvahu představy o počtu filtrů, jejich formě a formě maximálního sdružování.
Vzhledem k tomu, že velikost mezilehlých obrazů klesá s hloubkou zpracování, mají vrstvy v blízkosti vstupu méně filtrů, zatímco vrstvy blíže k výstupu mohou mít více. Aby se vyrovnal výpočet v každé vrstvě, produkt počtu funkcí a počtu zpracovaných pixelů se obvykle volí zhruba konstantní napříč vrstvami. Pro zachování vstupních informací by bylo nutné udržovat, aby se počet mezilehlých výstupů (počet mezilehlých obrazů vynásobený počtem pozic pixelů) zvyšoval (v širším slova smyslu) z jedné vrstvy do druhé.
Počet mezilehlých obrazů přímo řídí výkon systému, závisí na počtu dostupných příkladů a složitosti zpracování.
Tvary filtrů se v literatuře velmi liší. Obvykle se vybírají na základě souboru dat. Nejlepší výsledky na obrázcích MNIST (28x28) jsou obvykle v rozsahu 5x5 na první vrstvě, zatímco přirozené datové sady obrázků (často se stovkami pixelů v každé dimenzi) mají tendenci používat větší filtry první vrstvy 12 × 12 nebo dokonce 15 × 15.
Úkolem je proto najít správnou úroveň podrobnosti, aby bylo možné vytvářet abstrakce v příslušném měřítku a přizpůsobené jednotlivým případům.
Typické hodnoty jsou 2 × 2. Velmi velké vstupní objemy mohou v prvních vrstvách ospravedlnit sdružování 4 × 4. Volba větších tvarů však drasticky zmenší velikost signálu a může mít za následek ztrátu příliš velkého množství informací.
Ve strojovém učení je regularizace proces zaměřený na zlepšení výkonu generalizace algoritmu učení, jinými slovy na snížení jeho chyby na testovacích vzorcích. Toho lze pravděpodobně dosáhnout na úkor chyby učení. Cílem takové metody je zabránit nadměrnému učení, které je výsledkem nadměrného přizpůsobování modelu tréninkovým údajům. Z hlediska kompromisu zkreslení / odchylky over-learning popisuje model schopný velmi dobře se přizpůsobit jakékoli dané tréninkové sadě (nízké zkreslení), ale měl by silně upravit její parametry (váhu), aby se přizpůsobil dalšímu souboru tréninkových dat (vysoká varianta).
Metoda předčasného ukončení spočívá v náhodném „deaktivování“ výstupů neuronů (s předdefinovanou pravděpodobností, například 0,5 pro skryté vrstvy a 0,8 pro vstupní vrstvu) během fáze učení. To znamená simulovat sadu různých modelů ( pytlování ) a učit se je společně (ačkoli žádný se nenaučí od začátku do konce). Každý neuron, který je během iterace učení možná neaktivní, to nutí každou jednotku „dobře se učit“ nezávisle na ostatních a vyhnout se tak „společné adaptaci“. Vyřazení může učení urychlit.
V testovací fázi autoři navrhují vážit každou naučenou váhu podle její pravděpodobnosti aktivace během učení. U výpadku s pravděpodobností například 0,5 to znamená vydělení vah dvěma.
Technika předčasného ukončení se používá zejména v systémech rozpoznávání obrazu, systémech rozpoznávání hlasu, klasifikaci dokumentů a při výpočtových problémech v biologii.
DropConnectDropConnect je alternativou k výpadku spočívá v inhibici připojení (ekvivalent synapse), a to vždy v náhodném způsobem. Výsledky jsou podobné (rychlost, schopnost zobecnit učení) k předčasnému ukončení , ale ukazují rozdíl, pokud jde o vývoj váh připojení. „Plně připojenou“ vrstvu s DropConnect lze přirovnat k „difuzní“ spojovací vrstvě.
Stochastické sdružování používá stejný princip jako Max-sdružování, ale vybraný výstup bude proveden náhodně podle multinomické distribuce definované podle aktivity zóny adresované fondem.
Ve skutečnosti je tento systém podobný jako Max-pooling s velkým počtem podobných obrazů, které se liší pouze lokalizovanými deformacemi. Tuto metodu lze také považovat za adaptaci na elastické deformace obrazu. To je důvod, proč je tato metoda velmi účinná na obrázcích MNIST (databáze obrázků představujících ručně psané číslice). Silnou stránkou stochastického sdružování je vidět, jak jeho výkon exponenciálně roste s počtem vrstev v síti.
Umělá dataChcete-li omezit nadměrné učení (nadměrná tuhost neuronové sítě), je možné mírně upravit vstupní data z již existujících dat. Například mírně zkreslíme obrázek nebo změníme jeho velikost, abychom znovu vytvořili nový tréninkový obrázek. Je také možné vytvořit zcela umělá data. Cílem je zvýšit množství tréninkových dat (často obrázků), aby se zlepšil výkon sítě.
Nejjednodušší způsob, jak omezit overfitting (problémy se zpracováním konvergence), je omezit počet vrstev v síti a uvolnit volné parametry (připojení) sítě. To přímo snižuje výkon a prediktivní potenciál sítě. Je to ekvivalent „nulového standardu“.
Degradace hmotnostiKoncept spočívá v zvážení vektoru vah neuronu (seznam vah spojených s příchozími signály) a přidání do něj chybový vektor úměrný součtu vah (norma 1) nebo druhé mocnině vah (norma 2 nebo euklidovská). Tento chybový vektor lze poté vynásobit koeficientem proporcionality, který se zvýší, aby se dále penalizovaly vektory vysoké hmotnosti.
Regularizace normou 1 a normou 2 lze kombinovat: jedná se o „regularizaci elastické sítě“ ( regulace elastické sítě ) .
Omezení váhového vektoruNěkteré publikace ukazují, že to může být užitečné pro omezení úrovně neurony hmotnostní vektor,: . Ve skutečnosti je váhový vektor upraven obvyklým způsobem, poté je oříznut podle algoritmu promítaného gradientu , aby se dosáhlo požadovaného standardu.
Pokud sdružování umožňuje zvýšit účinnost léčby, zničí spojení mezi obrazem a jeho obsahem (např. Nos a obličej). Tento vztah však může být velmi užitečný (zejména při rozpoznávání obličeje). Přetečením sdružených dlaždic na sebe je možné definovat polohu prvku (např. Nos je vždy uprostřed obličeje), ale toto přetečení pomocí překladu zabrání jakékoli jiné formě extrapolace (změna úhlu pohled, měřítko ...), na rozdíl od toho, co je lidský mozek schopen dělat.
K dnešnímu dni bylo toto omezení obcházeno mírnou úpravou tréninkových obrázků (jas, úhel, velikost atd.), Ale za cenu nákladného času na učení. Je však možné použít inteligentní obklad: celkový obraz je analyzován a když je prvek identifikován, je extrahován z obrázku (oříznut) a poté odeslán do další vrstvy. Toto je užitečná funkce pro rozpoznávání osob na fotografii. První fáze zpracování identifikuje tváře, zatímco druhá se pokusí identifikovat osobu, která odpovídá této tváři (viz automatická identifikace na fotografiích zveřejněných na Facebooku). Tuto operaci můžeme přirovnat k zaostření pohledu. Chcete-li rozpoznat projíždějící osobu, podíváte se jí do očí (přepracování).
Navíc je možné předvídat přítomnost prvku díky vidění souboru jeho dílčích částí (pokud vidím dvě oči a nos, je velká šance, že čelím tváři, i když jsem nevidím to úplně). Pro usnadnění a zobecnění zpracování je možné upravit velikost a polohu plodiny (lineární operace).
(en) Ian J. Goodfellow, Yoshua Bengio a Aaron Courville, Deep Learning , MIT Press,2016( ISBN 0262035618 , číst online ) [ detail vydání ]