Jak określić pewność prognozy sieci neuronowej?


22

Aby zilustrować moje pytanie, załóżmy, że mam zestaw treningowy, w którym sygnał wejściowy ma pewien poziom szumu, ale wynik nie, na przykład;

# Training data
[1.02, 1.95, 2.01, 3.06] : [1.0]
[2.03, 4.11, 5.92, 8.00] : [2.0]
[10.01, 11.02, 11.96, 12.04] : [1.0]
[2.99, 6.06, 9.01, 12.10] : [3.0]

tutaj wyjściem jest gradient tablicy wejściowej, jeśli byłby bezszumowy (nie rzeczywisty gradient).

Po przeszkoleniu sieci dane wyjściowe powinny wyglądać mniej więcej tak dla danego wejścia.

# Expected Output
[1.01, 1.96, 2.00, 3.06] : 95% confidence interval of [0.97, 1.03]
[2.03, 4.11, 3.89, 3.51] : 95% confidence interval of [2.30, 4.12]

Moje pytanie brzmi: w jaki sposób można stworzyć sieć neuronową, która zwróci przewidywaną wartość i miarę ufności, taką jak wariancja lub przedział ufności?


3
Jeśli szukasz przedziału, który będzie zawierał przyszłą realizację , to szukasz przedziału przewidywania , a nie przedziału ufności , który dotyczy parametrów nieobserwowalnych . Jest to często mylone.
S. Kolassa - Przywróć Monikę

Odpowiedzi:


20

Wygląda na to, że szukasz , czyli przedziału, który zawiera określony procent przyszłych realizacji. (Spójrz na tagu wiki dla i różnicy).

Twój najlepszy zakład prawdopodobnie będzie działał bezpośrednio z architekturami NN, które nie generują prognoz jednopunktowych, ale całe rozkłady predykcyjne . Następnie można bezpośrednio wyodrębnić pożądane przedziały predykcji (lub prognozy średnie lub mediany punktów) z tych rozkładów. Ja i inni argumentowaliśmy, że rozkłady predykcyjne są znacznie bardziej przydatne niż predykcje punktowe , ale szczerze mówiąc, nie widziałem jeszcze dużo pracy nad rozkładami predykcyjnymi z sieciami neuronowymi, chociaż wciąż mam oczy otwarte. Ten papier wydaje się być przydatny. Możesz poszukać trochę, być może również używając innych słów kluczowych, takich jak „prognozy rozkładów” lub „gęstość predykcyjna” i tym podobne.

To powiedziawszy, możesz przyjrzeć się algorytmowi NeuroBayesa Michaela Feindta , który wykorzystuje bayesowskie podejście do prognozowania gęstości predykcyjnej.


1
To może być kolejny przydatny artykuł - sieć neuronowa, która uczy się dystrybucji: google.com/…
Pro Q

