Czy możesz wyjaśnić, co to jest skończona precyzja? Dlaczego skończona precyzja jest problemem w uczeniu maszynowym?
Czy możesz wyjaśnić, co to jest skończona precyzja? Dlaczego skończona precyzja jest problemem w uczeniu maszynowym?
Odpowiedzi:
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 transcendentalne 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
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.