JL Julia  ·  25 вопросов  ·  ~70 мин  ·  ⏱ Таймер 10:00  ·  Средний  · 

Оптимизация в Julia

Практические задания по теме «Оптимизация в Julia» требуют сопоставить несколько решений, найти источник ошибки и оценить последствия выбранного подхода. Вопросы требуют читать код, находить границу применимости, выбирать проверяемую правку и отличать свойства Julia от поведения конкретного пакета. В тесте 25 вопросов: 15 заданий с кодом и 10 заданий с математической записью. Все формулировки рассчитаны на Julia 1.12.6; для сторонних библиотек используется явно названный API.

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На работу отведено 70 минут. После завершения откроются правильные ответы, объяснения и результаты по темам.
Вопрос 1 из 25
Что именно следует из фрагмента с `@show Optim.minimizer(result) Optim.minimum(result) Optim.converged(result)`?
\min_x f(x)
JuliaJulia · Целевая функция
using Optim
loss(θ) = (θ[1]-2)^2 + 4(θ[2]+1)^2
result = optimize(loss, [0.0, 0.0], BFGS())
@show Optim.minimizer(result) Optim.minimum(result) Optim.converged(result)
Вопрос 2 из 25
Какой эксперимент отличит настоящий механизм `@show Optim.minimizer(result) Optim.minimum(result) Optim.converged(result)` от случайного результата одного запуска?
JuliaJulia · Целевая функция
using Optim
loss(θ) = (θ[1]-2)^2 + 4(θ[2]+1)^2
result = optimize(loss, [0.0, 0.0], BFGS())
@show Optim.minimizer(result) Optim.minimum(result) Optim.converged(result)
Вопрос 3 из 25
Что должно остаться истинным после рефакторинга участка с `@show Optim.minimizer(result) Optim.minimum(result) Optim.converged(result)`?
JuliaJulia · Целевая функция
using Optim
loss(θ) = (θ[1]-2)^2 + 4(θ[2]+1)^2
result = optimize(loss, [0.0, 0.0], BFGS())
@show Optim.minimizer(result) Optim.minimum(result) Optim.converged(result)
Вопрос 4 из 25
При переносе кода с `@show Optim.minimizer(result) Optim.minimum(result) Optim.converged(result)` в библиотеку какой критерий нельзя заменять впечатлением «пример работает»?
\min_x f(x)
Вопрос 5 из 25
Какое ограничение стоит прямо указать в документации к участку с `@show Optim.minimizer(result) Optim.minimum(result) Optim.converged(result)`?
Вопрос 6 из 25
Какой механизм Julia определяет поведение строки `θ = exp.(Optim.minimizer(result))`?
g_i(x)\le0,\;h_j(x)=0
JuliaJulia · Ограничения
using Optim
raw_loss(z) = (exp(z[1]) - 3)^2
result = optimize(raw_loss, [0.0], BFGS())
θ = exp.(Optim.minimizer(result))
@show θ
Вопрос 7 из 25
Какой эксперимент отличит настоящий механизм `θ = exp.(Optim.minimizer(result))` от случайного результата одного запуска?
JuliaJulia · Ограничения
using Optim
raw_loss(z) = (exp(z[1]) - 3)^2
result = optimize(raw_loss, [0.0], BFGS())
θ = exp.(Optim.minimizer(result))
@show θ
Вопрос 8 из 25
Что должно остаться истинным после рефакторинга участка с `θ = exp.(Optim.minimizer(result))`?
JuliaJulia · Ограничения
using Optim
raw_loss(z) = (exp(z[1]) - 3)^2
result = optimize(raw_loss, [0.0], BFGS())
θ = exp.(Optim.minimizer(result))
@show θ
Вопрос 9 из 25
При переносе кода с `θ = exp.(Optim.minimizer(result))` в библиотеку какой критерий нельзя заменять впечатлением «пример работает»?
g_i(x)\le0,\;h_j(x)=0
Вопрос 10 из 25
Как сформулировать границу механизма `θ = exp.(Optim.minimizer(result))` без чрезмерного обещания?
Вопрос 11 из 25
Как нужно интерпретировать `g = ForwardDiff.gradient(loss, θ)`, не добавляя к коду лишних гарантий?
\nabla f(x)
JuliaJulia · Градиенты
using ForwardDiff
loss(θ) = sum(abs2, θ .- [1.0, 2.0, 3.0])
θ = [0.5, 1.5, 2.5]
g = ForwardDiff.gradient(loss, θ)
function fd(f, x, i; h=1e-6)
    e = zeros(length(x)); e[i] = h
    (f(x+e)-f(x-e))/(2h)
end
@show g [fd(loss, θ, i) for i in eachindex(θ)]
Вопрос 12 из 25
Какой контрольный тест лучше всего проверит правило, связанное с `g = ForwardDiff.gradient(loss, θ)`?
JuliaJulia · Градиенты
using ForwardDiff
loss(θ) = sum(abs2, θ .- [1.0, 2.0, 3.0])
θ = [0.5, 1.5, 2.5]
g = ForwardDiff.gradient(loss, θ)
function fd(f, x, i; h=1e-6)
    e = zeros(length(x)); e[i] = h
    (f(x+e)-f(x-e))/(2h)
end
@show g [fd(loss, θ, i) for i in eachindex(θ)]
Вопрос 13 из 25
Что должно остаться истинным после рефакторинга участка с `g = ForwardDiff.gradient(loss, θ)`?
JuliaJulia · Градиенты
using ForwardDiff
loss(θ) = sum(abs2, θ .- [1.0, 2.0, 3.0])
θ = [0.5, 1.5, 2.5]
g = ForwardDiff.gradient(loss, θ)
function fd(f, x, i; h=1e-6)
    e = zeros(length(x)); e[i] = h
    (f(x+e)-f(x-e))/(2h)
end
@show g [fd(loss, θ, i) for i in eachindex(θ)]
Вопрос 14 из 25
При переносе кода с `g = ForwardDiff.gradient(loss, θ)` в библиотеку какой критерий нельзя заменять впечатлением «пример работает»?
\nabla f(x)
Вопрос 15 из 25
Какое утверждение о `g = ForwardDiff.gradient(loss, θ)` является переносимым правилом, а не особенностью одного запуска?
Вопрос 16 из 25
Какой механизм Julia определяет поведение строки `@show start Optim.converged(r) Optim.minimum(r) norm(Optim.gradient(r))`?
\lVert\nabla f(x^*)\rVert\approx0
JuliaJulia · Проверка сходимости
using Optim, LinearAlgebra
loss(x) = (x[1]-1)^4 + 1e-8(x[2]-10)^2
for start in ([0.0,0.0], [5.0,50.0])
    r = optimize(loss, start, BFGS())
    @show start Optim.converged(r) Optim.minimum(r) norm(Optim.gradient(r))
end
Вопрос 17 из 25
Какой эксперимент отличит настоящий механизм `@show start Optim.converged(r) Optim.minimum(r) norm(Optim.gradient(r))` от случайного результата одного запуска?
JuliaJulia · Проверка сходимости
using Optim, LinearAlgebra
loss(x) = (x[1]-1)^4 + 1e-8(x[2]-10)^2
for start in ([0.0,0.0], [5.0,50.0])
    r = optimize(loss, start, BFGS())
    @show start Optim.converged(r) Optim.minimum(r) norm(Optim.gradient(r))
end
Вопрос 18 из 25
Какой контракт следует закрепить при переработке строки `@show start Optim.converged(r) Optim.minimum(r) norm(Optim.gradient(r))`?
JuliaJulia · Проверка сходимости
using Optim, LinearAlgebra
loss(x) = (x[1]-1)^4 + 1e-8(x[2]-10)^2
for start in ([0.0,0.0], [5.0,50.0])
    r = optimize(loss, start, BFGS())
    @show start Optim.converged(r) Optim.minimum(r) norm(Optim.gradient(r))
end
Вопрос 19 из 25
После обновления Julia или пакета поведение участка с `@show start Optim.converged(r) Optim.minimum(r) norm(Optim.gradient(r))` изменилось. Какой критерий приёмки остаётся корректным?
\lVert\nabla f(x^*)\rVert\approx0
Вопрос 20 из 25
Какое ограничение стоит прямо указать в документации к участку с `@show start Optim.converged(r) Optim.minimum(r) norm(Optim.gradient(r))`?
Вопрос 21 из 25
Что именно следует из фрагмента с `scratch .= x`?
x_{k+1}=\Phi(x_k,s_k)
JuliaJulia · Контроль состояния
using Optim
scratch = zeros(2)
function loss(x)
    scratch .= x
    scratch[1] -= 1
    scratch[2] += 2
    return sum(abs2, scratch)
end
r1 = optimize(loss, [0.0, 0.0])
r2 = optimize(loss, [10.0, 10.0])
@show Optim.minimizer(r1) Optim.minimizer(r2) scratch
Вопрос 22 из 25
Какой эксперимент отличит настоящий механизм `scratch .= x` от случайного результата одного запуска?
JuliaJulia · Контроль состояния
using Optim
scratch = zeros(2)
function loss(x)
    scratch .= x
    scratch[1] -= 1
    scratch[2] += 2
    return sum(abs2, scratch)
end
r1 = optimize(loss, [0.0, 0.0])
r2 = optimize(loss, [10.0, 10.0])
@show Optim.minimizer(r1) Optim.minimizer(r2) scratch
Вопрос 23 из 25
Какой контракт следует закрепить при переработке строки `scratch .= x`?
JuliaJulia · Контроль состояния
using Optim
scratch = zeros(2)
function loss(x)
    scratch .= x
    scratch[1] -= 1
    scratch[2] += 2
    return sum(abs2, scratch)
end
r1 = optimize(loss, [0.0, 0.0])
r2 = optimize(loss, [10.0, 10.0])
@show Optim.minimizer(r1) Optim.minimizer(r2) scratch
Вопрос 24 из 25
Какой результат приёмочного теста подтвердит корректность участка с `scratch .= x`?
x_{k+1}=\Phi(x_k,s_k)
Вопрос 25 из 25
Какое ограничение стоит прямо указать в документации к участку с `scratch .= x`?

Ответьте на все 25 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу