diff --git a/doc/pub/Splines/html/._Splines-bs000.html b/doc/pub/Splines/html/._Splines-bs000.html index f8494c29a..c216dd1d9 100644 --- a/doc/pub/Splines/html/._Splines-bs000.html +++ b/doc/pub/Splines/html/._Splines-bs000.html @@ -65,48 +65,39 @@ Automatically generated HTML file from DocOnce source ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -162,35 +153,29 @@ MathJax.Hub.Config({
  • More on convex functions
  • Some simple problems
  • Standard steepest descent
  • -
  • Conjugate gradient method
  • -
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • -
  • The routine for the steepest descent method
  • -
  • Revisiting our first homework
  • -
  • Gradient descent example
  • -
  • The derivative of the cost/loss function
  • -
  • The Hessian matrix
  • -
  • Simple program
  • -
  • Gradient Descent Example
  • -
  • And a corresponding example using scikit-learn
  • -
  • Gradient descent and Ridge
  • -
  • Stochastic Gradient Descent
  • -
  • Computation of gradients
  • -
  • SGD example
  • -
  • The gradient step
  • -
  • Simple example code
  • -
  • When do we stop?
  • -
  • Slightly different approach
  • -
  • Conjugate gradient (CG) method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method, Newton's method first
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method and iterations
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • +
  • Gradient method
  • +
  • Steepest descent method
  • +
  • Steepest descent method
  • +
  • Gradient descent method
  • +
  • Final expressions
  • +
  • The Steepest descent algorithm
  • +
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • +
  • The routine for the steepest descent method
  • +
  • Revisiting our first homework
  • +
  • Gradient descent example
  • +
  • The derivative of the cost/loss function
  • +
  • The Hessian matrix
  • +
  • Simple program
  • +
  • Gradient Descent Example
  • +
  • And a corresponding example using scikit-learn
  • +
  • Gradient descent and Ridge
  • +
  • Stochastic Gradient Descent
  • +
  • Computation of gradients
  • +
  • SGD example
  • +
  • The gradient step
  • +
  • Simple example code
  • +
  • When do we stop?
  • +
  • Slightly different approach
  • @@ -249,7 +234,7 @@ MathJax.Hub.Config({
  • 9
  • 10
  • ...
  • -
  • 48
  • +
  • 42
  • »
  • diff --git a/doc/pub/Splines/html/._Splines-bs001.html b/doc/pub/Splines/html/._Splines-bs001.html index ebd5e0310..e621c87b3 100644 --- a/doc/pub/Splines/html/._Splines-bs001.html +++ b/doc/pub/Splines/html/._Splines-bs001.html @@ -65,48 +65,39 @@ Automatically generated HTML file from DocOnce source ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -162,35 +153,29 @@ MathJax.Hub.Config({
  • More on convex functions
  • Some simple problems
  • Standard steepest descent
  • -
  • Conjugate gradient method
  • -
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • -
  • The routine for the steepest descent method
  • -
  • Revisiting our first homework
  • -
  • Gradient descent example
  • -
  • The derivative of the cost/loss function
  • -
  • The Hessian matrix
  • -
  • Simple program
  • -
  • Gradient Descent Example
  • -
  • And a corresponding example using scikit-learn
  • -
  • Gradient descent and Ridge
  • -
  • Stochastic Gradient Descent
  • -
  • Computation of gradients
  • -
  • SGD example
  • -
  • The gradient step
  • -
  • Simple example code
  • -
  • When do we stop?
  • -
  • Slightly different approach
  • -
  • Conjugate gradient (CG) method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method, Newton's method first
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method and iterations
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • +
  • Gradient method
  • +
  • Steepest descent method
  • +
  • Steepest descent method
  • +
  • Gradient descent method
  • +
  • Final expressions
  • +
  • The Steepest descent algorithm
  • +
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • +
  • The routine for the steepest descent method
  • +
  • Revisiting our first homework
  • +
  • Gradient descent example
  • +
  • The derivative of the cost/loss function
  • +
  • The Hessian matrix
  • +
  • Simple program
  • +
  • Gradient Descent Example
  • +
  • And a corresponding example using scikit-learn
  • +
  • Gradient descent and Ridge
  • +
  • Stochastic Gradient Descent
  • +
  • Computation of gradients
  • +
  • SGD example
  • +
  • The gradient step
  • +
  • Simple example code
  • +
  • When do we stop?
  • +
  • Slightly different approach
  • @@ -235,7 +220,7 @@ some approximative/numerical method to compute the minimum.
  • 10
  • 11
  • ...
  • -
  • 48
  • +
  • 42
  • »
  • diff --git a/doc/pub/Splines/html/._Splines-bs002.html b/doc/pub/Splines/html/._Splines-bs002.html index a47b11984..8c76c24e2 100644 --- a/doc/pub/Splines/html/._Splines-bs002.html +++ b/doc/pub/Splines/html/._Splines-bs002.html @@ -65,48 +65,39 @@ Automatically generated HTML file from DocOnce source ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -162,35 +153,29 @@ MathJax.Hub.Config({
  • More on convex functions
  • Some simple problems
  • Standard steepest descent
  • -
  • Conjugate gradient method
  • -
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • -
  • The routine for the steepest descent method
  • -
  • Revisiting our first homework
  • -
  • Gradient descent example
  • -
  • The derivative of the cost/loss function
  • -
  • The Hessian matrix
  • -
  • Simple program
  • -
  • Gradient Descent Example
  • -
  • And a corresponding example using scikit-learn
  • -
  • Gradient descent and Ridge
  • -
  • Stochastic Gradient Descent
  • -
  • Computation of gradients
  • -
  • SGD example
  • -
  • The gradient step
  • -
  • Simple example code
  • -
  • When do we stop?
  • -
  • Slightly different approach
  • -
  • Conjugate gradient (CG) method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method, Newton's method first
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method and iterations
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • +
  • Gradient method
  • +
  • Steepest descent method
  • +
  • Steepest descent method
  • +
  • Gradient descent method
  • +
  • Final expressions
  • +
  • The Steepest descent algorithm
  • +
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • +
  • The routine for the steepest descent method
  • +
  • Revisiting our first homework
  • +
  • Gradient descent example
  • +
  • The derivative of the cost/loss function
  • +
  • The Hessian matrix
  • +
  • Simple program
  • +
  • Gradient Descent Example
  • +
  • And a corresponding example using scikit-learn
  • +
  • Gradient descent and Ridge
  • +
  • Stochastic Gradient Descent
  • +
  • Computation of gradients
  • +
  • SGD example
  • +
  • The gradient step
  • +
  • Simple example code
  • +
  • When do we stop?
  • +
  • Slightly different approach
  • @@ -243,7 +228,7 @@ where \( \hat{\beta} \) are the weights we wish to extract from data, in our cas
  • 11
  • 12
  • ...
  • -
  • 48
  • +
  • 42
  • »
  • diff --git a/doc/pub/Splines/html/._Splines-bs003.html b/doc/pub/Splines/html/._Splines-bs003.html index 2ac5adc95..c631ad132 100644 --- a/doc/pub/Splines/html/._Splines-bs003.html +++ b/doc/pub/Splines/html/._Splines-bs003.html @@ -65,48 +65,39 @@ Automatically generated HTML file from DocOnce source ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -162,35 +153,29 @@ MathJax.Hub.Config({
  • More on convex functions
  • Some simple problems
  • Standard steepest descent
  • -
  • Conjugate gradient method
  • -
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • -
  • The routine for the steepest descent method
  • -
  • Revisiting our first homework
  • -
  • Gradient descent example
  • -
  • The derivative of the cost/loss function
  • -
  • The Hessian matrix
  • -
  • Simple program
  • -
  • Gradient Descent Example
  • -
  • And a corresponding example using scikit-learn
  • -
  • Gradient descent and Ridge
  • -
  • Stochastic Gradient Descent
  • -
  • Computation of gradients
  • -
  • SGD example
  • -
  • The gradient step
  • -
  • Simple example code
  • -
  • When do we stop?
  • -
  • Slightly different approach
  • -
  • Conjugate gradient (CG) method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method, Newton's method first
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method and iterations
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • +
  • Gradient method
  • +
  • Steepest descent method
  • +
  • Steepest descent method
  • +
  • Gradient descent method
  • +
  • Final expressions
  • +
  • The Steepest descent algorithm
  • +
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • +
  • The routine for the steepest descent method
  • +
  • Revisiting our first homework
  • +
  • Gradient descent example
  • +
  • The derivative of the cost/loss function
  • +
  • The Hessian matrix
  • +
  • Simple program
  • +
  • Gradient Descent Example
  • +
  • And a corresponding example using scikit-learn
  • +
  • Gradient descent and Ridge
  • +
  • Stochastic Gradient Descent
  • +
  • Computation of gradients
  • +
  • SGD example
  • +
  • The gradient step
  • +
  • Simple example code
  • +
  • When do we stop?
  • +
  • Slightly different approach
  • @@ -248,7 +233,7 @@ This defines what we call the Hessian.
  • 12
  • 13
  • ...
  • -
  • 48
  • +
  • 42
  • »
  • diff --git a/doc/pub/Splines/html/._Splines-bs004.html b/doc/pub/Splines/html/._Splines-bs004.html index 2401ae554..df245e3c2 100644 --- a/doc/pub/Splines/html/._Splines-bs004.html +++ b/doc/pub/Splines/html/._Splines-bs004.html @@ -65,48 +65,39 @@ Automatically generated HTML file from DocOnce source ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -162,35 +153,29 @@ MathJax.Hub.Config({
  • More on convex functions
  • Some simple problems
  • Standard steepest descent
  • -
  • Conjugate gradient method
  • -
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • -
  • The routine for the steepest descent method
  • -
  • Revisiting our first homework
  • -
  • Gradient descent example
  • -
  • The derivative of the cost/loss function
  • -
  • The Hessian matrix
  • -
  • Simple program
  • -
  • Gradient Descent Example
  • -
  • And a corresponding example using scikit-learn
  • -
  • Gradient descent and Ridge
  • -
  • Stochastic Gradient Descent
  • -
  • Computation of gradients
  • -
  • SGD example
  • -
  • The gradient step
  • -
  • Simple example code
  • -
  • When do we stop?
  • -
  • Slightly different approach
  • -
  • Conjugate gradient (CG) method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method, Newton's method first
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method and iterations
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • +
  • Gradient method
  • +
  • Steepest descent method
  • +
  • Steepest descent method
  • +
  • Gradient descent method
  • +
  • Final expressions
  • +
  • The Steepest descent algorithm
  • +
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • +
  • The routine for the steepest descent method
  • +
  • Revisiting our first homework
  • +
  • Gradient descent example
  • +
  • The derivative of the cost/loss function
  • +
  • The Hessian matrix
  • +
  • Simple program
  • +
  • Gradient Descent Example
  • +
  • And a corresponding example using scikit-learn
  • +
  • Gradient descent and Ridge
  • +
  • Stochastic Gradient Descent
  • +
  • Computation of gradients
  • +
  • SGD example
  • +
  • The gradient step
  • +
  • Simple example code
  • +
  • When do we stop?
  • +
  • Slightly different approach
  • @@ -249,7 +234,7 @@ If we can compute these matrices, in particular the Hessian, the above is often
  • 13
  • 14
  • ...
  • -
  • 48
  • +
  • 42
  • »
  • diff --git a/doc/pub/Splines/html/._Splines-bs005.html b/doc/pub/Splines/html/._Splines-bs005.html index ad022b42b..2c2088fdc 100644 --- a/doc/pub/Splines/html/._Splines-bs005.html +++ b/doc/pub/Splines/html/._Splines-bs005.html @@ -65,48 +65,39 @@ Automatically generated HTML file from DocOnce source ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -162,35 +153,29 @@ MathJax.Hub.Config({
  • More on convex functions
  • Some simple problems
  • Standard steepest descent
  • -
  • Conjugate gradient method
  • -
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • -
  • The routine for the steepest descent method
  • -
  • Revisiting our first homework
  • -
  • Gradient descent example
  • -
  • The derivative of the cost/loss function
  • -
  • The Hessian matrix
  • -
  • Simple program
  • -
  • Gradient Descent Example
  • -
  • And a corresponding example using scikit-learn
  • -
  • Gradient descent and Ridge
  • -
  • Stochastic Gradient Descent
  • -
  • Computation of gradients
  • -
  • SGD example
  • -
  • The gradient step
  • -
  • Simple example code
  • -
  • When do we stop?
  • -
  • Slightly different approach
  • -
  • Conjugate gradient (CG) method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method, Newton's method first
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method and iterations
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • +
  • Gradient method
  • +
  • Steepest descent method
  • +
  • Steepest descent method
  • +
  • Gradient descent method
  • +
  • Final expressions
  • +
  • The Steepest descent algorithm
  • +
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • +
  • The routine for the steepest descent method
  • +
  • Revisiting our first homework
  • +
  • Gradient descent example
  • +
  • The derivative of the cost/loss function
  • +
  • The Hessian matrix
  • +
  • Simple program
  • +
  • Gradient Descent Example
  • +
  • And a corresponding example using scikit-learn
  • +
  • Gradient descent and Ridge
  • +
  • Stochastic Gradient Descent
  • +
  • Computation of gradients
  • +
  • SGD example
  • +
  • The gradient step
  • +
  • Simple example code
  • +
  • When do we stop?
  • +
  • Slightly different approach
  • @@ -243,7 +228,7 @@ discourage the use of this method.
  • 14
  • 15
  • ...
  • -
  • 48
  • +
  • 42
  • »
  • diff --git a/doc/pub/Splines/html/._Splines-bs006.html b/doc/pub/Splines/html/._Splines-bs006.html index 6f55896c7..97c27747b 100644 --- a/doc/pub/Splines/html/._Splines-bs006.html +++ b/doc/pub/Splines/html/._Splines-bs006.html @@ -65,48 +65,39 @@ Automatically generated HTML file from DocOnce source ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -162,35 +153,29 @@ MathJax.Hub.Config({
  • More on convex functions
  • Some simple problems
  • Standard steepest descent
  • -
  • Conjugate gradient method
  • -
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • -
  • The routine for the steepest descent method
  • -
  • Revisiting our first homework
  • -
  • Gradient descent example
  • -
  • The derivative of the cost/loss function
  • -
  • The Hessian matrix
  • -
  • Simple program
  • -
  • Gradient Descent Example
  • -
  • And a corresponding example using scikit-learn
  • -
  • Gradient descent and Ridge
  • -
  • Stochastic Gradient Descent
  • -
  • Computation of gradients
  • -
  • SGD example
  • -
  • The gradient step
  • -
  • Simple example code
  • -
  • When do we stop?
  • -
  • Slightly different approach
  • -
  • Conjugate gradient (CG) method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method, Newton's method first
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method and iterations
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • +
  • Gradient method
  • +
  • Steepest descent method
  • +
  • Steepest descent method
  • +
  • Gradient descent method
  • +
  • Final expressions
  • +
  • The Steepest descent algorithm
  • +
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • +
  • The routine for the steepest descent method
  • +
  • Revisiting our first homework
  • +
  • Gradient descent example
  • +
  • The derivative of the cost/loss function
  • +
  • The Hessian matrix
  • +
  • Simple program
  • +
  • Gradient Descent Example
  • +
  • And a corresponding example using scikit-learn
  • +
  • Gradient descent and Ridge
  • +
  • Stochastic Gradient Descent
  • +
  • Computation of gradients
  • +
  • SGD example
  • +
  • The gradient step
  • +
  • Simple example code
  • +
  • When do we stop?
  • +
  • Slightly different approach
  • @@ -261,7 +246,7 @@ $$
  • 15
  • 16
  • ...
  • -
  • 48
  • +
  • 42
  • »
  • diff --git a/doc/pub/Splines/html/._Splines-bs007.html b/doc/pub/Splines/html/._Splines-bs007.html index fb48f2408..93c540229 100644 --- a/doc/pub/Splines/html/._Splines-bs007.html +++ b/doc/pub/Splines/html/._Splines-bs007.html @@ -65,48 +65,39 @@ Automatically generated HTML file from DocOnce source ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -162,35 +153,29 @@ MathJax.Hub.Config({
  • More on convex functions
  • Some simple problems
  • Standard steepest descent
  • -
  • Conjugate gradient method
  • -
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • -
  • The routine for the steepest descent method
  • -
  • Revisiting our first homework
  • -
  • Gradient descent example
  • -
  • The derivative of the cost/loss function
  • -
  • The Hessian matrix
  • -
  • Simple program
  • -
  • Gradient Descent Example
  • -
  • And a corresponding example using scikit-learn
  • -
  • Gradient descent and Ridge
  • -
  • Stochastic Gradient Descent
  • -
  • Computation of gradients
  • -
  • SGD example
  • -
  • The gradient step
  • -
  • Simple example code
  • -
  • When do we stop?
  • -
  • Slightly different approach
  • -
  • Conjugate gradient (CG) method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method, Newton's method first
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method and iterations
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • +
  • Gradient method
  • +
  • Steepest descent method
  • +
  • Steepest descent method
  • +
  • Gradient descent method
  • +
  • Final expressions
  • +
  • The Steepest descent algorithm
  • +
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • +
  • The routine for the steepest descent method
  • +
  • Revisiting our first homework
  • +
  • Gradient descent example
  • +
  • The derivative of the cost/loss function
  • +
  • The Hessian matrix
  • +
  • Simple program
  • +
  • Gradient Descent Example
  • +
  • And a corresponding example using scikit-learn
  • +
  • Gradient descent and Ridge
  • +
  • Stochastic Gradient Descent
  • +
  • Computation of gradients
  • +
  • SGD example
  • +
  • The gradient step
  • +
  • Simple example code
  • +
  • When do we stop?
  • +
  • Slightly different approach
  • @@ -244,7 +229,7 @@ vanishes, then Newton-Raphson may fail totally
  • 16
  • 17
  • ...
  • -
  • 48
  • +
  • 42
  • »
  • diff --git a/doc/pub/Splines/html/._Splines-bs008.html b/doc/pub/Splines/html/._Splines-bs008.html index c035217c7..3aab78db6 100644 --- a/doc/pub/Splines/html/._Splines-bs008.html +++ b/doc/pub/Splines/html/._Splines-bs008.html @@ -65,48 +65,39 @@ Automatically generated HTML file from DocOnce source ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -162,35 +153,29 @@ MathJax.Hub.Config({
  • More on convex functions
  • Some simple problems
  • Standard steepest descent
  • -
  • Conjugate gradient method
  • -
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • -
  • The routine for the steepest descent method
  • -
  • Revisiting our first homework
  • -
  • Gradient descent example
  • -
  • The derivative of the cost/loss function
  • -
  • The Hessian matrix
  • -
  • Simple program
  • -
  • Gradient Descent Example
  • -
  • And a corresponding example using scikit-learn
  • -
  • Gradient descent and Ridge
  • -
  • Stochastic Gradient Descent
  • -
  • Computation of gradients
  • -
  • SGD example
  • -
  • The gradient step
  • -
  • Simple example code
  • -
  • When do we stop?
  • -
  • Slightly different approach
  • -
  • Conjugate gradient (CG) method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method, Newton's method first
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method and iterations
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • +
  • Gradient method
  • +
  • Steepest descent method
  • +
  • Steepest descent method
  • +
  • Gradient descent method
  • +
  • Final expressions
  • +
  • The Steepest descent algorithm
  • +
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • +
  • The routine for the steepest descent method
  • +
  • Revisiting our first homework
  • +
  • Gradient descent example
  • +
  • The derivative of the cost/loss function
  • +
  • The Hessian matrix
  • +
  • Simple program
  • +
  • Gradient Descent Example
  • +
  • And a corresponding example using scikit-learn
  • +
  • Gradient descent and Ridge
  • +
  • Stochastic Gradient Descent
  • +
  • Computation of gradients
  • +
  • SGD example
  • +
  • The gradient step
  • +
  • Simple example code
  • +
  • When do we stop?
  • +
  • Slightly different approach
  • @@ -282,7 +267,7 @@ more than two non-linear equations. In our case, the Jacobian matrix is given by
  • 17
  • 18
  • ...
  • -
  • 48
  • +
  • 42
  • »
  • diff --git a/doc/pub/Splines/html/._Splines-bs009.html b/doc/pub/Splines/html/._Splines-bs009.html index 264ce754a..d5cf8f1fe 100644 --- a/doc/pub/Splines/html/._Splines-bs009.html +++ b/doc/pub/Splines/html/._Splines-bs009.html @@ -65,48 +65,39 @@ Automatically generated HTML file from DocOnce source ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -162,35 +153,29 @@ MathJax.Hub.Config({
  • More on convex functions
  • Some simple problems
  • Standard steepest descent
  • -
  • Conjugate gradient method
  • -
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • -
  • The routine for the steepest descent method
  • -
  • Revisiting our first homework
  • -
  • Gradient descent example
  • -
  • The derivative of the cost/loss function
  • -
  • The Hessian matrix
  • -
  • Simple program
  • -
  • Gradient Descent Example
  • -
  • And a corresponding example using scikit-learn
  • -
  • Gradient descent and Ridge
  • -
  • Stochastic Gradient Descent
  • -
  • Computation of gradients
  • -
  • SGD example
  • -
  • The gradient step
  • -
  • Simple example code
  • -
  • When do we stop?
  • -
  • Slightly different approach
  • -
  • Conjugate gradient (CG) method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method, Newton's method first
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method and iterations
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • +
  • Gradient method
  • +
  • Steepest descent method
  • +
  • Steepest descent method
  • +
  • Gradient descent method
  • +
  • Final expressions
  • +
  • The Steepest descent algorithm
  • +
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • +
  • The routine for the steepest descent method
  • +
  • Revisiting our first homework
  • +
  • Gradient descent example
  • +
  • The derivative of the cost/loss function
  • +
  • The Hessian matrix
  • +
  • Simple program
  • +
  • Gradient Descent Example
  • +
  • And a corresponding example using scikit-learn
  • +
  • Gradient descent and Ridge
  • +
  • Stochastic Gradient Descent
  • +
  • Computation of gradients
  • +
  • SGD example
  • +
  • The gradient step
  • +
  • Simple example code
  • +
  • When do we stop?
  • +
  • Slightly different approach
  • @@ -252,7 +237,7 @@ we are always moving towards smaller function values, i.e a minimum.
  • 18
  • 19
  • ...
  • -
  • 48
  • +
  • 42
  • »
  • diff --git a/doc/pub/Splines/html/._Splines-bs010.html b/doc/pub/Splines/html/._Splines-bs010.html index 18fbf8251..a8d1d1e3f 100644 --- a/doc/pub/Splines/html/._Splines-bs010.html +++ b/doc/pub/Splines/html/._Splines-bs010.html @@ -65,48 +65,39 @@ Automatically generated HTML file from DocOnce source ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -162,35 +153,29 @@ MathJax.Hub.Config({
  • More on convex functions
  • Some simple problems
  • Standard steepest descent
  • -
  • Conjugate gradient method
  • -
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • -
  • The routine for the steepest descent method
  • -
  • Revisiting our first homework
  • -
  • Gradient descent example
  • -
  • The derivative of the cost/loss function
  • -
  • The Hessian matrix
  • -
  • Simple program
  • -
  • Gradient Descent Example
  • -
  • And a corresponding example using scikit-learn
  • -
  • Gradient descent and Ridge
  • -
  • Stochastic Gradient Descent
  • -
  • Computation of gradients
  • -
  • SGD example
  • -
  • The gradient step
  • -
  • Simple example code
  • -
  • When do we stop?
  • -
  • Slightly different approach
  • -
  • Conjugate gradient (CG) method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method, Newton's method first
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method and iterations
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • +
  • Gradient method
  • +
  • Steepest descent method
  • +
  • Steepest descent method
  • +
  • Gradient descent method
  • +
  • Final expressions
  • +
  • The Steepest descent algorithm
  • +
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • +
  • The routine for the steepest descent method
  • +
  • Revisiting our first homework
  • +
  • Gradient descent example
  • +
  • The derivative of the cost/loss function
  • +
  • The Hessian matrix
  • +
  • Simple program
  • +
  • Gradient Descent Example
  • +
  • And a corresponding example using scikit-learn
  • +
  • Gradient descent and Ridge
  • +
  • Stochastic Gradient Descent
  • +
  • Computation of gradients
  • +
  • SGD example
  • +
  • The gradient step
  • +
  • Simple example code
  • +
  • When do we stop?
  • +
  • Slightly different approach
  • @@ -248,7 +233,7 @@ the learning rate within the context of Machine Learning.
  • 19
  • 20
  • ...
  • -
  • 48
  • +
  • 42
  • »
  • diff --git a/doc/pub/Splines/html/._Splines-bs011.html b/doc/pub/Splines/html/._Splines-bs011.html index c96d82bbe..4fab036d3 100644 --- a/doc/pub/Splines/html/._Splines-bs011.html +++ b/doc/pub/Splines/html/._Splines-bs011.html @@ -65,48 +65,39 @@ Automatically generated HTML file from DocOnce source ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -162,35 +153,29 @@ MathJax.Hub.Config({
  • More on convex functions
  • Some simple problems
  • Standard steepest descent
  • -
  • Conjugate gradient method
  • -
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • -
  • The routine for the steepest descent method
  • -
  • Revisiting our first homework
  • -
  • Gradient descent example
  • -
  • The derivative of the cost/loss function
  • -
  • The Hessian matrix
  • -
  • Simple program
  • -
  • Gradient Descent Example
  • -
  • And a corresponding example using scikit-learn
  • -
  • Gradient descent and Ridge
  • -
  • Stochastic Gradient Descent
  • -
  • Computation of gradients
  • -
  • SGD example
  • -
  • The gradient step
  • -
  • Simple example code
  • -
  • When do we stop?
  • -
  • Slightly different approach
  • -
  • Conjugate gradient (CG) method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method, Newton's method first
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method and iterations
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • +
  • Gradient method
  • +
  • Steepest descent method
  • +
  • Steepest descent method
  • +
  • Gradient descent method
  • +
  • Final expressions
  • +
  • The Steepest descent algorithm
  • +
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • +
  • The routine for the steepest descent method
  • +
  • Revisiting our first homework
  • +
  • Gradient descent example
  • +
  • The derivative of the cost/loss function
  • +
  • The Hessian matrix
  • +
  • Simple program
  • +
  • Gradient Descent Example
  • +
  • And a corresponding example using scikit-learn
  • +
  • Gradient descent and Ridge
  • +
  • Stochastic Gradient Descent
  • +
  • Computation of gradients
  • +
  • SGD example
  • +
  • The gradient step
  • +
  • Simple example code
  • +
  • When do we stop?
  • +
  • Slightly different approach
  • @@ -255,7 +240,7 @@ Note that the gradient is a function of \( \mathbf{x} =
  • 20
  • 21
  • ...
  • -
  • 48
  • +
  • 42
  • »
  • diff --git a/doc/pub/Splines/html/._Splines-bs012.html b/doc/pub/Splines/html/._Splines-bs012.html index 0b9edbd30..77ef7c405 100644 --- a/doc/pub/Splines/html/._Splines-bs012.html +++ b/doc/pub/Splines/html/._Splines-bs012.html @@ -65,48 +65,39 @@ Automatically generated HTML file from DocOnce source ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -162,35 +153,29 @@ MathJax.Hub.Config({
  • More on convex functions
  • Some simple problems
  • Standard steepest descent
  • -
  • Conjugate gradient method
  • -
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • -
  • The routine for the steepest descent method
  • -
  • Revisiting our first homework
  • -
  • Gradient descent example
  • -
  • The derivative of the cost/loss function
  • -
  • The Hessian matrix
  • -
  • Simple program
  • -
  • Gradient Descent Example
  • -
  • And a corresponding example using scikit-learn
  • -
  • Gradient descent and Ridge
  • -
  • Stochastic Gradient Descent
  • -
  • Computation of gradients
  • -
  • SGD example
  • -
  • The gradient step
  • -
  • Simple example code
  • -
  • When do we stop?
  • -
  • Slightly different approach
  • -
  • Conjugate gradient (CG) method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method, Newton's method first
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method and iterations
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • +
  • Gradient method
  • +
  • Steepest descent method
  • +
  • Steepest descent method
  • +
  • Gradient descent method
  • +
  • Final expressions
  • +
  • The Steepest descent algorithm
  • +
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • +
  • The routine for the steepest descent method
  • +
  • Revisiting our first homework
  • +
  • Gradient descent example
  • +
  • The derivative of the cost/loss function
  • +
  • The Hessian matrix
  • +
  • Simple program
  • +
  • Gradient Descent Example
  • +
  • And a corresponding example using scikit-learn
  • +
  • Gradient descent and Ridge
  • +
  • Stochastic Gradient Descent
  • +
  • Computation of gradients
  • +
  • SGD example
  • +
  • The gradient step
  • +
  • Simple example code
  • +
  • When do we stop?
  • +
  • Slightly different approach
  • @@ -248,7 +233,7 @@ randomness. One such method is that of Stochastic Gradient Descent
  • 21
  • 22
  • ...
  • -
  • 48
  • +
  • 42
  • »
  • diff --git a/doc/pub/Splines/html/._Splines-bs013.html b/doc/pub/Splines/html/._Splines-bs013.html index b211a4e22..4396ca41d 100644 --- a/doc/pub/Splines/html/._Splines-bs013.html +++ b/doc/pub/Splines/html/._Splines-bs013.html @@ -65,48 +65,39 @@ Automatically generated HTML file from DocOnce source ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -162,35 +153,29 @@ MathJax.Hub.Config({
  • More on convex functions
  • Some simple problems
  • Standard steepest descent
  • -
  • Conjugate gradient method
  • -
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • -
  • The routine for the steepest descent method
  • -
  • Revisiting our first homework
  • -
  • Gradient descent example
  • -
  • The derivative of the cost/loss function
  • -
  • The Hessian matrix
  • -
  • Simple program
  • -
  • Gradient Descent Example
  • -
  • And a corresponding example using scikit-learn
  • -
  • Gradient descent and Ridge
  • -
  • Stochastic Gradient Descent
  • -
  • Computation of gradients
  • -
  • SGD example
  • -
  • The gradient step
  • -
  • Simple example code
  • -
  • When do we stop?
  • -
  • Slightly different approach
  • -
  • Conjugate gradient (CG) method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method, Newton's method first
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method and iterations
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • +
  • Gradient method
  • +
  • Steepest descent method
  • +
  • Steepest descent method
  • +
  • Gradient descent method
  • +
  • Final expressions
  • +
  • The Steepest descent algorithm
  • +
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • +
  • The routine for the steepest descent method
  • +
  • Revisiting our first homework
  • +
  • Gradient descent example
  • +
  • The derivative of the cost/loss function
  • +
  • The Hessian matrix
  • +
  • Simple program
  • +
  • Gradient Descent Example
  • +
  • And a corresponding example using scikit-learn
  • +
  • Gradient descent and Ridge
  • +
  • Stochastic Gradient Descent
  • +
  • Computation of gradients
  • +
  • SGD example
  • +
  • The gradient step
  • +
  • Simple example code
  • +
  • When do we stop?
  • +
  • Slightly different approach
  • @@ -249,7 +234,7 @@ regular polygons (triangles, rectangles, pentagons, etc...).
  • 22
  • 23
  • ...
  • -
  • 48
  • +
  • 42
  • »
  • diff --git a/doc/pub/Splines/html/._Splines-bs014.html b/doc/pub/Splines/html/._Splines-bs014.html index bca2a9dfa..3bd25ac38 100644 --- a/doc/pub/Splines/html/._Splines-bs014.html +++ b/doc/pub/Splines/html/._Splines-bs014.html @@ -65,48 +65,39 @@ Automatically generated HTML file from DocOnce source ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -162,35 +153,29 @@ MathJax.Hub.Config({
  • More on convex functions
  • Some simple problems
  • Standard steepest descent
  • -
  • Conjugate gradient method
  • -
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • -
  • The routine for the steepest descent method
  • -
  • Revisiting our first homework
  • -
  • Gradient descent example
  • -
  • The derivative of the cost/loss function
  • -
  • The Hessian matrix
  • -
  • Simple program
  • -
  • Gradient Descent Example
  • -
  • And a corresponding example using scikit-learn
  • -
  • Gradient descent and Ridge
  • -
  • Stochastic Gradient Descent
  • -
  • Computation of gradients
  • -
  • SGD example
  • -
  • The gradient step
  • -
  • Simple example code
  • -
  • When do we stop?
  • -
  • Slightly different approach
  • -
  • Conjugate gradient (CG) method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method, Newton's method first
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method and iterations
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • +
  • Gradient method
  • +
  • Steepest descent method
  • +
  • Steepest descent method
  • +
  • Gradient descent method
  • +
  • Final expressions
  • +
  • The Steepest descent algorithm
  • +
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • +
  • The routine for the steepest descent method
  • +
  • Revisiting our first homework
  • +
  • Gradient descent example
  • +
  • The derivative of the cost/loss function
  • +
  • The Hessian matrix
  • +
  • Simple program
  • +
  • Gradient Descent Example
  • +
  • And a corresponding example using scikit-learn
  • +
  • Gradient descent and Ridge
  • +
  • Stochastic Gradient Descent
  • +
  • Computation of gradients
  • +
  • SGD example
  • +
  • The gradient step
  • +
  • Simple example code
  • +
  • When do we stop?
  • +
  • Slightly different approach
  • @@ -237,7 +222,7 @@ MathJax.Hub.Config({
  • 23
  • 24
  • ...
  • -
  • 48
  • +
  • 42
  • »
  • diff --git a/doc/pub/Splines/html/._Splines-bs015.html b/doc/pub/Splines/html/._Splines-bs015.html index e7589548b..2d6c4040e 100644 --- a/doc/pub/Splines/html/._Splines-bs015.html +++ b/doc/pub/Splines/html/._Splines-bs015.html @@ -65,48 +65,39 @@ Automatically generated HTML file from DocOnce source ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -162,35 +153,29 @@ MathJax.Hub.Config({
  • More on convex functions
  • Some simple problems
  • Standard steepest descent
  • -
  • Conjugate gradient method
  • -
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • -
  • The routine for the steepest descent method
  • -
  • Revisiting our first homework
  • -
  • Gradient descent example
  • -
  • The derivative of the cost/loss function
  • -
  • The Hessian matrix
  • -
  • Simple program
  • -
  • Gradient Descent Example
  • -
  • And a corresponding example using scikit-learn
  • -
  • Gradient descent and Ridge
  • -
  • Stochastic Gradient Descent
  • -
  • Computation of gradients
  • -
  • SGD example
  • -
  • The gradient step
  • -
  • Simple example code
  • -
  • When do we stop?
  • -
  • Slightly different approach
  • -
  • Conjugate gradient (CG) method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method, Newton's method first
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method and iterations
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • +
  • Gradient method
  • +
  • Steepest descent method
  • +
  • Steepest descent method
  • +
  • Gradient descent method
  • +
  • Final expressions
  • +
  • The Steepest descent algorithm
  • +
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • +
  • The routine for the steepest descent method
  • +
  • Revisiting our first homework
  • +
  • Gradient descent example
  • +
  • The derivative of the cost/loss function
  • +
  • The Hessian matrix
  • +
  • Simple program
  • +
  • Gradient Descent Example
  • +
  • And a corresponding example using scikit-learn
  • +
  • Gradient descent and Ridge
  • +
  • Stochastic Gradient Descent
  • +
  • Computation of gradients
  • +
  • SGD example
  • +
  • The gradient step
  • +
  • Simple example code
  • +
  • When do we stop?
  • +
  • Slightly different approach
  • @@ -273,7 +258,7 @@ This condition is particularly useful since it gives us an procedure for determi
  • 24
  • 25
  • ...
  • -
  • 48
  • +
  • 42
  • »
  • diff --git a/doc/pub/Splines/html/._Splines-bs016.html b/doc/pub/Splines/html/._Splines-bs016.html index f68c92deb..c5244bd66 100644 --- a/doc/pub/Splines/html/._Splines-bs016.html +++ b/doc/pub/Splines/html/._Splines-bs016.html @@ -65,48 +65,39 @@ Automatically generated HTML file from DocOnce source ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -162,35 +153,29 @@ MathJax.Hub.Config({
  • More on convex functions
  • Some simple problems
  • Standard steepest descent
  • -
  • Conjugate gradient method
  • -
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • -
  • The routine for the steepest descent method
  • -
  • Revisiting our first homework
  • -
  • Gradient descent example
  • -
  • The derivative of the cost/loss function
  • -
  • The Hessian matrix
  • -
  • Simple program
  • -
  • Gradient Descent Example
  • -
  • And a corresponding example using scikit-learn
  • -
  • Gradient descent and Ridge
  • -
  • Stochastic Gradient Descent
  • -
  • Computation of gradients
  • -
  • SGD example
  • -
  • The gradient step
  • -
  • Simple example code
  • -
  • When do we stop?
  • -
  • Slightly different approach
  • -
  • Conjugate gradient (CG) method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method, Newton's method first
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method and iterations
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • +
  • Gradient method
  • +
  • Steepest descent method
  • +
  • Steepest descent method
  • +
  • Gradient descent method
  • +
  • Final expressions
  • +
  • The Steepest descent algorithm
  • +
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • +
  • The routine for the steepest descent method
  • +
  • Revisiting our first homework
  • +
  • Gradient descent example
  • +
  • The derivative of the cost/loss function
  • +
  • The Hessian matrix
  • +
  • Simple program
  • +
  • Gradient Descent Example
  • +
  • And a corresponding example using scikit-learn
  • +
  • Gradient descent and Ridge
  • +
  • Stochastic Gradient Descent
  • +
  • Computation of gradients
  • +
  • SGD example
  • +
  • The gradient step
  • +
  • Simple example code
  • +
  • When do we stop?
  • +
  • Slightly different approach
  • @@ -260,7 +245,7 @@ This result means that if we know that the cost/loss function is convex and we a
  • 25
  • 26
  • ...
  • -
  • 48
  • +
  • 42
  • »
  • diff --git a/doc/pub/Splines/html/._Splines-bs017.html b/doc/pub/Splines/html/._Splines-bs017.html index 0497c1c2e..12414cfc1 100644 --- a/doc/pub/Splines/html/._Splines-bs017.html +++ b/doc/pub/Splines/html/._Splines-bs017.html @@ -65,48 +65,39 @@ Automatically generated HTML file from DocOnce source ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -162,35 +153,29 @@ MathJax.Hub.Config({
  • More on convex functions
  • Some simple problems
  • Standard steepest descent
  • -
  • Conjugate gradient method
  • -
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • -
  • The routine for the steepest descent method
  • -
  • Revisiting our first homework
  • -
  • Gradient descent example
  • -
  • The derivative of the cost/loss function
  • -
  • The Hessian matrix
  • -
  • Simple program
  • -
  • Gradient Descent Example
  • -
  • And a corresponding example using scikit-learn
  • -
  • Gradient descent and Ridge
  • -
  • Stochastic Gradient Descent
  • -
  • Computation of gradients
  • -
  • SGD example
  • -
  • The gradient step
  • -
  • Simple example code
  • -
  • When do we stop?
  • -
  • Slightly different approach
  • -
  • Conjugate gradient (CG) method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method, Newton's method first
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method and iterations
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • +
  • Gradient method
  • +
  • Steepest descent method
  • +
  • Steepest descent method
  • +
  • Gradient descent method
  • +
  • Final expressions
  • +
  • The Steepest descent algorithm
  • +
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • +
  • The routine for the steepest descent method
  • +
  • Revisiting our first homework
  • +
  • Gradient descent example
  • +
  • The derivative of the cost/loss function
  • +
  • The Hessian matrix
  • +
  • Simple program
  • +
  • Gradient Descent Example
  • +
  • And a corresponding example using scikit-learn
  • +
  • Gradient descent and Ridge
  • +
  • Stochastic Gradient Descent
  • +
  • Computation of gradients
  • +
  • SGD example
  • +
  • The gradient step
  • +
  • Simple example code
  • +
  • When do we stop?
  • +
  • Slightly different approach
  • @@ -256,7 +241,7 @@ Using the definition of convexity, try to show that a function satisfying the pr
  • 26
  • 27
  • ...
  • -
  • 48
  • +
  • 42
  • »
  • diff --git a/doc/pub/Splines/html/._Splines-bs018.html b/doc/pub/Splines/html/._Splines-bs018.html index cefc870b1..d9c239863 100644 --- a/doc/pub/Splines/html/._Splines-bs018.html +++ b/doc/pub/Splines/html/._Splines-bs018.html @@ -65,48 +65,39 @@ Automatically generated HTML file from DocOnce source ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -162,35 +153,29 @@ MathJax.Hub.Config({
  • More on convex functions
  • Some simple problems
  • Standard steepest descent
  • -
  • Conjugate gradient method
  • -
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • -
  • The routine for the steepest descent method
  • -
  • Revisiting our first homework
  • -
  • Gradient descent example
  • -
  • The derivative of the cost/loss function
  • -
  • The Hessian matrix
  • -
  • Simple program
  • -
  • Gradient Descent Example
  • -
  • And a corresponding example using scikit-learn
  • -
  • Gradient descent and Ridge
  • -
  • Stochastic Gradient Descent
  • -
  • Computation of gradients
  • -
  • SGD example
  • -
  • The gradient step
  • -
  • Simple example code
  • -
  • When do we stop?
  • -
  • Slightly different approach
  • -
  • Conjugate gradient (CG) method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method, Newton's method first
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method and iterations
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • +
  • Gradient method
  • +
  • Steepest descent method
  • +
  • Steepest descent method
  • +
  • Gradient descent method
  • +
  • Final expressions
  • +
  • The Steepest descent algorithm
  • +
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • +
  • The routine for the steepest descent method
  • +
  • Revisiting our first homework
  • +
  • Gradient descent example
  • +
  • The derivative of the cost/loss function
  • +
  • The Hessian matrix
  • +
  • Simple program
  • +
  • Gradient Descent Example
  • +
  • And a corresponding example using scikit-learn
  • +
  • Gradient descent and Ridge
  • +
  • Stochastic Gradient Descent
  • +
  • Computation of gradients
  • +
  • SGD example
  • +
  • The gradient step
  • +
  • Simple example code
  • +
  • When do we stop?
  • +
  • Slightly different approach
  • @@ -263,7 +248,7 @@ When we have found the exact solution, \( \hat{r}=0 \).
  • 27
  • 28
  • ...
  • -
  • 48
  • +
  • 42
  • »
  • diff --git a/doc/pub/Splines/html/._Splines-bs019.html b/doc/pub/Splines/html/._Splines-bs019.html index 47978e50c..c55d6ae22 100644 --- a/doc/pub/Splines/html/._Splines-bs019.html +++ b/doc/pub/Splines/html/._Splines-bs019.html @@ -65,48 +65,39 @@ Automatically generated HTML file from DocOnce source ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -162,35 +153,29 @@ MathJax.Hub.Config({
  • More on convex functions
  • Some simple problems
  • Standard steepest descent
  • -
  • Conjugate gradient method
  • -
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • -
  • The routine for the steepest descent method
  • -
  • Revisiting our first homework
  • -
  • Gradient descent example
  • -
  • The derivative of the cost/loss function
  • -
  • The Hessian matrix
  • -
  • Simple program
  • -
  • Gradient Descent Example
  • -
  • And a corresponding example using scikit-learn
  • -
  • Gradient descent and Ridge
  • -
  • Stochastic Gradient Descent
  • -
  • Computation of gradients
  • -
  • SGD example
  • -
  • The gradient step
  • -
  • Simple example code
  • -
  • When do we stop?
  • -
  • Slightly different approach
  • -
  • Conjugate gradient (CG) method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method, Newton's method first
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method and iterations
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • +
  • Gradient method
  • +
  • Steepest descent method
  • +
  • Steepest descent method
  • +
  • Gradient descent method
  • +
  • Final expressions
  • +
  • The Steepest descent algorithm
  • +
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • +
  • The routine for the steepest descent method
  • +
  • Revisiting our first homework
  • +
  • Gradient descent example
  • +
  • The derivative of the cost/loss function
  • +
  • The Hessian matrix
  • +
  • Simple program
  • +
  • Gradient Descent Example
  • +
  • And a corresponding example using scikit-learn
  • +
  • Gradient descent and Ridge
  • +
  • Stochastic Gradient Descent
  • +
  • Computation of gradients
  • +
  • SGD example
  • +
  • The gradient step
  • +
  • Simple example code
  • +
  • When do we stop?
  • +
  • Slightly different approach
  • @@ -206,7 +191,7 @@ MathJax.Hub.Config({ -

    Conjugate gradient method

    +

    Gradient method

    The residual is zero when we reach the minimum of the quadratic equation @@ -223,9 +208,6 @@ variance, then the matrix \( \hat{A} \), which is called the Hessian, is given by the second-derivative of the function we want to minimize. This quantity is always positive definite. -

    -More details will be added here soon. -

    @@ -252,7 +234,7 @@ More details will be added here soon.

  • 28
  • 29
  • ...
  • -
  • 48
  • +
  • 42
  • »
  • diff --git a/doc/pub/Splines/html/._Splines-bs020.html b/doc/pub/Splines/html/._Splines-bs020.html index 8226361b5..30fecb335 100644 --- a/doc/pub/Splines/html/._Splines-bs020.html +++ b/doc/pub/Splines/html/._Splines-bs020.html @@ -65,48 +65,39 @@ Automatically generated HTML file from DocOnce source ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -162,35 +153,29 @@ MathJax.Hub.Config({
  • More on convex functions
  • Some simple problems
  • Standard steepest descent
  • -
  • Conjugate gradient method
  • -
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • -
  • The routine for the steepest descent method
  • -
  • Revisiting our first homework
  • -
  • Gradient descent example
  • -
  • The derivative of the cost/loss function
  • -
  • The Hessian matrix
  • -
  • Simple program
  • -
  • Gradient Descent Example
  • -
  • And a corresponding example using scikit-learn
  • -
  • Gradient descent and Ridge
  • -
  • Stochastic Gradient Descent
  • -
  • Computation of gradients
  • -
  • SGD example
  • -
  • The gradient step
  • -
  • Simple example code
  • -
  • When do we stop?
  • -
  • Slightly different approach
  • -
  • Conjugate gradient (CG) method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method, Newton's method first
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method and iterations
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • +
  • Gradient method
  • +
  • Steepest descent method
  • +
  • Steepest descent method
  • +
  • Gradient descent method
  • +
  • Final expressions
  • +
  • The Steepest descent algorithm
  • +
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • +
  • The routine for the steepest descent method
  • +
  • Revisiting our first homework
  • +
  • Gradient descent example
  • +
  • The derivative of the cost/loss function
  • +
  • The Hessian matrix
  • +
  • Simple program
  • +
  • Gradient Descent Example
  • +
  • And a corresponding example using scikit-learn
  • +
  • Gradient descent and Ridge
  • +
  • Stochastic Gradient Descent
  • +
  • Computation of gradients
  • +
  • SGD example
  • +
  • The gradient step
  • +
  • Simple example code
  • +
  • When do we stop?
  • +
  • Slightly different approach
  • @@ -206,47 +191,25 @@ MathJax.Hub.Config({ -

    Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come

    -
    -
    -

    +

    Steepest descent method

    +

    +We denote the initial guess for \( \hat{x} \) as \( \hat{x}_0 \). +We can assume without loss of generality that +$$ +\begin{equation*} +\hat{x}_0=0, +\end{equation*} +$$ - -

    #include <cmath>
    -#include <iostream>
    -#include <fstream>
    -#include <iomanip>
    -#include "vectormatrixclass.h"
    -using namespace  std;
    -//   Main function begins here
    -int main(int  argc, char * argv[]){
    -  int dim = 2;
    -  Vector x(dim),xsd(dim), b(dim),x0(dim);
    -  Matrix A(dim,dim);
    -
    -  // Set our initial guess
    -  x0(0) = x0(1) = 0;
    -  // Set the matrix
    -  A(0,0) =  3;    A(1,0) =  2;   A(0,1) =  2;   A(1,1) =  6;
    -  b(0) = 2; b(1) = -8;
    -  cout << "The Matrix A that we are using: " << endl;
    -  A.Print();
    -  cout << endl;
    -  x = ConjugateGradient(A,b,x0);
    -  xsd = SteepestDescent(A,b,x0);
    -  cout << "The approximate solution using Conjugate Gradient is: " << endl;
    -  x.Print();
    -  cout << endl;
    -  cout << "The approximate solution using Steepest Descent is: " << endl;
    -  xsd.Print();
    -  cout << endl;
    -}
    -
    -

    -

    -
    +or consider the system +$$ +\begin{equation*} +\hat{A}\hat{z} = \hat{b}-\hat{A}\hat{x}_0, +\end{equation*} +$$ +instead.

    @@ -274,7 +237,7 @@ MathJax.Hub.Config({

  • 29
  • 30
  • ...
  • -
  • 48
  • +
  • 42
  • »
  • diff --git a/doc/pub/Splines/html/._Splines-bs021.html b/doc/pub/Splines/html/._Splines-bs021.html index 18036c43b..84576198a 100644 --- a/doc/pub/Splines/html/._Splines-bs021.html +++ b/doc/pub/Splines/html/._Splines-bs021.html @@ -65,48 +65,39 @@ Automatically generated HTML file from DocOnce source ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -162,35 +153,29 @@ MathJax.Hub.Config({
  • More on convex functions
  • Some simple problems
  • Standard steepest descent
  • -
  • Conjugate gradient method
  • -
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • -
  • The routine for the steepest descent method
  • -
  • Revisiting our first homework
  • -
  • Gradient descent example
  • -
  • The derivative of the cost/loss function
  • -
  • The Hessian matrix
  • -
  • Simple program
  • -
  • Gradient Descent Example
  • -
  • And a corresponding example using scikit-learn
  • -
  • Gradient descent and Ridge
  • -
  • Stochastic Gradient Descent
  • -
  • Computation of gradients
  • -
  • SGD example
  • -
  • The gradient step
  • -
  • Simple example code
  • -
  • When do we stop?
  • -
  • Slightly different approach
  • -
  • Conjugate gradient (CG) method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method, Newton's method first
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method and iterations
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • +
  • Gradient method
  • +
  • Steepest descent method
  • +
  • Steepest descent method
  • +
  • Gradient descent method
  • +
  • Final expressions
  • +
  • The Steepest descent algorithm
  • +
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • +
  • The routine for the steepest descent method
  • +
  • Revisiting our first homework
  • +
  • Gradient descent example
  • +
  • The derivative of the cost/loss function
  • +
  • The Hessian matrix
  • +
  • Simple program
  • +
  • Gradient Descent Example
  • +
  • And a corresponding example using scikit-learn
  • +
  • Gradient descent and Ridge
  • +
  • Stochastic Gradient Descent
  • +
  • Computation of gradients
  • +
  • SGD example
  • +
  • The gradient step
  • +
  • Simple example code
  • +
  • When do we stop?
  • +
  • Slightly different approach
  • @@ -206,35 +191,29 @@ MathJax.Hub.Config({ -

    The routine for the steepest descent method

    +

    Steepest descent method

    -

    +One can show that the solution \( \hat{x} \) is also the unique minimizer of the quadratic form +$$ +\begin{equation*} + f(\hat{x}) = \frac{1}{2}\hat{x}^T\hat{A}\hat{x} - \hat{x}^T \hat{x} , \quad \hat{x}\in\mathbf{R}^n. +\end{equation*} +$$ + +This suggests taking the first basis vector \( \hat{p}_1 \) +to be the gradient of \( f \) at \( \hat{x}=\hat{x}_0 \), +which equals +$$ +\begin{equation*} +\hat{A}\hat{x}_0-\hat{b}, +\end{equation*} +$$ + +and +\( \hat{x}_0=0 \) it is equal \( -\hat{b} \). - -

    Vector SteepestDescent(Matrix A, Vector b, Vector x0){
    -  int IterMax, i;
    -  int dim = x0.Dimension();
    -  const double tolerance = 1.0e-14;
    -  Vector x(dim),f(dim),z(dim);
    -  double c,alpha,d;
    -  IterMax = 30;
    -  x = x0;
    -  f = A*x-b;
    -  i = 0;
    -  while (i <= IterMax){
    -    z = A*f;
    -    c = dot(f,f);
    -    alpha = c/dot(f,z);
    -    x = x - alpha*f;
    -    f =  A*x-b;
    -    if(sqrt(dot(f,f)) < tolerance) break;
    -    i++;
    -  }
    -  return x;
    -}
    -

    @@ -266,7 +245,7 @@ MathJax.Hub.Config({
  • 30
  • 31
  • ...
  • -
  • 48
  • +
  • 42
  • »
  • diff --git a/doc/pub/Splines/html/._Splines-bs022.html b/doc/pub/Splines/html/._Splines-bs022.html index 768900c4b..e79c9ffd1 100644 --- a/doc/pub/Splines/html/._Splines-bs022.html +++ b/doc/pub/Splines/html/._Splines-bs022.html @@ -65,48 +65,39 @@ Automatically generated HTML file from DocOnce source ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -162,35 +153,29 @@ MathJax.Hub.Config({
  • More on convex functions
  • Some simple problems
  • Standard steepest descent
  • -
  • Conjugate gradient method
  • -
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • -
  • The routine for the steepest descent method
  • -
  • Revisiting our first homework
  • -
  • Gradient descent example
  • -
  • The derivative of the cost/loss function
  • -
  • The Hessian matrix
  • -
  • Simple program
  • -
  • Gradient Descent Example
  • -
  • And a corresponding example using scikit-learn
  • -
  • Gradient descent and Ridge
  • -
  • Stochastic Gradient Descent
  • -
  • Computation of gradients
  • -
  • SGD example
  • -
  • The gradient step
  • -
  • Simple example code
  • -
  • When do we stop?
  • -
  • Slightly different approach
  • -
  • Conjugate gradient (CG) method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method, Newton's method first
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method and iterations
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • +
  • Gradient method
  • +
  • Steepest descent method
  • +
  • Steepest descent method
  • +
  • Gradient descent method
  • +
  • Final expressions
  • +
  • The Steepest descent algorithm
  • +
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • +
  • The routine for the steepest descent method
  • +
  • Revisiting our first homework
  • +
  • Gradient descent example
  • +
  • The derivative of the cost/loss function
  • +
  • The Hessian matrix
  • +
  • Simple program
  • +
  • Gradient Descent Example
  • +
  • And a corresponding example using scikit-learn
  • +
  • Gradient descent and Ridge
  • +
  • Stochastic Gradient Descent
  • +
  • Computation of gradients
  • +
  • SGD example
  • +
  • The gradient step
  • +
  • Simple example code
  • +
  • When do we stop?
  • +
  • Slightly different approach
  • @@ -204,37 +189,31 @@ MathJax.Hub.Config({

     

     

     

    - + -

    Revisiting our first homework

    - -

    -We will use linear regression as a case study for the gradient descent -methods. Linear regression is a great test case for the gradient -descent methods discussed in the lectures since it has several -desirable properties such as: - -

      -
    1. An analytical solution (recall homework set 1).
    2. -
    3. The gradient can be computed analytically.
    4. -
    5. The cost function is convex which guarantees that gradient descent converges for small enough learning rates
    6. -
    - -We revisit the example from homework set 1 where we had +

    Gradient descent method

    +
    +
    +

    +Let \( \hat{r}_k \) be the residual at the \( k \)-th step: $$ -y_i = 5x_i^2 + 0.1\xi_i, \ i=1,\cdots,100 +\begin{equation*} +\hat{r}_k=\hat{b}-\hat{A}\hat{x}_k. +\end{equation*} $$ -with \( x_i \in [0,1] \) chosen randomly with a uniform distribution. Additionally \( \xi_i \) represents stochastic noise chosen according to a normal distribution \( \cal {N}(0,1) \). -The linear regression model is given by +Note that \( \hat{r}_k \) is the negative gradient of \( f \) at +\( \hat{x}=\hat{x}_k \), +so the gradient descent method would be to move in the direction \( \hat{r}_k \). +This gives the following expression $$ -h_\beta(x) = \hat{y} = \beta_0 + \beta_1 x, +\begin{equation*} +\hat{p}_{k+1}=\hat{r}_k-\frac{\hat{p}_k^T \hat{A}\hat{r}_k}{\hat{p}_k^T\hat{A}\hat{p}_k} \hat{p}_k. +\end{equation*} $$ +

    +
    -such that -$$ -\hat{y}_i = \beta_0 + \beta_1 x_i. -$$

    @@ -262,7 +241,7 @@ $$

  • 31
  • 32
  • ...
  • -
  • 48
  • +
  • 42
  • »
  • diff --git a/doc/pub/Splines/html/._Splines-bs023.html b/doc/pub/Splines/html/._Splines-bs023.html index 05ed134f0..5fbfa7fb8 100644 --- a/doc/pub/Splines/html/._Splines-bs023.html +++ b/doc/pub/Splines/html/._Splines-bs023.html @@ -65,48 +65,39 @@ Automatically generated HTML file from DocOnce source ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -162,35 +153,29 @@ MathJax.Hub.Config({
  • More on convex functions
  • Some simple problems
  • Standard steepest descent
  • -
  • Conjugate gradient method
  • -
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • -
  • The routine for the steepest descent method
  • -
  • Revisiting our first homework
  • -
  • Gradient descent example
  • -
  • The derivative of the cost/loss function
  • -
  • The Hessian matrix
  • -
  • Simple program
  • -
  • Gradient Descent Example
  • -
  • And a corresponding example using scikit-learn
  • -
  • Gradient descent and Ridge
  • -
  • Stochastic Gradient Descent
  • -
  • Computation of gradients
  • -
  • SGD example
  • -
  • The gradient step
  • -
  • Simple example code
  • -
  • When do we stop?
  • -
  • Slightly different approach
  • -
  • Conjugate gradient (CG) method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method, Newton's method first
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method and iterations
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • +
  • Gradient method
  • +
  • Steepest descent method
  • +
  • Steepest descent method
  • +
  • Gradient descent method
  • +
  • Final expressions
  • +
  • The Steepest descent algorithm
  • +
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • +
  • The routine for the steepest descent method
  • +
  • Revisiting our first homework
  • +
  • Gradient descent example
  • +
  • The derivative of the cost/loss function
  • +
  • The Hessian matrix
  • +
  • Simple program
  • +
  • Gradient Descent Example
  • +
  • And a corresponding example using scikit-learn
  • +
  • Gradient descent and Ridge
  • +
  • Stochastic Gradient Descent
  • +
  • Computation of gradients
  • +
  • SGD example
  • +
  • The gradient step
  • +
  • Simple example code
  • +
  • When do we stop?
  • +
  • Slightly different approach
  • @@ -204,29 +189,43 @@ MathJax.Hub.Config({

     

     

     

    - + -

    Gradient descent example

    - -

    -Let \( \mathbf{y} = (y_1,\cdots,y_n)^T \), \( \mathbf{\hat{y}} = (\hat{y}_1,\cdots,\hat{y}_n)^T \) and \( \beta = (\beta_0, \beta_1)^T \) - -

    -It is convenient to write \( \mathbf{\hat{y}} = X\beta \) where \( X \in \mathbb{R}^{100 \times 2} \) is the design matrix given by +

    Final expressions

    +
    +
    +

    +We can also compute the residual iteratively as $$ -X \equiv \begin{bmatrix} -1 & x_1 \\ -\vdots & \vdots \\ -1 & x_{100} & \\ -\end{bmatrix}. +\begin{equation*} +\hat{r}_{k+1}=\hat{b}-\hat{A}\hat{x}_{k+1}, + \end{equation*} $$ -The loss function is given by +which equals $$ -C(\beta) = ||X\beta-\mathbf{y}||^2 = ||X\beta||^2 - 2 \mathbf{y}^T X\beta + ||\mathbf{y}||^2 = \sum_{i=1}^{100} (\beta_0 + \beta_1 x_i)^2 - 2 y_i (\beta_0 + \beta_1 x_i) + y_i^2 +\begin{equation*} +\hat{b}-\hat{A}(\hat{x}_k+\alpha_k\hat{p}_k), + \end{equation*} $$ -and we want to find \( \beta \) such that \( C(\beta) \) is minimized. +or +$$ +\begin{equation*} +(\hat{b}-\hat{A}\hat{x}_k)-\alpha_k\hat{A}\hat{p}_k, + \end{equation*} +$$ + +which gives + +$$ +\begin{equation*} +\hat{r}_{k+1}=\hat{r}_k-\hat{A}\hat{p}_{k}, + \end{equation*} +$$ +

    +
    +

    @@ -254,7 +253,7 @@ and we want to find \( \beta \) such that \( C(\beta) \) is minimized.

  • 32
  • 33
  • ...
  • -
  • 48
  • +
  • 42
  • »
  • diff --git a/doc/pub/Splines/html/._Splines-bs024.html b/doc/pub/Splines/html/._Splines-bs024.html index f44e7b0cf..e68f417f4 100644 --- a/doc/pub/Splines/html/._Splines-bs024.html +++ b/doc/pub/Splines/html/._Splines-bs024.html @@ -65,48 +65,39 @@ Automatically generated HTML file from DocOnce source ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -162,35 +153,29 @@ MathJax.Hub.Config({
  • More on convex functions
  • Some simple problems
  • Standard steepest descent
  • -
  • Conjugate gradient method
  • -
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • -
  • The routine for the steepest descent method
  • -
  • Revisiting our first homework
  • -
  • Gradient descent example
  • -
  • The derivative of the cost/loss function
  • -
  • The Hessian matrix
  • -
  • Simple program
  • -
  • Gradient Descent Example
  • -
  • And a corresponding example using scikit-learn
  • -
  • Gradient descent and Ridge
  • -
  • Stochastic Gradient Descent
  • -
  • Computation of gradients
  • -
  • SGD example
  • -
  • The gradient step
  • -
  • Simple example code
  • -
  • When do we stop?
  • -
  • Slightly different approach
  • -
  • Conjugate gradient (CG) method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method, Newton's method first
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method and iterations
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • +
  • Gradient method
  • +
  • Steepest descent method
  • +
  • Steepest descent method
  • +
  • Gradient descent method
  • +
  • Final expressions
  • +
  • The Steepest descent algorithm
  • +
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • +
  • The routine for the steepest descent method
  • +
  • Revisiting our first homework
  • +
  • Gradient descent example
  • +
  • The derivative of the cost/loss function
  • +
  • The Hessian matrix
  • +
  • Simple program
  • +
  • Gradient Descent Example
  • +
  • And a corresponding example using scikit-learn
  • +
  • Gradient descent and Ridge
  • +
  • Stochastic Gradient Descent
  • +
  • Computation of gradients
  • +
  • SGD example
  • +
  • The gradient step
  • +
  • Simple example code
  • +
  • When do we stop?
  • +
  • Slightly different approach
  • @@ -206,17 +191,7 @@ MathJax.Hub.Config({ -

    The derivative of the cost/loss function

    - -

    -Computing \( \partial C(\beta) / \partial \beta_0 \) and \( \partial C(\beta) / \partial \beta_1 \) we can show that the gradient can be written as -$$ -\nabla_{\beta} C(\beta) = (\partial C(\beta) / \partial \beta_0, \partial C(\beta) / \partial \beta_1)^T = 2\begin{bmatrix} \sum_{i=1}^{100} \left(\beta_0+\beta_1x_i-y_i\right) \\ -\sum_{i=1}^{100}\left( x_i (\beta_0+\beta_1x_i)-y_ix_i\right) \\ -\end{bmatrix} = 2X^T(X\beta - \mathbf{y}), -$$ - -where \( X \) is the design matrix defined above. +

    The Steepest descent algorithm

    @@ -244,7 +219,7 @@ where \( X \) is the design matrix defined above.

  • 33
  • 34
  • ...
  • -
  • 48
  • +
  • 42
  • »
  • diff --git a/doc/pub/Splines/html/._Splines-bs025.html b/doc/pub/Splines/html/._Splines-bs025.html index 4ef788afe..e166ae0cf 100644 --- a/doc/pub/Splines/html/._Splines-bs025.html +++ b/doc/pub/Splines/html/._Splines-bs025.html @@ -65,48 +65,39 @@ Automatically generated HTML file from DocOnce source ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -162,35 +153,29 @@ MathJax.Hub.Config({
  • More on convex functions
  • Some simple problems
  • Standard steepest descent
  • -
  • Conjugate gradient method
  • -
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • -
  • The routine for the steepest descent method
  • -
  • Revisiting our first homework
  • -
  • Gradient descent example
  • -
  • The derivative of the cost/loss function
  • -
  • The Hessian matrix
  • -
  • Simple program
  • -
  • Gradient Descent Example
  • -
  • And a corresponding example using scikit-learn
  • -
  • Gradient descent and Ridge
  • -
  • Stochastic Gradient Descent
  • -
  • Computation of gradients
  • -
  • SGD example
  • -
  • The gradient step
  • -
  • Simple example code
  • -
  • When do we stop?
  • -
  • Slightly different approach
  • -
  • Conjugate gradient (CG) method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method, Newton's method first
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method and iterations
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • +
  • Gradient method
  • +
  • Steepest descent method
  • +
  • Steepest descent method
  • +
  • Gradient descent method
  • +
  • Final expressions
  • +
  • The Steepest descent algorithm
  • +
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • +
  • The routine for the steepest descent method
  • +
  • Revisiting our first homework
  • +
  • Gradient descent example
  • +
  • The derivative of the cost/loss function
  • +
  • The Hessian matrix
  • +
  • Simple program
  • +
  • Gradient Descent Example
  • +
  • And a corresponding example using scikit-learn
  • +
  • Gradient descent and Ridge
  • +
  • Stochastic Gradient Descent
  • +
  • Computation of gradients
  • +
  • SGD example
  • +
  • The gradient step
  • +
  • Simple example code
  • +
  • When do we stop?
  • +
  • Slightly different approach
  • @@ -206,16 +191,43 @@ MathJax.Hub.Config({ -

    The Hessian matrix

    -The Hessian matrix of \( C(\beta) \) is given by -$$ -\hat{H} \equiv \begin{bmatrix} -\frac{\partial^2 C(\beta)}{\partial \beta_0^2} & \frac{\partial^2 C(\beta)}{\partial \beta_0 \partial \beta_1} \\ -\frac{\partial^2 C(\beta)}{\partial \beta_0 \partial \beta_1} & \frac{\partial^2 C(\beta)}{\partial \beta_1^2} & \\ -\end{bmatrix} = 2X^T X. -$$ +

    Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come

    +
    +
    +

    +

    + + +

    #include <cmath>
    +#include <iostream>
    +#include <fstream>
    +#include <iomanip>
    +#include "vectormatrixclass.h"
    +using namespace  std;
    +//   Main function begins here
    +int main(int  argc, char * argv[]){
    +  int dim = 2;
    +  Vector x(dim),xsd(dim), b(dim),x0(dim);
    +  Matrix A(dim,dim);
    +
    +  // Set our initial guess
    +  x0(0) = x0(1) = 0;
    +  // Set the matrix
    +  A(0,0) =  3;    A(1,0) =  2;   A(0,1) =  2;   A(1,1) =  6;
    +  b(0) = 2; b(1) = -8;
    +  cout << "The Matrix A that we are using: " << endl;
    +  A.Print();
    +  cout << endl;
    +  xsd = SteepestDescent(A,b,x0);
    +  cout << "The approximate solution using Steepest Descent is: " << endl;
    +  xsd.Print();
    +  cout << endl;
    +}
    +
    +

    +

    +
    -This result implies that \( C(\beta) \) is a convex function since the matrix \( X^T X \) always is positive semi-definite.

    @@ -243,7 +255,7 @@ This result implies that \( C(\beta) \) is a convex function since the matrix \(

  • 34
  • 35
  • ...
  • -
  • 48
  • +
  • 42
  • »
  • diff --git a/doc/pub/Splines/html/._Splines-bs026.html b/doc/pub/Splines/html/._Splines-bs026.html index cdd5ad290..b0bd26ee6 100644 --- a/doc/pub/Splines/html/._Splines-bs026.html +++ b/doc/pub/Splines/html/._Splines-bs026.html @@ -65,48 +65,39 @@ Automatically generated HTML file from DocOnce source ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -162,35 +153,29 @@ MathJax.Hub.Config({
  • More on convex functions
  • Some simple problems
  • Standard steepest descent
  • -
  • Conjugate gradient method
  • -
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • -
  • The routine for the steepest descent method
  • -
  • Revisiting our first homework
  • -
  • Gradient descent example
  • -
  • The derivative of the cost/loss function
  • -
  • The Hessian matrix
  • -
  • Simple program
  • -
  • Gradient Descent Example
  • -
  • And a corresponding example using scikit-learn
  • -
  • Gradient descent and Ridge
  • -
  • Stochastic Gradient Descent
  • -
  • Computation of gradients
  • -
  • SGD example
  • -
  • The gradient step
  • -
  • Simple example code
  • -
  • When do we stop?
  • -
  • Slightly different approach
  • -
  • Conjugate gradient (CG) method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method, Newton's method first
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method and iterations
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • +
  • Gradient method
  • +
  • Steepest descent method
  • +
  • Steepest descent method
  • +
  • Gradient descent method
  • +
  • Final expressions
  • +
  • The Steepest descent algorithm
  • +
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • +
  • The routine for the steepest descent method
  • +
  • Revisiting our first homework
  • +
  • Gradient descent example
  • +
  • The derivative of the cost/loss function
  • +
  • The Hessian matrix
  • +
  • Simple program
  • +
  • Gradient Descent Example
  • +
  • And a corresponding example using scikit-learn
  • +
  • Gradient descent and Ridge
  • +
  • Stochastic Gradient Descent
  • +
  • Computation of gradients
  • +
  • SGD example
  • +
  • The gradient step
  • +
  • Simple example code
  • +
  • When do we stop?
  • +
  • Slightly different approach
  • @@ -206,44 +191,40 @@ MathJax.Hub.Config({ -

    Simple program

    - -

    -We can now write a program that minimizes \( C(\beta) \) using the gradient descent method with a constant learning rate \( \gamma \) according to -$$ -\beta_{k+1} = \beta_k - \gamma \nabla_\beta C(\beta_k), \ k=0,1,\cdots -$$ - -

    -We can use the expression we computed for the gradient and let use a -\( \beta_0 \) be chosen randomly and let \( \gamma = 0.001 \). Stop iterating -when \( ||\nabla_\beta C(\beta_k) || \leq \epsilon = 10^{-8} \). - -

    -And finally we can compare our solution for \( \beta \) with the analytic result given by -\( \beta= (X^TX)^{-1} X^T \mathbf{y} \). +

    The routine for the steepest descent method

    +
    +
    +

    - -

    import numpy as np
    -
    -"""
    -The following setup is just a suggestion, feel free to write it the way you like.
    -"""
    -
    -#Setup problem described in the exercise
    -N  = 100 #Nr of datapoints
    -M  = 2 #Nr of features
    -x  = np.random.rand(N) #Uniformly generated x-values in [0,1]
    -y  = 5*x**2 + 0.1*np.random.randn(N)
    -X  = np.c_[np.ones(N),x] #Construct design matrix
    -
    -#Compute beta according to normal equations to compare with GD solution
    -Xt_X_inv = np.linalg.inv(np.dot(X.T,X))
    -Xt_y     = np.dot(X.transpose(),y)
    -beta_NE = np.dot(Xt_X_inv,Xt_y)
    -print(beta_NE)
    +
    +
    Vector SteepestDescent(Matrix A, Vector b, Vector x0){
    +  int IterMax, i;
    +  int dim = x0.Dimension();
    +  const double tolerance = 1.0e-14;
    +  Vector x(dim),f(dim),z(dim);
    +  double c,alpha,d;
    +  IterMax = 30;
    +  x = x0;
    +  f = A*x-b;
    +  i = 0;
    +  while (i <= IterMax){
    +    z = A*f;
    +    c = dot(f,f);
    +    alpha = c/dot(f,z);
    +    x = x - alpha*f;
    +    f =  A*x-b;
    +    if(sqrt(dot(f,f)) < tolerance) break;
    +    i++;
    +  }
    +  return x;
    +}
     
    +

    +

    +
    + +

    @@ -270,7 +251,7 @@ beta_NE = np.35

  • 36
  • ...
  • -
  • 48
  • +
  • 42
  • »
  • diff --git a/doc/pub/Splines/html/._Splines-bs027.html b/doc/pub/Splines/html/._Splines-bs027.html index aa168e923..ca1d578bc 100644 --- a/doc/pub/Splines/html/._Splines-bs027.html +++ b/doc/pub/Splines/html/._Splines-bs027.html @@ -65,48 +65,39 @@ Automatically generated HTML file from DocOnce source ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -162,35 +153,29 @@ MathJax.Hub.Config({
  • More on convex functions
  • Some simple problems
  • Standard steepest descent
  • -
  • Conjugate gradient method
  • -
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • -
  • The routine for the steepest descent method
  • -
  • Revisiting our first homework
  • -
  • Gradient descent example
  • -
  • The derivative of the cost/loss function
  • -
  • The Hessian matrix
  • -
  • Simple program
  • -
  • Gradient Descent Example
  • -
  • And a corresponding example using scikit-learn
  • -
  • Gradient descent and Ridge
  • -
  • Stochastic Gradient Descent
  • -
  • Computation of gradients
  • -
  • SGD example
  • -
  • The gradient step
  • -
  • Simple example code
  • -
  • When do we stop?
  • -
  • Slightly different approach
  • -
  • Conjugate gradient (CG) method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method, Newton's method first
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method and iterations
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • +
  • Gradient method
  • +
  • Steepest descent method
  • +
  • Steepest descent method
  • +
  • Gradient descent method
  • +
  • Final expressions
  • +
  • The Steepest descent algorithm
  • +
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • +
  • The routine for the steepest descent method
  • +
  • Revisiting our first homework
  • +
  • Gradient descent example
  • +
  • The derivative of the cost/loss function
  • +
  • The Hessian matrix
  • +
  • Simple program
  • +
  • Gradient Descent Example
  • +
  • And a corresponding example using scikit-learn
  • +
  • Gradient descent and Ridge
  • +
  • Stochastic Gradient Descent
  • +
  • Computation of gradients
  • +
  • SGD example
  • +
  • The gradient step
  • +
  • Simple example code
  • +
  • When do we stop?
  • +
  • Slightly different approach
  • @@ -204,54 +189,38 @@ MathJax.Hub.Config({

     

     

     

    - + -

    Gradient Descent Example

    +

    Revisiting our first homework

    -Another simple example is here -

    +We will use linear regression as a case study for the gradient descent +methods. Linear regression is a great test case for the gradient +descent methods discussed in the lectures since it has several +desirable properties such as: - -

    # Importing various packages
    -from random import random, seed
    -import numpy as np
    -import matplotlib.pyplot as plt
    -from mpl_toolkits.mplot3d import Axes3D
    -from matplotlib import cm
    -from matplotlib.ticker import LinearLocator, FormatStrFormatter
    -import sys
    +
      +
    1. An analytical solution (recall homework set 1).
    2. +
    3. The gradient can be computed analytically.
    4. +
    5. The cost function is convex which guarantees that gradient descent converges for small enough learning rates
    6. +
    -x = 2*np.random.rand(100,1) -y = 4+3*x+np.random.randn(100,1) +We revisit the example from homework set 1 where we had +$$ +y_i = 5x_i^2 + 0.1\xi_i, \ i=1,\cdots,100 +$$ -xb = np.c_[np.ones((100,1)), x] -beta_linreg = np.linalg.inv(xb.T.dot(xb)).dot(xb.T).dot(y) -print(beta_linreg) -beta = np.random.randn(2,1) +with \( x_i \in [0,1] \) chosen randomly with a uniform distribution. Additionally \( \xi_i \) represents stochastic noise chosen according to a normal distribution \( \cal {N}(0,1) \). +The linear regression model is given by +$$ +h_\beta(x) = \hat{y} = \beta_0 + \beta_1 x, +$$ -eta = 0.1 -Niterations = 1000 -m = 100 +such that +$$ +\hat{y}_i = \beta_0 + \beta_1 x_i. +$$ -for iter in range(Niterations): - gradients = 2.0/m*xb.T.dot(xb.dot(beta)-y) - beta -= eta*gradients - -print(beta) -xnew = np.array([[0],[2]]) -xbnew = np.c_[np.ones((2,1)), xnew] -ypredict = xbnew.dot(beta) -ypredict2 = xbnew.dot(beta_linreg) -plt.plot(xnew, ypredict, "r-") -plt.plot(xnew, ypredict2, "b-") -plt.plot(x, y ,'ro') -plt.axis([0,2.0,0, 15.0]) -plt.xlabel(r'$x$') -plt.ylabel(r'$y$') -plt.title(r'Gradient descent example') -plt.show() -

    @@ -278,7 +247,7 @@ plt.show()

  • 36
  • 37
  • ...
  • -
  • 48
  • +
  • 42
  • »
  • diff --git a/doc/pub/Splines/html/._Splines-bs028.html b/doc/pub/Splines/html/._Splines-bs028.html index 841560ab0..0221d826d 100644 --- a/doc/pub/Splines/html/._Splines-bs028.html +++ b/doc/pub/Splines/html/._Splines-bs028.html @@ -65,48 +65,39 @@ Automatically generated HTML file from DocOnce source ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -162,35 +153,29 @@ MathJax.Hub.Config({
  • More on convex functions
  • Some simple problems
  • Standard steepest descent
  • -
  • Conjugate gradient method
  • -
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • -
  • The routine for the steepest descent method
  • -
  • Revisiting our first homework
  • -
  • Gradient descent example
  • -
  • The derivative of the cost/loss function
  • -
  • The Hessian matrix
  • -
  • Simple program
  • -
  • Gradient Descent Example
  • -
  • And a corresponding example using scikit-learn
  • -
  • Gradient descent and Ridge
  • -
  • Stochastic Gradient Descent
  • -
  • Computation of gradients
  • -
  • SGD example
  • -
  • The gradient step
  • -
  • Simple example code
  • -
  • When do we stop?
  • -
  • Slightly different approach
  • -
  • Conjugate gradient (CG) method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method, Newton's method first
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method and iterations
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • +
  • Gradient method
  • +
  • Steepest descent method
  • +
  • Steepest descent method
  • +
  • Gradient descent method
  • +
  • Final expressions
  • +
  • The Steepest descent algorithm
  • +
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • +
  • The routine for the steepest descent method
  • +
  • Revisiting our first homework
  • +
  • Gradient descent example
  • +
  • The derivative of the cost/loss function
  • +
  • The Hessian matrix
  • +
  • Simple program
  • +
  • Gradient Descent Example
  • +
  • And a corresponding example using scikit-learn
  • +
  • Gradient descent and Ridge
  • +
  • Stochastic Gradient Descent
  • +
  • Computation of gradients
  • +
  • SGD example
  • +
  • The gradient step
  • +
  • Simple example code
  • +
  • When do we stop?
  • +
  • Slightly different approach
  • @@ -204,29 +189,30 @@ MathJax.Hub.Config({

     

     

     

    - + -

    And a corresponding example using scikit-learn

    +

    Gradient descent example

    +Let \( \mathbf{y} = (y_1,\cdots,y_n)^T \), \( \mathbf{\hat{y}} = (\hat{y}_1,\cdots,\hat{y}_n)^T \) and \( \beta = (\beta_0, \beta_1)^T \) - -

    # Importing various packages
    -from random import random, seed
    -import numpy as np
    -import matplotlib.pyplot as plt
    -from sklearn.linear_model import SGDRegressor
    +

    +It is convenient to write \( \mathbf{\hat{y}} = X\beta \) where \( X \in \mathbb{R}^{100 \times 2} \) is the design matrix given by +$$ +X \equiv \begin{bmatrix} +1 & x_1 \\ +\vdots & \vdots \\ +1 & x_{100} & \\ +\end{bmatrix}. +$$ -x = 2*np.random.rand(100,1) -y = 4+3*x+np.random.randn(100,1) +The loss function is given by +$$ +C(\beta) = ||X\beta-\mathbf{y}||^2 = ||X\beta||^2 - 2 \mathbf{y}^T X\beta + ||\mathbf{y}||^2 = \sum_{i=1}^{100} (\beta_0 + \beta_1 x_i)^2 - 2 y_i (\beta_0 + \beta_1 x_i) + y_i^2 +$$ + +and we want to find \( \beta \) such that \( C(\beta) \) is minimized. -xb = np.c_[np.ones((100,1)), x] -beta_linreg = np.linalg.inv(xb.T.dot(xb)).dot(xb.T).dot(y) -print(beta_linreg) -sgdreg = SGDRegressor(n_iter = 50, penalty=None, eta0=0.1) -sgdreg.fit(x,y.ravel()) -print(sgdreg.intercept_, sgdreg.coef_) -

    @@ -253,7 +239,7 @@ sgdreg.fit(x,y.

  • 37
  • 38
  • ...
  • -
  • 48
  • +
  • 42
  • »
  • diff --git a/doc/pub/Splines/html/._Splines-bs029.html b/doc/pub/Splines/html/._Splines-bs029.html index b7c1a94cf..1f913575d 100644 --- a/doc/pub/Splines/html/._Splines-bs029.html +++ b/doc/pub/Splines/html/._Splines-bs029.html @@ -65,48 +65,39 @@ Automatically generated HTML file from DocOnce source ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -162,35 +153,29 @@ MathJax.Hub.Config({
  • More on convex functions
  • Some simple problems
  • Standard steepest descent
  • -
  • Conjugate gradient method
  • -
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • -
  • The routine for the steepest descent method
  • -
  • Revisiting our first homework
  • -
  • Gradient descent example
  • -
  • The derivative of the cost/loss function
  • -
  • The Hessian matrix
  • -
  • Simple program
  • -
  • Gradient Descent Example
  • -
  • And a corresponding example using scikit-learn
  • -
  • Gradient descent and Ridge
  • -
  • Stochastic Gradient Descent
  • -
  • Computation of gradients
  • -
  • SGD example
  • -
  • The gradient step
  • -
  • Simple example code
  • -
  • When do we stop?
  • -
  • Slightly different approach
  • -
  • Conjugate gradient (CG) method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method, Newton's method first
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method and iterations
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • +
  • Gradient method
  • +
  • Steepest descent method
  • +
  • Steepest descent method
  • +
  • Gradient descent method
  • +
  • Final expressions
  • +
  • The Steepest descent algorithm
  • +
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • +
  • The routine for the steepest descent method
  • +
  • Revisiting our first homework
  • +
  • Gradient descent example
  • +
  • The derivative of the cost/loss function
  • +
  • The Hessian matrix
  • +
  • Simple program
  • +
  • Gradient Descent Example
  • +
  • And a corresponding example using scikit-learn
  • +
  • Gradient descent and Ridge
  • +
  • Stochastic Gradient Descent
  • +
  • Computation of gradients
  • +
  • SGD example
  • +
  • The gradient step
  • +
  • Simple example code
  • +
  • When do we stop?
  • +
  • Slightly different approach
  • @@ -204,62 +189,20 @@ MathJax.Hub.Config({

     

     

     

    - + -

    Gradient descent and Ridge

    +

    The derivative of the cost/loss function

    -We have also discussed Ridge regression where the loss function contains a regularized given by the \( L_2 \) norm of \( \beta \), +Computing \( \partial C(\beta) / \partial \beta_0 \) and \( \partial C(\beta) / \partial \beta_1 \) we can show that the gradient can be written as $$ -C_{\text{ridge}}(\beta) = ||X\beta -\mathbf{y}||^2 + \lambda ||\beta||^2, \ \lambda \geq 0. -$$ - -

    -In order to minimize \( C_{\text{ridge}}(\beta) \) using GD we only have adjust the gradient as follows -$$ -\nabla_\beta C_{\text{ridge}}(\beta) = 2\begin{bmatrix} \sum_{i=1}^{100} \left(\beta_0+\beta_1x_i-y_i\right) \\ +\nabla_{\beta} C(\beta) = (\partial C(\beta) / \partial \beta_0, \partial C(\beta) / \partial \beta_1)^T = 2\begin{bmatrix} \sum_{i=1}^{100} \left(\beta_0+\beta_1x_i-y_i\right) \\ \sum_{i=1}^{100}\left( x_i (\beta_0+\beta_1x_i)-y_ix_i\right) \\ -\end{bmatrix} + 2\lambda\begin{bmatrix} \beta_0 \\ \beta_1\end{bmatrix} = 2 (X^T(X\beta - \mathbf{y})+\lambda \beta). +\end{bmatrix} = 2X^T(X\beta - \mathbf{y}), $$ -

    -We can now extend our program to minimize \( C_{\text{ridge}}(\beta) \) using gradient descent and compare with the analytical solution given by -$$ -\beta_{\text{ridge}} = \left(X^T X + \lambda I_{2 \times 2} \right)^{-1} X^T \mathbf{y}, -$$ +where \( X \) is the design matrix defined above. -for \( \lambda = {0,1,10,50,100} \) (\( \lambda = 0 \) corresponds to ordinary least squares). -We can then compute \( ||\beta_{\text{ridge}}|| \) for each \( \lambda \). - -

    - - -

    import numpy as np
    -
    -"""
    -The following setup is just a suggestion, feel free to write it the way you like.
    -"""
    -
    -#Setup problem described in the exercise
    -N  = 100 #Nr of datapoints
    -M  = 2   #Nr of features
    -x  = np.random.rand(N)
    -y  = 5*x**2 + 0.1*np.random.randn(N)
    -
    -
    -#Compute analytic beta for Ridge regression 
    -X    = np.c_[np.ones(N),x]
    -XT_X = np.dot(X.T,X)
    -
    -l  = 0.1 #Ridge parameter lambda
    -Id = np.eye(XT_X.shape[0])
    -
    -Z = np.linalg.inv(XT_X+l*Id)
    -beta_ridge = np.dot(Z,np.dot(X.T,y))
    -
    -print(beta_ridge)
    -print(np.linalg.norm(beta_ridge)) #||beta||
    -

    @@ -286,7 +229,7 @@ beta_ridge = np

  • 38
  • 39
  • ...
  • -
  • 48
  • +
  • 42
  • »
  • diff --git a/doc/pub/Splines/html/._Splines-bs030.html b/doc/pub/Splines/html/._Splines-bs030.html index 9273bfbd6..cd86c0601 100644 --- a/doc/pub/Splines/html/._Splines-bs030.html +++ b/doc/pub/Splines/html/._Splines-bs030.html @@ -65,48 +65,39 @@ Automatically generated HTML file from DocOnce source ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -162,35 +153,29 @@ MathJax.Hub.Config({
  • More on convex functions
  • Some simple problems
  • Standard steepest descent
  • -
  • Conjugate gradient method
  • -
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • -
  • The routine for the steepest descent method
  • -
  • Revisiting our first homework
  • -
  • Gradient descent example
  • -
  • The derivative of the cost/loss function
  • -
  • The Hessian matrix
  • -
  • Simple program
  • -
  • Gradient Descent Example
  • -
  • And a corresponding example using scikit-learn
  • -
  • Gradient descent and Ridge
  • -
  • Stochastic Gradient Descent
  • -
  • Computation of gradients
  • -
  • SGD example
  • -
  • The gradient step
  • -
  • Simple example code
  • -
  • When do we stop?
  • -
  • Slightly different approach
  • -
  • Conjugate gradient (CG) method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method, Newton's method first
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method and iterations
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • +
  • Gradient method
  • +
  • Steepest descent method
  • +
  • Steepest descent method
  • +
  • Gradient descent method
  • +
  • Final expressions
  • +
  • The Steepest descent algorithm
  • +
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • +
  • The routine for the steepest descent method
  • +
  • Revisiting our first homework
  • +
  • Gradient descent example
  • +
  • The derivative of the cost/loss function
  • +
  • The Hessian matrix
  • +
  • Simple program
  • +
  • Gradient Descent Example
  • +
  • And a corresponding example using scikit-learn
  • +
  • Gradient descent and Ridge
  • +
  • Stochastic Gradient Descent
  • +
  • Computation of gradients
  • +
  • SGD example
  • +
  • The gradient step
  • +
  • Simple example code
  • +
  • When do we stop?
  • +
  • Slightly different approach
  • @@ -206,21 +191,17 @@ MathJax.Hub.Config({ -

    Stochastic Gradient Descent

    - -

    -Stochastic gradient descent (SGD) and variants thereof address some of -the shortcomings of the Gradient descent method discussed above. - -

    -The underlying idea of SGD comes from the observation that the cost -function, which we want to minimize, can almost always be written as a -sum over \( n \) data points \( \{\mathbf{x}_i\}_{i=1}^n \), +

    The Hessian matrix

    +The Hessian matrix of \( C(\beta) \) is given by $$ -C(\mathbf{\beta}) = \sum_{i=1}^n c_i(\mathbf{x}_i, -\mathbf{\beta}). +\hat{H} \equiv \begin{bmatrix} +\frac{\partial^2 C(\beta)}{\partial \beta_0^2} & \frac{\partial^2 C(\beta)}{\partial \beta_0 \partial \beta_1} \\ +\frac{\partial^2 C(\beta)}{\partial \beta_0 \partial \beta_1} & \frac{\partial^2 C(\beta)}{\partial \beta_1^2} & \\ +\end{bmatrix} = 2X^T X. $$ +This result implies that \( C(\beta) \) is a convex function since the matrix \( X^T X \) always is positive semi-definite. +

    @@ -247,7 +228,7 @@ $$

  • 39
  • 40
  • ...
  • -
  • 48
  • +
  • 42
  • »
  • diff --git a/doc/pub/Splines/html/._Splines-bs031.html b/doc/pub/Splines/html/._Splines-bs031.html index 66828afea..ef3d3335f 100644 --- a/doc/pub/Splines/html/._Splines-bs031.html +++ b/doc/pub/Splines/html/._Splines-bs031.html @@ -65,48 +65,39 @@ Automatically generated HTML file from DocOnce source ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -162,35 +153,29 @@ MathJax.Hub.Config({
  • More on convex functions
  • Some simple problems
  • Standard steepest descent
  • -
  • Conjugate gradient method
  • -
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • -
  • The routine for the steepest descent method
  • -
  • Revisiting our first homework
  • -
  • Gradient descent example
  • -
  • The derivative of the cost/loss function
  • -
  • The Hessian matrix
  • -
  • Simple program
  • -
  • Gradient Descent Example
  • -
  • And a corresponding example using scikit-learn
  • -
  • Gradient descent and Ridge
  • -
  • Stochastic Gradient Descent
  • -
  • Computation of gradients
  • -
  • SGD example
  • -
  • The gradient step
  • -
  • Simple example code
  • -
  • When do we stop?
  • -
  • Slightly different approach
  • -
  • Conjugate gradient (CG) method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method, Newton's method first
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method and iterations
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • +
  • Gradient method
  • +
  • Steepest descent method
  • +
  • Steepest descent method
  • +
  • Gradient descent method
  • +
  • Final expressions
  • +
  • The Steepest descent algorithm
  • +
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • +
  • The routine for the steepest descent method
  • +
  • Revisiting our first homework
  • +
  • Gradient descent example
  • +
  • The derivative of the cost/loss function
  • +
  • The Hessian matrix
  • +
  • Simple program
  • +
  • Gradient Descent Example
  • +
  • And a corresponding example using scikit-learn
  • +
  • Gradient descent and Ridge
  • +
  • Stochastic Gradient Descent
  • +
  • Computation of gradients
  • +
  • SGD example
  • +
  • The gradient step
  • +
  • Simple example code
  • +
  • When do we stop?
  • +
  • Slightly different approach
  • @@ -206,23 +191,44 @@ MathJax.Hub.Config({ -

    Computation of gradients

    +

    Simple program

    -This in turn means that the gradient can be -computed as a sum over \( i \)-gradients +We can now write a program that minimizes \( C(\beta) \) using the gradient descent method with a constant learning rate \( \gamma \) according to $$ -\nabla_\beta C(\mathbf{\beta}) = \sum_i^n \nabla_\beta c_i(\mathbf{x}_i, -\mathbf{\beta}). +\beta_{k+1} = \beta_k - \gamma \nabla_\beta C(\beta_k), \ k=0,1,\cdots $$

    -Stochasticity/randomness is introduced by only taking the -gradient on a subset of the data called minibatches. If there are \( n \) -data points and the size of each minibatch is \( M \), there will be \( n/M \) -minibatches. We denote these minibatches by \( B_k \) where -\( k=1,\cdots,n/M \). +We can use the expression we computed for the gradient and let use a +\( \beta_0 \) be chosen randomly and let \( \gamma = 0.001 \). Stop iterating +when \( ||\nabla_\beta C(\beta_k) || \leq \epsilon = 10^{-8} \). +

    +And finally we can compare our solution for \( \beta \) with the analytic result given by +\( \beta= (X^TX)^{-1} X^T \mathbf{y} \). +

    + + +

    import numpy as np
    +
    +"""
    +The following setup is just a suggestion, feel free to write it the way you like.
    +"""
    +
    +#Setup problem described in the exercise
    +N  = 100 #Nr of datapoints
    +M  = 2 #Nr of features
    +x  = np.random.rand(N) #Uniformly generated x-values in [0,1]
    +y  = 5*x**2 + 0.1*np.random.randn(N)
    +X  = np.c_[np.ones(N),x] #Construct design matrix
    +
    +#Compute beta according to normal equations to compare with GD solution
    +Xt_X_inv = np.linalg.inv(np.dot(X.T,X))
    +Xt_y     = np.dot(X.transpose(),y)
    +beta_NE = np.dot(Xt_X_inv,Xt_y)
    +print(beta_NE)
    +

    @@ -249,7 +255,7 @@ minibatches. We denote these minibatches by \( B_k \) where

  • 40
  • 41
  • ...
  • -
  • 48
  • +
  • 42
  • »
  • diff --git a/doc/pub/Splines/html/._Splines-bs032.html b/doc/pub/Splines/html/._Splines-bs032.html index e93b4f710..42591f222 100644 --- a/doc/pub/Splines/html/._Splines-bs032.html +++ b/doc/pub/Splines/html/._Splines-bs032.html @@ -65,48 +65,39 @@ Automatically generated HTML file from DocOnce source ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -162,35 +153,29 @@ MathJax.Hub.Config({
  • More on convex functions
  • Some simple problems
  • Standard steepest descent
  • -
  • Conjugate gradient method
  • -
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • -
  • The routine for the steepest descent method
  • -
  • Revisiting our first homework
  • -
  • Gradient descent example
  • -
  • The derivative of the cost/loss function
  • -
  • The Hessian matrix
  • -
  • Simple program
  • -
  • Gradient Descent Example
  • -
  • And a corresponding example using scikit-learn
  • -
  • Gradient descent and Ridge
  • -
  • Stochastic Gradient Descent
  • -
  • Computation of gradients
  • -
  • SGD example
  • -
  • The gradient step
  • -
  • Simple example code
  • -
  • When do we stop?
  • -
  • Slightly different approach
  • -
  • Conjugate gradient (CG) method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method, Newton's method first
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method and iterations
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • +
  • Gradient method
  • +
  • Steepest descent method
  • +
  • Steepest descent method
  • +
  • Gradient descent method
  • +
  • Final expressions
  • +
  • The Steepest descent algorithm
  • +
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • +
  • The routine for the steepest descent method
  • +
  • Revisiting our first homework
  • +
  • Gradient descent example
  • +
  • The derivative of the cost/loss function
  • +
  • The Hessian matrix
  • +
  • Simple program
  • +
  • Gradient Descent Example
  • +
  • And a corresponding example using scikit-learn
  • +
  • Gradient descent and Ridge
  • +
  • Stochastic Gradient Descent
  • +
  • Computation of gradients
  • +
  • SGD example
  • +
  • The gradient step
  • +
  • Simple example code
  • +
  • When do we stop?
  • +
  • Slightly different approach
  • @@ -206,27 +191,52 @@ MathJax.Hub.Config({ -

    SGD example

    -As an example, suppose we have \( 10 \) data points \( (\mathbf{x}_1,\cdots, \mathbf{x}_{10}) \) -and we choose to have \( M=5 \) minibathces, -then each minibatch contains two data points. In particular we have -\( B_1 = (\mathbf{x}_1,\mathbf{x}_2), \cdots, B_5 = -(\mathbf{x}_9,\mathbf{x}_{10}) \). Note that if you choose \( M=1 \) you -have only a single batch with all data points and on the other extreme, -you may choose \( M=n \) resulting in a minibatch for each datapoint, i.e -\( B_k = \mathbf{x}_k \). +

    Gradient Descent Example

    -The idea is now to approximate the gradient by replacing the sum over -all data points with a sum over the data points in one the minibatches -picked at random in each gradient descent step -$$ -\nabla_{\beta} -C(\mathbf{\beta}) = \sum_{i=1}^n \nabla_\beta c_i(\mathbf{x}_i, -\mathbf{\beta}) \rightarrow \sum_{i \in B_k}^n \nabla_\beta -c_i(\mathbf{x}_i, \mathbf{\beta}). -$$ +Another simple example is here +

    + +

    # Importing various packages
    +from random import random, seed
    +import numpy as np
    +import matplotlib.pyplot as plt
    +from mpl_toolkits.mplot3d import Axes3D
    +from matplotlib import cm
    +from matplotlib.ticker import LinearLocator, FormatStrFormatter
    +import sys
    +
    +x = 2*np.random.rand(100,1)
    +y = 4+3*x+np.random.randn(100,1)
    +
    +xb = np.c_[np.ones((100,1)), x]
    +beta_linreg = np.linalg.inv(xb.T.dot(xb)).dot(xb.T).dot(y)
    +print(beta_linreg)
    +beta = np.random.randn(2,1)
    +
    +eta = 0.1
    +Niterations = 1000
    +m = 100
    +
    +for iter in range(Niterations):
    +    gradients = 2.0/m*xb.T.dot(xb.dot(beta)-y)
    +    beta -= eta*gradients
    +
    +print(beta)
    +xnew = np.array([[0],[2]])
    +xbnew = np.c_[np.ones((2,1)), xnew]
    +ypredict = xbnew.dot(beta)
    +ypredict2 = xbnew.dot(beta_linreg)
    +plt.plot(xnew, ypredict, "r-")
    +plt.plot(xnew, ypredict2, "b-")
    +plt.plot(x, y ,'ro')
    +plt.axis([0,2.0,0, 15.0])
    +plt.xlabel(r'$x$')
    +plt.ylabel(r'$y$')
    +plt.title(r'Gradient descent example')
    +plt.show()
    +

    @@ -252,8 +262,6 @@ $$

  • 40
  • 41
  • 42
  • -
  • ...
  • -
  • 48
  • »
  • diff --git a/doc/pub/Splines/html/._Splines-bs033.html b/doc/pub/Splines/html/._Splines-bs033.html index 88c682dbd..21dff141e 100644 --- a/doc/pub/Splines/html/._Splines-bs033.html +++ b/doc/pub/Splines/html/._Splines-bs033.html @@ -65,48 +65,39 @@ Automatically generated HTML file from DocOnce source ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -162,35 +153,29 @@ MathJax.Hub.Config({
  • More on convex functions
  • Some simple problems
  • Standard steepest descent
  • -
  • Conjugate gradient method
  • -
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • -
  • The routine for the steepest descent method
  • -
  • Revisiting our first homework
  • -
  • Gradient descent example
  • -
  • The derivative of the cost/loss function
  • -
  • The Hessian matrix
  • -
  • Simple program
  • -
  • Gradient Descent Example
  • -
  • And a corresponding example using scikit-learn
  • -
  • Gradient descent and Ridge
  • -
  • Stochastic Gradient Descent
  • -
  • Computation of gradients
  • -
  • SGD example
  • -
  • The gradient step
  • -
  • Simple example code
  • -
  • When do we stop?
  • -
  • Slightly different approach
  • -
  • Conjugate gradient (CG) method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method, Newton's method first
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method and iterations
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • +
  • Gradient method
  • +
  • Steepest descent method
  • +
  • Steepest descent method
  • +
  • Gradient descent method
  • +
  • Final expressions
  • +
  • The Steepest descent algorithm
  • +
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • +
  • The routine for the steepest descent method
  • +
  • Revisiting our first homework
  • +
  • Gradient descent example
  • +
  • The derivative of the cost/loss function
  • +
  • The Hessian matrix
  • +
  • Simple program
  • +
  • Gradient Descent Example
  • +
  • And a corresponding example using scikit-learn
  • +
  • Gradient descent and Ridge
  • +
  • Stochastic Gradient Descent
  • +
  • Computation of gradients
  • +
  • SGD example
  • +
  • The gradient step
  • +
  • Simple example code
  • +
  • When do we stop?
  • +
  • Slightly different approach
  • @@ -206,22 +191,27 @@ MathJax.Hub.Config({ -

    The gradient step

    +

    And a corresponding example using scikit-learn

    -Thus a gradient descent step now looks like -$$ -\beta_{j+1} = \beta_j - \gamma_j \sum_{i \in B_k}^n \nabla_\beta c_i(\mathbf{x}_i, -\mathbf{\beta}) -$$ -

    -where \( k \) is picked at random with equal -probability from \( [1,n/M] \). An iteration over the number of -minibathces (n/M) is commonly referred to as an epoch. Thus it is -typical to choose a number of epochs and for each epoch iterate over -the number of minibatches, as exemplified in the code below. + +

    # Importing various packages
    +from random import random, seed
    +import numpy as np
    +import matplotlib.pyplot as plt
    +from sklearn.linear_model import SGDRegressor
     
    +x = 2*np.random.rand(100,1)
    +y = 4+3*x+np.random.randn(100,1)
    +
    +xb = np.c_[np.ones((100,1)), x]
    +beta_linreg = np.linalg.inv(xb.T.dot(xb)).dot(xb.T).dot(y)
    +print(beta_linreg)
    +sgdreg = SGDRegressor(n_iter = 50, penalty=None, eta0=0.1)
    +sgdreg.fit(x,y.ravel())
    +print(sgdreg.intercept_, sgdreg.coef_)
    +

    @@ -246,9 +236,6 @@ the number of minibatches, as exemplified in the code below.

  • 40
  • 41
  • 42
  • -
  • 43
  • -
  • ...
  • -
  • 48
  • »
  • diff --git a/doc/pub/Splines/html/._Splines-bs034.html b/doc/pub/Splines/html/._Splines-bs034.html index 9ea34b39c..28adb0597 100644 --- a/doc/pub/Splines/html/._Splines-bs034.html +++ b/doc/pub/Splines/html/._Splines-bs034.html @@ -65,48 +65,39 @@ Automatically generated HTML file from DocOnce source ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -162,35 +153,29 @@ MathJax.Hub.Config({
  • More on convex functions
  • Some simple problems
  • Standard steepest descent
  • -
  • Conjugate gradient method
  • -
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • -
  • The routine for the steepest descent method
  • -
  • Revisiting our first homework
  • -
  • Gradient descent example
  • -
  • The derivative of the cost/loss function
  • -
  • The Hessian matrix
  • -
  • Simple program
  • -
  • Gradient Descent Example
  • -
  • And a corresponding example using scikit-learn
  • -
  • Gradient descent and Ridge
  • -
  • Stochastic Gradient Descent
  • -
  • Computation of gradients
  • -
  • SGD example
  • -
  • The gradient step
  • -
  • Simple example code
  • -
  • When do we stop?
  • -
  • Slightly different approach
  • -
  • Conjugate gradient (CG) method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method, Newton's method first
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method and iterations
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • +
  • Gradient method
  • +
  • Steepest descent method
  • +
  • Steepest descent method
  • +
  • Gradient descent method
  • +
  • Final expressions
  • +
  • The Steepest descent algorithm
  • +
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • +
  • The routine for the steepest descent method
  • +
  • Revisiting our first homework
  • +
  • Gradient descent example
  • +
  • The derivative of the cost/loss function
  • +
  • The Hessian matrix
  • +
  • Simple program
  • +
  • Gradient Descent Example
  • +
  • And a corresponding example using scikit-learn
  • +
  • Gradient descent and Ridge
  • +
  • Stochastic Gradient Descent
  • +
  • Computation of gradients
  • +
  • SGD example
  • +
  • The gradient step
  • +
  • Simple example code
  • +
  • When do we stop?
  • +
  • Slightly different approach
  • @@ -204,37 +189,62 @@ MathJax.Hub.Config({

     

     

     

    - + -

    Simple example code

    +

    Gradient descent and Ridge

    + +

    +We have also discussed Ridge regression where the loss function contains a regularized given by the \( L_2 \) norm of \( \beta \), +$$ +C_{\text{ridge}}(\beta) = ||X\beta -\mathbf{y}||^2 + \lambda ||\beta||^2, \ \lambda \geq 0. +$$ + +

    +In order to minimize \( C_{\text{ridge}}(\beta) \) using GD we only have adjust the gradient as follows +$$ +\nabla_\beta C_{\text{ridge}}(\beta) = 2\begin{bmatrix} \sum_{i=1}^{100} \left(\beta_0+\beta_1x_i-y_i\right) \\ +\sum_{i=1}^{100}\left( x_i (\beta_0+\beta_1x_i)-y_ix_i\right) \\ +\end{bmatrix} + 2\lambda\begin{bmatrix} \beta_0 \\ \beta_1\end{bmatrix} = 2 (X^T(X\beta - \mathbf{y})+\lambda \beta). +$$ + +

    +We can now extend our program to minimize \( C_{\text{ridge}}(\beta) \) using gradient descent and compare with the analytical solution given by +$$ +\beta_{\text{ridge}} = \left(X^T X + \lambda I_{2 \times 2} \right)^{-1} X^T \mathbf{y}, +$$ + +for \( \lambda = {0,1,10,50,100} \) (\( \lambda = 0 \) corresponds to ordinary least squares). +We can then compute \( ||\beta_{\text{ridge}}|| \) for each \( \lambda \).

    -

    import numpy as np 
    +
    import numpy as np
     
    -n = 100 #100 datapoints 
    -M = 5   #size of each minibatch
    -m = int(n/M) #number of minibatches
    -n_epochs = 10 #number of epochs
    +"""
    +The following setup is just a suggestion, feel free to write it the way you like.
    +"""
     
    -j = 0
    -for epoch in range(1,n_epochs+1):
    -    for i in range(m):
    -        k = np.random.randint(m) #Pick the k-th minibatch at random
    -        #Compute the gradient using the data in minibatch Bk
    -        #Compute new suggestion for 
    -        j += 1
    +#Setup problem described in the exercise
    +N  = 100 #Nr of datapoints
    +M  = 2   #Nr of features
    +x  = np.random.rand(N)
    +y  = 5*x**2 + 0.1*np.random.randn(N)
    +
    +
    +#Compute analytic beta for Ridge regression 
    +X    = np.c_[np.ones(N),x]
    +XT_X = np.dot(X.T,X)
    +
    +l  = 0.1 #Ridge parameter lambda
    +Id = np.eye(XT_X.shape[0])
    +
    +Z = np.linalg.inv(XT_X+l*Id)
    +beta_ridge = np.dot(Z,np.dot(X.T,y))
    +
    +print(beta_ridge)
    +print(np.linalg.norm(beta_ridge)) #||beta||
     
    -

    -Taking the gradient only on a subset of the data has two important -benefits. First, it introduces randomness which decreases the chance -that our opmization scheme gets stuck in a local minima. Second, if -the size of the minibatches are small relative to the number of -datapoints (\( M < n \)), the computation of the gradient is much -cheaper since we sum over the datapoints in the \( k-th \) minibatch and not -all \( n \) datapoints. -

    @@ -258,10 +268,6 @@ all \( n \) datapoints.

  • 40
  • 41
  • 42
  • -
  • 43
  • -
  • 44
  • -
  • ...
  • -
  • 48
  • »
  • diff --git a/doc/pub/Splines/html/._Splines-bs035.html b/doc/pub/Splines/html/._Splines-bs035.html index 3728b6100..5ec6ed1ec 100644 --- a/doc/pub/Splines/html/._Splines-bs035.html +++ b/doc/pub/Splines/html/._Splines-bs035.html @@ -65,48 +65,39 @@ Automatically generated HTML file from DocOnce source ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -162,35 +153,29 @@ MathJax.Hub.Config({
  • More on convex functions
  • Some simple problems
  • Standard steepest descent
  • -
  • Conjugate gradient method
  • -
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • -
  • The routine for the steepest descent method
  • -
  • Revisiting our first homework
  • -
  • Gradient descent example
  • -
  • The derivative of the cost/loss function
  • -
  • The Hessian matrix
  • -
  • Simple program
  • -
  • Gradient Descent Example
  • -
  • And a corresponding example using scikit-learn
  • -
  • Gradient descent and Ridge
  • -
  • Stochastic Gradient Descent
  • -
  • Computation of gradients
  • -
  • SGD example
  • -
  • The gradient step
  • -
  • Simple example code
  • -
  • When do we stop?
  • -
  • Slightly different approach
  • -
  • Conjugate gradient (CG) method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method, Newton's method first
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method and iterations
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • +
  • Gradient method
  • +
  • Steepest descent method
  • +
  • Steepest descent method
  • +
  • Gradient descent method
  • +
  • Final expressions
  • +
  • The Steepest descent algorithm
  • +
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • +
  • The routine for the steepest descent method
  • +
  • Revisiting our first homework
  • +
  • Gradient descent example
  • +
  • The derivative of the cost/loss function
  • +
  • The Hessian matrix
  • +
  • Simple program
  • +
  • Gradient Descent Example
  • +
  • And a corresponding example using scikit-learn
  • +
  • Gradient descent and Ridge
  • +
  • Stochastic Gradient Descent
  • +
  • Computation of gradients
  • +
  • SGD example
  • +
  • The gradient step
  • +
  • Simple example code
  • +
  • When do we stop?
  • +
  • Slightly different approach
  • @@ -206,19 +191,20 @@ MathJax.Hub.Config({ -

    When do we stop?

    +

    Stochastic Gradient Descent

    -A natural question is when do we stop the search for a new minimum? -One possibility is to compute the full gradient after a given number -of epochs and check if the norm of the gradient is smaller than some -threshold and stop if true. However, the condition that the gradient -is zero is valid also for local minima, so this would only tell us -that we are close to a local/global minimum. However, we could also -evaluate the cost function at this point, store the result and -continue the search. If the test kicks in at a later stage we can -compare the values of the cost function and keep the \( \beta \) that -gave the lowest value. +Stochastic gradient descent (SGD) and variants thereof address some of +the shortcomings of the Gradient descent method discussed above. + +

    +The underlying idea of SGD comes from the observation that the cost +function, which we want to minimize, can almost always be written as a +sum over \( n \) data points \( \{\mathbf{x}_i\}_{i=1}^n \), +$$ +C(\mathbf{\beta}) = \sum_{i=1}^n c_i(\mathbf{x}_i, +\mathbf{\beta}). +$$

    @@ -242,11 +228,6 @@ gave the lowest value.

  • 40
  • 41
  • 42
  • -
  • 43
  • -
  • 44
  • -
  • 45
  • -
  • ...
  • -
  • 48
  • »
  • diff --git a/doc/pub/Splines/html/._Splines-bs036.html b/doc/pub/Splines/html/._Splines-bs036.html index 1b3b69564..a04c611a6 100644 --- a/doc/pub/Splines/html/._Splines-bs036.html +++ b/doc/pub/Splines/html/._Splines-bs036.html @@ -65,48 +65,39 @@ Automatically generated HTML file from DocOnce source ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -162,35 +153,29 @@ MathJax.Hub.Config({
  • More on convex functions
  • Some simple problems
  • Standard steepest descent
  • -
  • Conjugate gradient method
  • -
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • -
  • The routine for the steepest descent method
  • -
  • Revisiting our first homework
  • -
  • Gradient descent example
  • -
  • The derivative of the cost/loss function
  • -
  • The Hessian matrix
  • -
  • Simple program
  • -
  • Gradient Descent Example
  • -
  • And a corresponding example using scikit-learn
  • -
  • Gradient descent and Ridge
  • -
  • Stochastic Gradient Descent
  • -
  • Computation of gradients
  • -
  • SGD example
  • -
  • The gradient step
  • -
  • Simple example code
  • -
  • When do we stop?
  • -
  • Slightly different approach
  • -
  • Conjugate gradient (CG) method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method, Newton's method first
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method and iterations
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • +
  • Gradient method
  • +
  • Steepest descent method
  • +
  • Steepest descent method
  • +
  • Gradient descent method
  • +
  • Final expressions
  • +
  • The Steepest descent algorithm
  • +
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • +
  • The routine for the steepest descent method
  • +
  • Revisiting our first homework
  • +
  • Gradient descent example
  • +
  • The derivative of the cost/loss function
  • +
  • The Hessian matrix
  • +
  • Simple program
  • +
  • Gradient Descent Example
  • +
  • And a corresponding example using scikit-learn
  • +
  • Gradient descent and Ridge
  • +
  • Stochastic Gradient Descent
  • +
  • Computation of gradients
  • +
  • SGD example
  • +
  • The gradient step
  • +
  • Simple example code
  • +
  • When do we stop?
  • +
  • Slightly different approach
  • @@ -206,51 +191,23 @@ MathJax.Hub.Config({ -

    Slightly different approach

    +

    Computation of gradients

    -Another approach is to let the step length \( \gamma_j \) depend on the -number of epochs in such a way that it becomes very small after a -reasonable time such that we do not move at all. +This in turn means that the gradient can be +computed as a sum over \( i \)-gradients +$$ +\nabla_\beta C(\mathbf{\beta}) = \sum_i^n \nabla_\beta c_i(\mathbf{x}_i, +\mathbf{\beta}). +$$

    -As an example, let \( e = 0,1,2,3,\cdots \) denote the current epoch and let \( t_0, t_1 > 0 \) be two fixed numbers. Furthermore, let \( t = e \cdot m + i \) where \( m \) is the number of minibatches and \( i=0,\cdots,m-1 \). Then the function $$\gamma_j(t; t_0, t_1) = \frac{t_0}{t+t_1} $$ goes to zero as the number of epochs gets large. I.e. we start with a step length \( \gamma_j (0; t_0, t_1) = t_0/t_1 \) which decays in time \( t \). +Stochasticity/randomness is introduced by only taking the +gradient on a subset of the data called minibatches. If there are \( n \) +data points and the size of each minibatch is \( M \), there will be \( n/M \) +minibatches. We denote these minibatches by \( B_k \) where +\( k=1,\cdots,n/M \). -

    -In this way we can fix the number of epochs, compute \( \beta \) and -evaluate the cost function at the end. Repeating the computation will -give a different result since the scheme is random by design. Then we -pick the final \( \beta \) that gives the lowest value of the cost -function. - -

    - - -

    import numpy as np 
    -
    -def step_length(t,t0,t1):
    -    return t0/(t+t1)
    -
    -n = 100 #100 datapoints 
    -M = 5   #size of each minibatch
    -m = int(n/M) #number of minibatches
    -n_epochs = 500 #number of epochs
    -t0 = 1.0
    -t1 = 10
    -
    -gamma_j = t0/t1
    -j = 0
    -for epoch in range(1,n_epochs+1):
    -    for i in range(m):
    -        k = np.random.randint(m) #Pick the k-th minibatch at random
    -        #Compute the gradient using the data in minibatch Bk
    -        #Compute new suggestion for beta
    -        t = epoch*m+i
    -        gamma_j = step_length(t,t0,t1)
    -        j += 1
    -
    -print("gamma_j after %d epochs: %g" % (n_epochs,gamma_j))
    -

    @@ -272,12 +229,6 @@ j = 0

  • 40
  • 41
  • 42
  • -
  • 43
  • -
  • 44
  • -
  • 45
  • -
  • 46
  • -
  • ...
  • -
  • 48
  • »
  • diff --git a/doc/pub/Splines/html/Splines-bs.html b/doc/pub/Splines/html/Splines-bs.html index f8494c29a..c216dd1d9 100644 --- a/doc/pub/Splines/html/Splines-bs.html +++ b/doc/pub/Splines/html/Splines-bs.html @@ -65,48 +65,39 @@ Automatically generated HTML file from DocOnce source ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -162,35 +153,29 @@ MathJax.Hub.Config({
  • More on convex functions
  • Some simple problems
  • Standard steepest descent
  • -
  • Conjugate gradient method
  • -
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • -
  • The routine for the steepest descent method
  • -
  • Revisiting our first homework
  • -
  • Gradient descent example
  • -
  • The derivative of the cost/loss function
  • -
  • The Hessian matrix
  • -
  • Simple program
  • -
  • Gradient Descent Example
  • -
  • And a corresponding example using scikit-learn
  • -
  • Gradient descent and Ridge
  • -
  • Stochastic Gradient Descent
  • -
  • Computation of gradients
  • -
  • SGD example
  • -
  • The gradient step
  • -
  • Simple example code
  • -
  • When do we stop?
  • -
  • Slightly different approach
  • -
  • Conjugate gradient (CG) method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method, Newton's method first
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method and iterations
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • -
  • Conjugate gradient method
  • +
  • Gradient method
  • +
  • Steepest descent method
  • +
  • Steepest descent method
  • +
  • Gradient descent method
  • +
  • Final expressions
  • +
  • The Steepest descent algorithm
  • +
  • Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come
  • +
  • The routine for the steepest descent method
  • +
  • Revisiting our first homework
  • +
  • Gradient descent example
  • +
  • The derivative of the cost/loss function
  • +
  • The Hessian matrix
  • +
  • Simple program
  • +
  • Gradient Descent Example
  • +
  • And a corresponding example using scikit-learn
  • +
  • Gradient descent and Ridge
  • +
  • Stochastic Gradient Descent
  • +
  • Computation of gradients
  • +
  • SGD example
  • +
  • The gradient step
  • +
  • Simple example code
  • +
  • When do we stop?
  • +
  • Slightly different approach
  • @@ -249,7 +234,7 @@ MathJax.Hub.Config({
  • 9
  • 10
  • ...
  • -
  • 48
  • +
  • 42
  • »
  • diff --git a/doc/pub/Splines/html/Splines-reveal.html b/doc/pub/Splines/html/Splines-reveal.html index b63f29483..37fcca28c 100644 --- a/doc/pub/Splines/html/Splines-reveal.html +++ b/doc/pub/Splines/html/Splines-reveal.html @@ -662,7 +662,7 @@ When we have found the exact solution, \( \hat{r}=0 \).
    -

    Conjugate gradient method

    +

    Gradient method

    The residual is zero when we reach the minimum of the quadratic equation @@ -680,14 +680,150 @@ symmetric. If we search for a minimum of the quantum mechanical variance, then the matrix \( \hat{A} \), which is called the Hessian, is given by the second-derivative of the function we want to minimize. This quantity is always positive definite. - -

    -More details will be added here soon.

    -

    Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come

    +

    Steepest descent method

    + +

    +We denote the initial guess for \( \hat{x} \) as \( \hat{x}_0 \). +We can assume without loss of generality that +

     
    +$$ +\begin{equation*} +\hat{x}_0=0, +\end{equation*} +$$ +

     
    + +or consider the system +

     
    +$$ +\begin{equation*} +\hat{A}\hat{z} = \hat{b}-\hat{A}\hat{x}_0, +\end{equation*} +$$ +

     
    + +instead. +

    + + +
    +

    Steepest descent method

    +
    + +

    +One can show that the solution \( \hat{x} \) is also the unique minimizer of the quadratic form +

     
    +$$ +\begin{equation*} + f(\hat{x}) = \frac{1}{2}\hat{x}^T\hat{A}\hat{x} - \hat{x}^T \hat{x} , \quad \hat{x}\in\mathbf{R}^n. +\end{equation*} +$$ +

     
    + +This suggests taking the first basis vector \( \hat{p}_1 \) +to be the gradient of \( f \) at \( \hat{x}=\hat{x}_0 \), +which equals +

     
    +$$ +\begin{equation*} +\hat{A}\hat{x}_0-\hat{b}, +\end{equation*} +$$ +

     
    + +and +\( \hat{x}_0=0 \) it is equal \( -\hat{b} \). + + +

    +
    + + +
    +

    Gradient descent method

    +
    + +

    +Let \( \hat{r}_k \) be the residual at the \( k \)-th step: +

     
    +$$ +\begin{equation*} +\hat{r}_k=\hat{b}-\hat{A}\hat{x}_k. +\end{equation*} +$$ +

     
    + +Note that \( \hat{r}_k \) is the negative gradient of \( f \) at +\( \hat{x}=\hat{x}_k \), +so the gradient descent method would be to move in the direction \( \hat{r}_k \). +This gives the following expression +

     
    +$$ +\begin{equation*} +\hat{p}_{k+1}=\hat{r}_k-\frac{\hat{p}_k^T \hat{A}\hat{r}_k}{\hat{p}_k^T\hat{A}\hat{p}_k} \hat{p}_k. +\end{equation*} +$$ +

     
    +

    +
    + + +
    +

    Final expressions

    +
    + +

    +We can also compute the residual iteratively as +

     
    +$$ +\begin{equation*} +\hat{r}_{k+1}=\hat{b}-\hat{A}\hat{x}_{k+1}, + \end{equation*} +$$ +

     
    + +which equals +

     
    +$$ +\begin{equation*} +\hat{b}-\hat{A}(\hat{x}_k+\alpha_k\hat{p}_k), + \end{equation*} +$$ +

     
    + +or +

     
    +$$ +\begin{equation*} +(\hat{b}-\hat{A}\hat{x}_k)-\alpha_k\hat{A}\hat{p}_k, + \end{equation*} +$$ +

     
    + +which gives + +

     
    +$$ +\begin{equation*} +\hat{r}_{k+1}=\hat{r}_k-\hat{A}\hat{p}_{k}, + \end{equation*} +$$ +

     
    +

    +
    + + +
    +

    The Steepest descent algorithm

    +
    + + +
    +

    Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come

    @@ -713,11 +849,7 @@ More details will be added here soon. cout << "The Matrix A that we are using: " << endl; A.Print(); cout << endl; - x = ConjugateGradient(A,b,x0); xsd = SteepestDescent(A,b,x0); - cout << "The approximate solution using Conjugate Gradient is: " << endl; - x.Print(); - cout << endl; cout << "The approximate solution using Steepest Descent is: " << endl; xsd.Print(); cout << endl; @@ -729,7 +861,7 @@ More details will be added here soon.

    -

    The routine for the steepest descent method

    +

    The routine for the steepest descent method

    @@ -763,7 +895,7 @@ More details will be added here soon.

    -

    Revisiting our first homework

    +

    Revisiting our first homework

    We will use linear regression as a case study for the gradient descent @@ -803,7 +935,7 @@ $$

    -

    Gradient descent example

    +

    Gradient descent example

    Let \( \mathbf{y} = (y_1,\cdots,y_n)^T \), \( \mathbf{\hat{y}} = (\hat{y}_1,\cdots,\hat{y}_n)^T \) and \( \beta = (\beta_0, \beta_1)^T \) @@ -832,7 +964,7 @@ and we want to find \( \beta \) such that \( C(\beta) \) is minimized.

    -

    The derivative of the cost/loss function

    +

    The derivative of the cost/loss function

    Computing \( \partial C(\beta) / \partial \beta_0 \) and \( \partial C(\beta) / \partial \beta_1 \) we can show that the gradient can be written as @@ -849,7 +981,7 @@ where \( X \) is the design matrix defined above.

    -

    The Hessian matrix

    +

    The Hessian matrix

    The Hessian matrix of \( C(\beta) \) is given by

     
    $$ @@ -865,7 +997,7 @@ This result implies that \( C(\beta) \) is a convex function since the matrix \(

    -

    Simple program

    +

    Simple program

    We can now write a program that minimizes \( C(\beta) \) using the gradient descent method with a constant learning rate \( \gamma \) according to @@ -909,7 +1041,7 @@ beta_NE = np.dot(Xt_X_inv,Xt_y)

    -

    Gradient Descent Example

    +

    Gradient Descent Example

    Another simple example is here @@ -959,7 +1091,7 @@ plt.show()

    -

    And a corresponding example using scikit-learn

    +

    And a corresponding example using scikit-learn

    @@ -984,7 +1116,7 @@ sgdreg.fit(x,y.ravel())

    -

    Gradient descent and Ridge

    +

    Gradient descent and Ridge

    We have also discussed Ridge regression where the loss function contains a regularized given by the \( L_2 \) norm of \( \beta \), @@ -1048,7 +1180,7 @@ beta_ridge = np.dot(Z,np.dot(X.T,y))

    -

    Stochastic Gradient Descent

    +

    Stochastic Gradient Descent

    Stochastic gradient descent (SGD) and variants thereof address some of @@ -1068,7 +1200,7 @@ $$

    -

    Computation of gradients

    +

    Computation of gradients

    This in turn means that the gradient can be @@ -1090,7 +1222,7 @@ minibatches. We denote these minibatches by \( B_k \) where

    -

    SGD example

    +

    SGD example

    As an example, suppose we have \( 10 \) data points \( (\mathbf{x}_1,\cdots, \mathbf{x}_{10}) \) and we choose to have \( M=5 \) minibathces, then each minibatch contains two data points. In particular we have @@ -1116,7 +1248,7 @@ $$
    -

    The gradient step

    +

    The gradient step

    Thus a gradient descent step now looks like @@ -1137,7 +1269,7 @@ the number of minibatches, as exemplified in the code below.

    -

    Simple example code

    +

    Simple example code

    @@ -1169,7 +1301,7 @@ all \( n \) datapoints.

    -

    When do we stop?

    +

    When do we stop?

    A natural question is when do we stop the search for a new minimum? @@ -1186,7 +1318,7 @@ gave the lowest value.

    -

    Slightly different approach

    +

    Slightly different approach

    Another approach is to let the step length \( \gamma_j \) depend on the @@ -1236,355 +1368,6 @@ j = 0

    -
    -

    Conjugate gradient (CG) method

    -
    - -

    -The success of the CG method for finding solutions of non-linear problems is based -on the theory of conjugate gradients for linear systems of equations. It belongs -to the class of iterative methods for solving problems from linear algebra of the type -

     
    -$$ -\begin{equation*} - \hat{A}\hat{x} = \hat{b}. -\end{equation*} -$$ -

     
    - -In the iterative process we end up with a problem like - -

     
    -$$ -\begin{equation*} - \hat{r}= \hat{b}-\hat{A}\hat{x}, -\end{equation*} -$$ -

     
    - -where \( \hat{r} \) is the so-called residual or error in the iterative process. - -

    -When we have found the exact solution, \( \hat{r}=0 \). -

    -
    - - -
    -

    Conjugate gradient method

    -
    - -

    -The residual is zero when we reach the minimum of the quadratic equation -

     
    -$$ -\begin{equation*} - P(\hat{x})=\frac{1}{2}\hat{x}^T\hat{A}\hat{x} - \hat{x}^T\hat{b}, -\end{equation*} -$$ -

     
    - -with the constraint that the matrix \( \hat{A} \) is positive definite and symmetric. -If we search for a minimum of the quantum mechanical variance, then the matrix -\( \hat{A} \), which is called the Hessian, is given by the second-derivative of the function we want to minimize. This quantity is always positive definite. In our case this corresponds normally to the second derivative of the energy. -

    -
    - - -
    -

    Conjugate gradient method, Newton's method first

    -
    - -

    -We seek the minimum of the energy or the variance as function of various variational parameters. -In our case we have thus a function \( f \) whose minimum we are seeking. -In Newton's method we set \( \nabla f = 0 \) and we can thus compute the next iteration point -

     
    -$$ -\begin{equation*} -\hat{x}-\hat{x}_i=\hat{A}^{-1}\nabla f(\hat{x}_i). -\end{equation*} -$$ -

     
    - -Subtracting this equation from that of \( \hat{x}_{i+1} \) we have -

     
    -$$ -\begin{equation*} -\hat{x}_{i+1}-\hat{x}_i=\hat{A}^{-1}(\nabla f(\hat{x}_{i+1})-\nabla f(\hat{x}_i)). -\end{equation*} -$$ -

     
    -

    -
    - - -
    -

    Conjugate gradient method

    -
    - -

    -In the CG method we define so-called conjugate directions and two vectors -\( \hat{s} \) and \( \hat{t} \) -are said to be -conjugate if -

     
    -$$ -\begin{equation*} -\hat{s}^T\hat{A}\hat{t}= 0. -\end{equation*} -$$ -

     
    - -The philosophy of the CG method is to perform searches in various conjugate directions -of our vectors \( \hat{x}_i \) obeying the above criterion, namely -

     
    -$$ -\begin{equation*} -\hat{x}_i^T\hat{A}\hat{x}_j= 0. -\end{equation*} -$$ -

     
    - -Two vectors are conjugate if they are orthogonal with respect to -this inner product. Being conjugate is a symmetric relation: if \( \hat{s} \) is conjugate to \( \hat{t} \), then \( \hat{t} \) is conjugate to \( \hat{s} \). -

    -
    - - -
    -

    Conjugate gradient method

    -
    - -

    -An example is given by the eigenvectors of the matrix -

     
    -$$ -\begin{equation*} -\hat{v}_i^T\hat{A}\hat{v}_j= \lambda\hat{v}_i^T\hat{v}_j, -\end{equation*} -$$ -

     
    - -which is zero unless \( i=j \). -

    -
    - - -
    -

    Conjugate gradient method

    -
    - -

    -Assume now that we have a symmetric positive-definite matrix \( \hat{A} \) of size -\( n\times n \). At each iteration \( i+1 \) we obtain the conjugate direction of a vector -

     
    -$$ -\begin{equation*} -\hat{x}_{i+1}=\hat{x}_{i}+\alpha_i\hat{p}_{i}. -\end{equation*} -$$ -

     
    - -We assume that \( \hat{p}_{i} \) is a sequence of \( n \) mutually conjugate directions. -Then the \( \hat{p}_{i} \) form a basis of \( R^n \) and we can expand the solution -$ \hat{A}\hat{x} = \hat{b}$ in this basis, namely - -

     
    -$$ -\begin{equation*} - \hat{x} = \sum^{n}_{i=1} \alpha_i \hat{p}_i. -\end{equation*} -$$ -

     
    -

    -
    - - -
    -

    Conjugate gradient method

    -
    - -

    -The coefficients are given by -

     
    -$$ -\begin{equation*} - \mathbf{A}\mathbf{x} = \sum^{n}_{i=1} \alpha_i \mathbf{A} \mathbf{p}_i = \mathbf{b}. -\end{equation*} -$$ -

     
    - -Multiplying with \( \hat{p}_k^T \) from the left gives - -

     
    -$$ -\begin{equation*} - \hat{p}_k^T \hat{A}\hat{x} = \sum^{n}_{i=1} \alpha_i\hat{p}_k^T \hat{A}\hat{p}_i= \hat{p}_k^T \hat{b}, -\end{equation*} -$$ -

     
    - -and we can define the coefficients \( \alpha_k \) as - -

     
    -$$ -\begin{equation*} - \alpha_k = \frac{\hat{p}_k^T \hat{b}}{\hat{p}_k^T \hat{A} \hat{p}_k} -\end{equation*} -$$ -

     
    -

    -
    - - -
    -

    Conjugate gradient method and iterations

    -
    - -

    -If we choose the conjugate vectors \( \hat{p}_k \) carefully, -then we may not need all of them to obtain a good approximation to the solution -\( \hat{x} \). -We want to regard the conjugate gradient method as an iterative method. -This will us to solve systems where \( n \) is so large that the direct -method would take too much time. - -

    -We denote the initial guess for \( \hat{x} \) as \( \hat{x}_0 \). -We can assume without loss of generality that -

     
    -$$ -\begin{equation*} -\hat{x}_0=0, -\end{equation*} -$$ -

     
    - -or consider the system -

     
    -$$ -\begin{equation*} -\hat{A}\hat{z} = \hat{b}-\hat{A}\hat{x}_0, -\end{equation*} -$$ -

     
    - -instead. -

    -
    - - -
    -

    Conjugate gradient method

    -
    - -

    -One can show that the solution \( \hat{x} \) is also the unique minimizer of the quadratic form -

     
    -$$ -\begin{equation*} - f(\hat{x}) = \frac{1}{2}\hat{x}^T\hat{A}\hat{x} - \hat{x}^T \hat{x} , \quad \hat{x}\in\mathbf{R}^n. -\end{equation*} -$$ -

     
    - -This suggests taking the first basis vector \( \hat{p}_1 \) -to be the gradient of \( f \) at \( \hat{x}=\hat{x}_0 \), -which equals -

     
    -$$ -\begin{equation*} -\hat{A}\hat{x}_0-\hat{b}, -\end{equation*} -$$ -

     
    - -and -\( \hat{x}_0=0 \) it is equal \( -\hat{b} \). -The other vectors in the basis will be conjugate to the gradient, -hence the name conjugate gradient method. -

    -
    - - -
    -

    Conjugate gradient method

    -
    - -

    -Let \( \hat{r}_k \) be the residual at the \( k \)-th step: -

     
    -$$ -\begin{equation*} -\hat{r}_k=\hat{b}-\hat{A}\hat{x}_k. -\end{equation*} -$$ -

     
    - -Note that \( \hat{r}_k \) is the negative gradient of \( f \) at -\( \hat{x}=\hat{x}_k \), -so the gradient descent method would be to move in the direction \( \hat{r}_k \). -Here, we insist that the directions \( \hat{p}_k \) are conjugate to each other, -so we take the direction closest to the gradient \( \hat{r}_k \) -under the conjugacy constraint. -This gives the following expression -

     
    -$$ -\begin{equation*} -\hat{p}_{k+1}=\hat{r}_k-\frac{\hat{p}_k^T \hat{A}\hat{r}_k}{\hat{p}_k^T\hat{A}\hat{p}_k} \hat{p}_k. -\end{equation*} -$$ -

     
    -

    -
    - - -
    -

    Conjugate gradient method

    -
    - -

    -We can also compute the residual iteratively as -

     
    -$$ -\begin{equation*} -\hat{r}_{k+1}=\hat{b}-\hat{A}\hat{x}_{k+1}, - \end{equation*} -$$ -

     
    - -which equals -

     
    -$$ -\begin{equation*} -\hat{b}-\hat{A}(\hat{x}_k+\alpha_k\hat{p}_k), - \end{equation*} -$$ -

     
    - -or -

     
    -$$ -\begin{equation*} -(\hat{b}-\hat{A}\hat{x}_k)-\alpha_k\hat{A}\hat{p}_k, - \end{equation*} -$$ -

     
    - -which gives - -

     
    -$$ -\begin{equation*} -\hat{r}_{k+1}=\hat{r}_k-\hat{A}\hat{p}_{k}, - \end{equation*} -$$ -

     
    -

    -
    - -
    diff --git a/doc/pub/Splines/html/Splines-solarized.html b/doc/pub/Splines/html/Splines-solarized.html index b342a25ff..663120f72 100644 --- a/doc/pub/Splines/html/Splines-solarized.html +++ b/doc/pub/Splines/html/Splines-solarized.html @@ -85,48 +85,39 @@ div { text-align: justify; text-justify: inter-word; } ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -639,7 +630,7 @@ When we have found the exact solution, \( \hat{r}=0 \).











    -

    Conjugate gradient method

    +

    Gradient method

    The residual is zero when we reach the minimum of the quadratic equation @@ -657,12 +648,131 @@ given by the second-derivative of the function we want to minimize. This quantity is always positive definite.

    -More details will be added here soon. +









    + +

    Steepest descent method

    + +

    +We denote the initial guess for \( \hat{x} \) as \( \hat{x}_0 \). +We can assume without loss of generality that +$$ +\begin{equation*} +\hat{x}_0=0, +\end{equation*} +$$ + +or consider the system +$$ +\begin{equation*} +\hat{A}\hat{z} = \hat{b}-\hat{A}\hat{x}_0, +\end{equation*} +$$ + +instead.











    -

    Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come

    +

    Steepest descent method

    +
    + +

    +One can show that the solution \( \hat{x} \) is also the unique minimizer of the quadratic form +$$ +\begin{equation*} + f(\hat{x}) = \frac{1}{2}\hat{x}^T\hat{A}\hat{x} - \hat{x}^T \hat{x} , \quad \hat{x}\in\mathbf{R}^n. +\end{equation*} +$$ + +This suggests taking the first basis vector \( \hat{p}_1 \) +to be the gradient of \( f \) at \( \hat{x}=\hat{x}_0 \), +which equals +$$ +\begin{equation*} +\hat{A}\hat{x}_0-\hat{b}, +\end{equation*} +$$ + +and +\( \hat{x}_0=0 \) it is equal \( -\hat{b} \). + + +

    + + +

    +









    + +

    Gradient descent method

    +
    + +

    +Let \( \hat{r}_k \) be the residual at the \( k \)-th step: +$$ +\begin{equation*} +\hat{r}_k=\hat{b}-\hat{A}\hat{x}_k. +\end{equation*} +$$ + +Note that \( \hat{r}_k \) is the negative gradient of \( f \) at +\( \hat{x}=\hat{x}_k \), +so the gradient descent method would be to move in the direction \( \hat{r}_k \). +This gives the following expression +$$ +\begin{equation*} +\hat{p}_{k+1}=\hat{r}_k-\frac{\hat{p}_k^T \hat{A}\hat{r}_k}{\hat{p}_k^T\hat{A}\hat{p}_k} \hat{p}_k. +\end{equation*} +$$ +

    + + +

    +









    + +

    Final expressions

    +
    + +

    +We can also compute the residual iteratively as +$$ +\begin{equation*} +\hat{r}_{k+1}=\hat{b}-\hat{A}\hat{x}_{k+1}, + \end{equation*} +$$ + +which equals +$$ +\begin{equation*} +\hat{b}-\hat{A}(\hat{x}_k+\alpha_k\hat{p}_k), + \end{equation*} +$$ + +or +$$ +\begin{equation*} +(\hat{b}-\hat{A}\hat{x}_k)-\alpha_k\hat{A}\hat{p}_k, + \end{equation*} +$$ + +which gives + +$$ +\begin{equation*} +\hat{r}_{k+1}=\hat{r}_k-\hat{A}\hat{p}_{k}, + \end{equation*} +$$ +

    + + +

    +









    + +

    The Steepest descent algorithm

    + +

    +









    + +

    Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come

    @@ -689,11 +799,7 @@ More details will be added here soon. cout << "The Matrix A that we are using: " << endl; A.Print(); cout << endl; - x = ConjugateGradient(A,b,x0); xsd = SteepestDescent(A,b,x0); - cout << "The approximate solution using Conjugate Gradient is: " << endl; - x.Print(); - cout << endl; cout << "The approximate solution using Steepest Descent is: " << endl; xsd.Print(); cout << endl; @@ -706,7 +812,7 @@ More details will be added here soon.











    -

    The routine for the steepest descent method

    +

    The routine for the steepest descent method

    @@ -742,7 +848,7 @@ More details will be added here soon.

    -

    Revisiting our first homework

    +

    Revisiting our first homework

    We will use linear regression as a case study for the gradient descent @@ -775,7 +881,7 @@ $$

    -

    Gradient descent example

    +

    Gradient descent example

    Let \( \mathbf{y} = (y_1,\cdots,y_n)^T \), \( \mathbf{\hat{y}} = (\hat{y}_1,\cdots,\hat{y}_n)^T \) and \( \beta = (\beta_0, \beta_1)^T \) @@ -800,7 +906,7 @@ and we want to find \( \beta \) such that \( C(\beta) \) is minimized.











    -

    The derivative of the cost/loss function

    +

    The derivative of the cost/loss function

    Computing \( \partial C(\beta) / \partial \beta_0 \) and \( \partial C(\beta) / \partial \beta_1 \) we can show that the gradient can be written as @@ -815,7 +921,7 @@ where \( X \) is the design matrix defined above.











    -

    The Hessian matrix

    +

    The Hessian matrix

    The Hessian matrix of \( C(\beta) \) is given by $$ \hat{H} \equiv \begin{bmatrix} @@ -829,7 +935,7 @@ This result implies that \( C(\beta) \) is a convex function since the matrix \(











    -

    Simple program

    +

    Simple program

    We can now write a program that minimizes \( C(\beta) \) using the gradient descent method with a constant learning rate \( \gamma \) according to @@ -870,7 +976,7 @@ beta_NE = np.dot(Xt_X_inv,Xt_y)











    -

    Gradient Descent Example

    +

    Gradient Descent Example

    Another simple example is here @@ -919,7 +1025,7 @@ plt.show()











    -

    And a corresponding example using scikit-learn

    +

    And a corresponding example using scikit-learn

    @@ -943,7 +1049,7 @@ sgdreg.fit(x,y.ravel())

    -

    Gradient descent and Ridge

    +

    Gradient descent and Ridge

    We have also discussed Ridge regression where the loss function contains a regularized given by the \( L_2 \) norm of \( \beta \), @@ -1000,7 +1106,7 @@ beta_ridge = np.dot(Z,np.dot(X.T,y))











    -

    Stochastic Gradient Descent

    +

    Stochastic Gradient Descent

    Stochastic gradient descent (SGD) and variants thereof address some of @@ -1018,7 +1124,7 @@ $$











    -

    Computation of gradients

    +

    Computation of gradients

    This in turn means that the gradient can be @@ -1038,7 +1144,7 @@ minibatches. We denote these minibatches by \( B_k \) where











    -

    SGD example

    +

    SGD example

    As an example, suppose we have \( 10 \) data points \( (\mathbf{x}_1,\cdots, \mathbf{x}_{10}) \) and we choose to have \( M=5 \) minibathces, then each minibatch contains two data points. In particular we have @@ -1062,7 +1168,7 @@ $$











    -

    The gradient step

    +

    The gradient step

    Thus a gradient descent step now looks like @@ -1081,7 +1187,7 @@ the number of minibatches, as exemplified in the code below.











    -

    Simple example code

    +

    Simple example code

    @@ -1113,7 +1219,7 @@ all \( n \) datapoints.











    -

    When do we stop?

    +

    When do we stop?

    A natural question is when do we stop the search for a new minimum? @@ -1130,7 +1236,7 @@ gave the lowest value.











    -

    Slightly different approach

    +

    Slightly different approach

    Another approach is to let the step length \( \gamma_j \) depend on the @@ -1175,324 +1281,6 @@ j = 0 print("gamma_j after %d epochs: %g" % (n_epochs,gamma_j))

    -

    -









    - -

    Conjugate gradient (CG) method

    -
    - -

    -The success of the CG method for finding solutions of non-linear problems is based -on the theory of conjugate gradients for linear systems of equations. It belongs -to the class of iterative methods for solving problems from linear algebra of the type -$$ -\begin{equation*} - \hat{A}\hat{x} = \hat{b}. -\end{equation*} -$$ - -In the iterative process we end up with a problem like - -$$ -\begin{equation*} - \hat{r}= \hat{b}-\hat{A}\hat{x}, -\end{equation*} -$$ - -where \( \hat{r} \) is the so-called residual or error in the iterative process. - -

    -When we have found the exact solution, \( \hat{r}=0 \). -

    - - -

    -









    - -

    Conjugate gradient method

    -
    - -

    - -

    -The residual is zero when we reach the minimum of the quadratic equation -$$ -\begin{equation*} - P(\hat{x})=\frac{1}{2}\hat{x}^T\hat{A}\hat{x} - \hat{x}^T\hat{b}, -\end{equation*} -$$ - -with the constraint that the matrix \( \hat{A} \) is positive definite and symmetric. -If we search for a minimum of the quantum mechanical variance, then the matrix -\( \hat{A} \), which is called the Hessian, is given by the second-derivative of the function we want to minimize. This quantity is always positive definite. In our case this corresponds normally to the second derivative of the energy. -

    - - -

    -









    - -

    Conjugate gradient method, Newton's method first

    -
    - -

    -We seek the minimum of the energy or the variance as function of various variational parameters. -In our case we have thus a function \( f \) whose minimum we are seeking. -In Newton's method we set \( \nabla f = 0 \) and we can thus compute the next iteration point -$$ -\begin{equation*} -\hat{x}-\hat{x}_i=\hat{A}^{-1}\nabla f(\hat{x}_i). -\end{equation*} -$$ - -Subtracting this equation from that of \( \hat{x}_{i+1} \) we have -$$ -\begin{equation*} -\hat{x}_{i+1}-\hat{x}_i=\hat{A}^{-1}(\nabla f(\hat{x}_{i+1})-\nabla f(\hat{x}_i)). -\end{equation*} -$$ -

    - - -

    -









    - -

    Conjugate gradient method

    -
    - -

    -In the CG method we define so-called conjugate directions and two vectors -\( \hat{s} \) and \( \hat{t} \) -are said to be -conjugate if -$$ -\begin{equation*} -\hat{s}^T\hat{A}\hat{t}= 0. -\end{equation*} -$$ - -The philosophy of the CG method is to perform searches in various conjugate directions -of our vectors \( \hat{x}_i \) obeying the above criterion, namely -$$ -\begin{equation*} -\hat{x}_i^T\hat{A}\hat{x}_j= 0. -\end{equation*} -$$ - -Two vectors are conjugate if they are orthogonal with respect to -this inner product. Being conjugate is a symmetric relation: if \( \hat{s} \) is conjugate to \( \hat{t} \), then \( \hat{t} \) is conjugate to \( \hat{s} \). -

    - - -

    -









    - -

    Conjugate gradient method

    -
    - -

    -An example is given by the eigenvectors of the matrix -$$ -\begin{equation*} -\hat{v}_i^T\hat{A}\hat{v}_j= \lambda\hat{v}_i^T\hat{v}_j, -\end{equation*} -$$ - -which is zero unless \( i=j \). -

    - - -

    -









    - -

    Conjugate gradient method

    -
    - -

    -Assume now that we have a symmetric positive-definite matrix \( \hat{A} \) of size -\( n\times n \). At each iteration \( i+1 \) we obtain the conjugate direction of a vector -$$ -\begin{equation*} -\hat{x}_{i+1}=\hat{x}_{i}+\alpha_i\hat{p}_{i}. -\end{equation*} -$$ - -We assume that \( \hat{p}_{i} \) is a sequence of \( n \) mutually conjugate directions. -Then the \( \hat{p}_{i} \) form a basis of \( R^n \) and we can expand the solution -$ \hat{A}\hat{x} = \hat{b}$ in this basis, namely - -$$ -\begin{equation*} - \hat{x} = \sum^{n}_{i=1} \alpha_i \hat{p}_i. -\end{equation*} -$$ -

    - - -

    -









    - -

    Conjugate gradient method

    -
    - -

    -The coefficients are given by -$$ -\begin{equation*} - \mathbf{A}\mathbf{x} = \sum^{n}_{i=1} \alpha_i \mathbf{A} \mathbf{p}_i = \mathbf{b}. -\end{equation*} -$$ - -Multiplying with \( \hat{p}_k^T \) from the left gives - -$$ -\begin{equation*} - \hat{p}_k^T \hat{A}\hat{x} = \sum^{n}_{i=1} \alpha_i\hat{p}_k^T \hat{A}\hat{p}_i= \hat{p}_k^T \hat{b}, -\end{equation*} -$$ - -and we can define the coefficients \( \alpha_k \) as - -$$ -\begin{equation*} - \alpha_k = \frac{\hat{p}_k^T \hat{b}}{\hat{p}_k^T \hat{A} \hat{p}_k} -\end{equation*} -$$ -

    - - -

    -









    - -

    Conjugate gradient method and iterations

    -
    - -

    - -

    -If we choose the conjugate vectors \( \hat{p}_k \) carefully, -then we may not need all of them to obtain a good approximation to the solution -\( \hat{x} \). -We want to regard the conjugate gradient method as an iterative method. -This will us to solve systems where \( n \) is so large that the direct -method would take too much time. - -

    -We denote the initial guess for \( \hat{x} \) as \( \hat{x}_0 \). -We can assume without loss of generality that -$$ -\begin{equation*} -\hat{x}_0=0, -\end{equation*} -$$ - -or consider the system -$$ -\begin{equation*} -\hat{A}\hat{z} = \hat{b}-\hat{A}\hat{x}_0, -\end{equation*} -$$ - -instead. -

    - - -

    -









    - -

    Conjugate gradient method

    -
    - -

    -One can show that the solution \( \hat{x} \) is also the unique minimizer of the quadratic form -$$ -\begin{equation*} - f(\hat{x}) = \frac{1}{2}\hat{x}^T\hat{A}\hat{x} - \hat{x}^T \hat{x} , \quad \hat{x}\in\mathbf{R}^n. -\end{equation*} -$$ - -This suggests taking the first basis vector \( \hat{p}_1 \) -to be the gradient of \( f \) at \( \hat{x}=\hat{x}_0 \), -which equals -$$ -\begin{equation*} -\hat{A}\hat{x}_0-\hat{b}, -\end{equation*} -$$ - -and -\( \hat{x}_0=0 \) it is equal \( -\hat{b} \). -The other vectors in the basis will be conjugate to the gradient, -hence the name conjugate gradient method. -

    - - -

    -









    - -

    Conjugate gradient method

    -
    - -

    -Let \( \hat{r}_k \) be the residual at the \( k \)-th step: -$$ -\begin{equation*} -\hat{r}_k=\hat{b}-\hat{A}\hat{x}_k. -\end{equation*} -$$ - -Note that \( \hat{r}_k \) is the negative gradient of \( f \) at -\( \hat{x}=\hat{x}_k \), -so the gradient descent method would be to move in the direction \( \hat{r}_k \). -Here, we insist that the directions \( \hat{p}_k \) are conjugate to each other, -so we take the direction closest to the gradient \( \hat{r}_k \) -under the conjugacy constraint. -This gives the following expression -$$ -\begin{equation*} -\hat{p}_{k+1}=\hat{r}_k-\frac{\hat{p}_k^T \hat{A}\hat{r}_k}{\hat{p}_k^T\hat{A}\hat{p}_k} \hat{p}_k. -\end{equation*} -$$ -

    - - -

    -









    - -

    Conjugate gradient method

    -
    - -

    -We can also compute the residual iteratively as -$$ -\begin{equation*} -\hat{r}_{k+1}=\hat{b}-\hat{A}\hat{x}_{k+1}, - \end{equation*} -$$ - -which equals -$$ -\begin{equation*} -\hat{b}-\hat{A}(\hat{x}_k+\alpha_k\hat{p}_k), - \end{equation*} -$$ - -or -$$ -\begin{equation*} -(\hat{b}-\hat{A}\hat{x}_k)-\alpha_k\hat{A}\hat{p}_k, - \end{equation*} -$$ - -which gives - -$$ -\begin{equation*} -\hat{r}_{k+1}=\hat{r}_k-\hat{A}\hat{p}_{k}, - \end{equation*} -$$ -

    - -

    diff --git a/doc/pub/Splines/html/Splines.html b/doc/pub/Splines/html/Splines.html index 6feb11062..30682d1e4 100644 --- a/doc/pub/Splines/html/Splines.html +++ b/doc/pub/Splines/html/Splines.html @@ -90,48 +90,39 @@ div { text-align: justify; text-justify: inter-word; } ('More on convex functions', 2, None, '___sec15'), ('Some simple problems', 2, None, '___sec16'), ('Standard steepest descent', 2, None, '___sec17'), - ('Conjugate gradient method', 2, None, '___sec18'), + ('Gradient method', 2, None, '___sec18'), + ('Steepest descent method', 2, None, '___sec19'), + ('Steepest descent method', 2, None, '___sec20'), + ('Gradient descent method', 2, None, '___sec21'), + ('Final expressions', 2, None, '___sec22'), + ('The Steepest descent algorithm', 2, None, '___sec23'), ('Simple codes for steepest descent and conjugate gradient ' 'using a $2\\times 2$ matrix, in c++, Python code to come', 2, None, - '___sec19'), + '___sec24'), ('The routine for the steepest descent method', 2, None, - '___sec20'), - ('Revisiting our first homework', 2, None, '___sec21'), - ('Gradient descent example', 2, None, '___sec22'), - ('The derivative of the cost/loss function', 2, None, '___sec23'), - ('The Hessian matrix', 2, None, '___sec24'), - ('Simple program', 2, None, '___sec25'), - ('Gradient Descent Example', 2, None, '___sec26'), + '___sec25'), + ('Revisiting our first homework', 2, None, '___sec26'), + ('Gradient descent example', 2, None, '___sec27'), + ('The derivative of the cost/loss function', 2, None, '___sec28'), + ('The Hessian matrix', 2, None, '___sec29'), + ('Simple program', 2, None, '___sec30'), + ('Gradient Descent Example', 2, None, '___sec31'), ('And a corresponding example using _scikit-learn_', 2, None, - '___sec27'), - ('Gradient descent and Ridge', 2, None, '___sec28'), - ('Stochastic Gradient Descent', 2, None, '___sec29'), - ('Computation of gradients', 2, None, '___sec30'), - ('SGD example', 2, None, '___sec31'), - ('The gradient step', 2, None, '___sec32'), - ('Simple example code', 2, None, '___sec33'), - ('When do we stop?', 2, None, '___sec34'), - ('Slightly different approach', 2, None, '___sec35'), - ('Conjugate gradient (CG) method', 2, None, '___sec36'), - ('Conjugate gradient method', 2, None, '___sec37'), - ("Conjugate gradient method, Newton's method first", - 2, - None, - '___sec38'), - ('Conjugate gradient method', 2, None, '___sec39'), - ('Conjugate gradient method', 2, None, '___sec40'), - ('Conjugate gradient method', 2, None, '___sec41'), - ('Conjugate gradient method', 2, None, '___sec42'), - ('Conjugate gradient method and iterations', 2, None, '___sec43'), - ('Conjugate gradient method', 2, None, '___sec44'), - ('Conjugate gradient method', 2, None, '___sec45'), - ('Conjugate gradient method', 2, None, '___sec46')]} + '___sec32'), + ('Gradient descent and Ridge', 2, None, '___sec33'), + ('Stochastic Gradient Descent', 2, None, '___sec34'), + ('Computation of gradients', 2, None, '___sec35'), + ('SGD example', 2, None, '___sec36'), + ('The gradient step', 2, None, '___sec37'), + ('Simple example code', 2, None, '___sec38'), + ('When do we stop?', 2, None, '___sec39'), + ('Slightly different approach', 2, None, '___sec40')]} end of tocinfo --> @@ -644,7 +635,7 @@ When we have found the exact solution, \( \hat{r}=0 \).











    -

    Conjugate gradient method

    +

    Gradient method

    The residual is zero when we reach the minimum of the quadratic equation @@ -662,12 +653,131 @@ given by the second-derivative of the function we want to minimize. This quantity is always positive definite.

    -More details will be added here soon. +









    + +

    Steepest descent method

    + +

    +We denote the initial guess for \( \hat{x} \) as \( \hat{x}_0 \). +We can assume without loss of generality that +$$ +\begin{equation*} +\hat{x}_0=0, +\end{equation*} +$$ + +or consider the system +$$ +\begin{equation*} +\hat{A}\hat{z} = \hat{b}-\hat{A}\hat{x}_0, +\end{equation*} +$$ + +instead.











    -

    Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come

    +

    Steepest descent method

    +
    + +

    +One can show that the solution \( \hat{x} \) is also the unique minimizer of the quadratic form +$$ +\begin{equation*} + f(\hat{x}) = \frac{1}{2}\hat{x}^T\hat{A}\hat{x} - \hat{x}^T \hat{x} , \quad \hat{x}\in\mathbf{R}^n. +\end{equation*} +$$ + +This suggests taking the first basis vector \( \hat{p}_1 \) +to be the gradient of \( f \) at \( \hat{x}=\hat{x}_0 \), +which equals +$$ +\begin{equation*} +\hat{A}\hat{x}_0-\hat{b}, +\end{equation*} +$$ + +and +\( \hat{x}_0=0 \) it is equal \( -\hat{b} \). + + +

    + + +

    +









    + +

    Gradient descent method

    +
    + +

    +Let \( \hat{r}_k \) be the residual at the \( k \)-th step: +$$ +\begin{equation*} +\hat{r}_k=\hat{b}-\hat{A}\hat{x}_k. +\end{equation*} +$$ + +Note that \( \hat{r}_k \) is the negative gradient of \( f \) at +\( \hat{x}=\hat{x}_k \), +so the gradient descent method would be to move in the direction \( \hat{r}_k \). +This gives the following expression +$$ +\begin{equation*} +\hat{p}_{k+1}=\hat{r}_k-\frac{\hat{p}_k^T \hat{A}\hat{r}_k}{\hat{p}_k^T\hat{A}\hat{p}_k} \hat{p}_k. +\end{equation*} +$$ +

    + + +

    +









    + +

    Final expressions

    +
    + +

    +We can also compute the residual iteratively as +$$ +\begin{equation*} +\hat{r}_{k+1}=\hat{b}-\hat{A}\hat{x}_{k+1}, + \end{equation*} +$$ + +which equals +$$ +\begin{equation*} +\hat{b}-\hat{A}(\hat{x}_k+\alpha_k\hat{p}_k), + \end{equation*} +$$ + +or +$$ +\begin{equation*} +(\hat{b}-\hat{A}\hat{x}_k)-\alpha_k\hat{A}\hat{p}_k, + \end{equation*} +$$ + +which gives + +$$ +\begin{equation*} +\hat{r}_{k+1}=\hat{r}_k-\hat{A}\hat{p}_{k}, + \end{equation*} +$$ +

    + + +

    +









    + +

    The Steepest descent algorithm

    + +

    +









    + +

    Simple codes for steepest descent and conjugate gradient using a \( 2\times 2 \) matrix, in c++, Python code to come

    @@ -694,11 +804,7 @@ More details will be added here soon. cout << "The Matrix A that we are using: " << endl; A.Print(); cout << endl; - x = ConjugateGradient(A,b,x0); xsd = SteepestDescent(A,b,x0); - cout << "The approximate solution using Conjugate Gradient is: " << endl; - x.Print(); - cout << endl; cout << "The approximate solution using Steepest Descent is: " << endl; xsd.Print(); cout << endl; @@ -711,7 +817,7 @@ More details will be added here soon.











    -

    The routine for the steepest descent method

    +

    The routine for the steepest descent method

    @@ -747,7 +853,7 @@ More details will be added here soon.

    -

    Revisiting our first homework

    +

    Revisiting our first homework

    We will use linear regression as a case study for the gradient descent @@ -780,7 +886,7 @@ $$

    -

    Gradient descent example

    +

    Gradient descent example

    Let \( \mathbf{y} = (y_1,\cdots,y_n)^T \), \( \mathbf{\hat{y}} = (\hat{y}_1,\cdots,\hat{y}_n)^T \) and \( \beta = (\beta_0, \beta_1)^T \) @@ -805,7 +911,7 @@ and we want to find \( \beta \) such that \( C(\beta) \) is minimized.











    -

    The derivative of the cost/loss function

    +

    The derivative of the cost/loss function

    Computing \( \partial C(\beta) / \partial \beta_0 \) and \( \partial C(\beta) / \partial \beta_1 \) we can show that the gradient can be written as @@ -820,7 +926,7 @@ where \( X \) is the design matrix defined above.











    -

    The Hessian matrix

    +

    The Hessian matrix

    The Hessian matrix of \( C(\beta) \) is given by $$ \hat{H} \equiv \begin{bmatrix} @@ -834,7 +940,7 @@ This result implies that \( C(\beta) \) is a convex function since the matrix \(











    -

    Simple program

    +

    Simple program

    We can now write a program that minimizes \( C(\beta) \) using the gradient descent method with a constant learning rate \( \gamma \) according to @@ -875,7 +981,7 @@ beta_NE = np.









    -

    Gradient Descent Example

    +

    Gradient Descent Example

    Another simple example is here @@ -924,7 +1030,7 @@ plt.show()











    -

    And a corresponding example using scikit-learn

    +

    And a corresponding example using scikit-learn

    @@ -948,7 +1054,7 @@ sgdreg.fit(x,y.

    -

    Gradient descent and Ridge

    +

    Gradient descent and Ridge

    We have also discussed Ridge regression where the loss function contains a regularized given by the \( L_2 \) norm of \( \beta \), @@ -1005,7 +1111,7 @@ beta_ridge = np











    -

    Stochastic Gradient Descent

    +

    Stochastic Gradient Descent

    Stochastic gradient descent (SGD) and variants thereof address some of @@ -1023,7 +1129,7 @@ $$











    -

    Computation of gradients

    +

    Computation of gradients

    This in turn means that the gradient can be @@ -1043,7 +1149,7 @@ minibatches. We denote these minibatches by \( B_k \) where











    -

    SGD example

    +

    SGD example

    As an example, suppose we have \( 10 \) data points \( (\mathbf{x}_1,\cdots, \mathbf{x}_{10}) \) and we choose to have \( M=5 \) minibathces, then each minibatch contains two data points. In particular we have @@ -1067,7 +1173,7 @@ $$











    -

    The gradient step

    +

    The gradient step

    Thus a gradient descent step now looks like @@ -1086,7 +1192,7 @@ the number of minibatches, as exemplified in the code below.











    -

    Simple example code

    +

    Simple example code

    @@ -1118,7 +1224,7 @@ all \( n \) datapoints.











    -

    When do we stop?

    +

    When do we stop?

    A natural question is when do we stop the search for a new minimum? @@ -1135,7 +1241,7 @@ gave the lowest value.











    -

    Slightly different approach

    +

    Slightly different approach

    Another approach is to let the step length \( \gamma_j \) depend on the @@ -1180,324 +1286,6 @@ j = 0 print("gamma_j after %d epochs: %g" % (n_epochs,gamma_j))

    -

    -









    - -

    Conjugate gradient (CG) method

    -
    - -

    -The success of the CG method for finding solutions of non-linear problems is based -on the theory of conjugate gradients for linear systems of equations. It belongs -to the class of iterative methods for solving problems from linear algebra of the type -$$ -\begin{equation*} - \hat{A}\hat{x} = \hat{b}. -\end{equation*} -$$ - -In the iterative process we end up with a problem like - -$$ -\begin{equation*} - \hat{r}= \hat{b}-\hat{A}\hat{x}, -\end{equation*} -$$ - -where \( \hat{r} \) is the so-called residual or error in the iterative process. - -

    -When we have found the exact solution, \( \hat{r}=0 \). -

    - - -

    -









    - -

    Conjugate gradient method

    -
    - -

    - -

    -The residual is zero when we reach the minimum of the quadratic equation -$$ -\begin{equation*} - P(\hat{x})=\frac{1}{2}\hat{x}^T\hat{A}\hat{x} - \hat{x}^T\hat{b}, -\end{equation*} -$$ - -with the constraint that the matrix \( \hat{A} \) is positive definite and symmetric. -If we search for a minimum of the quantum mechanical variance, then the matrix -\( \hat{A} \), which is called the Hessian, is given by the second-derivative of the function we want to minimize. This quantity is always positive definite. In our case this corresponds normally to the second derivative of the energy. -

    - - -

    -









    - -

    Conjugate gradient method, Newton's method first

    -
    - -

    -We seek the minimum of the energy or the variance as function of various variational parameters. -In our case we have thus a function \( f \) whose minimum we are seeking. -In Newton's method we set \( \nabla f = 0 \) and we can thus compute the next iteration point -$$ -\begin{equation*} -\hat{x}-\hat{x}_i=\hat{A}^{-1}\nabla f(\hat{x}_i). -\end{equation*} -$$ - -Subtracting this equation from that of \( \hat{x}_{i+1} \) we have -$$ -\begin{equation*} -\hat{x}_{i+1}-\hat{x}_i=\hat{A}^{-1}(\nabla f(\hat{x}_{i+1})-\nabla f(\hat{x}_i)). -\end{equation*} -$$ -

    - - -

    -









    - -

    Conjugate gradient method

    -
    - -

    -In the CG method we define so-called conjugate directions and two vectors -\( \hat{s} \) and \( \hat{t} \) -are said to be -conjugate if -$$ -\begin{equation*} -\hat{s}^T\hat{A}\hat{t}= 0. -\end{equation*} -$$ - -The philosophy of the CG method is to perform searches in various conjugate directions -of our vectors \( \hat{x}_i \) obeying the above criterion, namely -$$ -\begin{equation*} -\hat{x}_i^T\hat{A}\hat{x}_j= 0. -\end{equation*} -$$ - -Two vectors are conjugate if they are orthogonal with respect to -this inner product. Being conjugate is a symmetric relation: if \( \hat{s} \) is conjugate to \( \hat{t} \), then \( \hat{t} \) is conjugate to \( \hat{s} \). -

    - - -

    -









    - -

    Conjugate gradient method

    -
    - -

    -An example is given by the eigenvectors of the matrix -$$ -\begin{equation*} -\hat{v}_i^T\hat{A}\hat{v}_j= \lambda\hat{v}_i^T\hat{v}_j, -\end{equation*} -$$ - -which is zero unless \( i=j \). -

    - - -

    -









    - -

    Conjugate gradient method

    -
    - -

    -Assume now that we have a symmetric positive-definite matrix \( \hat{A} \) of size -\( n\times n \). At each iteration \( i+1 \) we obtain the conjugate direction of a vector -$$ -\begin{equation*} -\hat{x}_{i+1}=\hat{x}_{i}+\alpha_i\hat{p}_{i}. -\end{equation*} -$$ - -We assume that \( \hat{p}_{i} \) is a sequence of \( n \) mutually conjugate directions. -Then the \( \hat{p}_{i} \) form a basis of \( R^n \) and we can expand the solution -$ \hat{A}\hat{x} = \hat{b}$ in this basis, namely - -$$ -\begin{equation*} - \hat{x} = \sum^{n}_{i=1} \alpha_i \hat{p}_i. -\end{equation*} -$$ -

    - - -

    -









    - -

    Conjugate gradient method

    -
    - -

    -The coefficients are given by -$$ -\begin{equation*} - \mathbf{A}\mathbf{x} = \sum^{n}_{i=1} \alpha_i \mathbf{A} \mathbf{p}_i = \mathbf{b}. -\end{equation*} -$$ - -Multiplying with \( \hat{p}_k^T \) from the left gives - -$$ -\begin{equation*} - \hat{p}_k^T \hat{A}\hat{x} = \sum^{n}_{i=1} \alpha_i\hat{p}_k^T \hat{A}\hat{p}_i= \hat{p}_k^T \hat{b}, -\end{equation*} -$$ - -and we can define the coefficients \( \alpha_k \) as - -$$ -\begin{equation*} - \alpha_k = \frac{\hat{p}_k^T \hat{b}}{\hat{p}_k^T \hat{A} \hat{p}_k} -\end{equation*} -$$ -

    - - -

    -









    - -

    Conjugate gradient method and iterations

    -
    - -

    - -

    -If we choose the conjugate vectors \( \hat{p}_k \) carefully, -then we may not need all of them to obtain a good approximation to the solution -\( \hat{x} \). -We want to regard the conjugate gradient method as an iterative method. -This will us to solve systems where \( n \) is so large that the direct -method would take too much time. - -

    -We denote the initial guess for \( \hat{x} \) as \( \hat{x}_0 \). -We can assume without loss of generality that -$$ -\begin{equation*} -\hat{x}_0=0, -\end{equation*} -$$ - -or consider the system -$$ -\begin{equation*} -\hat{A}\hat{z} = \hat{b}-\hat{A}\hat{x}_0, -\end{equation*} -$$ - -instead. -

    - - -

    -









    - -

    Conjugate gradient method

    -
    - -

    -One can show that the solution \( \hat{x} \) is also the unique minimizer of the quadratic form -$$ -\begin{equation*} - f(\hat{x}) = \frac{1}{2}\hat{x}^T\hat{A}\hat{x} - \hat{x}^T \hat{x} , \quad \hat{x}\in\mathbf{R}^n. -\end{equation*} -$$ - -This suggests taking the first basis vector \( \hat{p}_1 \) -to be the gradient of \( f \) at \( \hat{x}=\hat{x}_0 \), -which equals -$$ -\begin{equation*} -\hat{A}\hat{x}_0-\hat{b}, -\end{equation*} -$$ - -and -\( \hat{x}_0=0 \) it is equal \( -\hat{b} \). -The other vectors in the basis will be conjugate to the gradient, -hence the name conjugate gradient method. -

    - - -

    -









    - -

    Conjugate gradient method

    -
    - -

    -Let \( \hat{r}_k \) be the residual at the \( k \)-th step: -$$ -\begin{equation*} -\hat{r}_k=\hat{b}-\hat{A}\hat{x}_k. -\end{equation*} -$$ - -Note that \( \hat{r}_k \) is the negative gradient of \( f \) at -\( \hat{x}=\hat{x}_k \), -so the gradient descent method would be to move in the direction \( \hat{r}_k \). -Here, we insist that the directions \( \hat{p}_k \) are conjugate to each other, -so we take the direction closest to the gradient \( \hat{r}_k \) -under the conjugacy constraint. -This gives the following expression -$$ -\begin{equation*} -\hat{p}_{k+1}=\hat{r}_k-\frac{\hat{p}_k^T \hat{A}\hat{r}_k}{\hat{p}_k^T\hat{A}\hat{p}_k} \hat{p}_k. -\end{equation*} -$$ -

    - - -

    -









    - -

    Conjugate gradient method

    -
    - -

    -We can also compute the residual iteratively as -$$ -\begin{equation*} -\hat{r}_{k+1}=\hat{b}-\hat{A}\hat{x}_{k+1}, - \end{equation*} -$$ - -which equals -$$ -\begin{equation*} -\hat{b}-\hat{A}(\hat{x}_k+\alpha_k\hat{p}_k), - \end{equation*} -$$ - -or -$$ -\begin{equation*} -(\hat{b}-\hat{A}\hat{x}_k)-\alpha_k\hat{A}\hat{p}_k, - \end{equation*} -$$ - -which gives - -$$ -\begin{equation*} -\hat{r}_{k+1}=\hat{r}_k-\hat{A}\hat{p}_{k}, - \end{equation*} -$$ -

    - -

    diff --git a/doc/pub/Splines/ipynb/Splines.ipynb b/doc/pub/Splines/ipynb/Splines.ipynb index a46ac7740..b6216c22c 100644 --- a/doc/pub/Splines/ipynb/Splines.ipynb +++ b/doc/pub/Splines/ipynb/Splines.ipynb @@ -585,7 +585,7 @@ "\n", "When we have found the exact solution, $\\hat{r}=0$.\n", "\n", - "## Conjugate gradient method\n", + "## Gradient method\n", "\n", "The residual is zero when we reach the minimum of the quadratic equation" ] @@ -609,7 +609,189 @@ "given by the second-derivative of the function we want to minimize.\n", "This quantity is always positive definite. \n", "\n", - "More details will be added here soon.\n", + "\n", + "## Steepest descent method\n", + "\n", + "We denote the initial guess for $\\hat{x}$ as $\\hat{x}_0$. \n", + "We can assume without loss of generality that" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\hat{x}_0=0,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "or consider the system" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\hat{A}\\hat{z} = \\hat{b}-\\hat{A}\\hat{x}_0,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "instead.\n", + "\n", + "\n", + "## Steepest descent method\n", + "One can show that the solution $\\hat{x}$ is also the unique minimizer of the quadratic form" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "f(\\hat{x}) = \\frac{1}{2}\\hat{x}^T\\hat{A}\\hat{x} - \\hat{x}^T \\hat{x} , \\quad \\hat{x}\\in\\mathbf{R}^n.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This suggests taking the first basis vector $\\hat{p}_1$ \n", + "to be the gradient of $f$ at $\\hat{x}=\\hat{x}_0$, \n", + "which equals" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\hat{A}\\hat{x}_0-\\hat{b},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "and \n", + "$\\hat{x}_0=0$ it is equal $-\\hat{b}$.\n", + "\n", + "\n", + "\n", + "\n", + "## Gradient descent method\n", + "Let $\\hat{r}_k$ be the residual at the $k$-th step:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\hat{r}_k=\\hat{b}-\\hat{A}\\hat{x}_k.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that $\\hat{r}_k$ is the negative gradient of $f$ at \n", + "$\\hat{x}=\\hat{x}_k$, \n", + "so the gradient descent method would be to move in the direction $\\hat{r}_k$. \n", + "This gives the following expression" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\hat{p}_{k+1}=\\hat{r}_k-\\frac{\\hat{p}_k^T \\hat{A}\\hat{r}_k}{\\hat{p}_k^T\\hat{A}\\hat{p}_k} \\hat{p}_k.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Final expressions\n", + "We can also compute the residual iteratively as" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\hat{r}_{k+1}=\\hat{b}-\\hat{A}\\hat{x}_{k+1},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "which equals" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\hat{b}-\\hat{A}(\\hat{x}_k+\\alpha_k\\hat{p}_k),\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "or" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "(\\hat{b}-\\hat{A}\\hat{x}_k)-\\alpha_k\\hat{A}\\hat{p}_k,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "which gives" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\hat{r}_{k+1}=\\hat{r}_k-\\hat{A}\\hat{p}_{k},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The Steepest descent algorithm\n", + "\n", "\n", "## Simple codes for steepest descent and conjugate gradient using a $2\\times 2$ matrix, in c++, Python code to come" ] @@ -638,11 +820,7 @@ " cout << \"The Matrix A that we are using: \" << endl;\n", " A.Print();\n", " cout << endl;\n", - " x = ConjugateGradient(A,b,x0);\n", " xsd = SteepestDescent(A,b,x0);\n", - " cout << \"The approximate solution using Conjugate Gradient is: \" << endl;\n", - " x.Print();\n", - " cout << endl;\n", " cout << \"The approximate solution using Steepest Descent is: \" << endl;\n", " xsd.Print();\n", " cout << endl;\n", @@ -1289,454 +1467,6 @@ "\n", "print(\"gamma_j after %d epochs: %g\" % (n_epochs,gamma_j))" ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Conjugate gradient (CG) method\n", - "The success of the CG method for finding solutions of non-linear problems is based\n", - "on the theory of conjugate gradients for linear systems of equations. It belongs\n", - "to the class of iterative methods for solving problems from linear algebra of the type" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\hat{A}\\hat{x} = \\hat{b}.\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In the iterative process we end up with a problem like" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\hat{r}= \\hat{b}-\\hat{A}\\hat{x},\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "where $\\hat{r}$ is the so-called residual or error in the iterative process.\n", - "\n", - "When we have found the exact solution, $\\hat{r}=0$.\n", - "\n", - "\n", - "\n", - "\n", - "## Conjugate gradient method\n", - "\n", - "The residual is zero when we reach the minimum of the quadratic equation" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "P(\\hat{x})=\\frac{1}{2}\\hat{x}^T\\hat{A}\\hat{x} - \\hat{x}^T\\hat{b},\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "with the constraint that the matrix $\\hat{A}$ is positive definite and symmetric.\n", - "If we search for a minimum of the quantum mechanical variance, then the matrix \n", - "$\\hat{A}$, which is called the Hessian, is given by the second-derivative of the function we want to minimize. This quantity is always positive definite. In our case this corresponds normally to the second derivative of the energy.\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "## Conjugate gradient method, Newton's method first\n", - "We seek the minimum of the energy or the variance as function of various variational parameters. \n", - "In our case we have thus a function $f$ whose minimum we are seeking.\n", - "In Newton's method we set $\\nabla f = 0$ and we can thus compute the next iteration point" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\hat{x}-\\hat{x}_i=\\hat{A}^{-1}\\nabla f(\\hat{x}_i).\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Subtracting this equation from that of $\\hat{x}_{i+1}$ we have" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\hat{x}_{i+1}-\\hat{x}_i=\\hat{A}^{-1}(\\nabla f(\\hat{x}_{i+1})-\\nabla f(\\hat{x}_i)).\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Conjugate gradient method\n", - "In the CG method we define so-called conjugate directions and two vectors \n", - "$\\hat{s}$ and $\\hat{t}$\n", - "are said to be\n", - "conjugate if" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\hat{s}^T\\hat{A}\\hat{t}= 0.\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The philosophy of the CG method is to perform searches in various conjugate directions\n", - "of our vectors $\\hat{x}_i$ obeying the above criterion, namely" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\hat{x}_i^T\\hat{A}\\hat{x}_j= 0.\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Two vectors are conjugate if they are orthogonal with respect to \n", - "this inner product. Being conjugate is a symmetric relation: if $\\hat{s}$ is conjugate to $\\hat{t}$, then $\\hat{t}$ is conjugate to $\\hat{s}$.\n", - "\n", - "\n", - "\n", - "## Conjugate gradient method\n", - "An example is given by the eigenvectors of the matrix" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\hat{v}_i^T\\hat{A}\\hat{v}_j= \\lambda\\hat{v}_i^T\\hat{v}_j,\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "which is zero unless $i=j$.\n", - "\n", - "\n", - "\n", - "\n", - "## Conjugate gradient method\n", - "Assume now that we have a symmetric positive-definite matrix $\\hat{A}$ of size\n", - "$n\\times n$. At each iteration $i+1$ we obtain the conjugate direction of a vector" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\hat{x}_{i+1}=\\hat{x}_{i}+\\alpha_i\\hat{p}_{i}.\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We assume that $\\hat{p}_{i}$ is a sequence of $n$ mutually conjugate directions. \n", - "Then the $\\hat{p}_{i}$ form a basis of $R^n$ and we can expand the solution \n", - "$ \\hat{A}\\hat{x} = \\hat{b}$ in this basis, namely" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\hat{x} = \\sum^{n}_{i=1} \\alpha_i \\hat{p}_i.\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Conjugate gradient method\n", - "The coefficients are given by" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\mathbf{A}\\mathbf{x} = \\sum^{n}_{i=1} \\alpha_i \\mathbf{A} \\mathbf{p}_i = \\mathbf{b}.\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Multiplying with $\\hat{p}_k^T$ from the left gives" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\hat{p}_k^T \\hat{A}\\hat{x} = \\sum^{n}_{i=1} \\alpha_i\\hat{p}_k^T \\hat{A}\\hat{p}_i= \\hat{p}_k^T \\hat{b},\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "and we can define the coefficients $\\alpha_k$ as" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\alpha_k = \\frac{\\hat{p}_k^T \\hat{b}}{\\hat{p}_k^T \\hat{A} \\hat{p}_k}\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Conjugate gradient method and iterations\n", - "\n", - "If we choose the conjugate vectors $\\hat{p}_k$ carefully, \n", - "then we may not need all of them to obtain a good approximation to the solution \n", - "$\\hat{x}$. \n", - "We want to regard the conjugate gradient method as an iterative method. \n", - "This will us to solve systems where $n$ is so large that the direct \n", - "method would take too much time.\n", - "\n", - "We denote the initial guess for $\\hat{x}$ as $\\hat{x}_0$. \n", - "We can assume without loss of generality that" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\hat{x}_0=0,\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "or consider the system" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\hat{A}\\hat{z} = \\hat{b}-\\hat{A}\\hat{x}_0,\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "instead.\n", - "\n", - "\n", - "\n", - "\n", - "## Conjugate gradient method\n", - "One can show that the solution $\\hat{x}$ is also the unique minimizer of the quadratic form" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "f(\\hat{x}) = \\frac{1}{2}\\hat{x}^T\\hat{A}\\hat{x} - \\hat{x}^T \\hat{x} , \\quad \\hat{x}\\in\\mathbf{R}^n.\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This suggests taking the first basis vector $\\hat{p}_1$ \n", - "to be the gradient of $f$ at $\\hat{x}=\\hat{x}_0$, \n", - "which equals" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\hat{A}\\hat{x}_0-\\hat{b},\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "and \n", - "$\\hat{x}_0=0$ it is equal $-\\hat{b}$.\n", - "The other vectors in the basis will be conjugate to the gradient, \n", - "hence the name conjugate gradient method.\n", - "\n", - "\n", - "\n", - "\n", - "## Conjugate gradient method\n", - "Let $\\hat{r}_k$ be the residual at the $k$-th step:" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\hat{r}_k=\\hat{b}-\\hat{A}\\hat{x}_k.\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that $\\hat{r}_k$ is the negative gradient of $f$ at \n", - "$\\hat{x}=\\hat{x}_k$, \n", - "so the gradient descent method would be to move in the direction $\\hat{r}_k$. \n", - "Here, we insist that the directions $\\hat{p}_k$ are conjugate to each other, \n", - "so we take the direction closest to the gradient $\\hat{r}_k$ \n", - "under the conjugacy constraint. \n", - "This gives the following expression" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\hat{p}_{k+1}=\\hat{r}_k-\\frac{\\hat{p}_k^T \\hat{A}\\hat{r}_k}{\\hat{p}_k^T\\hat{A}\\hat{p}_k} \\hat{p}_k.\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Conjugate gradient method\n", - "We can also compute the residual iteratively as" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\hat{r}_{k+1}=\\hat{b}-\\hat{A}\\hat{x}_{k+1},\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "which equals" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\hat{b}-\\hat{A}(\\hat{x}_k+\\alpha_k\\hat{p}_k),\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "or" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "(\\hat{b}-\\hat{A}\\hat{x}_k)-\\alpha_k\\hat{A}\\hat{p}_k,\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "which gives" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\hat{r}_{k+1}=\\hat{r}_k-\\hat{A}\\hat{p}_{k},\n", - "$$" - ] } ], "metadata": {}, diff --git a/doc/pub/Splines/ipynb/ipynb-Splines-src.tar.gz b/doc/pub/Splines/ipynb/ipynb-Splines-src.tar.gz index 9e4fe066b..b478c41fa 100644 Binary files a/doc/pub/Splines/ipynb/ipynb-Splines-src.tar.gz and b/doc/pub/Splines/ipynb/ipynb-Splines-src.tar.gz differ diff --git a/doc/pub/Splines/pdf/Splines-minted.pdf b/doc/pub/Splines/pdf/Splines-minted.pdf index b40638855..c83605159 100644 Binary files a/doc/pub/Splines/pdf/Splines-minted.pdf and b/doc/pub/Splines/pdf/Splines-minted.pdf differ diff --git a/doc/src/Splines/Splines.do.txt b/doc/src/Splines/Splines.do.txt index 51367b610..acf8e10b2 100644 --- a/doc/src/Splines/Splines.do.txt +++ b/doc/src/Splines/Splines.do.txt @@ -405,7 +405,7 @@ where $\hat{r}$ is the so-called residual or error in the iterative process. When we have found the exact solution, $\hat{r}=0$. !split -===== Conjugate gradient method ===== +===== Gradient method ===== The residual is zero when we reach the minimum of the quadratic equation !bt @@ -420,7 +420,104 @@ variance, then the matrix $\hat{A}$, which is called the Hessian, is given by the second-derivative of the function we want to minimize. This quantity is always positive definite. -More details will be added here soon. + +!split +===== Steepest descent method ===== + +We denote the initial guess for $\hat{x}$ as $\hat{x}_0$. +We can assume without loss of generality that +!bt +\begin{equation*} +\hat{x}_0=0, +\end{equation*} +!et +or consider the system +!bt +\begin{equation*} +\hat{A}\hat{z} = \hat{b}-\hat{A}\hat{x}_0, +\end{equation*} +!et +instead. + + +!split +===== Steepest descent method ===== +!bblock +One can show that the solution $\hat{x}$ is also the unique minimizer of the quadratic form +!bt +\begin{equation*} + f(\hat{x}) = \frac{1}{2}\hat{x}^T\hat{A}\hat{x} - \hat{x}^T \hat{x} , \quad \hat{x}\in\mathbf{R}^n. +\end{equation*} +!et +This suggests taking the first basis vector $\hat{p}_1$ +to be the gradient of $f$ at $\hat{x}=\hat{x}_0$, +which equals +!bt +\begin{equation*} +\hat{A}\hat{x}_0-\hat{b}, +\end{equation*} +!et +and +$\hat{x}_0=0$ it is equal $-\hat{b}$. + +!eblock + + +!split +===== Gradient descent method ===== +!bblock +Let $\hat{r}_k$ be the residual at the $k$-th step: +!bt +\begin{equation*} +\hat{r}_k=\hat{b}-\hat{A}\hat{x}_k. +\end{equation*} +!et +Note that $\hat{r}_k$ is the negative gradient of $f$ at +$\hat{x}=\hat{x}_k$, +so the gradient descent method would be to move in the direction $\hat{r}_k$. +This gives the following expression +!bt +\begin{equation*} +\hat{p}_{k+1}=\hat{r}_k-\frac{\hat{p}_k^T \hat{A}\hat{r}_k}{\hat{p}_k^T\hat{A}\hat{p}_k} \hat{p}_k. +\end{equation*} +!et +!eblock + +!split +===== Final expressions ===== +!bblock +We can also compute the residual iteratively as +!bt +\begin{equation*} +\hat{r}_{k+1}=\hat{b}-\hat{A}\hat{x}_{k+1}, + \end{equation*} +!et +which equals +!bt +\begin{equation*} +\hat{b}-\hat{A}(\hat{x}_k+\alpha_k\hat{p}_k), + \end{equation*} +!et +or +!bt +\begin{equation*} +(\hat{b}-\hat{A}\hat{x}_k)-\alpha_k\hat{A}\hat{p}_k, + \end{equation*} +!et +which gives + +!bt +\begin{equation*} +\hat{r}_{k+1}=\hat{r}_k-\hat{A}\hat{p}_{k}, + \end{equation*} +!et +!eblock + + + +!split +===== The Steepest descent algorithm ===== + !split ===== Simple codes for steepest descent and conjugate gradient using a $2\times 2$ matrix, in c++, Python code to come ===== @@ -446,11 +543,7 @@ int main(int argc, char * argv[]){ cout << "The Matrix A that we are using: " << endl; A.Print(); cout << endl; - x = ConjugateGradient(A,b,x0); xsd = SteepestDescent(A,b,x0); - cout << "The approximate solution using Conjugate Gradient is: " << endl; - x.Print(); - cout << endl; cout << "The approximate solution using Steepest Descent is: " << endl; xsd.Print(); cout << endl; @@ -895,255 +988,6 @@ print("gamma_j after %d epochs: %g" % (n_epochs,gamma_j)) -!split -===== Conjugate gradient (CG) method ===== -!bblock -The success of the CG method for finding solutions of non-linear problems is based -on the theory of conjugate gradients for linear systems of equations. It belongs -to the class of iterative methods for solving problems from linear algebra of the type -!bt -\begin{equation*} - \hat{A}\hat{x} = \hat{b}. -\end{equation*} -!et -In the iterative process we end up with a problem like - -!bt -\begin{equation*} - \hat{r}= \hat{b}-\hat{A}\hat{x}, -\end{equation*} -!et -where $\hat{r}$ is the so-called residual or error in the iterative process. - -When we have found the exact solution, $\hat{r}=0$. -!eblock - - -!split -===== Conjugate gradient method ===== -!bblock - -The residual is zero when we reach the minimum of the quadratic equation -!bt -\begin{equation*} - P(\hat{x})=\frac{1}{2}\hat{x}^T\hat{A}\hat{x} - \hat{x}^T\hat{b}, -\end{equation*} -!et -with the constraint that the matrix $\hat{A}$ is positive definite and symmetric. -If we search for a minimum of the quantum mechanical variance, then the matrix -$\hat{A}$, which is called the Hessian, is given by the second-derivative of the function we want to minimize. This quantity is always positive definite. In our case this corresponds normally to the second derivative of the energy. -!eblock - - - - - -!split -===== Conjugate gradient method, Newton's method first ===== -!bblock -We seek the minimum of the energy or the variance as function of various variational parameters. -In our case we have thus a function $f$ whose minimum we are seeking. -In Newton's method we set $\nabla f = 0$ and we can thus compute the next iteration point -!bt -\begin{equation*} -\hat{x}-\hat{x}_i=\hat{A}^{-1}\nabla f(\hat{x}_i). -\end{equation*} -!et -Subtracting this equation from that of $\hat{x}_{i+1}$ we have -!bt -\begin{equation*} -\hat{x}_{i+1}-\hat{x}_i=\hat{A}^{-1}(\nabla f(\hat{x}_{i+1})-\nabla f(\hat{x}_i)). -\end{equation*} -!et -!eblock - - -!split -===== Conjugate gradient method ===== -!bblock -In the CG method we define so-called conjugate directions and two vectors -$\hat{s}$ and $\hat{t}$ -are said to be -conjugate if -!bt -\begin{equation*} -\hat{s}^T\hat{A}\hat{t}= 0. -\end{equation*} -!et -The philosophy of the CG method is to perform searches in various conjugate directions -of our vectors $\hat{x}_i$ obeying the above criterion, namely -!bt -\begin{equation*} -\hat{x}_i^T\hat{A}\hat{x}_j= 0. -\end{equation*} -!et -Two vectors are conjugate if they are orthogonal with respect to -this inner product. Being conjugate is a symmetric relation: if $\hat{s}$ is conjugate to $\hat{t}$, then $\hat{t}$ is conjugate to $\hat{s}$. -!eblock - -!split -===== Conjugate gradient method ===== -!bblock -An example is given by the eigenvectors of the matrix -!bt -\begin{equation*} -\hat{v}_i^T\hat{A}\hat{v}_j= \lambda\hat{v}_i^T\hat{v}_j, -\end{equation*} -!et -which is zero unless $i=j$. -!eblock - - -!split -===== Conjugate gradient method ===== -!bblock -Assume now that we have a symmetric positive-definite matrix $\hat{A}$ of size -$n\times n$. At each iteration $i+1$ we obtain the conjugate direction of a vector -!bt -\begin{equation*} -\hat{x}_{i+1}=\hat{x}_{i}+\alpha_i\hat{p}_{i}. -\end{equation*} -!et -We assume that $\hat{p}_{i}$ is a sequence of $n$ mutually conjugate directions. -Then the $\hat{p}_{i}$ form a basis of $R^n$ and we can expand the solution -$ \hat{A}\hat{x} = \hat{b}$ in this basis, namely - -!bt -\begin{equation*} - \hat{x} = \sum^{n}_{i=1} \alpha_i \hat{p}_i. -\end{equation*} -!et -!eblock - -!split -===== Conjugate gradient method ===== -!bblock -The coefficients are given by -!bt -\begin{equation*} - \mathbf{A}\mathbf{x} = \sum^{n}_{i=1} \alpha_i \mathbf{A} \mathbf{p}_i = \mathbf{b}. -\end{equation*} -!et -Multiplying with $\hat{p}_k^T$ from the left gives - -!bt -\begin{equation*} - \hat{p}_k^T \hat{A}\hat{x} = \sum^{n}_{i=1} \alpha_i\hat{p}_k^T \hat{A}\hat{p}_i= \hat{p}_k^T \hat{b}, -\end{equation*} -!et -and we can define the coefficients $\alpha_k$ as - -!bt -\begin{equation*} - \alpha_k = \frac{\hat{p}_k^T \hat{b}}{\hat{p}_k^T \hat{A} \hat{p}_k} -\end{equation*} -!et -!eblock - -!split -===== Conjugate gradient method and iterations ===== -!bblock - -If we choose the conjugate vectors $\hat{p}_k$ carefully, -then we may not need all of them to obtain a good approximation to the solution -$\hat{x}$. -We want to regard the conjugate gradient method as an iterative method. -This will us to solve systems where $n$ is so large that the direct -method would take too much time. - -We denote the initial guess for $\hat{x}$ as $\hat{x}_0$. -We can assume without loss of generality that -!bt -\begin{equation*} -\hat{x}_0=0, -\end{equation*} -!et -or consider the system -!bt -\begin{equation*} -\hat{A}\hat{z} = \hat{b}-\hat{A}\hat{x}_0, -\end{equation*} -!et -instead. -!eblock - - -!split -===== Conjugate gradient method ===== -!bblock -One can show that the solution $\hat{x}$ is also the unique minimizer of the quadratic form -!bt -\begin{equation*} - f(\hat{x}) = \frac{1}{2}\hat{x}^T\hat{A}\hat{x} - \hat{x}^T \hat{x} , \quad \hat{x}\in\mathbf{R}^n. -\end{equation*} -!et -This suggests taking the first basis vector $\hat{p}_1$ -to be the gradient of $f$ at $\hat{x}=\hat{x}_0$, -which equals -!bt -\begin{equation*} -\hat{A}\hat{x}_0-\hat{b}, -\end{equation*} -!et -and -$\hat{x}_0=0$ it is equal $-\hat{b}$. -The other vectors in the basis will be conjugate to the gradient, -hence the name conjugate gradient method. -!eblock - - -!split -===== Conjugate gradient method ===== -!bblock -Let $\hat{r}_k$ be the residual at the $k$-th step: -!bt -\begin{equation*} -\hat{r}_k=\hat{b}-\hat{A}\hat{x}_k. -\end{equation*} -!et -Note that $\hat{r}_k$ is the negative gradient of $f$ at -$\hat{x}=\hat{x}_k$, -so the gradient descent method would be to move in the direction $\hat{r}_k$. -Here, we insist that the directions $\hat{p}_k$ are conjugate to each other, -so we take the direction closest to the gradient $\hat{r}_k$ -under the conjugacy constraint. -This gives the following expression -!bt -\begin{equation*} -\hat{p}_{k+1}=\hat{r}_k-\frac{\hat{p}_k^T \hat{A}\hat{r}_k}{\hat{p}_k^T\hat{A}\hat{p}_k} \hat{p}_k. -\end{equation*} -!et -!eblock - -!split -===== Conjugate gradient method ===== -!bblock -We can also compute the residual iteratively as -!bt -\begin{equation*} -\hat{r}_{k+1}=\hat{b}-\hat{A}\hat{x}_{k+1}, - \end{equation*} -!et -which equals -!bt -\begin{equation*} -\hat{b}-\hat{A}(\hat{x}_k+\alpha_k\hat{p}_k), - \end{equation*} -!et -or -!bt -\begin{equation*} -(\hat{b}-\hat{A}\hat{x}_k)-\alpha_k\hat{A}\hat{p}_k, - \end{equation*} -!et -which gives - -!bt -\begin{equation*} -\hat{r}_{k+1}=\hat{r}_k-\hat{A}\hat{p}_{k}, - \end{equation*} -!et -!eblock