如何使用Optim最小化Julia中的多元成本函数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Optim最小化Julia中的多元成本函数?相关的知识,希望对你有一定的参考价值。

我目前在尝试使用Julia中的Optim软件包以尽量减少成本函数方面一直处于困境。成本函数是L2正则逻辑回归的成本函数。它的构造如下;

using Optim

function regularised_cost(X, y, θ, λ)
    m = length(y)

    # Sigmoid predictions
    h = sigmoid(X * θ)

    # left side of the cost function
    positive_class_cost = ((-y)' * log.(h))

    # right side of the cost function
    negative_class_cost = ((1 .- y)' * log.(1 .- h))

    # lambda effect
    lambda_regularization = (λ/(2*m) * sum(θ[2 : end] .^ 2))

    # Current batch cost
    
答案

您需要关闭火车数据并创建仅将参数作为输入的损失函数。

根据dealing with constant parameterised上的文档

应该是这样。

loss_and_grad(theta) = regularised_cost(opt_train, y_train, theta, 0.01)

loss(theta) = first(loss_and_grad(theta))

res = optimize(loss, initial_theta)

我将把它留给您,以了解如何连接渐变。

不过提醒您:请勿使用非const全局变量。它们很慢,特别是在我编写的loss_and_grad函数中使用它们的方式很慢。因此,您应该将opt_trainy_train声明为const。或制作一个接受它们并返回损失函数的函数,等等

以上是关于如何使用Optim最小化Julia中的多元成本函数?的主要内容,如果未能解决你的问题,请参考以下文章

Julia的Optim.jl包无法执行盒装优化

在 Julia 中最小化具有多个参数的函数

如何正确指定用于 optim() 或其他优化器的梯度函数

在 Julia 中运行最小均方函数

在 Julia 中返回数组中的最小索引

如何 求多元一次函数的最大值