Por que a precisão finita é um problema no aprendizado de máquina?

Respostas:

4

Precisão finita é a representação decimal de um número que foi arredondado ou truncado. Existem muitos casos em que isso pode ser necessário ou apropriado. Por exemplo 1/3 e os números transcendentais e têm representações decimais infinitas. Na linguagem de programação C, um valor duplo é 8 bits e preciso para aproximadamente 16 dígitos. Veja aqui.eπ

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

Para representar concretamente um desses números em um computador (finito), deve haver algum tipo de compromisso. Poderíamos escrever 1/3 a 9 dígitos como .333333333, que é menor que 1/3.

Esses compromissos são compostos por operações aritméticas. Algoritmos instáveis ​​são propensos a erros aritméticos. É por isso que o SVD é frequentemente usado para calcular o PCA (instabilidade da matriz de covariância).

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

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

No classificador ingênuo de bayes, você verá frequentemente a multiplicação transformada em uma soma de logaritmos, menos propensa a erros de arredondamento.

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


fonte
Obrigado. Você pode explicar como o svd resolve o problema no PCA e como a soma dos logs reduz o problema? Onde esta soma de logs é usada no classificador ingênuo de bayes?
GeorgeOfTheRF
Essas são perguntas mais aprofundadas, mas posso fornecer algumas dicas. "resolve" porque você pode obter o PCA do SVD. Veja aqui um excelente artigo: arxiv.org/pdf/1404.1100.pdf . O SVD é preferido devido à falta da matriz de covariância em seu cálculo. Soma dos logs em bayes ingênuos: blog.datumbox.com/…
0

Um exemplo simples e simples: Problema no gradiente de fuga no Deep Learning. Não é principalmente um problema de precisão finita, mas isso também faz parte do problema.

Martin Thoma
fonte