Регуляризация для разреженности: L₁ регуляризация

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

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

Например, рассмотрим набор данных о жилье, который охватывает не только Калифорнию, но и весь земной шар. Объединение глобальной широты на минутном уровне (60 минут на градус) дает около 10 000 измерений в разреженной кодировке; глобальная долгота на минутном уровне дает около 20 000 измерений. Объединение этих двух функций даст примерно 200 000 000 измерений. Многие из этих 200 000 000 измерений представляют собой территории настолько ограниченного проживания (например, середина океана), что было бы сложно использовать эти данные для эффективного обобщения. Было бы глупо платить за ОЗУ для хранения этих ненужных измерений. Поэтому было бы неплохо снизить веса бессмысленных измерений ровно до 0, что позволило бы нам избежать оплаты стоимости хранения этих коэффициентов модели во время вывода.

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

Справится ли с этой задачей регуляризация L2 ? К сожалению нет. Регуляризация L2 способствует тому, чтобы веса были небольшими, но не принуждают их равняться точно 0,0.

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

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

Регуляризация L 1 и L 2 .

L2 и L1 наказывают веса по-разному:

  • L 2 штрафует вес 2 .
  • L 1 наказывает | вес |.

Следовательно, L 2 и L 1 имеют разные производные:

  • Производная от L 2 равна 2 * вес .
  • Производная от L 1 равна k (константа, значение которой не зависит от веса).

Вы можете думать о производной L 2 как о силе, которая каждый раз удаляет x% веса. Как знал Зенон , даже если вы удалите x процентов из числа миллиарды раз , уменьшенное число все равно никогда не достигнет нуля. (Зенон был менее знаком с ограничениями точности чисел с плавающей запятой, которые могли дать ровно ноль.) В любом случае, L2 обычно не приводит веса к нулю.

Вы можете думать о производной L 1 как о силе, которая каждый раз вычитает некоторую константу из веса. Однако, благодаря абсолютным значениям, L 1 имеет разрыв в точке 0, что приводит к тому, что результаты вычитания, пересекающие 0, обнуляются. Например, если вычитание привело бы к увеличению веса от +0,1 до -0,2, L 1 установит вес точно равным 0. Эврика, L 1 обнулит вес.

Регуляризация L 1 — штрафование абсолютного значения всех весов — оказывается весьма эффективной для широких моделей.

Обратите внимание, что это описание справедливо для одномерной модели.

Нажмите кнопку «Воспроизвести» ( ) ниже, чтобы сравнить влияние регуляризации L 1 и L 2 на сеть весов.