Свяжитесь с нами:

Платон Вертикальный поиск

Искусственный интеллект

Настройка скорости обучения в градиентном спуске

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

Алгоритм градиентного спуска

Вот алгоритм:

Repeat until convergence { Wj = Wj - λ θF(Wj)/θWj }

Где Wj - один из наших параметров (или вектор с нашими параметрами), F - наша функция стоимости (оценивает ошибки нашей модели), θF (Wj) / θWj - ее первая производная по Wj, а λ - скорость обучения. ,

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

Градиентный спуск не всегда лучший метод для расчета весов, тем не менее, это относительно быстрый и простой метод. Если вы хотите узнать больше о градиентном спуске, посмотрите заметки Нг для Стэнфордский курс машинного обучения.

Настройка скорости обучения

Чтобы градиентный спуск работал, мы должны установить λ (скорость обучения) на соответствующее значение. Этот параметр определяет, насколько быстро или медленно мы будем двигаться к оптимальным весам. Если λ очень велико, мы пропустим оптимальное решение. Если оно слишком мало, нам потребуется слишком много итераций, чтобы сходиться к лучшим значениям. Поэтому использование хорошего λ имеет решающее значение.

Адаптация значения скорости обучения для разных размеров набора данных

В зависимости от функции стоимости F, которую мы выберем, мы можем столкнуться с различными проблемами. Когда в качестве нашей функции стоимости выбрана сумма квадратов ошибок, тогда значение θF (Wj) / θWj становится все больше и больше по мере того, как мы увеличиваем размер обучающего набора данных. Таким образом, λ должен быть адаптирован к значительно меньшим значениям.

Один из способов решения этой проблемы - разделить λ на 1 / N, где N - размер обучающих данных. Таким образом, шаг обновления алгоритма можно переписать так:

Wj = Wj - (λ/N)*θF(Wj)/θWj

Вы можете прочитать больше об этом на Wilson et al. бумага "Общая неэффективность пакетного обучения для обучения градиентному спуску».

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

Адаптация скорости обучения в каждой итерации

Другой хороший метод - адаптировать значение λ в каждой итерации. Идея заключается в том, что чем дальше вы находитесь от оптимальных значений, тем быстрее вы должны двигаться к решению и, следовательно, значение λ должно быть больше. Чем ближе вы подходите к решению, тем меньше должно быть его значение. К сожалению, поскольку вы не знаете фактических оптимальных значений, вы также не знаете, насколько вы близки к ним на каждом этапе.

Чтобы решить эту проблему, вы можете проверить значение функции ошибки, используя оценочные параметры модели в конце каждой итерации. Если ваш коэффициент ошибок был уменьшен с момента последней итерации, вы можете попробовать увеличить коэффициент обучения на 5%. Если ваша частота ошибок была фактически увеличена (это означает, что вы пропустили оптимальную точку), вы должны сбросить значения Wj до значений предыдущей итерации и уменьшить скорость обучения на 50%. Эта техника называется Смелый водитель.

Дополнительный совет: нормализуйте ваши входные векторы

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

Несмотря на то, что существует несколько способов нормализации переменной, нормализация [0,1] (также известная как min-max) и нормализация z-показателя являются двумя из наиболее широко используемых. Вот как вы можете рассчитать их оба:

XminmaxNorm = (X - min(X))/(max(X)-min(X));
XzscoreNorm = (X - mean(X))/std(X);

Надеюсь, что это работает для вас! 🙂

Вам понравилась статья? Пожалуйста, найдите минутку, чтобы поделиться ею в Twitter. 🙂

Настройка скорости обучения в градиентном спуске

О нас Василис Вриниотис

Меня зовут Василис Вриниотис. Я Data Scientist, инженер-программист, автор Datumbox Machine Learning Framework и гордый фанат. Узнать больше

Источник: http://blog.datumbox.com/tuning-the-learning-rate-in-gradient-descent/

Связанные потоки

конопля

Наш последний эпизод 2021 года, оглядывающийся назад и ожидающий будущего. Устройтесь поудобнее, расслабьтесь и наслаждайтесь тем, как наши гости размышляют о прошлом, настоящем и будущем. В...

Блокчейн

Правительство Ботсваны намерено представить «законопроект о виртуальных активах» в парламент страны, и этот шаг может стать одним из...

Биржи

Дебетовые карты становятся все более популярными среди криптопользователей. Сообщение FTX, Nexo о запуске криптовалютных дебетовых карт впервые появилось на CryptoSlate.

Игры

После завершения группового этапа только восемь команд борются за титул LCS Lock In в этом году. Пост Вот...