Lista funkcji kosztów używanych w sieciach neuronowych wraz z aplikacjami

133

Jakie są typowe funkcje kosztów wykorzystywane do oceny wydajności sieci neuronowych?

Detale

(pomiń resztę tego pytania, moim celem jest tutaj wyjaśnienie notacji, w której odpowiedzi mogą pomóc, aby były bardziej zrozumiałe dla ogólnego czytelnika)

Myślę, że dobrze byłoby mieć listę typowych funkcji kosztów wraz z kilkoma sposobami ich wykorzystania w praktyce. Więc jeśli inni są tym zainteresowani, myślę, że wiki społeczności jest prawdopodobnie najlepszym podejściem, lub możemy to usunąć, jeśli nie jest to temat.

Notacja

Na początek chciałbym zdefiniować zapis, którego wszyscy używamy przy ich opisywaniu, aby odpowiedzi dobrze do siebie pasowały.

Ten zapis pochodzi z książki Neilsena .

Sieć neuronowa Feedforward to wiele warstw neuronów połączonych ze sobą. Następnie pobiera dane wejściowe, które „przeciekają” przez sieć, a następnie sieć neuronowa zwraca wektor wyjściowy.

Bardziej formalnie nazwij aktywacją (czyli wyjściem) neuronu w warstwie , gdzie jest w wektorze wejściowym.ajijthithaj1jth

Następnie możemy powiązać dane wejściowe następnej warstwy z jej poprzednią poprzez następującą relację:

aji=σ(k(wjkiaki1)+bji)

gdzie

σ to funkcja aktywacyjna,

wjki to waga od neuronu w warstwie do neuronu w warstwie ,kth(i1)thjthith

bji jest stronniczością neuronu w warstwie , ijthith

aji reprezentuje wartość aktywacji neuronu w warstwie.jthith

Czasami piszemy aby reprezentować , innymi słowy, wartość aktywacji neuronu przed zastosowaniem funkcji aktywacji .zjik(wjkiaki1)+bji

wprowadź opis zdjęcia tutaj

Aby uzyskać bardziej zwięzły zapis, możemy napisać

ai=σ(wi×ai1+bi)

Aby użyć tej formuły do ​​obliczenia wyniku sieci przekazywania dla niektórych danych wejściowych , ustaw , a następnie oblicz , , ..., , gdzie m jest liczbą warstw.IRna1=Ia2a3am

Wprowadzenie

Funkcja kosztu jest miarą „tego, jak dobra” była sieć neuronowa w odniesieniu do danej próbki treningowej i oczekiwanego wyniku. Może również zależeć od zmiennych, takich jak wagi i odchylenia.

Funkcja kosztu jest pojedynczą wartością, a nie wektorem, ponieważ ocenia, jak dobrze działała sieć neuronowa jako całość.

W szczególności funkcja kosztu ma postać

C(W,B,Sr,Er)

gdzie jest wagami naszej sieci neuronowej, jest stronniczością naszej sieci neuronowej, jest wkładem pojedynczej próbki treningowej, a jest pożądanym wynikiem tej próbki treningowej. Uwaga ta funkcja może również potencjalnie być w zależności od i jakiegokolwiek neuronów w warstwie , ponieważ wartości te są zależne , , i .WBSrEryjizjijiWBSr

W propagacji wstecznej funkcja kosztu służy do obliczenia błędu naszej warstwy wyjściowej , przezδL

δjL=CajLσ(zji)
.

Które można również zapisać jako wektor za pomocą

δL=aCσ(zi)
.

Podamy gradient funkcji kosztów w kategoriach drugiego równania, ale jeśli ktoś chce sam udowodnić te wyniki, zaleca się użycie pierwszego równania, ponieważ łatwiej jest z nim pracować.

Wymagania dotyczące funkcji kosztów

Aby zastosować w propagacji wstecznej, funkcja kosztu musi spełniać dwie właściwości:

1: Funkcja kosztu musi być zapisywana jako średniaC

C=1nxCx

funkcje przekroczenia kosztów dla indywidualnych przykładów szkolenia, .Cxx

Dzięki temu możemy obliczyć gradient (w odniesieniu do wag i odchyleń) dla pojedynczego przykładu treningowego i uruchomić opadanie gradientu.

2. funkcja kosztu nie musi być zależna od jakichkolwiek wartości aktywacji sieci neuronowej oprócz wartości wyjście .CaL

Technicznie funkcja kosztu może zależeć od dowolnego lub . Po prostu wprowadzamy to ograniczenie, abyśmy mogli zareagować wstecz, ponieważ równanie do znalezienia gradientu ostatniej warstwy jest jedynym zależnym od funkcji kosztu (pozostałe zależą od następnej warstwy). Jeśli funkcja kosztu jest zależna od innych warstw aktywacyjnych oprócz warstwy wyjściowej, propagacja wsteczna będzie nieważna, ponieważ pomysł „cofania się” już nie działa.ajizji

Ponadto wymagane są funkcje aktywacyjne, aby mieć wyjście dla wszystkich . Dlatego te funkcje kosztów muszą być zdefiniowane tylko w tym zakresie (na przykład jest poprawny, ponieważ gwarantujemy ).0ajL1jajLajL0

Phylliida
źródło
3
To jest strona pytań i odpowiedzi, a format tego wpisu tak naprawdę nie pasuje. Prawdopodobnie powinieneś podać większość treści w odpowiedzi i pozostaw tylko pytanie (np. Jaka jest lista funkcji kosztów używanych w sieciach społecznościowych?).
Roger Fan
Okej, czy to jest lepsze? Myślę, że definicje są ważne, w przeciwnym razie odpowiedzi stają się niejasne dla tych, którzy nie znają terminologii używanej przez pisarza.
Phylliida
Ale co jeśli inna odpowiedź używa innej notacji lub terminologii?
Roger Fan
3
Chodzi o to, że wszyscy używają tutaj tej samej terminologii i jeśli jest inna, konwertujemy ją na to, aby odpowiedzi „pasowały” do siebie. Ale przypuszczam, że mógłbym usunąć ten kawałek, jeśli uważasz, że nie jest to pomocne.
Phylliida
1
Po prostu uważam, że szczegół, na który wchodzi pytanie, nie jest naprawdę potrzebny ani istotny. Wydaje się to trochę przesadne i ograniczające, ale to tylko ja.
Roger Fan

Odpowiedzi:

85

Oto te, które do tej pory rozumiem. Większość z nich działa najlepiej, gdy podano wartości od 0 do 1.

Kwadratowy koszt

Znany również jako średni błąd kwadratu , maksymalne prawdopodobieństwo i błąd kwadratu , określa się go jako:

CMST(W,B,Sr,Er)=0.5j(ajLEjr)2

Gradient tej funkcji kosztu w odniesieniu do wyjścia sieci neuronowej i pewnej próbki wynosi:r

aCMST=(aLEr)

Koszt entropii krzyżowej

Znany również jako ujemne prawdopodobieństwo logarytmiczne Bernoulliego i binarna krzyżowa Entropia

CCE(W,B,Sr,Er)=j[Ejr ln ajL+(1Ejr) ln (1ajL)]

Gradient tej funkcji kosztu w odniesieniu do wyjścia sieci neuronowej i pewnej próbki wynosi:r

aCCE=(aLEr)(1aL)(aL)

Koszt wykładniczy

Wymaga to wybrania parametru który według ciebie da ci pożądane zachowanie. Zazwyczaj musisz się z tym bawić, dopóki wszystko nie zadziała.τ

CEXP(W,B,Sr,Er)=τ exp(1τj(ajLEjr)2)

gdzie jest po prostu skrótem dla .exp(x)ex

Gradient tej funkcji kosztu w odniesieniu do wyjścia sieci neuronowej i pewnej próbki wynosi:r

