Лекция
Привет, Вы узнаете о том , что такое дистилляция данных, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое дистилляция данных, data distillation , настоятельно рекомендую прочитать все из категории Вычислительный интеллект.
В машинном обучении дистилляция знаний или дистилляция моделей — это процесс переноса знаний из большой модели в меньшую. Хотя большие модели (например, очень глубокие нейронные сети или ансамбли многих моделей) обладают большей емкостью знаний, чем малые модели, эта емкость может быть использована не полностью. Оценка модели может быть столь же затратной в вычислительном отношении, даже если она использует лишь небольшую часть своей емкости знаний. Дистилляция знаний переносит знания из большой модели в меньшую без потери достоверности . Поскольку меньшие модели менее затратны для оценки, их можно развернуть на менее мощном оборудовании (например, мобильном устройстве ).
Дистилляцию модели не следует путать с компрессией модели , которая описывает методы уменьшения размера самой большой модели без обучения новой модели. Сжатие модели обычно сохраняет архитектуру и номинальное количество параметров модели, одновременно уменьшая число бит на параметр.
Извлечение знаний успешно использовалось в нескольких приложениях машинного обучения, таких как обнаружение объектов , акустические модели , и обработка естественного языка . Недавно оно также было введено для построения графических нейронных сетей, применимых к несетевым данным.
дистилляция данных нужна для
Передача знаний из большой модели в маленькую каким-то образом должна обучить последнюю без потери достоверности. Если обе модели обучаются на одних и тех же данных, у меньшей модели может быть недостаточно возможностей для обучения краткому представлению знаний по сравнению с большой моделью. Однако некоторая информация о кратком представлении знаний закодирована в псевдоправдоподобиях , назначенных ее выходным данным: когда модель правильно предсказывает класс, она назначает большое значение выходной переменной, соответствующей такому классу, и меньшие значения другим выходным переменным. Распределение значений среди выходных данных для записи дает информацию о том, как большая модель представляет знания. Следовательно, цель экономичного развертывания действительной модели может быть достигнута путем обучения только большой модели на данных, использования ее лучшей способности к обучению кратким представлениям знаний, а затем перегонки таких знаний в меньшую модель, путем обучения ее обучению мягкому выходному значению большой модели.
Модели диффузии учатся генерировать данные, обращая процесс диффузии вспять, т.е. модель учится превращать случайный шум в согласованное изображение (обычно соотвествующее заданному промпту).
Проблема здесь в слове постепенно. Это требует сотен шагов, и каждый из них требует большого количества вычислений.
Почему мы делаем это таким образом? Ну, мы не можем просто перейти от шума к согласованному изображению, это привело бы к абстрактным сюрреалистическим результатам. Шум случаен и не содержит изображение как таковое (как правило). Постепенное удаление шума позволяет раскрыть общий контур изображения, который затем может быть детализирован шаг за шагом, используя предыдущие шаги в качестве базы. То же самое с людьми – вы не можете написать целое приложение на Python за один раз – обычно вы пишете код по частям, и он как бы эволюционирует.
Но почему нам нужно так много шагов? По-видимому, это больше результат начального математического описания проблемы, чем что-либо еще. Это напоминает мне, как часто формулировка проблемы и используемый язык диктуют решение.
Идея здесь в том, что мы не делаем это вышеописанным способом. Если подумать , а зачем нам предсказывать каждый шаг ??. Мы можем предсказывать каждый второй шаг, пропуская шаг в обучении и в выводе. Ученик больше не удаляет шум из случайного зашумленного изображения. Он удаляет шум из изображения, которое было обработано родительской моделью, а родительская модель уже обучена и знает, что делает (вот вам и польза учителей).
Таким образом, в модели ученика у нас будет вдвое меньше шагов, чем у родительской модели, и оказывается, что качество почти точно такое же. Затем мы берем эту модель ученика и используем ее в качестве учителя и создаем новую модель ученика. Затем мы обучаем нового ученика с использованием этой новой учительской модели и снова во время обучения пытаемся предсказывать только каждый второй шаг и так далее. В конце концов, мы повторяем этот процесс много раз, сжимая модель и количество шагов, уменьшая их вдвое каждый раз. Мы делаем этот процесс до тех пор, пока результаты нас перестают устраивать. Таким образом, мы эффективно сокращаем требования к вычислениям на каждой дистилляции наполовину, и на данный момент кажется, что можно иметь только четыре-шесть шагов, и модель все еще работает так же хорошо, как и начальная учительская модель с сотнями шагов. Это называется процессом дистилляции.
Вот диаграмма:
Процесс дистиляции
Визуализация двух итераций алгоритма прогрессивной дистилляции. Сэмплер f(z; η), отображающий случайный шум ε в образцы x в 4 детерминированных шагах, дистиллируется в новый сэмплер f(z; θ), выполняющий только один шаг.
Этот метод позволяет обучить компактную модель (student) на основе более сложной и мощной модели (teacher).
Пример:
В компьютерном зрении MobileNet можно обучить с использованием ResNet в качестве teacher-модели, чтобы достичь хорошего баланса между качеством и скоростью.
Этот метод направлен на уменьшение объема обучающих данных без потери качества модели.
Пример:
В NLP небольшая выборка текстов может быть обобщена через синтезированные примеры на основе GPT, сохраняя ключевые семантические свойства.
Дана большая модель как функция векторной переменной , обученный для определенной задачи классификации , как правило, последний слой сети представляет собой softmax в форме
где это температура , параметр, который для стандартного softmax равен 1. Оператор softmax преобразует значения logit
к псевдовероятностям: более высокие значения температуры генерируют более мягкие распределения псевдовероятностей среди выходных классов. Дистилляция знаний состоит из обучения меньшей сети, называемой дистиллированной моделью , на наборе данных , называемом набором передачи (который отличается от набора данных, используемого для обучения большой модели), используя перекрестную энтропию в качестве функции потерь между выходными данными дистиллированной модели
и вывод большой модели
на той же записи (или среднем значении отдельных выходных данных, если большая модель представляет собой ансамбль), используя высокое значение температуры softmaxт
для обеих моделей
В этом контексте высокая температура увеличивает энтропию выходных данных, тем самым предоставляя больше информации для обучения очищенной модели по сравнению с жесткими целями, и в то же время уменьшая дисперсию градиента между различными записями, тем самым обеспечивая более высокую скорость обучения . Об этом говорит сайт https://intellect.icu .
Если для набора переноса доступны наземные истинные данные, процесс можно усилить, добавив к потерям перекрестную энтропию между выходными данными очищенной модели (вычисленной с помощью ), и известная метка
где компонент потерь по отношению к большой модели взвешивается с коэффициентомт2поскольку с ростом температуры градиент потерь относительно весов модели увеличивается в разы
.
При условии, что логиты имеют нулевое среднее значение , можно показать, что сжатие модели является частным случаем дистилляции знаний. Градиент потери дистилляции знаний относительно логита дистиллированной модели
дается
гдез^яявляются логиками большой модели. Для больших значенийт
это можно приблизительно представить как
и при гипотезе нулевого среднего это становится
, который является производным от
, т.е. потеря эквивалентна сопоставлению логарифмов двух моделей, как это делается при сжатии модели.
Алгоритм оптимального повреждения мозга (OBD) выглядит следующим образом:
Выполняйте до тех пор, пока не будет достигнут желаемый уровень разреженности или производительности:
Обучайте сеть (такими методами, как обратное распространение), пока не будет получено разумное решение.
Вычислить значимость для каждого параметра
Удалить некоторые наименее значимые параметры
Удаление параметра означает фиксацию параметра на нуле. «Значимость» параметра определяется как
, где
это функция потерь.
Вторая производная можно вычислить методом обратного распространения ошибки второго порядка .
Идея оптимального повреждения мозга заключается в аппроксимации функции потерь в окрестности оптимального параметра. по расширению Тейлора:
где
, с
является оптимальным, а перекрестные производные
игнорируются для экономии вычислений.
Таким образом, значимость параметра аппроксимирует увеличение потерь, если этот параметр удален.
Связанная методология была сжатием модели или обрезкой , когда обученная сеть уменьшалась в размере. Впервые это было сделано в 1965 году Алексеем Ивахненко и Валентином Лапой (Украина) (1965). Их глубокие сети обучались слой за слоем с помощью регрессионного анализа. Избыточные скрытые блоки были отсечены с использованием отдельного набора проверки. Другие методы сжатия нейронных сетей включают Biased Weight Decay и Optimal Brain Damage.
Ранний пример дистилляции нейронной сети был опубликован Юргеном Шмидхубером в 1991 году в области рекуррентных нейронных сетей (RNN). Проблема заключалась в предсказании последовательности для длинных последовательностей, т. е. глубоком обучении . Она была решена двумя RNN. Одна из них ( автоматизатор ) предсказывала последовательность, а другая ( чанкер ) предсказывала ошибки автоматизатора. Одновременно автоматизатор предсказывал внутренние состояния чанкера. После того, как автоматизатору удавалось хорошо предсказать внутренние состояния чанкера, он начинал исправлять ошибки, и вскоре чанкер устаревал, оставляя в конце только одну RNN.
Идея использования выходных данных одной нейронной сети для обучения другой нейронной сети также изучалась как конфигурация сети учитель-ученик В 1992 году в нескольких работах изучалась статистическая механика конфигураций учитель-ученик с комитетными машинами или обеими машинами с четностью.
Сжатие знаний нескольких моделей в одну нейронную сеть в 2006 году называлось сжатием модели : сжатие достигалось путем обучения меньшей модели на больших объемах псевдоданных, размеченных более производительным ансамблем, оптимизируя для соответствия логита сжатой модели логиту ансамбля. В препринте по извлечению знаний Джеффри Хинтона и др. (2015) была сформулирована концепция и показаны некоторые результаты, достигнутые в задаче классификации изображений .
Дистилляция знаний также связана с концепцией поведенческого клонирования, обсуждаемой Фаразом Тораби и др.
Дистилляция моделей и данных — мощные техники для создания более компактных, быстрых и эффективных систем машинного обучения, особенно актуальные для мобильных устройств, IoT и облачных сервисов.
Исследование, описанное в статье про дистилляция данных, подчеркивает ее значимость в современном мире. Надеюсь, что теперь ты понял что такое дистилляция данных, data distillation и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Вычислительный интеллект
Комментарии
Оставить комментарий
Вычислительный интеллект
Термины: Вычислительный интеллект