Перейти на страницу файла на Викискладе

Файл:Gradient descent.gif

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Gradient_descent.gif(360 × 292 пкс, размер файла: 1,51 Мб, MIME-тип: image/gif, закольцованный, 50 фреймов)

Краткое описание

Описание
English: Gradient descent is a simple method to find the minimum of a function, where at each iteration a small step is made in the direction of the steepest descent. It tends to get stuck in a local minimum, so it is often run with several initial conditions.
Дата
Источник https://twitter.com/j_bertolotti/status/1121054414066810881
Автор Jacopo Bertolotti
Права
(Повторное использование этого файла)
https://twitter.com/j_bertolotti/status/1030470604418428929

Mathematica 11.0 code

f = Evaluate[x^2 + y^2 + Total@Table[RandomReal[{0,2}] E^(-(((x - RandomReal[{-1, 1}])^2 + (y + RandomReal[{-1, 1}])^2)/(2 RandomReal[{0.1, 0.4}]^2))), {10}]];

step = 0.02;
nstep = 100;
coord = {-1, 1};
pos = {coord[[1]], coord[[2]], f /. {x -> coord[[1]], y -> coord[[2]]}};
evo = Reap[Do[
      subst = MapThread[Rule, {{x, y, z}, pos}];
      dfx = (D[{x, y, f}, x] /. subst);
      dfy = (D[{x, y, f}, y] /. subst);
      tmp = {D[f, x] /. subst, D[f, y] /. subst};
      pos = pos - step {tmp[[1]], tmp[[2]], 0};
      pos[[3]] = Evaluate[f /. {x -> pos[[1]], y -> pos[[2]]}];
      Sow[pos];
      , nstep];][[2, 1]];

coord = {-1, -1};
pos = {coord[[1]], coord[[2]], f /. {x -> coord[[1]], y -> coord[[2]]}};
evo1 = Reap[Do[
      subst = MapThread[Rule, {{x, y, z}, pos}];
      dfx = (D[{x, y, f}, x] /. subst);
      dfy = (D[{x, y, f}, y] /. subst);
      tmp = {D[f, x] /. subst, D[f, y] /. subst};
      pos = pos - step {tmp[[1]], tmp[[2]], 0};
      pos[[3]] = Evaluate[f /. {x -> pos[[1]], y -> pos[[2]]}];
      Sow[pos];
      , nstep];][[2, 1]];

coord = {1, 1};
pos = {coord[[1]], coord[[2]], f /. {x -> coord[[1]], y -> coord[[2]]}};
evo2 = Reap[Do[
      subst = MapThread[Rule, {{x, y, z}, pos}];
      dfx = (D[{x, y, f}, x] /. subst);
      dfy = (D[{x, y, f}, y] /. subst);
      tmp = {D[f, x] /. subst, D[f, y] /. subst};
      pos = pos - step {tmp[[1]], tmp[[2]], 0};
      pos[[3]] = Evaluate[f /. {x -> pos[[1]], y -> pos[[2]]}];
      Sow[pos];
      , nstep];][[2, 1]];

p1 = Table[
   Show[
    Plot3D[f, {x, -1.35, 1.35}, {y, -1.35, 1.35}, Boxed -> False, Axes -> False(*,PlotStyle\[Rule]{Opacity[0.3]}*)],
    Graphics3D[{PointSize[0.03], Point[evo[[j]] ], Thick, Line[evo[[1 ;; j]] ], Point[evo1[[j]] ], Line[evo1[[1 ;; j]]] , Point[evo2[[j]] ], Line[evo2[[1 ;; j]]] }]
    ]
   , {j, 1, nstep, 2}];
ListAnimate[p1]

Лицензирование

Я, владелец авторских прав на это произведение, добровольно публикую его на условиях следующей лицензии:
Creative Commons CC-Zero Этот файл доступен на условиях Creative Commons CC0 1.0 Универсальной передачи в общественное достояние (Universal Public Domain Dedication).
Лица, связанные с работой над этим произведением, решили передать данное произведение в общественное достояние, отказавшись от всех прав на произведение по всему миру в рамках закона об авторских правах (а также связанных и смежных прав), в той степени, которую допускает закон. Вы можете копировать, изменять, распространять, исполнять данное произведение в любых целях, в том числе в коммерческих, без получения на это разрешения автора.

Краткие подписи

Gradient descent with 3 different initial conditions.

Элементы, изображённые на этом файле

изображённый объект

У этого свойства есть некоторое значение без элемента в

image/gif

История файла

Нажмите на дату/время, чтобы посмотреть файл, который был загружен в тот момент.

Дата/времяМиниатюраРазмерыУчастникПримечание
текущий08:43, 25 апреля 2019Миниатюра для версии от 08:43, 25 апреля 2019360 × 292 (1,51 Мб)BertoUser created page with UploadWizard

Нет страниц, использующих этот файл.

Глобальное использование файла

Данный файл используется в следующих вики:

Метаданные