Я реализовывал довольно популярную статью « ОБЪЯСНЕНИЕ И ПРИМЕНЕНИЕ ОБОБЩЕННЫХ ПРИМЕРОВ », и в статье она обучает противоборствующей целевой функции.
J '' (θ) = αJ (θ) + (1 - α) J '(θ).
Он рассматривает α как гиперпараметр. α может быть 0,1, 0,2, 0,3 и т. д.
Независимо от этой конкретной статьи, мне интересно, почему бы нам просто не включить α в наши параметры и не узнать лучший α?
Какой недостаток для этого? Это из-за переоснащения? Если так, то почему изучение только еще одного параметра вызывает такое переобучение?
Ответы:
Это отличный вопрос! Я постараюсь дать более общий ответ. TL; DR ответ , что вы определенно можете узнать гиперпараметры, просто не из одних и тех же данных. Продолжайте читать для более подробного ответа.
Гиперпараметр , как правило , соответствует значению алгоритма обучения, а не один из ее параметров. Например, в контексте глубокого обучения это иллюстрируется разницей между чем-то вроде числа нейронов в определенном слое (гиперпараметр) и весом определенного ребра (обычный, обучаемый параметр).
Почему есть разница в первую очередь? Типичный случай для того, чтобы сделать параметр гиперпараметром , это просто неуместно изучать этот параметр из обучающего набора. Например, поскольку всегда легче снизить ошибку обучения, добавляя больше нейронов, включение числа нейронов в слое в регулярный параметр всегда будет стимулировать очень большие сети, что, как мы знаем, не всегда желательно (из-за переобучения).
На ваш вопрос, это не значит, что мы вообще не изучаем гиперпараметры. Отложив вычислительные задачи на минуту, очень возможно выучить хорошие значения для гиперпараметров, и даже есть случаи, когда это необходимо для хорошей производительности; все обсуждение в первом абзаце предполагает, что по определению вы не можете использовать одни и те же данные для этой задачи .
Используя другое разделение данных (таким образом создавая три непересекающиеся части: обучающий набор, набор проверки и набор тестов, теоретически вы можете выполнить следующую процедуру вложенной оптимизации : во внешнем цикле вы пытаетесь найти значения для гиперпараметров, которые минимизируют потерю проверки , и во внутреннем цикле вы пытаетесь найти значения для обычных параметров, которые минимизируют потерю обучения .
Это возможно в теории, но очень дорого в вычислительном отношении: каждый шаг внешнего цикла требует решения (до завершения или где-то близко к этому) внутреннего цикла, который обычно тяжел в вычислительном отношении. Что еще больше усложняет ситуацию, так это то, что внешняя проблема непроста: с одной стороны, пространство поиска очень велико.
Существует много подходов для преодоления этого путем упрощения вышеописанной настройки (поиск по сетке, случайный поиск или оптимизация гиперпараметров на основе моделей), но их объяснение выходит далеко за рамки вашего вопроса. Как показано в статье, на которую вы ссылаетесь, тот факт, что это дорогостоящая процедура, часто означает, что исследователи просто пропускают ее полностью или пробуют совсем немного настроек вручную, в конечном итоге выбирая лучший (опять же, в соответствии с набором валидации). На ваш первоначальный вопрос, тем не менее, я утверждаю, что - хотя и очень упрощенно и изобретательно - это все еще форма «обучения».
источник
Гиперпараметры, подобные приведенному в этой статье, часто используются для балансировки нескольких терминов в функции потерь. Если бы вы сделали их доступными для изучения, процесс оптимизации просто научился бы распределять весь вес по терминам, которые легче оптимизировать за счет условий, которые сложнее оптимизировать, что лишает смысла балансировать термины.
Другой способ увидеть это состоит в том, что функция потерь является суррогатом для фактической цели, которую трудно определить или оптимизировать, например, «генерировать выходные изображения должны выглядеть реалистично» или «должны быть устойчивы к состязательным примерам». В этом случае истинная цель заключается не в том, чтобы «найти гиперпараметры, чтобы минимизировать потерю суррогата», а в том, чтобы «найти гиперпараметры, чтобы при запуске SGD для остальных параметров оптимизировать суррогат, мы получили хорошую производительность для истинного». задача".
источник
Так как вы спросили «независимо от бумаги», я хотел бы привести более простой пример: линейная регрессия, оштрафованная (Ридж / Лассо).
В этих случаях я могу подумать о двух причинах: но во-первых, обратите внимание, что здесь есть две функции: (F1) функция потерь, которая является аналитической функцией гиперпараметра и данных (в статье, которую вы связали, это и (F2) оценка ошибки обобщения, которая зависит от оптимального решения (F1) и гиперпараметра, выбранного вами в (F1).J~
Предостережение: беглый взгляд на статью показывает, что авторы обучают классификатор нейронной сети для набора данных MNIST. Там явно не сказано, как выбрать гиперпараметр , но я бы выбрал один который минимизирует ошибку проверки лучшей модели.α α
Целевой функцией для оптимизации гиперпараметра является выражение, являющееся прокси для ошибки обобщения. Это выражение трудно записать как простую аналитическую функцию, которую можно дифференцировать, но в какой-то момент ее можно легко оценить, просто решив основную задачу оптимизации.
Оценка функции (F2) требует решения задачи оптимизации, которая может быть дорогой. Таким образом, даже если вы можете приблизить градиент для F2, чтобы сделать градиентный спуск, это будет дорого и медленно. В таких случаях поиск по сетке часто оказывается «достаточно хорошим».
Сказав это, существуют методы для оптимизации целевых функций черного ящика (таких как F2), предполагая некоторую структуру гладкости из-за их зависимости от гиперпараметра. В качестве примера вы можете увидеть этот пост, который показывает, как производительность модели Лассо зависит от ее гиперпараметра :λ
(Изображение взято из этого поста: https://stats.stackexchange.com/a/26607/54725 )
Некоторые ссылки:
источник
Давайте посмотрим, как будет выглядеть условие первого порядка, если мы подключим гиперпараметр и попытаемся изучить его так же, как из данных: Следовательно,α θ ∂∂αJ′′(θ)=∂∂ααJ(θ)+∂∂α(1−α)J′(θ)=J(θ)−J′(θ)=0 J(θ)=J′(θ)
Когда этот гиперпараметр будет оптимизирован, то и J, и J 'станут одной и той же функцией, то есть равными весами. В итоге вы получите тривиальное решение.
Если вы хотите более общего философствования, подумайте об этом: гиперпараметры обычно не связаны с данными. Что я имею в виду? В нейронной сети или даже в простой регрессии параметры вашей модели будут каким-то образом напрямую взаимодействовать с данными: и так далее вниз по слоям. Вы видите, как запутывается в ваших данных. Таким образом, когда вы берете производную по любой -функции целевой функции, вы получаете точки данных, вводящие результат неочевидными способами в матрицу, гессианы, кросс-продукты и т. Д.yL=XLβL
aL=σ(yL)
XL+1=aL βL β
Однако, если вы попытаетесь оценить условия первого порядка по гиперпараметрам, вы не получите этот эффект. Производные гиперпараметров часто оперируют целыми порциями вашей модели, не перетасовывая ее части как производные по параметрам. Вот почему оптимизация гиперпараметров часто приводит к тривиальным решениям, подобным тому, которое я дал вам для конкретной статьи. Оптимизация гиперпараметров не беспокоит ваш набор данных и делает его достаточно неудобным для создания чего-то интересного.
источник