문제를 해결하기 위해 컴퓨터 과학에서 종종 여러 확률의 곱을 계산하려고합니다.
P(A,B,C) = P(A) * P(B) * P(C)
가장 간단한 방법은 단순히이 숫자를 곱하는 것입니다. 이것이 바로 제가하려는 것입니다. 그러나 상사는 확률의 로그를 추가하는 것이 좋습니다.
log(P(A,B,C)) = log(P(A)) + log(P(B)) + log(P(C))
이것은 로그 확률을 제공하지만 필요한 경우 나중에 확률을 얻을 수 있습니다.
P(A,B,C) = e^log(P(A,B,C))
다음과 같은 두 가지 이유로 로그 추가가 더 나은 것으로 간주됩니다.
- 확률의 곱이 너무 작아서 0으로 반올림되는 "언더 플로우"를 방지합니다. 확률이 종종 매우 작기 때문에 이것은 종종 위험이 될 수 있습니다.
- 많은 컴퓨터 아키텍처가 곱셈보다 더 빠르게 덧셈을 수행 할 수 있기 때문에 더 빠릅니다.
제 질문 은 두 번째 요점입니다. 이것이 내가 설명 한 방법이지만 로그를 얻는 데 드는 추가 비용은 고려하지 않았습니다! "로그 비용 + 추가 비용"을 "곱하기 비용"과 비교해야합니다. 그것을 고려한 후에도 여전히 더 작습니까?
또한 Wikipedia 페이지 ( Log 확률 )는 "로그 형식으로 변환하는 데 비용이 많이 들지만 한 번만 발생합니다." 나는 이것을 이해하기 전에 모든 용어의 로그를 독립적으로 가져 가야한다고 생각하기 때문에 이것을 이해하지 못합니다. 내가 무엇을 놓치고 있습니까?
마지막으로, "컴퓨터가 곱셈보다 더 빠르게 덧셈을한다"는 정당성은 모호하다. 이는 x86 명령어 세트에만 해당됩니까, 아니면 프로세서 아키텍처의보다 근본적인 특성입니까?