Большая часть контента, написанного в этой статье, взята из специализации Andrew Ng Deep Learning.

Настройка гиперпараметров - одна из важнейших задач при решении проблемы глубокого обучения. Во-первых, давайте посмотрим, что такое гиперпараметр.

Что такое гиперпараметр? Чем он отличается от обычных параметров?

Как правило, в модели машинного обучения в функции стоимости и функции градиента присутствует ряд параметров. Во время обучения модели из этих параметров некоторые параметры изучаются или изменяются в соответствии с данными. Они называются параметрами модели. параметры сохраняются как часть модели и используются моделью для прогнозирования выходных данных для заданных входных данных. Некоторыми примерами параметров являются веса нейронной сети, смещения нейронной сети и т. д.

Напротив, существуют некоторые другие параметры, которые нельзя изучить или изменить в соответствии с данными. Гиперпараметры обычно определяют свойства высокого уровня, такие как скорость обучения модели, временная сложность модели и т. Д. Параметры модели. изменяются в соответствии с данными обучения, где гиперпараметры предназначены для обучения самих данных. Как правило, значения гиперпараметров фиксируются на протяжении всей задачи. Некоторыми примерами гиперпараметров являются количество скрытых слоев в нейронной сети, размер мини-пакета , скорость обучения модели (альфа), значение k в K-ближайших соседях или кластеризации K-средних и т. д.

Обычно при решении задачи глубокого обучения для каждого гиперпараметра берется набор значений, и весь процесс обучения выполняется для каждого значения в наборе, чтобы выбрать наиболее оптимальное значение для модели. Этот процесс называется настройкой гиперпараметров. После завершения настройки вы получите наиболее эффективную конфигурацию гиперпараметров в соответствии с вашей постановкой задачи, что в большинстве случаев улучшает точность модели.

Как выбрать набор значений для гиперпараметра?

Раньше при настройке гиперпараметров было обычной практикой, что если есть два гиперпараметра h1 и h2, то создается сетка (2D-матрица) с h1 по оси X и h2 по оси Y, а затем каждое значение в опробована сетка и выбрана наиболее оптимальная конфигурация гиперпараметров.

Предположим,
h1 = [1,2,3,4,5]
h2 = [1,2,3,4,5,6]
Тогда сетка будет иметь размер ( 5 X 6) и пробуются 30 различных значений, после чего будет выбрана наиболее оптимальная конфигурация двух гиперпараметров.

Эта практика отлично работает до тех пор, пока количество параметров не станет очень большим. В случае большего количества параметров выбор случайных точек может быть полезным. Поэтому вам нужно взять диапазон значений для каждого гиперпараметра и случайным образом выбрать комбинации значения для каждого гиперпараметра и выберите лучшую комбинацию гиперпараметров для модели. Будет предел n, где n обозначает количество итераций, которые необходимо повторить, но обратная сторона случайного выбора гиперпараметров. Параметрами является то, что случайный выбор ничего не узнает из информации предыдущего испытания, чтобы выбрать следующее значение гиперпараметра.

Также важно выбрать правильный масштаб для выбора гиперпараметров. Выбор равномерно случайного значения для гиперпараметра хорошо работает, когда диапазон гиперпараметров невелик.

Предположим, вы выбираете значения альфа скорости обучения от 0,0001 до 1. Когда вы выбираете равномерно случайные значения в заданном диапазоне, тогда больший процент значений существует в диапазоне от 0,1 до 1. Вместо этого, если значения гиперпараметров выбраны на логарифмическая шкала, то значения равномерно распределяются по всем диапазонам (0,0001 и 0,001, 0,001 и 0,01, 0,01 и 0,1 и т. д.).

Используя numpy случайную переменную, r генерируется с использованием значения r = -4 * np.random.rand ()
гиперпараметра = 1o ^ r.
Значит, значения r существуют между 10 ** - 4 и 1.

Обычно, если значение гиперпараметра находится в диапазоне от 10 ** a до 10 ** b, тогда примените логарифм к обоим значениям и выберите значение случайным образом в диапазоне [a, b].

От грубого к точному
При выборке гиперпараметров обычно используется методика от грубого к точному для поиска наиболее оптимального набора гиперпараметров.

Предположим, что при выборке гиперпараметров вы обнаружите, что определенный набор точек в грубой сетке лучше всего подходит для вашей задачи. Затем вы уточняете сетку, выбирая точки вокруг наиболее эффективных и создавая сетку вокруг этих точек. у вас есть точная и уточненная сетка, которую вы можете использовать в качестве пробного пространства. Производительность выбранной сетки будет лучше, потому что сетка более детализирована, а пробное пространство построено вокруг точек, производительность которых была лучше в предыдущем испытании.

Этот процесс продолжается до тех пор, пока для модели не будет выбран лучший набор гиперпараметров.

В следующем посте мы увидим подробную реализацию поиска по сетке и случайного поиска на реальном наборе данных.