交叉熵(cross entropy)损失函数求导,有一步不是很理解,求指点(函数里的指数函数的底数是不是 e?还是不确定?

2017-08-05 17:57:07 +08:00
 WildCat


来源: http://blog.csdn.net/jasonzzj/article/details/52017438

从绿框到红框的推导不是很理解,主要是红框中的分母。

如果 log(...) 的底数不为 e,那么分母上应该还有一项 ln a ( a 为底数)

这一步怎么得来的呢?
9838 次点击
所在节点    问与答
9 条回复
upczww
2017-08-05 18:11:17 +08:00
默认就是 e 为底的
WildCat
2017-08-05 18:12:27 +08:00
@upczww 以 e 为底为什么不写 ln 呢?
我还专门去翻了下《数学之美》信息熵的部分,但是那里面规定默认以 2 为底 =。=
blankme
2017-08-05 18:36:41 +08:00
为什么不写成 ln,这你要问博主,习惯而已。
WildCat
2017-08-05 18:58:09 +08:00
@blankme 不是,我是从 Coursera ML 课看起的,那里就是 log
Xs0ul
2017-08-05 19:24:00 +08:00
1. 按我学的交叉熵一般以 2 为底,这个习惯来自信息论的信息熵的意义

2. 作为 loss,用 e 还是用 2 本质上没有区别,只是 loss 差一个常数倍

3. 我猜楼主想到了 2,但是疑惑在于在那一步求导里,只有其中一项会因为换个底数多一个常数倍,另一项没有。实际上再往上翻,推 log(1 - h) 的时候,已经当作 e 为底,yi xi 消失的常数系数在这里漏掉了。

4. 推公式方便来说还是以 e 为底吧,不然不小心就会疏忽掉系数。
rrfeng
2017-08-05 20:02:53 +08:00
我记得是这样
ln -> e
lg -> 10
log -> 要写底数
geelaw
2017-08-05 20:43:20 +08:00
除非事先说明,否则 log 要么是以 e 为底,要么是需要写底数,要么是以任意一个大于 1 的数为底(底数不重要的情况)。
HowardMei
2017-08-05 21:09:53 +08:00
原原本本对数函数的导数公式啊
HowardMei
2017-08-05 21:31:14 +08:00
[logf(x)]'=f'(x)/f(x) 是很常用的求导公式,你设 g(x)=log f(x),则 f(x)=e^g(x),代入验证看看。

当然,是有限度成立的,信息熵函数恰好满足这个条件而已,且这里的 log 就是自然对数。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/380667

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX