Konvoluční neurální sítě

Dokončeno

Modely hlubokého učení sice můžete použít pro jakýkoli druh strojového učení, ale jsou užitečné zejména pro práci s daty, která se skládají z velkých polí číselných hodnot , jako jsou obrázky. Modely strojového učení, které pracují s obrázky, jsou základem oblasti umělé inteligence označované jako počítačové zpracování obrazua techniky hlubokého učení zodpovídají za řízení úžasných pokroků v této oblasti v posledních letech.

Jádrem úspěchu hlubokého učení v této oblasti je druh modelu označovaného jako konvoluční neurální síťnebo CNN. CNN obvykle pracuje tak, že extrahuje příznaky z obrázků a poté tyto příznaky předává do plně propojené neurální sítě, aby vytvořila předpověď. Vrstvy extrakce funkcí v síti mají vliv na snížení počtu funkcí z potenciálně obrovského pole hodnot jednotlivých pixelů na menší sadu funkcí, která podporuje predikci popisků.

Vrstvy v CNN

Sítě CNN se skládají z několika vrstev, z nichž každá provádí určitou úlohu při extrahování funkcí nebo předpovídání popisků.

Konvoluční vrstvy

Jedním z typů hlavní vrstvy je konvoluční vrstva, která extrahuje důležité funkce obrázků. Konvoluční vrstva funguje tak, že na obrázky použije filtr. Filtr je definován jádrem , které se skládá z matice váhových hodnot.

Například filtr 3x3 může být definován takto:

 1  -1   1
-1   0  -1
 1  -1   1

Obrázek je také jen matice hodnot pixelů. Pokud chcete filtr použít, překryjte ho na obrázku a vypočítáte vážený součet odpovídajících hodnot pixelů obrázku pod jádrem filtru. Výsledek se pak přiřadí ke středové buňce ekvivalentního 3x3 bloku v nové matici hodnot, která má stejnou velikost jako obrázek. Předpokládejme například, že obrázek 6 x 6 má následující hodnoty pixelů:

255 255 255 255 255 255 
255 255 100 255 255 255
255 100 100 100 255 255
100 100 100 100 100 255
255 255 255 255 255 255
255 255 255 255 255 255

Použití filtru na levý horní 3x3 úsek obrázku by fungovalo takto:

255 255 255      1  -1   1    (255 x 1)+(255 x -1)+(255 x 1) +
255 255 100  x  -1   0  -1  = (255 x -1)+(255 x 0)+(100 x -1) +   = 155
255 100 100      1  -1   1    (255 x1 )+(100 x -1)+(100 x 1)

Výsledek se přiřadí k odpovídající hodnotě pixelů v nové matici takto:

 ?   ?   ?   ?   ?   ?  
 ?  155  ?   ?   ?   ?
 ?   ?   ?   ?   ?   ?
 ?   ?   ?   ?   ?   ?
 ?   ?   ?   ?   ?   ?
 ?   ?   ?   ?   ?   ?

Teď se filtr přesune (konvolvovaný), obvykle se použije krok velikosti 1 (takže se posunuje o jeden pixel doprava) a hodnota dalšího pixelu se vypočítá.

255 255 255      1  -1   1    (255 x 1)+(255 x -1)+(255 x 1) +
255 100 255  x  -1   0  -1  = (255 x -1)+(100 x 0)+(255 x -1) +   = -155
100 100 100      1  -1   1    (100 x1 )+(100 x -1)+(100 x 1)

Teď tedy můžeme vyplnit další hodnotu nové matice.

 ?   ?   ?   ?   ?   ?  
 ?  155 -155 ?   ?   ?
 ?   ?   ?   ?   ?   ?
 ?   ?   ?   ?   ?   ?
 ?   ?   ?   ?   ?   ?
 ?   ?   ?   ?   ?   ?

Tento proces se opakuje, dokud nepoužijeme filtr na všech 3x3 úsecích obrázku, čímž vytvoříme novou matici hodnot, jako je tato:

?   ?   ?    ?    ?   ?
?  155 -155 155 -155  ?
? -155 310 -155  155  ?
?  310 155  310   0   ?
? -155 -155 -155  0   ?
?   ?   ?    ?    ?   ?

Vzhledem k velikosti jádra filtru nemůžeme vypočítat hodnoty pro pixely na okraji; proto obvykle použijeme odsazení hodnotu (často 0):

0   0   0    0    0   0
0  155 -155 155 -155  0
0 -155 310 -155  155  0
0  310 155  310   0   0
0 -155 -155 -155  0   0
0   0   0    0    0   0

Výstup konvoluce se obvykle předává aktivační funkci, což je často funkce Rectified Linear Unit (ReLU), která zajišťuje, že záporné hodnoty jsou nastaveny na hodnotu 0:

0   0   0    0    0   0
0  155  0   155   0   0
0   0  310   0   155  0
0  310 155  310   0   0
0   0   0    0    0   0
0   0   0    0    0   0

Výsledná matice je mapa funkcí hodnot funkcí, které lze použít k trénování modelu strojového učení.

Poznámka: Hodnoty v mapě funkcí můžou být větší než maximální hodnota pro pixel (255), takže pokud chcete vizualizovat mapu funkcí jako obrázek, musíte normalizovat hodnoty funkcí v rozmezí 0 až 255.

Proces konvoluce se zobrazí v animaci níže.

jádro filtru je konvolvováno přes obrázek trojúhelníku, extrahování funkcí, které zvýrazňují tři hrany a rohy

  1. Obrázek se předá konvoluční vrstvě. V tomto případě je obrázek jednoduchý geometrický tvar.
  2. Obrázek se skládá z pole pixelů s hodnotami mezi 0 a 255 (u barevných obrázků se obvykle jedná o 3rozměrné pole s hodnotami pro červené, zelené a modré kanály).
  3. Jádro filtru se obvykle inicializuje s náhodnými váhami (v tomto příkladu jsme zvolili hodnoty, které by měly zvýraznit efekt, který může mít filtr na pixelové hodnoty; ale v reálné CNN by se počáteční váhy obvykle generovaly z náhodného Gaussova rozdělení). Tento filtr se použije k extrahování mapy funkcí z dat obrázků.
  4. Filtr je konvolvován napříč obrázkem a počítá hodnoty prvků použitím součtu hmotností vynásobených odpovídajícími pixelovými hodnotami v každé pozici. Funkce aktivace reLU (Rectified Linear Unit) se použije k zajištění nastavení záporných hodnot na hodnotu 0.
  5. Po konvoluci obsahuje mapa funkcí extrahované hodnoty funkcí, které často zvýrazňují klíčové vizuální atributy obrázku. V tomto případě mapa funkcí zvýrazní hrany a rohy trojúhelníku na obrázku.

Konvoluční vrstva obvykle používá více jader filtru. Každý filtr vytvoří jinou mapu funkcí a všechny mapy funkcí se předají do další vrstvy sítě.

Vrstvy sdružování

Po extrahování hodnot funkcí z obrázků se vrstvy sdružování (nebo převzorkování) použijí ke snížení počtu hodnot funkcí při zachování klíčových funkcí, které byly extrahovány.

Jedním z nejběžnějších typů poolingů je max pooling, ve kterém se na obrázek použije filtr a zachová se pouze maximální hodnota pixelu v oblasti filtru. Například použití poolingového jádra 2x2 na následující úsek obrázku by vytvořilo výsledek 155.

0   0
0  155

Všimněte si, že výsledkem filtru sdružování 2x2 je snížení počtu hodnot od 4 do 1.

Stejně jako u konvolučních vrstev fungují vrstvy sdružování použitím filtru na celou mapu funkcí. Následující animace ukazuje příklad maximálního sdružování map obrázků.

jádro filtru je konvolvované přes obrázek trojúhelníku, extrahování funkcí, které zvýrazňují tři hrany a rohy, maximální sdružování pro mapu obrázků.

  1. Mapa funkcí extrahovaná filtrem v konvoluční vrstvě obsahuje pole hodnot prvků.
  2. Jádro sdružování se používá ke snížení počtu hodnot funkcí. V tomto případě je velikost jádra 2x2, takže vytvoří matici s čtvrtinou počtu hodnot znaků.
  3. Jádro sdružování je v mapě funkcí konvolvované, přičemž na každé pozici se zachová pouze nejvyšší hodnota pixelu.

Zahazování vrstev

Jednou z nejobtížnějších výzev v CNN je vyhnout se přizpůsobení, kde výsledný model funguje dobře s trénovacími daty, ale není schopen správně se zobecnit na nová data, na nichž nebyl natrénován. Jednou z technik, kterou můžete použít ke zmírnění přetrénování, je zahrnout vrstvy, ve kterých proces trénování náhodně eliminuje (nebo vynechá) mapy příznaků. Může to vypadat jako neintuitivní, ale efektivní způsob, jak zajistit, aby model nebyl příliš závislý na trénovacích obrázcích.

Mezi další techniky, které můžete použít ke zmírnění přeurčení, patří náhodné převrácení, zrcadlení nebo zkosení trénovacích obrázků, aby se vygenerovala data s variabilitou mezi epochami trénování.

Zploštění vrstev

Po použití konvoluční a poolingové vrstvy k extrahování výstředních funkcí na obrázcích jsou výsledné mapy funkcí multidimenzionálními poli hodnot pixelů. Vrstva zploštění se používá ke zploštění mapy vlastností do vektoru hodnot, aby mohly být použity jako vstup do plně propojené vrstvy.

Plně propojené vrstvy

Síť CNN obvykle končí plně připojenou sítí, ve které se hodnoty funkcí předávají do vstupní vrstvy, prostřednictvím jedné nebo více skrytých vrstev a generují předpovězené hodnoty ve výstupní vrstvě.

Základní architektura CNN může vypadat nějak takto:

síť CNN skládající se z konvoluční vrstvy, vrstvy sdružování, vrstvy pro vyřazení, vrstvy zploštění a plně propojené vrstvy

  1. Obrázky se předávají do konvoluční vrstvy. V tomto případě existují dva filtry, takže každý obrázek vytvoří dvě mapy funkcí.
  2. Mapy funkcí se předávají do vrstvy sdružování, kde jádro sdružování 2x2 zmenšuje velikost map funkcí.
  3. Přetažení vrstvy náhodně zahodí některé mapy funkcí, aby se zabránilo přeurčení.
  4. Zplošťovací vrstva přebírá zbývající pole map příznaků a zploští je do vektoru.
  5. Vektorové prvky jsou předány do plně připojené sítě, která generuje předpovědi. V tomto případě je síť klasifikační model, který předpovídá pravděpodobnosti pro tři možné třídy obrázků (trojúhelník, čtverec a kruh).

Trénování modelu CNN

Stejně jako u jakékoli hluboké neurální sítě se síť CNN trénuje, když se dávky trénovacích dat procházejí přes ni během několika epoch, přičemž se upravují váhy a biasy na základě ztráty vypočítané pro každou epochu. V případě sítě CNN zahrnuje zpětné šíření upravených vah filtrové váhy jader používané v konvolučních vrstvách a také váhy použité ve zcela spojených vrstvách.