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

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

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

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

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

- Миндаль Ли

Хильде Дж. П. Вертс и еще двое из Корнельского университета представили исследование, чтобы определить, важно ли настраивать гиперпараметр или его можно безопасно установить на значение по умолчанию. Но, как правило, причина настройки гиперпараметра - достичь наивысшей производительности модели.

ArgParse - это рекомендуемый модуль синтаксического анализа командной строки в стандартной библиотеке Python. Модуль упрощает написание удобных интерфейсов командной строки. Иногда в машинном обучении вы проводите несколько экспериментов, чтобы понять перспективные отношения между оценками и гиперпараметрами и найти способы получить наиболее эффективную модель или алгоритм. Имеет смысл запускать новые испытания из командной строки и указывать значения параметров в вашем CLI.

Ниже приведена простая программа на Python, которая показывает, как можно использовать argparse.

import argparse

argparser = argparse.ArgumentParser(description='Process hyper-parameters')

argparser.add_argument('--tr',       type=float, default=0.41, help='training rate')
argparser.add_argument('--fallout',  type=float, default=0.01,   help='fallout mean')
argparser.add_argument('--data', type=str,   default='/this/is/a/test/data/', help='data directory for training')

args = argparser.parse_args()

# then you can access passed values
print(args.tr)
print(args.fallout)
print(args.data)

Затем вы можете запустить код. Если вы запустите его без аргументов, будут использоваться значения по умолчанию для ..

python main.py

Тогда вы должны ожидать вывода:

0.41
0.01
/thi/is/a/test/data/

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

python main.py --tr 0.0213 --fallout 0.5

Тогда вы получите результат:

0.0213
0.5
/thi/is/a/test/data/

Argparse - хороший способ отслеживать гиперпараметры машинного обучения, но у него есть некоторые недостатки. Если ваш проект быстро растет, вам будет сложно поддерживать параметры интерфейса командной строки. Это связано с тем, что argparse не сохраняет и не регистрирует параметры, переданные в командной строке, и поэтому вам не придется сохранять значения параметров самостоятельно. Также требуются дополнительные усилия для отслеживания значений гиперпараметров в длительных проектах, основанных на экспериментах.

С помощью ArgParse вы можете легко добавлять новые аргументы, удобно начинать новые испытания, а также определять значения гиперпараметров на ходу.

Есть также несколько других способов отслеживания гиперпараметров в машинном обучении. И вы также можете попробовать другие: Click, AttrDict, Hydra и некоторые другие.

Ваше здоровье!