Hyperparameter (machine learning)
In the context of machine learning, hyperparameters are parameters whose values are set prior to the commencement of the learning process. By contrast, the value of other parameters is derived via training.
Different model training algoritms require different hyperparameters, some simple algoritms (as ordinary least squares regression) require none. Given these hyperparameters, the training algorithm learns the parameters from the data. E.g. LASSO is an algorithm that adds a regularization hyperparameter to OLS regression, that has to be set before estimating the parameters through the training algorithm.
Optimization
Hyperparameter optimization or tuning is the problem of choosing a set of optimal hyperparameters for a learning algorithm.
The same kind of machine learning model could require different constraints, weights or learning rates to generalize different data patterns. These measures are called hyperparameters, and have to be tuned so that the model can best solve the machine learning problem. Usually a metric is chosen to measure the algorithm's performance on an independent data set and hyperparameters that maximize this measure are adopted. Often cross-validation is used to estimate this generalization performance.[1]
Hyperparameter optimization contrasts with actual learning problems, which are also often cast as optimization problems, but optimize a loss function on the training set alone. In effect, learning algorithms learn parameters that model/reconstruct their inputs well, while hyperparameter optimization is to ensure the model does not e.g., overfit its data by tuning, as by regularization.
Optimization algorithms
Grid search
The traditional way of performing hyperparameter optimization has been grid search, or a parameter sweep, which is simply an exhaustive searching through a manually specified subset of the hyperparameter space of a learning algorithm. A grid search algorithm must be guided by some performance metric, typically measured by cross-validation on the training set[2] or evaluation on a held-out validation set.
Since the parameter space of a machine learner may include real-valued or unbounded value spaces for certain parameters, manually set bounds and discretization may be necessary before applying grid search.
For example, a typical soft-margin SVM classifier equipped with an RBF kernel has at least two hyperparameters that need to be tuned for good performance on unseen data: a regularization constant C and a kernel hyperparameter γ. Both parameters are continuous, so to perform grid search, one selects a finite set of "reasonable" values for each, say
Grid search then trains an SVM with each pair (C, γ) in the Cartesian product of these two sets and evaluates their performance on a held-out validation set (or by internal cross-validation on the training set, in which case multiple SVMs are trained per pair). Finally, the grid search algorithm outputs the settings that achieved the highest score in the validation procedure.
Grid search suffers from the curse of dimensionality, but is often embarrassingly parallel because typically the hyperparameter settings it evaluates are independent of each other.[1]
Bayesian optimization
Bayesian optimization is a methodology for the global optimization of noisy black-box functions. Applied to hyperparameter optimization, Bayesian optimization consists of developing a statistical model of the function from hyperparameter values to the objective evaluated on a validation set. Intuitively, the methodology assumes that there is some smooth but noisy function that acts as a mapping from hyperparameters to the objective. In Bayesian optimization, one aims to gather observations in such a manner as to evaluate the machine learning model the least number of times while revealing as much information as possible about this function and, in particular, the location of the optimum. Bayesian optimization relies on assuming a very general prior over functions which when combined with observed hyperparameter values and corresponding outputs yields a distribution over functions. The methodology proceeds by iteratively picking hyperparameters to observe (experiments to run) in a manner that trades off exploration (hyperparameters for which the outcome is most uncertain) and exploitation (hyperparameters which are expected to have a good outcome). In practice, Bayesian optimization has been shown[3][4][5][6] to obtain better results in fewer experiments than grid search and random search, due to the ability to reason about the quality of experiments before they are run.
Random search
Since grid searching is an exhaustive and therefore potentially expensive method, several alternatives have been proposed. In particular, a randomized search that simply samples parameter settings a fixed number of times has been found to be more effective in high-dimensional spaces than exhaustive search. This is because oftentimes, it turns out some hyperparameters do not significantly affect the loss. Therefore, having randomly dispersed data gives more "textured" data than an exhaustive search over parameters that ultimately do not affect the loss.[1]
Gradient-based optimization
For specific learning algorithms, it is possible to compute the gradient with respect to hyperparameters and then optimize the hyperparameters using gradient descent. The first usage of these techniques was focused on neural networks.[7] Since then, these methods have been extended to other models such as support vector machines[8] or logistic regression.[9]
A different approach in order to obtain a gradient with respect to hyperparameters consists in differentiating the steps of an iterative optimization algorithm using automatic differentiation.[10][11]
Others
RBF[12] and spectral[13] approaches have been used.
Software
Grid search
- LIBSVM comes with scripts for performing grid search.
- scikit-learn includes grid search.
Bayesian
- spearmint Spearmint is a package to perform Bayesian optimization of machine learning algorithms.
- Bayesopt,[14] an efficient implementation of Bayesian optimization in C/C++ with support for Python, Matlab and Octave.
- MOE MOE is a Python/C++/CUDA library implementing Bayesian Global Optimization using Gaussian Processes.
- Auto-WEKA is a Bayesian hyperparameter optimization layer on top of WEKA.
Random search
- scikit-learn includes random search.
Other
- Hyperopt is a distributed hyperparameter optimization library in Python.
- SUMO-Toolbox[15] is a MATLAB toolbox for surrogate modeling supporting a wide collection of hyperparameter optimization algorithm for many model types.
- rbfopt is a Python package that uses a radial basis function model[12]
- Harmonica is a Python 3 package for spectral hyperparameter optimization.[13]
Multiple
- mlr is a R package that contains a large number of different hyperparameter optimization techniques for machine learning problems.
- TPOT is a Python library that automatically creates and optimizes full machine learning pipelines using genetic programming.
See also
- Bias-variance dilemma
- Dimensionality reduction
- Feature selection
- Hyper-heuristic
- Meta-optimization
- Model selection
- Self-tuning
References
- 1 2 3 Bergstra, James; Bengio, Yoshua (2012). "Random Search for Hyper-Parameter Optimization" (PDF). J. Machine Learning Research. 13: 281–305.
- ↑ Chin-Wei Hsu, Chih-Chung Chang and Chih-Jen Lin (2010). A practical guide to support vector classification. Technical Report, National Taiwan University.
- ↑ Hutter, Frank; Hoos, Holger; Leyton-Brown, Kevin (2011), "Sequential model-based optimization for general algorithm configuration" (PDF), Learning and Intelligent Optimization
- ↑ Bergstra, James; Bardenet, Remi; Bengio, Yoshua; Kegl, Balazs (2011), "Algorithms for hyper-parameter optimization" (PDF), Advances in Neural Information Processing Systems
- ↑ Snoek, Jasper; Larochelle, Hugo; Adams, Ryan (2012), "Practical Bayesian Optimization of Machine Learning Algorithms" (PDF), Advances in Neural Information Processing Systems
- ↑ Thornton, Chris; Hutter, Frank; Hoos, Holger; Leyton-Brown, Kevin (2013), "Auto-WEKA: Combined selection and hyperparameter optimization of classification algorithms" (PDF), Knowledge discovery and data mining
- ↑ Larsen, Jan; Hansen, Lars Kai; Svarer, Claus; Ohlsson, M (1996). "Design and regularization of neural networks: the optimal use of a validation set". Proceedings of the 1996 IEEE Signal Processing Society Workshop.
- ↑ Olivier Chapelle; Vladimir Vapnik; Olivier Bousquet; Sayan Mukherjee (2002). "Choosing multiple parameters for support vector machines" (PDF). Machine Learning. 46: 131–159. doi:10.1023/a:1012450327387.
- ↑ Chuong B; Chuan-Sheng Foo; Andrew Y Ng (2008). "Efficient multiple hyperparameter learning for log-linear models". Advances in Neural Information Processing Systems 20.
- ↑ Domke, Justin (2012). "Generic Methods for Optimization-Based Modeling" (PDF). AISTATS. 22.
- ↑ Maclaurin, Douglas; Duvenaud, David; Adams, Ryan P. (2015). "Gradient-based Hyperparameter Optimization through Reversible Learning". arXiv:1502.03492 [stat.ML].
- 1 2 An effective algorithm for hyperparameter optimization of neural networks (2017)
- 1 2 Hyperparameter Optimization: A Spectral Approach (2017)
- ↑ Martinez-Cantin, Ruben (2014). "BayesOpt: A Bayesian Optimization Library for Nonlinear Optimization, Experimental Design and Bandits" (PDF). J. Machine Learning Research. 15: 3915−3919.
- ↑ Gorissen, Dirk; Crombecq, Karel; Couckuyt, Ivo; Demeester, Piet; Dhaene, Tom (2010). "A Surrogate Modeling and Adaptive Sampling Toolbox for Computer Based Design" (PDF). J. Machine Learning Research. 11: 2051–2055.