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.
Następnie możemy powiązać dane wejściowe następnej warstwy z jej poprzednią poprzez następującą relację:
gdzie
to funkcja aktywacyjna,
to waga od neuronu w warstwie do neuronu w warstwie ,
jest stronniczością neuronu w warstwie , i
reprezentuje wartość aktywacji neuronu w warstwie.
Czasami piszemy aby reprezentować , innymi słowy, wartość aktywacji neuronu przed zastosowaniem funkcji aktywacji .
Aby uzyskać bardziej zwięzły zapis, możemy napisać
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.
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ć
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 .
W propagacji wstecznej funkcja kosztu służy do obliczenia błędu naszej warstwy wyjściowej , przez
Które można również zapisać jako wektor za pomocą
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 średnia
funkcje przekroczenia kosztów dla indywidualnych przykładów szkolenia, .
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 .
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.
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 ).