aC=2τ(aLEr)CEXP(W,B,Sr,Er)

Mógłbym przepisać , ale to wydaje się zbędne. Punkt to gradient, który oblicza wektor, a następnie mnoży go przez .CEXPCEXP

Odległość Hellingera

CHD(W,B,Sr,Er)=12j(ajLEjr)2

Więcej informacji na ten temat można znaleźć tutaj . To musi mieć wartości dodatnie, a najlepiej wartości od do . To samo dotyczy następujących rozbieżności.01

Gradient tej funkcji kosztu w odniesieniu do wyjścia sieci neuronowej i pewnej próbki wynosi:r

aC=aLEr2aL

Rozbieżność Kullbacka – Leiblera

Znany również jako Informacyjnego dywergencji , Informacji wzmocnienia , względna entropii , KLIC lub KL dywergencji (patrz tutaj ).

Rozbieżność Kullback – Leibler jest zazwyczaj oznaczana jako ,

DKL(PQ)=iP(i)lnP(i)Q(i)

gdzie jest miarą danych utracone, gdy oznacza przybliżenie . W ten sposób chcemy ustawić i , ponieważ chcemy zmierzyć, jak wiele informacji jest stracone, gdy używamy zbliżenie . To nam dajeDKL(PQ)QPP=EiQ=aLajiEji

CKL(W,B,Sr,Er)=jEjrlogEjrajL

Inne różnice tu stosować tę samą ideę wyznaczenia i .P=EiQ=aL

Gradient tej funkcji kosztu w odniesieniu do wyjścia sieci neuronowej i pewnej próbki wynosi:r

aC=EraL

Uogólniona dywergencja Kullbacka-Leiblera

Od tutaj .

CGKL(W,B,Sr,Er)=jEjrlogEjrajLj(Ejr)+j(ajL)

Gradient tej funkcji kosztu w odniesieniu do wyjścia sieci neuronowej i pewnej próbki wynosi:r

aC=aLEraL

Odległość Itakura – Saito

Również stąd .

CGKL(W,B,Sr,Er)=j(EjrajLlogEjrajL1)

Gradient tej funkcji kosztu w odniesieniu do wyjścia sieci neuronowej i pewnej próbki wynosi:r

aC=aLEr(aL)2

Gdzie . Innymi słowy, jest po prostu równa kwadratury każdy element .((aL)2)j=ajLajL(aL)2aL

Phylliida
źródło
Dzięki za udostępnienie, możesz również rozważyć: github.com/torch/nn/blob/master/doc/criterion.md
Yannis Assael
2
masz mały błąd w mianowniku pochodnej cross-entropii, powinna ona być a*(1-a)niea*(1+a)
Amro
1
Fajnie byłoby również pokazać funkcję utraty pinballu, aby zminimalizować kwantyle błędów zamiast średniego błędu. Bardzo stosowany w systemach wspomagania decyzji.
Ricardo Cruz,
gdzie mogę zobaczyć wykresy dla nich?
coiso
1
W odniesieniu do funkcji kosztu kwadratowego należy zauważyć, że „średni błąd kwadratu” „maksymalne prawdopodobieństwo” „błąd kwadratu sumy”. Autorzy mogą używać nazwy (niepoprawnie) zamiennie, ale to nie to samo.
Jon
20

Nie mam reputacji do komentowania, ale w ostatnich 3 gradientach występują błędy podpisu.

W dywergencji KL To ten sam błąd znaku pojawia się w Uogólnionej dywergencji KL.

C=jEjlog(Ej/aj)=jEjlog(Ej)Ejlog(aj)dC=jEjdlog(aj)=j(Ej/aj)dajaC=Ea

W odległości Itakura-Saito

C=j(Ej/aj)log(Ej/aj)1=j(Ej/aj)log(Ej)+log(aj)1dC=j(Ej/aj2)daj+dlog(aj)=j(1/aj)daj(Ej/aj2)daj=j(ajEj)/aj2dajaC=aE(a)2
szczery
źródło