详细内容或原文请订阅后点击阅览
torch 用于优化
Torch 不仅仅适用于深度学习。其 L-BFGS 优化器配备 Strong-Wolfe 线搜索,是无约束和约束优化的强大工具。
来源:RStudio AI博客到目前为止,我们在此讨论的所有 torch 用例都与深度学习有关。但是,它的自动微分功能在其他领域也很有用。一个突出的例子是数值优化:我们可以使用 torch 来找到函数的最小值。
torch
torch
事实上,函数最小化正是在训练神经网络时发生的事情。但是,在那里,所讨论的函数通常过于复杂,甚至无法想象通过分析找到其最小值。数值优化旨在构建处理这种复杂性的工具。然而,为此,它从组成远不那么深入的函数开始。相反,它们是手工制作的,以提出特定的挑战。
正是这篇文章首次介绍了使用 torch 进行数值优化。主要内容是其 L-BFGS 优化器的存在和实用性,以及使用线搜索运行 L-BFGS 的影响。作为一个有趣的附加组件,我们展示了一个约束优化的示例,其中通过二次惩罚函数强制执行约束。
torch
为了热身,我们绕道而行,只使用张量“自己”最小化函数。 不过,这在以后会变得有意义,因为整体过程仍然相同。 所有更改都与优化器及其功能的集成有关。
优化器
函数最小化,DYI 方法
要了解如何“手动”最小化函数,让我们尝试标志性的 Rosenbrock 函数。这是一个具有两个变量的函数:
Rosenbrock 函数\[f(x_1, x_2) = (a - x_1)^2 + b * (x_2 - x_1^2)^2\]
\[f(x_1, x_2) = (a - x_1)^2 + b * (x_2 - x_1^2)^2\],其中 \(a\) 和 \(b\) 可配置参数通常分别设置为 1 和 5。
\(a\) \(b\)在 R 中:
library(torch)a <- 1b <- 5rosenbrock <- function(x) { x1 <- x[1] x2 <- x[2] (a - x1)^2 + b * (x2 - x1^2)^2}
library(torch)a <- 1b <- 5rosenbrock <- function(x) { x1 <- x[1] x2 <- x[2] (a - x1)^2 + b * (x2 - x1^2)^2}
library(torch)
库
库
(
torch
火炬
)
a <- 1
a
<-
1
b <- 5
b
<-
5
Rosenbrock <- function(x) {
<-
(分区>