Pour formuler la question, en informatique, nous voulons souvent calculer le produit de plusieurs probabilités:
P(A,B,C) = P(A) * P(B) * P(C)
L'approche la plus simple consiste simplement à multiplier ces nombres, et c'est ce que j'allais faire. Cependant, mon patron a dit qu'il valait mieux ajouter le journal des probabilités:
log(P(A,B,C)) = log(P(A)) + log(P(B)) + log(P(C))
Cela donne la probabilité logarithmique, mais nous pouvons obtenir la probabilité par la suite si nécessaire:
P(A,B,C) = e^log(P(A,B,C))
L'ajout de journaux est considéré comme meilleur pour deux raisons:
- Il empêche le "sous-dépassement" par lequel le produit des probabilités est si petit qu'il est arrondi à zéro. Cela peut souvent être un risque car les probabilités sont souvent très faibles.
- C'est plus rapide car de nombreuses architectures informatiques peuvent effectuer l'addition plus rapidement que la multiplication.
Ma question porte sur le deuxième point. C'est ainsi que je l'ai vu décrit, mais il ne prend pas en compte le coût supplémentaire d'obtention du journal! Nous devrions comparer le "coût du journal + le coût de l'addition" au "coût de la multiplication". Est-il encore plus petit après en avoir tenu compte?
De plus, la page Wikipédia ( probabilité de journalisation) prête à confusion à cet égard, déclarant que "la conversion sous forme de journal est coûteuse, mais n'est engagée qu'une seule fois". Je ne comprends pas cela, car je pense que vous auriez besoin de prendre le journal de chaque terme indépendamment avant d'ajouter. Qu'est-ce que je rate?
Enfin, la justification selon laquelle "les ordinateurs effectuent l'addition plus rapidement que la multiplication" est assez vague. Est-ce spécifique au jeu d'instructions x86, ou s'agit-il d'un trait plus fondamental des architectures de processeur?