Нейронные сети совершили революцию в области распознавания образов, но из-за неочевидной интерпретируемости принципа работы, их не используют в таких областях, как медицина и оценка рисков. Требуется наглядное представление работы сети, которое сделает её не чёрным ящиком, а хотя бы «полупрозрачным». Cristopher Olah, в работе «Neural Networks, Manifolds, and Topology» наглядно показал принципы работы нейронной сети и связал их с математической теорией топологии и многообразия, которая послужила основой для данной статьи. Для демонстрации работы нейронной сети используются низкоразмерные глубокие нейронные сети. Понять поведение глубоких нейронных сетей в целом нетривиальная задача. Проще исследовать низкоразмерные глубокие нейронные сети — сети, в которых есть только несколько нейронов в каждом слое.
Для низкоразмерных сетей можно создавать визуализацию, чтобы понять поведение и обучение таких сетей. Эта перспектива позволит получить более глубокое понимание о поведении нейронных сетей и наблюдать связь, объединяющую нейронные сети с областью математики, называемой топологией.
Из этого вытекает ряд интересных вещей, в том числе фундаментальные нижние границы сложности нейронной сети, способной классифицировать определенные наборы данных. Рассмотрим принцип работы сети на примере. Начнем с простого набора данных — двух кривых на плоскости. Задача сети научится классифицировать принадлежность точек кривым.
Очевидный способ визуализировать поведение нейронной сети, посмотреть, как алгоритм классифицирует все возможные объекты (в нашем примере точки) из набора данных.
Начнем с простейшего класса нейронной сети, с одним входным и выходным слоем. Такая сеть пытается отделить два класса данных, разделив их линией.
Такая сеть не используется на практике. Современные нейронные сети обычно имеют несколько слоёв между их входом и выходом, называемыми «скрытыми» слоями.
Схема простой сети
Визуализируем поведение этой сети, наблюдая за тем, что она делает с разными точками в своей области. Сеть со скрытым слоем отделяет данные более сложной кривой, чем линия.
С каждым слоем сеть преобразует данные, создавая новое представление. Мы можем посмотреть данные в каждом из этих представлений и как их классифицирует сеть со скрытым слоем. Когда алгоритм дойдёт до окончательного представления, нейронная сеть проведет линию через данные (или в более высоких измерениях — гиперплоскость).
В предыдущей визуализации рассмотрены данные в «сыром» представлении. Вы можете представить это, посмотрев на входной слой. Теперь, рассмотрим его после того, как он будет преобразован первым слоем. Вы можете представить это, посмотрев на скрытый слой.
Каждое измерение соответствует активации нейрона в слое.
Скрытый слой обучается на представлении, так чтобы данные были линейно разделимы.
Непрерывная визуализация слоев
В подходе, описанном в предыдущем разделе, мы учимся понимать сети, просматривая представление, соответствующее каждому слою. Это дает нам дискретный список представлений.
Нетривиальная часть заключается в понимании того, как мы переходим от одного к другому. К счастью, уровни нейронной сети имеют свойства, которые делают это возможным.
Существует множество различных типов слоёв, используемых в нейронных сетях.
Рассмотрим слой tanh для конкретного примера. Tanh-слой tanh (Wx + b) состоит из:
- Линейного преобразование «весовой» матрицей W
- Перевод с помощью вектора b
- Точечное применение tanh.
Мы можем представить это как непрерывное преобразование следующим образом:
Этот принцип работы очень похож на другие стандартные слои, состоящие из аффинного преобразования, за которым следует поточечное применение монотонной функции активации.
Этот метод можно применить для понимания более сложных сетей. Так, следующая сеть классифицирует две спирали, которые слегка запутаны, используя четыре скрытых слоя. Со временем видно, что нейронная сеть переходит от «сырого» представления к более высокому уровню, который сеть изучила, чтобы классифицировать данные. В то время как спирали изначально запутаны, к концу они линейно отделимы.
С другой стороны, следующая сеть, также использующая несколько уровней, но не может классифицировать две спирали, которые более запутаны.
Следует отметить, что эти задачи имеют ограниченную сложность, потому что используются низкоразмерные нейронные сети. Если бы использовались более широкие сети, решение задач упростилось.
Топология слоев tang
Каждый слой растягивается и сжимает пространство, но он никогда не режет, не разбивает и не складывает его. Интуитивно мы видим, что топологические свойства сохраняются на каждом слое.
Такие преобразования, которые не влияют на топологию, называются гомоморфизмами (Wiki — Это отображение алгебраической системы А, сохраняющее основные операции и основные отношения). Формально они являются биекциями, которые являются непрерывными функциями в обоих направлениях. При биективном отображении каждому элементу одного множества соответствует ровно один элемент другого множества, при этом определено обратное отображение, которое обладает тем же свойством.
Теорема
Слои с N входами и N выводами являются гомоморфизмами, если весовая матрица W не является вырожденной. (Нужно быть осторожным в отношении домена и диапазона.)
Топология и классификация
Рассмотрим двухмерный набор данных с двумя классами A, B⊂R2:
А = {х | d (х, 0) <1/3}
В = {х | 2/3 <d (х, 0) <1}
A красный, B синий
Требование: нейронная сеть не может классифицировать этот набор данных, не имея 3 или более скрытых слоя, независимо от ширины.
Как упоминалось ранее, классификация с сигмовидной функцией или слоем softmax эквивалентна попытке найти гиперплоскость (или в этом случае линию), которая разделяет A и B в конечном представлении. Имея только два скрытых слоя, сеть топологически неспособна разделять данные таким образом, и обречена на неудачу в этом наборе данных.
В следующей визуализации мы наблюдаем скрытое представление, пока сеть тренируется вместе с классификационной линией.
Для этой сети обучения недостаточно для достижения стопроцентного результата.
Алгоритм попадает в непроизводительный локальный минимум, но способен достичь ~ 80% точности классификации.
В этом примере был только один скрытый слой, но он не срабатывал. Утверждение. Либо каждый слой является гомоморфизмом, либо весовая матрица слоя имеет определитель 0.
Если мы добавим третий скрытый элемент, проблема станет тривиальной. Нейронная сеть узнает следующее представление:
Представление даёт возможность разделить наборы данных гиперплоскостью. Чтобы лучше понять, что происходит, давайте рассмотрим еще более простой набор данных, который является одномерным:
A=[−1/3,1/3] B=[−1,−2/3]∪[2/3,1]
Без использования слоя из двух или более скрытых элементов мы не можем классифицировать этот набор данных. Но, если мы используем сеть с двумя элементами, мы научимся представлять данные как хорошую кривую, которая позволяет нам разделять классы с помощью линии:
Что происходит? Один скрытый элемент учится срабатывать, когда x> -1/2, и один учится срабатывать, когда x> 1/2. Когда первый срабатывает, но не второй, мы знаем, что мы находимся в A.
Гипотеза многообразия
Это относится к наборам данных из реального мира, например, наборам изображений? Если вы серьезно относитесь к гипотезе многообразия, я думаю, что это имеет значение.
Многомерная гипотеза состоит в том, что естественные данные образуют низкоразмерные многообразия в пространстве имплантации. Есть и теоретические [1], и экспериментальные[2] причины полагать, что это правда. Если это так, то задача алгоритма классификации состоит в том, чтобы отделить пучок запутанных многообразий.
В предыдущих примерах один класс полностью окружал другой. Тем не менее маловероятно, что многообразие изображений собак полностью окружены коллекцией изображений кошек. Но есть и другие, более правдоподобные топологические ситуации, которые все еще могут возникнуть, как мы увидим в следующем разделе.
Связи и гомотопии
Еще один интересный набор данных — два связанных тора A и B.
Как и предыдущие наборы данных, которые мы рассмотрели, этот набор данных не может быть разделен без использования n + 1 измерений, а именно четвёртого измерения.
Связи изучаются в теории узлов, области топологии. Иногда, когда мы видим связь, не сразу понятно, является ли это бессвязность (множество вещей, которые запутались вместе, но могут быть разделены непрерывной деформацией) или нет.
Относительно простая бессвязность.
Если нейронная сеть, использующая слои только с тремя юнитами, может ее классифицировать, то она является бессвязной. (Вопрос: Может ли все бессвязности классифицироваться по сети только с тремя бессвязностями, теоретически?)
С точки зрения этого узла, непрерывная визуализация представлений, созданных нейронной сетью, это процедура распутывания связей. В топологии мы будем называть это эмбиентной изотопией между исходным звеном и разделенными.
Формально, изотопия окружающего пространства между многообразиями А и В является непрерывной функцией F: [0,1] × X → Y такая, что каждый Ft является гомеоморфизмом из X в его диапазон, F0 является тождественной функцией, а F1 отображает A в B. Т.е. Ft непрерывно переходит из отображения A в себя, к отображению A в B.
Теорема: существует изотопия окружающего пространства между входом и представлением сетевого уровня, если: a) W не является вырожденной, b) мы готовы перенести нейроны в скрытый слой и c) имеется более 1 скрытого элемента.
До сих пор такие связи, о которых мы говорили маловероятно появятся в реальных данных, но существуют обобщения более высокого уровня. Правдоподобно, что такие особенности могут существовать в реальных данных.
Связи и узлы являются одномерными многообразиями, но нам нужны 4 измерения, чтобы сети могли распутать все из них. Точно так же может потребоваться еще более высоко размерное пространство, чтобы иметь возможность разложить n-мерные многообразия. Все n-мерные многообразия могут быть разложены в 2n + 2 размерностях. [3]
Легкий выход
Простой путь, состоит в том, чтобы попытаться вытащить многообразия отдельно и растянуть части, которые запутаны настолько, насколько это возможно. Хотя это не будет близко к подлинному решению, такое решение может достичь относительно высокой точности классификации и быть приемлемым локальным минимумом.
Такие локальные минимумы абсолютно бесполезны с точки зрения попытки решения топологических проблем, но топологические проблемы могут обеспечить хорошую мотивацию для изучения этих проблем.
С другой стороны, если нас интересует исключительно достижение хороших результатов классификации, подход приемлем. Если крошечный бит многообразия данных зацепился за другое многообразие, является ли это проблемой? Вероятно, что удастся получить произвольно хорошие результаты классификации, несмотря на эту проблему.
Улучшенные слои для манипулирования многообразиями?
Трудно представить, что стандартные слои с аффинным преобразованием, действительно, хороши для манипулирования многообразиями.
Возможно, имеет смысл иметь совсем другой слой, который мы можем использовать в композиции с более традиционными?
Перспективным является изучение векторного поля с направлением, в котором мы хотим сдвинуть многообразие:
А затем деформируем пространство, основанное на векторном поле:
Можно было бы изучить векторное поле в неподвижных точках (просто взять некоторые фиксированные точки из набора тестовых данных для использования в качестве якорей) и каким-то образом интерполировать.
Где v0 и v1 — векторы, а f0 (x) и f1 (x) — n-мерные Гауссианы.
K-Nearest Neighbor Layers
Линейная разделимость может быть огромной и, возможно, необоснованной потребностью в нейронных сетях. Естественным является применение метода k-ближайших соседей (k-NN). Однако, успех k-NN в значительной степени зависит от представления, которое он классифицирует, поэтому требуется хорошее представление до того, как k-NN сможет работать хорошо.
k-NN дифференцируема по отношению к представлению, на которое оно действует. Таким образом, мы можем напрямую обучать сеть для классификации k-NN. Это можно рассматривать как своего рода слой «ближайшего соседа», который действует как альтернатива softmax.
Мы не хотим предуправлять всем нашим набором тренировок для каждой мини-партии, потому что это будет очень дорогостоящей процедурой. Адаптированный подход состоит в том, чтобы классифицировать каждый элемент мини-партии на основе классов других элементов мини-партии, давая каждому вес единицы делённой на расстояние от цели классификации.
К сожалению, даже при сложной архитектуре использование k-NN снижает вероятность ошибки — и использование более простых архитектур ухудшает результаты.
Заключение
Топологические свойства данных, такие как связи, могут сделать невозможным линейное разделение классов с использованием низкоразмерных сетей независимо от глубины. Даже в тех случаях, когда это технически возможно. Например, спирали, разделить которые это может быть очень сложно.
Для точной классификации данных, нейронным сетям необходимы широкие слои. Кроме того, традиционные слои нейронной сети, плохо подходят для представления важных манипуляций с многообразиями; даже, если бы мы установили весовые коэффициенты вручную, было бы сложным компактно представлять преобразования, которые мы хотим.
Автор: Кирилл Косолапов
Источник: https://habr.com/