Обучение адаптируемых нейронных сетей

Адаптируемые сети

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

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

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

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

Концепция внедрения задачи

Один из способов думать о нейронной сети - это как о машине, которая обучена отображать точки из одного пространства в точки в другом пространстве. При тщательном обучении машина будет обобщать, то есть отобразит точку, которую никогда не видела, основываясь на сходстве этой точки с точками, которые она видела. (См. Левую часть рисунка 1.)

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

Одномерный пример

В этом примере сеть просят предсказать значение y одного из ряда линейных или квадратных уравнений с учетом значения x. Уравнения имеют вид:

-8*(x+1)*(x-4)+9

Для создания уравнений используется алгоритм. Учитывая, что диапазон коэффициентов ограничен от 0 до 9, общее количество возможных уравнений составляет 128 304. Каждый из 9 шагов в алгоритме делает случайный выбор, и последовательность выборов, сделанных во время генерации уравнения, является векторным представлением уравнения. Для приведенного выше уравнения его векторное представление:

[1, 8, 1, 2, 1, 1, 4, 2, 9]

Это служит встраиванием задачи для задачи прогнозирования значений y для этого уравнения с учетом значений x.

Чтобы использовать встраивание задачи, вложение конкатенируется с x-значением, а затем передается в сеть. Точка данных x для приведенного выше уравнения, например, со значением -5, будет представлена ​​путем объединения представления уравнения со значением x. Например:

[1, 8, 1, 2, 1, 1, 4, 2, 9, -5]

Набор обучающих данных состоит из 400 случайных уравнений с 2000 парами x-y в каждом. В целях оценки обучающая выборка вынуждена содержать четыре известных уравнения и исключать четыре известных уравнения.

Обучающий набор используется для обучения сети с одним скрытым слоем из 100 узлов за 2 эпохи.

После обучения сеть просят вывести значения y из случайно сгенерированного набора значений x для каждого из 4 уравнений, которые, как известно, входят в набор, и 4 уравнений, которые, как известно, находятся за пределами набора. Другими словами, сеть просят выполнить 8 различных задач, но обучены только четырем из них. Верхний ряд графиков - это уравнения в обучающей выборке. Вторая строка - уравнения вне обучающей выборки. Синие точки действительны, а оранжевые - предсказаны. (См. Рисунок 2.)

В качестве контроля был проведен тот же эксперимент, за исключением того, что вместо встраивания расширенной задачи одна случайная цифра была объединена со значениями x в обучающем наборе для каждой задачи уравнения. Сеть смогла изучить правильное отображение для задач, но не так хорошо, как при встраивании разнообразных задач. Он совершенно не смог ничего предсказать для задач, которые он не видел. (См. Рисунок 3.).

Методика создания задачи встраивания приводит к довольно компактному представлению - всего 9 цифр. Как показано ниже, компактные вложения задач дают лучшие результаты.

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

Однако сжатие наивного вложения задачи с использованием метода сжатия анализа главных компонентов (PCA) (с 16 до 11 цифр) значительно восстановило точность, присущую компактному подходу. (См. Рисунок 5.)

Итак, из этого упрощенного примера мы видим, что:

  • Без встраивания задач сети не справляются с задачами, которым они не обучены.
  • Встраивание задач работает лучше, когда они компактны

Пример MNIST

Набор данных MNIST используется для обучения сети выполнению 7 задач. В каждой задаче сеть обучается узнавать, имеют ли изображения указанную цифру или нет (для цифр от 0 до 6). Например, одна из задач может быть такой: Является ли это изображение цифрой 4? Затем сеть оценивается на предмет того, насколько хорошо она справляется со всеми десятью задачами (для цифр от 0 до 9) без дополнительного обучения. Точность сети при выполнении задачи зависит от того, как часто сеть правильно отвечает на вопрос. (См. Рисунок 6.)

Благодаря встраиванию задачи сеть может достигать аналогичных результатов по цифрам, на которых она была обучена, и по цифрам, которые она не использовала. Без встраивания задач наилучшие результаты, которые сеть могла бы выполнить с цифрами 7, 8 и 9, составили бы 10%, поскольку именно такие цифры преобладают в тестовом наборе. (См. Рисунок 7.)

Из этого примера мы узнаем, что

  • Встраивание задач расширяется до более сложных типов данных
  • Сжатие на основе PCA создает подходящее встраивание задачи

Компактное встраивание задач для MNIST

Упрощенный подход к созданию встраивания задачи для примера MNIST заключается в выборе случайно выбранного изображения для каждой задачи. Что касается вопроса «Является ли это изображение цифрой 4?», Можно случайным образом выбрать изображение с меткой 4 из обучающего набора и объединить его со всеми обучающими и тестовыми изображениями для этой задачи. Поскольку изображения MNIST имеют размер 28x28 пикселей, всего 784 элемента, встроенное изображение задачи будет вдвое больше, 1568 элементов.

Основываясь на том, что было изучено в одномерном примере, компактное встраивание задачи обучается быстрее и дает более точные результаты. По этой причине применяется метод сжатия. В этом примере анализ первичных компонентов (PCA) применяется для сжатия случайно выбранного изображения с 784 элементов до 264 элементов (уменьшение на 66%). Затем сжатое изображение объединяется с обучающим и тестовым изображениями для данной задачи.

Фактически, PCA идентифицирует линейное преобразование, которое максимизирует сохраняемую информацию в изображении с целью удалить из него фиксированное количество пикселей. В этом примере алгоритму PCA предоставляется случайный набор из 1000 изображений из обучающего набора для цифр от 0 до 6, чтобы он мог построить линейное преобразование. Цифры с 7 по 9 исключены, поскольку сеть должна быть обучена без каких-либо знаний об альтернативных задачах или данных для альтернативных задач. Результирующее преобразование сохраняет 99% вариации между изображениями в наборе из 1000. Затем линейное преобразование применяется к случайно выбранному изображению для каждой задачи.

Другие методы сжатия изображений могут оказаться столь же эффективными и могут иметь другие преимущества, такие как меньший объем обработки.

Выводы

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

Наивные подходы к построению встраивания задач могут серьезно ограничить способность сети к обучению и могут ограничить общую точность сети. Показано, что встраивание сжатых задач возможно в одномерных примерах и примерах MNIST. Кажется, есть много возможностей для изучения альтернатив сжатия.

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