Dlaczego skończona precyzja jest problemem w uczeniu maszynowym?

Odpowiedzi:

4

Skończona precyzja to dziesiętna reprezentacja liczby, która została zaokrąglona lub obcięta. Istnieje wiele przypadków, w których może to być konieczne lub właściwe. Na przykład 1/3 i liczby transcendentalnemi i πwszystkie mają nieskończone reprezentacje dziesiętne. W języku programowania C podwójna wartość to 8 bitów i dokładność do około 16 cyfr. Spójrz tutaj.

http://www.learncpp.com/cpp-tutorial/25-floating-point-numbers/

Aby konkretnie przedstawić jedną z tych liczb na (skończonym) komputerze, musi istnieć jakiś kompromis. Możemy zapisać od 1/3 do 9 cyfr jako .333333333, czyli mniej niż 1/3.

Kompromisy te są połączone z operacjami arytmetycznymi. Niestabilne algorytmy są podatne na błędy arytmetyczne. Dlatego SVD jest często używany do obliczania PCA (niestabilności macierzy kowariancji).

http://www.sandia.gov/~smartin/presentations/SMartin_Stability.pdf

https://en.wikipedia.org/wiki/Numerical_stability

W naiwnym klasyfikatorze Bayesa często widzisz mnożenie przekształcone w sumę logarytmów, co jest mniej podatne na błędy zaokrąglania.

https://en.wikipedia.org/wiki/Naive_Bayes_classifier#Multinomial_naive_Bayes


źródło
Dzięki. Czy możesz wyjaśnić, w jaki sposób svd rozwiązuje problem w PCA i w jaki sposób suma dzienników zmniejsza problem? Gdzie ta suma dzienników jest używana w naiwnym klasyfikatorze Bayesa?
GeorgeOfTheRF,
To są bardziej szczegółowe pytania, ale mogę podać kilka wskazówek. „rozwiązuje” to, ponieważ można uzyskać PCA z SVD. Doskonały artykuł znajduje się tutaj: arxiv.org/pdf/1404.1100.pdf . SVD jest preferowany ze względu na brak macierzy kowariancji w jego obliczeniach. Suma dzienników naiwnych bayes
0

Jeden prosty przykład: znikający problem z gradientem w głębokim uczeniu się. Nie jest to głównie problem precyzji skończonej, ale jest to również część problemu.

Martin Thoma
źródło