如何使用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_train
和y_train
声明为const
。或制作一个接受它们并返回损失函数的函数,等等
以上是关于如何使用Optim最小化Julia中的多元成本函数?的主要内容,如果未能解决你的问题,请参考以下文章