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

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

Создание эксперимента

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

Чтобы этот пример точно имитировал сценарий реального мира, мы должны подчеркнуть несколько моментов:

  1. Один из способов взглянуть на нейронную сеть — это функция. Для каждого вектора во входном пространстве нейронная сеть выводит значение. Обучая нейронную сеть, мы, по сути, немного меняем эту функцию в соответствии с полученными данными обучения. В конце обучения мы получаем окончательную функцию, в которую мы можем вводить любые (x₁,x₂) и получать выходное значение. Теоретически вывод должен быть между 0 и 1, но это не гарантируется.
  2. Каждая проблема имеет теоретическую совершенную функцию, которая берет вектор из входного пространства и дает правильное значение, которое коррелирует с правильной классификацией. Это верно и для реальных примеров. Скажем, например, у нас есть входные векторы пространства, которые представляют собой черно-белые изображения размером 1000x1000 пикселей. Для каждого из возможных векторов мы хотим классифицировать, содержит ли изображение кошку. Теоретически мы можем просмотреть каждое из возможных изображений во входном пространстве и пометить их. Любой ввод, который мы могли бы воссоздать в реальном мире с помощью камеры и кота, будет помечен как «кошка», а все остальные — как «не кот». Таким образом, по сути, «теоретически идеальная функция» получит значение единицы во входных векторах «кошки» и ноль в противном случае. По сути, эта «идеальная функция», также называемая целевой функцией, является функцией, которую мы пытаемся аппроксимировать с помощью нашей нейронной сети.
  3. Не все точки во входном пространстве создаются одинаково. Во входном пространстве есть регионы, из которых мы будем выбирать чаще, а из других мы вообще не будем делать выборки. Правильная математическая терминология: области входного пространства, где распределение вероятности выбора точки очень низкое (или даже нулевое), мы будем называть «зоной отсутствия интереса», а области, где распределение вероятности прилично, мы будем называть «зоной интереса». ” Чтобы подчеркнуть это, вернемся к нашей проблеме «кошка на картинке». Большая часть нашего входного пространства состоит из векторов, содержащих случайные значения, которые вообще не представляют никакого изображения в реальном мире. Несмотря на то, что это официально изображения, на которых нет кота, они будут отнесены к нулевой категории в целевой функции. Это области, которые мы не будем давать образцам данных нейронных сетей для обучения или выбирать эти изображения для вывода (вывод использует обученную NN для классификации). Поскольку нам все равно, как нейронная сеть классифицирует эти области, это «зоны, не представляющие интереса». То же самое относится к областям входного пространства, которые содержат законные примеры из реального мира, но мы не будем сэмплировать (или вряд ли когда-либо). Например, если бы у нас были изображения, содержащие галактики, но мы знаем, что во время обучения и вывода мы никогда не нарисуем эти типы изображений.

Эксперимент

Мы решили создать задачу с двумя входными данными и одним классом классификации. Это делается для того, чтобы отображать входные и выходные данные на трехмерном графике. Задача классификации состоит в том, чтобы предсказать, находится ли точка внутри круга с центром в точке (1,2) и радиусом 3.

Целевая функция: f : ℝ²→ℝ

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

(1) -4< x₁ <6

(2) x₁–3.5< x₂< x₁+3.5

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

Нейронная сеть и обучение

Структура построенной нами нейронной сети выглядит следующим образом:

  • Два полностью связанных скрытых слоя, каждый с десятью узлами и обычным узлом смещения.
  • Функция активации: ReLU
  • Функция потерь: среднеквадратическая ошибка.

Сеть обучалась в течение 150 эпох с использованием разделения обучающего/проверочного набора 80/20.

Результаты

Тренировка:

На следующем графике показаны результаты обученной сети (150 эпох) в «зоне интереса»:

На следующем графике показано предсказание сети по участку входного пространства, которое шире «зоны интереса». Мы ограничили графики этим диапазоном x₁ ∈[-10,10], x₂ ∈[-10,10]:

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

Обратное распространение

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

x₁ ∈[-30,30], x₂ ∈[-30,30]

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

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

Вывод

Есть несколько важных моментов, которые мы можем извлечь из этого эксперимента.

  1. Процесс обучения — это процесс использования большого количества точек, чтобы попытаться оценить неизвестную целевую функцию. В нейронных сетях обучение — это, по сути, процесс аппроксимации функции.
  2. Как обсуждалось ранее, во входном пространстве есть 2 типа «зон, не представляющих интереса»: области с недопустимыми значениями для предметной области (т. е. случайные значения) и области с допустимыми значениями, но на них не обучалась НС (например, галактики). . При выводе данной точки мы можем дать более точную оценку надежности классификации на основе ее расположения во входном пространстве по отношению к обученным областям («зоны интереса») и необученным областям («зоны неинтереса»). ). Это то, к чему мы, возможно, захотим вернуться в следующих постах.
  3. Эффекты обратного распространения не являются локальными для рассматриваемой точки, и эффекты могут быть сильнее в отдаленных областях входного пространства.
  4. Первоначальное предположение, которое мы сделали, что мы работаем в идеальном бесшумном мире, несколько преувеличено. При работе в реальном мире «целевая функция» становится «целевым распределением», имеющим вероятностный элемент.
  5. При использовании набора оценок для прогнозирования точности NN в реальном мире мы делаем предположение, что распределение вероятностей набора проверки такое же, как и в реальном мире. Здесь есть вероятность того, что что-то сломается. Например, если я оцениваю НС, используя проверочный набор, который содержит 99,9 % изображений кошек и собак и 0,01 % изображений галактик, но затем в реальном мире я подаю НС 80 % изображений кошек и собак и 20 % галактик, чем наш оценка точности НС не будет иметь значения.

Это совместный проект с Орен Мейри

Код можно найти здесь