知方号

知方号

对数(log)的换算公式

对数(log)的换算公式

对数公式的换算,对于算法复杂度的推导非常重要。但是我总忘,这次特地总结一下常用的对数公式,以备后用。

名称公式和差 log ⁡ α M N = log ⁡ α M + l o g α N log_alpha MN=log_alpha M+log_alpha N logα​MN=logα​M+logα​N换底公式 log ⁡ α x = log ⁡ β x log ⁡ β α log_alpha x=frac{log_eta x}{log_etaalpha} logα​x=logβ​αlogβ​x​次方公式 log ⁡ a n x m = m n log ⁡ a x log_{a^n}x^m=frac{m}{n}log_ax logan​xm=nm​loga​x互换 M log ⁡ a N = N log ⁡ a M M^{log_aN}=N^{log_aM} Mloga​N=Nloga​M倒数 log ⁡ a b = ln ⁡ b ln ⁡ a = 1 log ⁡ b a log_ab=frac{ln b}{ln a}=frac{1}{log_ba} loga​b=lnalnb​=logb​a1​链式 log ⁡ γ β log ⁡ β α = ln ⁡ β ln ⁡ γ ln ⁡ α ln ⁡ β = ln ⁡ α ln ⁡ γ = log ⁡ γ α log_gamma etalog_etaalpha=frac{ln eta}{ln gamma}frac{ln alpha}{ln eta}=frac{ln alpha}{ln gamma}=log_gammaalpha logγ​βlogβ​α=lnγlnβ​lnβlnα​=lnγlnα​=logγ​α还原 α log ⁡ α x = x = log ⁡ α α x alpha^{log_alpha x}=x=log_alpha alpha^x αlogα​x=x=logα​αx

注:公式总结自维基百科:https://zh.wikipedia.org/wiki/%E5%AF%B9%E6%95%B0。

基底是 e e e还是2的问题

在一些计算机相关的领域,书写 log ⁡ log log函数时经常会省略基底(base),例如时间复杂度 O ( log ⁡ N ) O(log N) O(logN),或者在机器学习领域用来做多分类的交叉熵损失函数: L c e ( x , y ) = − ∑ c = 1 M y o , c log ⁡ ( p o , c ) L_{ce}(x,y)=-sum^M_{c=1}y_{o,c}log(p_{o,c}) Lce​(x,y)=−∑c=1M​yo,c​log(po,c​),这个时候我们会想知道这些 log ⁡ log log函数的基底到底是数学常数 e e e还是2?

一般情况下,算法复杂度和信息论领域(例如交叉熵)的 log ⁡ log log计算都是以2为底,但也有少部分以 e e e为底的情况。其实我们对 log ⁡ log log的基底无需过分担心,因为以 e e e为底得出的结果与以2为底得出的结果比值是个常数,使用换底公式即可求得: log ⁡ e N log ⁡ 2 N = log ⁡ k N log ⁡ k e / log ⁡ k N log ⁡ k 2 = log ⁡ k 2 log ⁡ k e = log ⁡ e 2. frac{log_eN}{log_2N}=frac{log_kN}{log_ke}/frac{log_kN}{log_k2}=frac{log_k2}{log_ke}=log_e2. log2​Nloge​N​=logk​elogk​N​/logk​2logk​N​=logk​elogk​2​=loge​2. 因此,我们不应该过分关注 log ⁡ log log函数的基底是 e e e还是2的问题,它们计算结果的比值总是一个常数,采用任何一个基底都不会对要解决的问题本身产生影响。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。