Caffe

A BAIR mély tanulási keretrendszere

felső blob

A Caffe-ban, mint a gépi tanulás nagy részében, a tanulást is a veszteség funkció (más néven hiba, költség, vagy célkitűzés funkció). A veszteségfüggvény megadja a tanulás célját a paraméterbeállítások (vagyis az aktuális hálózati súlyok) leképezésével egy skaláris értékre, amely meghatározza ezen paraméterbeállítások „rosszságát”. Ezért a tanulás célja megtalálni a súlyok beállítását, amely minimalizálja a veszteségfüggvényt.

A Caffe veszteségét a hálózat Forward passzja számítja ki. Minden réteg egy sor bemeneti (alsó) foltot készít, és egy kimeneti (felső) foltot készít. Ezen rétegek kimenetei közül néhány felhasználható a veszteségfüggvényben. A veszteségfüggvény tipikus választása az egy és az összes osztályozási feladathoz a SoftmaxWithLoss függvény, amelyet például egy hálózati definícióban használnak:

A SoftmaxWithLoss függvényben a felső blob egy skalár (üres forma), amely a veszteséget átlagolja (az előrejelzett címkék előre és a tényleges címkékből számítva) a teljes mini-kötegben.

Veszteség súlyok

A több réteget veszteséget okozó hálók esetében (például egy hálózat, amely egyszerre osztályozza a bemenetet egy SoftmaxWithLoss réteg segítségével, és rekonstruálja azt egy EuclideanLoss réteg segítségével), a veszteségsúlyok felhasználhatók relatív fontosságuk megadására.

Megállapodás szerint a veszteség utótagú Caffe-rétegtípusok hozzájárulnak a veszteségfüggvényhez, de feltételezzük, hogy más rétegeket pusztán közbenső számításokhoz használnak. Bármelyik réteg felhasználható veszteségként, ha egy mező veszteség-súly: hozzáad egy réteg definícióhoz a réteg által előállított minden egyes felső blobhoz. A veszteség utótagú rétegek implicit veszteség_súly: 1 az első felső blob esetében (és veszteség_ súly: 0 minden további felső résznél); más rétegekben implicit veszteség_súly: 0 az összes felső s esetében. Tehát a fenti SoftmaxWithLoss réteg ekvivalensen így írható:

Bármely rétegnek, amely képes újrapopagálni, adhat nem nulla veszteség-súlyt, amely lehetővé teszi például a hálózat néhány közbenső rétege (i) által generált aktiválások szabályozását, ha szükséges. Nem szingulett kimenetekhez, amelyekhez nem null veszteség társul, a veszteséget egyszerűen a blob összes bejegyzésének összegzésével számítják ki.

A Caffe végső veszteségét a hálózat összes súlyozott veszteségének összegzésével számoljuk ki, a következő álkód szerint: