Gradient Descent With AMSGrad

Two-Dimensional Test Problem
First, let’s define an optimization function.

We will use a simple two-dimensional function that squares the input of each dimension and define the range of valid inputs from -1.0 to 1.0.

The objective() function below implements this.

objective function

def objective(x, y):
return x2.0 + y2.0
1
2
3

objective function

def objective(x, y):
return x2.0 + y2.0
We can create a three-dimensional plot of the dataset to get a feeling for the curvature of the response surface.

The complete example of plotting the objective function is listed below.

3d plot of the test function

from numpy import arange
from numpy import meshgrid
from matplotlib import pyplot

objective function

def objective(x, y):
return x2.0 + y2.0

define range for input

r_min, r_max = -1.0, 1.0

sample input range uniformly at 0.1 increments

xaxis = arange(r_min, r_max, 0.1)
yaxis = arange(r_min, r_max, 0.1)

create a mesh from the axis

x, y = meshgrid(xaxis, yaxis)

compute targets

results = objective(x, y)

create a surface plot with the jet color scheme

figure = pyplot.figure()
axis = figure.gca(projection=‘3d’)
axis.plot_surface(x, y, results, cmap=‘jet’)

show the plot

pyplot.show()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

3d plot of the test function

from numpy import arange
from numpy import meshgrid
from matplotlib import pyplot

objective function

def objective(x, y):
return x2.0 + y2.0

define range for input

r_min, r_max = -1.0, 1.0

sample input range uniformly at 0.1 increments

xaxis = arange(r_min, r_max, 0.1)
yaxis = arange(r_min, r_max, 0.1)

create a mesh from the axis

x, y = meshgrid(xaxis, yaxis)

compute targets

results = objective(x, y)

create a surface plot with the jet color scheme

figure = pyplot.figure()
axis = figure.gca(projection=‘3d’)
axis.plot_surface(x, y, results, cmap=‘jet’)

show the plot

pyplot.show()
Running the example creates a three-dimensional surface plot of the objective function.

We can see the familiar bowl shape with the global minima at f(0, 0) = 0.

Three-Dimensional Plot of the Test Objective Function
Three-Dimensional Plot of the Test Objective Function

We can also create a two-dimensional plot of the function. This will be helpful later when we want to plot the progress of the search.

The example below creates a contour plot of the objective function.

contour plot of the test function

from numpy import asarray
from numpy import arange
from numpy import meshgrid
from matplotlib import pyplot

objective function

def objective(x, y):
return x2.0 + y2.0

define range for input

bounds = asarray([[-1.0, 1.0], [-1.0, 1.0]])

sample input range uniformly at 0.1 increments

xaxis = arange(bounds[0,0], bounds[0,1], 0.1)
yaxis = arange(bounds[1,0], bounds[1,1], 0.1)

create a mesh from the axis

x, y = meshgrid(xaxis, yaxis)

compute targets

results = objective(x, y)

create a filled contour plot with 50 levels and jet color scheme

pyplot.contourf(x, y, results, levels=50, cmap=‘jet’)

show the plot

pyplot.show()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

contour plot of the test function

from numpy import asarray
from numpy import arange
from numpy import meshgrid
from matplotlib import pyplot

objective function

def objective(x, y):
return x2.0 + y2.0

define range for input

bounds = asarray([[-1.0, 1.0], [-1.0, 1.0]])

sample input range uniformly at 0.1 increments

xaxis = arange(bounds[0,0], bounds[0,1], 0.1)
yaxis = arange(bounds[1,0], bounds[1,1], 0.1)

create a mesh from the axis

x, y = meshgrid(xaxis, yaxis)

compute targets

results = objective(x, y)

create a filled contour plot with 50 levels and jet color scheme

pyplot.contourf(x, y, results, levels=50, cmap=‘jet’)

show the plot

pyplot.show()
Running the example creates a two-dimensional contour plot of the objective function.

We can see the bowl shape compressed to contours shown with a color gradient. We will use this plot to plot the specific points explored during the progress of the search.

Two-Dimensional Contour Plot of the Test Objective Function
Two-Dimensional Contour Plot of the Test Objective Function