Файл:Оптимизация Ньютона против градиентного спуска.svg

Исходный файл (Файл SVG, номинально 813 × 936 пикселей, размер файла: 48 КБ)

ОписаниеОптимизация Ньютона против градиентного спуска.svg
Русский: Сравнение градиентного спуска (зеленый) и метода Ньютона (красный) для минимизации функции (с малыми размерами шага). Метод Ньютона использует информацию о кривизне, чтобы выбрать более прямой путь.
Польский: Использование метода наибольшего спада (линия зеленого цвета) с методом Ньютона (линия червона). На рисунку можно найти минимальную линию для выполнения заданных функций. Метод Ньютона позволяет получить информацию о том, как можно оптимизировать процесс поиска.
Дата(УНИВЕРСАЛЬНОЕ ГЛОБАЛЬНОЕ ВРЕМЯ)
Источниксамодельный с en:Matlab. Изменен в en:Inkscape
АвторОлег Александров
Public domainPublic domainfalsefalse
Общественное достояниеЯ, владелец авторских прав на эту работу, передаю эту работу в общественное достояние . Это применимо во всем мире.
В некоторых странах это может быть юридически невозможно; в таком случае:
я предоставляю любому право использовать эту работу в любых целях , без каких-либо условий, если только такие условия не требуются по закону.

Исходный код

% Сравнение градиентного спуска и метода Ньютона для оптимизации функции main () % окно построения графика ( 1 ) ; clf ; удержание ; ось равна ; ось выключена ;        % цветов красный = [ 0,867 0,06 0,14 ]; синий = [ 0 , 129 , 205 ] / 256 ; зеленый = [ 0 , 200 , 70 ] / 256 ; черный = [ 0 , 0 , 0 ]; белый = 0,99 * [ 1 , 1 , 1 ];                       % настройки графика lw = 3 ; arrowsize = 0.06 ; arrow_type = 2 ; fs = 13 ;    % функция, контуры которой будут построены, и ее парциальные функции C = [ 0.2 , 4 , 0.4 , 1 , 1.5 ]; % Изменить f, изменив C f = inline ( '(C(1)*(x-0.4).^4+C(2)*x.^2+C(3)*(y+1).^4+C(4)*y.^2+C(5)*x.*y-1)' , 'x' , 'y' , 'C' ); fx = inline ( '(4*C(1)*(x-0.4).^3+2*C(2)*x+C(5)*y)' , 'x' , 'y' , 'C' ); fy = встроенный ( '(4*C(3)*(y+1).^3+2*C(4)*y+C(5)*x)' , 'x' , 'y' , 'C' );                     fxx = inline ( '(12*C(1)*(x-0.4).^2+2*C(2))' , 'x' , 'y' , 'C' ); fxy = встроенный ( 'C(5)' , 'x' , 'y' , 'C' ); fyy = inline ( '(12*C(3)*(y+1).^2+2*C(4))' , 'x' , 'y' , 'C' );            plot_contours ( f , C , синий , белый , lw );    % размер шага альфа = 0,025 ; % начальное предположение V0 =[ - 0,2182 , - 1,2585 ]; x = V0 ( 1 ); y = V0 ( 2 ); z = x ; w = y ;           % выполнить несколько итераций градиентного спуска и метода Ньютона X =[ x ]; Y =[ y ]; Z = [ z ]; W =[ w ]; для i = 0 : 200         % градиентный спуск u = fx ( x , y , C ); v = fy ( x , y , C );       х = х - альфа * ты ; у = у - альфа * v ; Икс = [ Икс , Икс ]; Y = [ Y , y ]; % метод Ньютона u = fx ( z , w , C ); v знак равно fy ( z , ш , C ); mxx = fxx ( z , ш , C ); mxy = fxy ( z , ш , C ); myy = fyy ( z , ш , C ); М = [ mxx , mxy ; мкси , мойу ];                                 В знак равно М \ [ ты ; v ]; ты знак равно V ( 1 ); v = V ( 2 );          z = z - альфа * ты ; ш = ш - альфа * v ; Z = [ Z , z ]; W = [ W , ш ];          конец plot ( X , Y , 'цвет' , зеленый , 'ширина линии' , lw ); plot ( Z , W , 'цвет' , красный , 'ширина линии' , lw );           % текст графика small = 0,03 ; m = длина ( Z ); V = [ Z ( m ), W ( m )]; текст ( V0 ( 1 ) - 2 * small , V0 ( 2 ) - 2 * small , 'x_0' , 'fontsize' , fs ); текст ( V ( 1 ) + small , V ( 2 ) + small , 'x' , 'fontsize' , fs );                    % несколько маленьких шариков, чтобы скрыть некоторые недостатки small_rad = 0.015 ; ball ( V0 ( 1 ), V0 ( 2 ), small_rad , blue ); ball ( V ( 1 ), V ( 2 ), small_rad , blue ); % сохранить в eps и svg saveas ( gcf , 'Newton_optimization_vs_grad_descent.eps' , 'psc2' ) % plot2svg('Newton_optimization_vs_grad_descent.svg')            function plot_contours ( f, C, color, color2, lw ) % Рассчитать f на сетке Lx1 = - 2 ; Lx2 = 2 ; Ly1 = - 2 ; Ly2 = 2 ; N = 60 ; h = 1 / N ; XX = Lx1 : h : Lx2 ; YY = Ly1 : h : Ly2 ; [ X , Y ]= meshgrid ( XX , YY ); Z = f ( X , Y , C );                 % контуры h = 0,3 ; l0 = - 1 ; l1 = 0,7 ; l0 = h * пол ( l0 / h ); l1 = h * пол ( l1 / h ); Уровни = - [ l0 : 1,5 * h : 0 0 : h : l1 0,78 ];        % Построить контуры с помощью 'contour' в figure(2), а затем с помощью 'plot' в figure(1). % Это сделано для того, чтобы избежать ошибки в plot2svg, он не может сохранить вывод 'contour'. figure ( 2 ); clf ; hold on ; axis equal ; axis off ; xmin = 1000 ; ymin = xmin ; xmax = - xmin ; ymax = - ymin ; for i = 1 : length ( Levels )                       фигура ( 2 ); [ c , stuff ] = contour ( X , Y , Z , [ Уровни ( i ), Уровни ( i )]);         [ m , n ]= size ( c ); если m > 1 & n > 0 % извлечь контур из контурной матрицы и построить график на рисунке (1) l = c ( 2 , 1 ); x = c ( 1 , 2 :( l + 1 )); y = c ( 2 , 2 :( l + 1 )); рисунок ( 1 ); plot ( x , y , 'color' , color , 'linewidth' , 0.66 * lw );                        хмин = мин ( хмин , мин ( х )); хмакс = макс ( хмакс , макс ( х )); ymin = мин ( ymin , мин ( y )); умакс = макс ( умакс , макс ( у )); конец-конец фигуры ( 1 ) ;                  % какой-то фиктивный текст, чтобы немного расширить окно сохранения small = 0.04 ; plot ( xmin - small , ymin - small , '*' , 'color' , color2 ); plot ( xmax + small , ymax + small , '*' , 'color' , color2 );              функция стрелка ( начало, остановка, толщина, размер_стрелки, резкость, тип_стрелки, цвет ) % Аргументы функции: % start, stop: начальные и конечные координаты стрелки, векторы размера 2 % thick: толщина стержня стрелки % arrow_size: размер двух сторон угла на этой картинке -> % sharpness: угол между стержнем стрелки и стороной стрелки в радианах % arrow_type: 1 для заполненной стрелки, в противном случае стрелка будет состоять только из двух сегментов % color: цвет стрелки, вектор длины три со значениями в диапазоне [0, 1]% преобразовать в комплексные числа i = sqrt ( - 1 ); начало = начало ( 1 ) + i * начало ( 2 ); остановка = остановка ( 1 ) + i * остановка ( 2 ); угол_поворота = exp ( i * резкость );    % точек, составляющих наконечник стрелки (кроме точки «стоп») point1 = stop - ( arrow_size * rotate_angle ) * ( stop - start ) / abs ( stop - start ); point2 = stop - ( arrow_size / rotate_angle ) * ( stop - start ) / abs ( stop - start );           если arrow_type == 1 % заполненная стрелка  % рисуем палку, но не до конца, выглядит плохо t = 0.5 * arrow_size * cos ( sharpness ) / abs ( stop - start ); stop1 = t * start + ( 1 - t ) * stop ; plot ( real ([ start , stop1 ]), imag ([ start , stop1 ]), 'LineWidth' , thick , 'Color' , color );          % заполнить стрелку H = fill ( real ([ stop , point1 , point2 ]), imag ([ stop , point1 , point2 ]), color ); set ( H , 'EdgeColor' , 'none' )           else % двухсегментный стрелочный график ( real ([ start , stop ]), imag ([ start , stop ]), 'LineWidth' , thick , 'Color' , color ); plot ( real ([ stop , point1 ]), imag ([ stop , point1 ]), 'LineWidth' , thick , 'Color' , color ); plot ( real ([ stop , point2 ]), imag ([ stop , point2 ]), 'LineWidth' , thick , 'Color' , color ); end                          функция ball ( x, y, r, цвет ) Theta = 0 : 0.1 : 2 * pi ; X = r * cos ( Theta ) + x ; Y = r * sin ( Theta ) + y ; H = fill ( X , Y , цвет ); set ( H , 'EdgeColor' , 'none' );          

Captions

Add a one-line explanation of what this file represents

Items portrayed in this file

depicts

creator

some value

author name string: Oleg Alexandrov
URL: https://commons.wikimedia.org/wiki/user:Oleg_Alexandrov
Wikimedia username: Oleg Alexandrov

copyright status

copyrighted, dedicated to the public domain by copyright holder

copyright license

released into the public domain by the copyright holder

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

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

Дата/ВремяМиниатюраРазмерыПользовательКомментарий
текущий04:58, 23 июня 2007 г.813 × 936 (48 КБ)Олег Александров{{Информация |Описание= |Источник=сделано самостоятельно с помощью en:Matlab . Изменено в en:Inkscape |Дата= ~~~~~ |Автор= Олег Александров }} {{PD-self}}

Следующая страница использует этот файл:

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

Этот файл используют и другие вики:

  • Использование на ca.wikipedia.org
    • Метод Ньютона (оптимизация)
  • Использование на fa.wikipedia.org
    • Бехенхас
  • Использование на he.wikipedia.org
    • אופטימיזציה (מתמטיקה)
  • Использование на pl.wikipedia.org
    • Метод Ньютона (оптимализация)
  • Использование на pt.wikipedia.org
    • Метод Ньютона в оптимизации
  • Использование на uk.wikipedia.org
    • Метод Ньютона в оптимизации
  • Использование на zh.wikipedia.org
    • 應用於最優化的牛頓法
Retrieved from "https://en.wikipedia.org/wiki/File:Newton_optimization_vs_grad_descent.svg"