首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >log_prob是做什么的?

log_prob是做什么的?
EN

Stack Overflow用户
提问于 2019-02-12 00:51:07
回答 4查看 12.2K关注 0票数 16

在一些(例如机器学习)库中,我们可以找到log_prob函数。它的作用是什么?它与普通的log有什么不同?

例如,这段代码的目的是什么:

代码语言:javascript
运行
复制
dist = Normal(mean, std)
sample = dist.sample()
logprob = dist.log_prob(sample)

因此,为什么我们首先取一个对数,然后对结果值进行指数运算,而不是直接计算它:

代码语言:javascript
运行
复制
prob = torch.exp(dist.log_prob(sample))
EN

回答 4

Stack Overflow用户

发布于 2020-08-08 03:58:38

正如您自己的答案所提到的,log_prob返回密度或概率的对数。在这里,我将解决您问题中的其余几点:

  • 这和log有什么不同?发行版没有log方法。如果他们这样做了,最接近的解释确实是像log_prob这样的东西,但它不是一个非常精确的名称,因为If回避了一个问题“什么的日志”?分布具有多个数值属性(例如,其平均值、期望值等),而概率或密度只是其中之一,因此名称可能不明确。

这同样不适用于Tensor.log()方法(这可能就是您所想的),因为Tensor本身是一个我们可以取其对数的数学量。

  • 为什么取概率的对数只是为了在以后对其求幂?您可能不需要在以后对其求幂。例如,如果您有概率pq的对数,则可以直接将log(p * q)计算为log(p) + log(q),从而避免中间求幂。这在数值上更稳定(避免下溢),因为概率可能变得非常接近零,而它们的对数则不是。一般来说,加法也比乘法更有效,而且它的导数更简单。在https://en.wikipedia.org/wiki/Log_probability.

上有一篇关于这些主题的很好的文章

票数 8
EN

Stack Overflow用户

发布于 2019-02-12 02:00:13

部分答案是,log_prob返回按给定样本值计算的概率密度/质量函数的对数。

票数 5
EN

Stack Overflow用户

发布于 2020-11-12 10:02:45

log_prob记录(某些动作)的概率。示例:

代码语言:javascript
运行
复制
action_logits = torch.rand(5)
action_probs = F.softmax(action_logits, dim=-1)
action_probs

返回:

张量(0.1457,0.2831,0.1569,0.2221,0.1922)

然后:

代码语言:javascript
运行
复制
dist = Categorical(action_probs)
action = dist.sample()
print(dist.log_prob(action), torch.log(action_probs[action]))

返回:

张量(-1.8519)张量(-1.8519)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54635355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档