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

Ссылки на другие мои статьи:

  1. Пользовательские функции потерь в TensorFlow
  2. Классификация Softmax
  3. Климатический анализ
  4. Хоккейные бунты и крайности

Введение

Кратковременное обучение (FSL) - это область теории обучения и архитектур машинного обучения, которая фокусируется на понимании того, как модели контролируемого обучения могут эффективно учиться и прогнозировать на основе небольшого количества обучающих примеров. Связанные аспекты FSL - это элегантное получение неопределенностей прогнозов и повышение устойчивости и возможностей обобщения модели. FSL - важная область исследований, потому что большая часть производственных систем машинного обучения с учителем, таких как Tesla AutoPilot, требует огромного количества данных и времени на обучение, чтобы быть хотя бы в некоторой степени надежными, и даже в этом случае подвержены серьезным проблемам обобщения ( поэтому я по-прежнему предпочитаю водить свою машину). В связи с этим, эти системы должны иметь возможность справляться с неоднозначностью информации, которую они представляют, и давать меру неопределенности в своих прогнозах, чтобы быть надежными в реальных жизненных ситуациях.

Многие из самых популярных моделей контролируемого обучения, такие как глубокие нейронные сети (DNN) и усиленные деревья, не дают достаточно надежных прогнозов, когда количество обучающих выборок меньше тысяч, не говоря уже о десятках или даже одной выборке. С точки зрения обучения животных и людей, обучение по принципу несколько выстрелов происходит вполне естественно. Наивному животному (обычно) не нужно есть ядовитый фрукт более одного раза, чтобы потом избежать его и других отдаленно похожих фруктов. Однако из-за того, что нет бесплатного обеда, существуют ограничения для определенных методов FSL, например, по иронии судьбы, когда у нас много образцов, как мы увидим.

В моей предыдущей статье описывалась интересная архитектура для FSL, реализованная в старой школе Tensoflow (TF 1.x), в которой использовалась дистилляция знаний из модели классификатора гауссовского процесса (GP) в глубокую нейронную сеть, в которые являются совместными потерями как GP, так и DNN, которые были оптимизированы в DNN, чтобы обучить DNN давать более реалистичные прогнозы на основе чрезвычайно небольшого числа обучающих примеров, прогнозы, которые отражают неопределенность в данных. В конце 2019 года Patacchiola et al. пришли и представили новый метод, который развивает комбинацию глубоких нейронных сетей и врачей общей практики и, возможно, более элегантно. Их метод мы для краткости назовем Deep Kernel Transfer или DKT.

Основным вкладом метода DKT является превосходная производительность по сравнению с современными специализированными DNN для FSL в регрессии с несколькими выстрелами и междоменной классификации (т. Е. Обучении классификатора на разных наборах данных).

Основные понятия

Короче говоря, на этапе прогнозирования DNN получает (многомерные) входные данные, которые мы хотим, чтобы GP соответствовал, и применяет к ним нелинейное уменьшение размерности, преобразовывая их в представление гораздо более низкой размерности. Затем преобразованные выходные данные передаются в функцию ядра GP, и апостериор вычисляется с помощью обычных апостериорных вычислений GP.

Во время обучения параметры ядра DNN и GP оптимизируются совместно с использованием свидетельства потери, которое является предельной вероятностью или правдоподобием GP . Каждый DNN и GP получают свои индивидуальные убытки от потери общих доказательств, принимая (частичный) градиент относительно. их собственные векторы параметров и обновляются с помощью подходящего оптимизатора (по выбору авторов Адам).

Важно отметить, что DNN и ядро ​​по-прежнему разделены, т.е. DNN не является всем ядром и не заменяет выбор формы ядра GP (фактически авторы заявляют, что радиальная основа и спектральные ядра показывают хорошие результаты в своих экспериментах). Параметры DNN фактически являются весами нейронной сети, а параметры ядра GP являются параметрами в функции ядра (например, параметр σ в ядре RBF).

В принципе, это решает проблему вычислительной неразрешимости большой размерности при работе с 2D-изображениями или тензорами и вычислении апостериорного GP. Обучение DNN на нескольких примерах из разных классов в многоклассовой классификации или нескольких примерах в задачах регрессии позволяет DKT сочетать прогностические свойства GP с возможностями представления информации DNN.

Ядро ковариации, управляемое нейронной сетью

Ядерная функция k (x, x ’) вычисляет ковариацию между двумя« точками »или, в общем случае, векторами, матрицами или тензорами. Эта функция ядра используется для заполнения элементов ковариационной матрицы K, которую мы используем для вычисления апостериорного распределения в GP.

Затем мы используем DNN Φ, параметризованное его весами φ, чтобы направить наши обучающие данные в подходящее ядро ​​с параметрами Θ Автор θ.

Эмпирическое приближение Байеса

Прелесть байесовской структуры GP заключается в том, что мы можем предположить, что все параметры и входные данные (φ, θ, x) образуют совместное гауссово распределение в некотором многомерном пространстве, обусловленное целевыми выходами. Фактически, общая концепция GP представляет собой великолепно элегантный пример байесовского вывода. У нас есть предварительные данные, которые являются входными данными и параметрами модели, и данные свидетельств, которые являются целями, и мы вычисляем апостериорное распределение, которое заполняет бесконечномерное пространство гильбертова пространства функций ядра, которые, как мы предполагаем, моделируют данные.

Однако при попытке вычислить полное апостериорное предсказание возникают некоторые вычислительные проблемы, поскольку для вычисления полного апостериорного вывода необходимы методы вариационного вывода, которые могут сделать вычисление внутренним. Авторы аппроксимируют апостериорную оценку, фиксируя набор параметров (обозначенный шляпами) к точечным оценкам (в совместной гауссовской формулировке наборы параметров считаются распределениями, точно так же, как и предположение о распределении весов в байесовской нейронной сети) и применить прямую оценку максимального правдоподобия к логарифмическому объединенному предельному правдоподобию - это известно как эмпирическое байесовское или MLE-приближение типа II, и поэтому предельное правдоподобие приближается с помощью обычной функции правдоподобия L выше. Аналитический термин для убытка дают авторы:

Если ковариационная матрица K заполняется ядром Θ (с поглощенными параметрами гауссова шума), y - это набор целей, а N - количество обучающих примеров или междоменных задач (например, разных наборов данных). Каждый набор параметров φ и θ затем обновляется на своих соответствующих частных производных до L. Эта форма потерь хороша тем, что она естественным образом регуляризуется с помощью -log | K | термин, который снижает сложность модели.

Сколько все это стоит?

Может быть, столько же, сколько и самый высокий вариант Tesla Cybertruck. Из того, что я собрал, временная сложность обучения Convnet составляет около O (n⁵), а операция инверсии матрицы при вычислении потерь L составляет не менее O (n³), поэтому разумно предположим, что у нас есть по крайней мере колоссальная временная сложность O (n⁵) + O (n³) = O (n⁸) в обучении DKT. Компромисс, конечно, заключается в обучении за несколько выстрелов, у вас есть / нужно только несколько обучающих образцов. Однако в то же время уникальным преимуществом GP является наличие неопределенности прогноза вместе с самим прогнозом. Чтобы получить столь же надежную меру неопределенности, нужно обучить большие ансамбли DNN или Boosted Trees.

Регрессия на несколько снимков

Хорошо, так насколько хороша эта модель на самом деле? Давайте посмотрим на проблему попытки предсказать возраст людей по их лицам на изображении ... имея всего 98 изображений для обучения. Изображения взяты из https://github.com/JingchunCheng/All-Age-Faces-Dataset

Для простоты мы изменим размер изображений до фиксированного размера 80x80 пикселей и уменьшим их разрешение до изображений в градациях серого только с одним цветовым каналом. Мы также будем использовать простое ядро ​​RBF, поскольку оно, похоже, хорошо работает для авторов. Репо ниже:

https://github.com/hhl60492/deep-kernel-transfer

Некоторые соображения по реализации:

  1. В исходном репо использовался PyTorch с включенным CUDA, однако в моей вилке зависимости CUDA удалены, так что читатели без поддержки CUDA / GPU могут запускать модель.
  2. Несколько скриптов загрузчика данных и внутренние формы тензоров были изменены, чтобы позволить обучение AAF-изображениям - в сложных моделях / конвейерах машинного обучения рекомендуется абстрагировать обработку и обработку данных для отдельных скриптов и модулировать загрузку данных и как можно больше компонентов обучения / прогнозирования!

Результаты

Модель регрессии GPNet была обучена на 98 случайно выбранных мужских и женских изображениях 80x80 JPG в оттенках серого с меткой их возраста (из имени файла изображения) в качестве цели для 100 эпох. Было обнаружено, что для получения приемлемых результатов необходимо нормализовать возрастные целевые значения до [-1, 1]. В общем, это большая проблема для систем глубокого обучения, так как тщательный выбор в отношении нормализации ввода и цели (или ее отсутствия), соответствующей функциям активации в сети (особенно выходной узел для регрессии) и потерям (см. Логарифмическая RMSE убыток ).

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

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

Test image filelists/AAF/test/07896A10_gs.jpg pred 13.78601193428039 95% CI[ -18.663501739501953 , 46.23552858829498 ] target: 9.999999403953552
Test image filelists/AAF/test/07275A76_gs.jpg pred 68.74524354934692 95% CI[ 36.295726895332336 , 101.19476318359375 ] target: 75.99999904632568
Test image filelists/AAF/test/testA27_gs.jpg pred 27.942177653312683 95% CI[ -4.507339000701904 , 60.39169430732727 ] target: 26.999999582767487
Test image filelists/AAF/test/07588A05_gs.jpg pred 9.622436761856079 95% CI[ -22.82707691192627 , 42.07195341587067 ] target: 5.0000011920928955
Test image filelists/AAF/test/07455A02_gs.jpg pred 7.124289870262146 95% CI[ -25.32522678375244 , 39.57380652427673 ] target: 2.000001072883606

Результаты потрясающе хороши, абсолютная ошибка среднего возраста составляет всего около 4,7 года. Кроме того, указан доверительный интервал (отрицательные значения интервала могут указывать на смещение неопределенности в более молодом возрасте), поэтому менее определенные прогнозы имеют более широкий интервал и наоборот. Несколько забавных вещей, которые можно попробовать, - это дать модели повернутые / искаженные изображения, а также объекты / лица, не относящиеся к человеческому роду, и посмотреть, каковы результаты испытаний. Кроме того, можно ожидать лучших результатов и меньших доверительных интервалов при большем количестве эпох обучения.

В общем, результаты на уровне или превышают показатели человеческого уровня… в конце концов, можете ли вы угадать возраст участников теста, представленного ниже? Также, можете ли вы оценить 95% доверительный интервал этого предположения?

Последнее замечание: некоторые задачи классификации выстрелов с использованием этого метода немного сложнее из-за сопоставления GP, апостериорного с потерей кросс-энтропии, но формулы есть в документе, а код также включен в репо оригинальными авторами.

Заключение

Мы увидели, как был составлен DKT, и какие интересные аспекты терапевтов при выполнении прогнозов и как их можно применить к задачам в обучении за несколько шагов. Я не удивлюсь, если будущие критически важные для безопасности системы машинного обучения в реальном времени, такие как автопилот Теслы или его конкуренты, объединят некоторые элементы врачей общей практики для повышения их устойчивости в разнообразных условиях реального мира, а не просто на каком-то пустом шоссе в пустыне в дневное время. . Как всегда, не стесняйтесь отвечать на эту статью и желаю вам счастья в поиске данных.