@Stephan: Link przeminął: (
Matthew Drury

@MatthewDrury: jaki link masz na myśli? Wszystkie trzy działają dla mnie dobrze.
S. Kolassa - Przywróć Monikę

Czy możesz nas poprowadzić do prostej wersji demonstracyjnej / przykładu Ternsorflow z NN Predictive Distribution?
Martin Thøgersen,

@ MartinThøgersen: przepraszam, nie, nie używam Tensorflow ...
S. Kolassa - Przywróć Monikę

5

Nie jestem pewien, czy można obliczyć przedział ufności dla pojedynczej prognozy, ale rzeczywiście można obliczyć przedział ufności dla wskaźnika błędów dla całego zestawu danych (można uogólnić dla dokładności i wszelkich innych ocenianych miar).

Jeśli jest wskaźnikiem błędu podczas klasyfikowania niektórych danych S o rozmiarze n , 95% przedział ufności dla tego wskaźnika błędu wynosi: e ± 1,96eSn

e±1.96e(1e)n
.

(patrz książka „Uczenie maszynowe” Toma Mitchella, rozdział 5).

EDYTOWAĆ

Chyba powinienem podać bardziej ogólny przypadek, którym jest: gdzie typowe opcje dlazNsą wymienione w poniższej tabeli:

e±zNe(1e)n,
zN
confidence level    80%    90%    95%    98%    99%
values of zN       1.28   1.64   1.96   2.33   2.58

1
Wymagałoby to, aby rozkład asymptotyczny był normalny
2879934

4
W przypadku próbek o dużych rozmiarach (co jest dość powszechne w ML) jest ogólnie bezpieczne, że zakładamy, że. Nie było potrzeby głosowania, po prostu poproś o wyjaśnienia, ale no cóż.
mp85

4

Przedziały prognostyczne (PI) w problemach regresji i klasyfikacji nieparametrycznej, takich jak sieci neuronowe, SVM, losowe lasy itp. Są trudne do zbudowania. Chciałbym usłyszeć inne opinie na ten temat.

Jednak, o ile mi wiadomo, przewidywanie konformalne (CP) jest jedyną opartą na zasadach metodą budowania skalibrowanego PI do przewidywania w regresji nieparametrycznej i problemach z klasyfikacją. Samouczek na temat CP można znaleźć w Shfer i Vovk (2008), J. Machine Learning Research 9 , 371-421 [pdf]


3

Nie znam żadnej metody, aby to zrobić dokładnie.

μσ(xi,yi)logN(yiμ(xi),σ(xi)). This will make your μ(xi) spróbuj przewidzieć swój yja I twój σ(xja) bądź mniejszy, gdy masz więcej pewności siebie i większy, gdy masz mniej.

Aby sprawdzić, jak dobre są twoje założenia dotyczące danych do walidacji, na które warto spojrzeć yja-μ(xja)σ(xja) aby sprawdzić, czy z grubsza śledzą N.(0,1). W przypadku danych testowych ponownie chcesz zmaksymalizować prawdopodobieństwo danych testowych, aby móc ponownie użyć metryki NLPD.


1
@DW nie, ponieważ jako σ+rozkład zaczyna przypominać mundur o gęstości 0 we wszystkich punktach. Następnie gęstość prawdopodobieństwa twoich punktów danych jest równa 0, a zatem jej logarytm przechodzi do nieskończoności, co powoduje, że strata przechodzi do nieskończoności.
etal

Czy są jakieś konkretne przykłady wykorzystania NN do wyprowadzenia parametrów dystrybucji, przeszkolonych w zakresie prawdopodobieństwa dziennika?
Panna Palmer

3

I have not heard of any method that gives a confidence interval for a neural network prediction. Despite a lack of formal methodology, it seems like it might be feasible to construct one. I have never attempted this due to the compute power that would be needed and I make no claims on this working for certain, but one method that might work for a tiny neural net (or with blazing fast GPU power it could work for moderate sized nets) would be to resample the training set and build many similar networks (say 10,000 times) with the same parameters and initial settings, and build confidence intervals based on the predictions for each of your bootstrapped net.

Na przykład w 10 000 sieci przeszkolonych w sposób opisany powyżej można uzyskać 2,0 (po zaokrągleniu prognoz regresji sieci neuronowej) 9 000 z tych czasów, więc można byłoby przewidzieć 2,0 z 90% CI. Następnie można zbudować tablicę elementów CI dla każdej dokonanej prognozy i wybrać tryb raportowania jako podstawowy element CI.


2
Byłbym ciekawy, dlaczego ta sugestia została odrzucona, ponieważ zasadniczo ładuje się ona w nieco niekonwencjonalny sposób (zaokrąglenie elementu problemu ułatwia sprawdzenie, czy sieć neuronowa jest pewna co do prognozy). Właściwie nie mam nic przeciwko głosowaniu w dół, jeśli ktokolwiek głosował w głosowaniu, może wyjaśnić, dlaczego nie jest to prawidłowe rozwiązanie zaproponowanego pytania. Uczę się i doceniłbym opinie!
Tony S,

1
Nie głosowałem za, ale z tego, co rozumiem, proponowana metoda generowałaby interwały, które wychwytują przewidywane wartości modelu, to nie jest to samo, co interwały, które rejestrują prawdziwe wartości.
Miss Palmer,

3

Jeśli chodzi o bezpośrednie generowanie przedziałów predykcji, istnieje artykuł z 2011 r. „ Kompleksowy przegląd interwałów predykcji opartych na sieci neuronowej

Porównują cztery podejścia:

1: Metoda delta 2: Metoda bayesowska 3: Oszacowanie średniej wariancji 4: Bootstrap

Ci sami autorzy opracowali metodę oszacowania dolnej górnej granicy dla konstrukcji przedziałów predykcyjnych opartych na sieci neuronowej, która bezpośrednio wysyła dolną i górną granicę z NN. Niestety nie działa z backpropem, ale ostatnie prace umożliwiły ten interwał wysokiej jakości predykcji dla głębokiego uczenia się .

Alternatywnie do bezpośredniego generowania interwałów predykcji, bayesowskie sieci neuronowe (BNN) modelują niepewność parametrów NN, a zatem wychwytują niepewność na wyjściu. Jest to trudne do zrobienia, ale popularne metody obejmują uruchomienie rezygnacji MC w czasie przewidywania lub zestawienie .


1
W rzeczywistości jest to dość łatwe dzięki Bayesian Deep Learning. Zobacz na przykład edwardlib.org/tutorials/bayesian-neural-network
DeltaIV

2

Istnieją sposoby, aby to zrobić za pomocą rezygnacji. Uruchom ewaluację z włączonym opuszczaniem (zwykle jest wyłączona dla ewaluacji, ale włączona podczas szkolenia) i uruchom ewaluację kilka razy.

Rozkład wyników z wielu różnych przebiegów można wykorzystać jako przedziały ufności.

Zobacz artykuł „ Porzucenie jako przybliżenie bayesowskie: reprezentowanie niepewności modelu w głębokim uczeniu się ” Obejrzyj prezentację na youtube Andrew Rowan - Głębokie uczenie się bayesowskie z Edwardem (i sztuczka za pomocą Dropouta)


1

Nie ma mowy, wszystkie modele ML nie polegają na zrozumieniu zjawiska, są to metody interpolacji z nadzieją, że „zadziała”. Zacznij od takich pytań pewność siebie, odporność na hałas nie ma odpowiedzi.

Aby więc coś uzyskać, skorzystaj z różnych stosowanych i podstawowych nauk:

  • Użyj kontroli (i załóż dynamikę)

  • Użyj optymalizacji wypukłej (z dodatkowym warunkiem funkcji)

  • Użyj statystyki matematycznej (ze wstępnymi założeniami dotyczącymi dystrybucji)

  • Użyj przetwarzania sygnału (przy niektórych założeniach, że sygnał ma ograniczone pasmo)

Naukowcy używają pewnych wstępnych założeń (zwanych aksjomatami), aby coś wyprowadzić.

Nie ma sposobu, aby dać jakiekolwiek zaufanie bez pewnych wstępnych założeń, więc problem nie występuje w DL mehtod, ale jest to problem w każdej metodzie, która próbuje interpolować bez ŻADNEGO wstępnego założenia - nie ma sposobu, aby uzyskać algebrę inteligentnie bez założenia.

NN i różne metody ML służą do szybkiego prototypowania w celu stworzenia „czegoś”, co wydaje się działać „jakoś” sprawdzone przy weryfikacji krzyżowej.

Jeszcze głębiej regresja dopasowuje E [Y | X] lub jej oszacowanie może być absolutnie niepoprawnym problemem do rozwiązania (być może pdf w punkcie Y = E [Y | X] ma minimum, a nie maksimum), a jest wiele takich subtelnych rzeczy

Przypomnę też dwa nierozwiązywalne problemy w AI / ML, o których z pewnych powodów można zapomnieć, za hasłami piękna:

(1) To metody interpolacji, a nie ekstrapolacji - nie ma możliwości radzenia sobie z nowymi problemami

(2) nikt nie wie, jak zachowa się każdy model na danych, które nie pochodzą z tej samej dystrybucji (mężczyzna w kostiumie banana do lokalizacji pieszych)


co powiesz na modelowanie błędu ze zbioru danych treningowych do „przewidywania” błędu wnioskowania?
Jacko

Załóżmy nawet, że jest to dodatek „przewiduj_for_mean” + „przewiduj_for_error”. Możesz sobie wyobrazić każdy schemat do osobnego przewidywania sygnału i błędu. Ale jeszcze raz - jeśli „interpolujemy”, nie możemy powiedzieć czegoś pewnie. Przewidujemy temperaturę na powierzchni. Tak, możesz powiedzieć, że moje przewidywanie to „20”, a przewidywanie błędu to „5”. Mówi więc, że uważam, że prawdziwą odpowiedzią jest [20-5, 20 + 5], ale aby naprawdę zrozumieć, co to znaczy, musimy zrozumieć prawdziwy fenomen i model matematyczny. W ML nie chodzi o oba te elementy. Inne obszary przyjmują pewne wstępne założenia.
bruziuz

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.