gpt4 book ai didi

R 为 fn 和 gr 优化相同的函数

转载 作者:行者123 更新时间:2023-12-02 06:00:04 28 4
gpt4 key购买 nike

我想使用 optim() 来优化成本函数(fn 参数),并且我将提供梯度(gr 参数)。我可以为 fn 和 gr 编写单独的函数。然而,它们有很多共同的代码,我不希望优化器浪费时间重复这些计算。那么是否有可能提供一个既计算成本又计算梯度的函数呢?如果是这样,optim() 的调用语法是什么?

举个例子,假设我想要最小化的函数是

cost <- function(x) {
x*exp(x)
}

显然,这不是我想要最小化的功能。这太复杂了,无法在这里列出,但这个例子可以说明问题。现在,梯度将是

grad <- function(x) {
(x+1)*exp(x)
}

正如您所看到的,如果单独调用这两个函数,则会重复一些工作(在本例中为指数函数)。然而,由于 optim() 采用两个单独的参数(fn 和 gr),因此似乎没有办法避免这种低效率,除非有一种方法可以定义像这样的函数

costAndGrad <- function(x) {
ex <- exp(x)
list(cost=x*ex, grad=(x+1)*ex)
}

然后将该函数传递给 optim(),它需要知道如何提取成本和梯度。

希望能解释这个问题。就像我说的,我的函数要复杂得多,但想法是相同的:有大量代码用于计算(成本和梯度),我不想不必要地重复这些代码。

顺便说一句,我是 R 新手,所以我可能缺少一些简单的东西!

非常感谢

最佳答案

nlm 函数进行优化,它期望将梯度信息作为属性返回到作为原始函数值返回的值。这与您上面显示的类似。请参阅 nlm 帮助中的示例。

关于R 为 fn 和 gr 优化相同的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23272942/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com