Stochastic Gradient Descent Algorithm¶
The stochastic gradient descent (SGD) algorithm is a special case of an iterative solver. See Iterative Solver for more details.
Computation methods¶
The following computation methods are available in oneDAL for the stochastic gradient descent algorithm:
Default method (a special case of mini-batch used by default)
Mini-batch method¶
The mini-batch method (miniBatch) of the stochastic gradient descent algorithm [Mu2014] follows the algorithmic framework of an iterative solver with an empty set of intrinsic parameters of the algorithm \(S_t\), algorithm-specific transformation \(T\) defined for the learning rate sequence \({\{\eta_t\}}_{t=1, \ldots, \text{nIterations}}\), conservative sequence \({\{\gamma_t\}}_{t=1, \ldots, \text{nIterations}}\) and the number of iterations in the internal loop \(L\), algorithm-specific vector \(U\) and power \(d\) of Lebesgue space defined as follows:
For \(l\) from \(1\) until \(L\):
Update the function argument: \({\theta }_{t}:= {\theta }_{t}-{\eta }_{t}\left(g\left({\theta }_{t}\right)+{\gamma }_{t}\left({\theta }_{t}-{\theta }_{t-1 }\right)\right)\)
Compute the gradient: \(g\left({\theta }_{t}\right)=\nabla {F}_{I}\left({\theta }_{t}\right)\)
Convergence check: \(U=g\left({\theta }_{t-1}\right), d=2\)
Default method¶
The default method (defaultDense) is a particular case of the mini-batch method with the batch size \(b=1\), \(L=1\), and conservative sequence \({\gamma }_{t}\equiv 0\).
Momentum method¶
The momentum method (momentum) of the stochastic gradient descent algorithm [Rumelhart86] follows the algorithmic framework of an iterative solver with the set of intrinsic parameters \(S_t\), algorithm-specific transformation \(T\) defined for the learning rate sequence \({\{\eta_t\}}_{t=1, \ldots, \text{nIterations}}\) and momentum parameter \(\mu in [0,1]\), and algorithm-specific vector \(U\) and power \(d\) of Lebesgue space defined as follows:
\({v}_{t}=\mu \cdot {v}_{t-1}+{\eta }_{t}\cdot g\left({\theta }_{t-1}\right)\)
\({\theta }_{t}={\theta }_{t-1}-{v}_{t}\)
For the momentum method of the SGD algorithm, the set of intrinsic parameters \(S_t\) only contains the last update vector \(v_t\).
Convergence check: \(U=g\left({\theta }_{t-1}\right), d=2\)
Computation¶
The stochastic gradient descent algorithm is a special case of an iterative solver. For parameters, input, and output of iterative solvers, see Computation.
Algorithm Parameters¶
In addition to parameters of the iterative solver, the stochastic gradient descent algorithm has the following parameters. Some of them are required only for specific values of the computation method parameter method:
Parameter |
method |
Default Value |
Description |
---|---|---|---|
|
|
|
The floating-point type that the algorithm uses for intermediate
computations. Can be |
|
Not applicable |
|
Available computation methods: For CPU:
For GPU:
|
|
|
Not applicable |
The numeric table with 32-bit integer indices of terms in the objective function. The method parameter determines the size of the numeric table:
If no indices are provided, the implementation generates random indices. |
|
|
\(128\) |
The number of batch indices to compute the stochastic gradient. If The algorithm ignores this parameter if the batchIndices parameter is provided. For the |
|
|
A numeric table of size \(1 \times 1\) that contains the default conservative coefficient equal to 1. |
The numeric table of size \(1 \times \text{nIterations}\) or \(1 \times 1\). The contents of the table depend on its size:
|
|
|
\(5\) |
The number of inner iterations for the miniBatch method. |
|
|
A numeric table of size \(1 \times 1\) that contains the default step length equal to 1. |
The numeric table of size \(1 \times \text{nIterations}\) or \(1 \times 1\). The contents of the table depend on its size:
|
|
|
\(0.9\) |
The momentum value. |
|
|
SharePtr< engines:: mt19937:: Batch>() |
Pointer to the random number generator engine that is used internally for generation of 32-bit integer indices of terms in the objective function. |
Examples¶
Batch Processing:
Note
There is no support for Java on GPU.
Batch Processing:
Batch Processing: