Techniques for tuning machine learning models and their hyperparameters to improve performance against an objective function. They range from gradient-based methods used during training to black-box search strategies like grid search, random search, and Bayesian Optimisation.