Нейронные сети, фундаментальные принципы работы, многообразие и топология

    Нейронные сети совершили революцию в области распознавания образов, но из-за неочевидной интерпретируемости принципа работы, их не используют в таких областях, как медицина и оценка рисков. Требуется наглядное представление работы сети, которое сделает её не чёрным ящиком, а хотя бы «полупрозрачным». Cristopher Olah, в работе «Neural Networks, Manifolds, and Topology» наглядно показал принципы работы нейронной сети и связал их с математической теорией топологии и многообразия, которая послужила основой для данной статьи. Для демонстрации работы нейронной сети используются низкоразмерные глубокие нейронные сети.

    Понять поведение глубоких нейронных сетей в целом нетривиальная задача. Проще исследовать низкоразмерные глубокие нейронные сети — сети, в которых есть только несколько нейронов в каждом слое. Для низкоразмерных сетей можно создавать визуализацию, чтобы понять поведение и обучение таких сетей. Эта перспектива позволит получить более глубокое понимание о поведении нейронных сетей и наблюдать связь, объединяющую нейронные сети с областью математики, называемой топологией.

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

    Рассмотрим принцип работы сети на примере

    Начнем с простого набора данных — двух кривых на плоскости. Задача сети научится классифицировать принадлежность точек кривым.



    Очевидный способ визуализировать поведение нейронной сети, посмотреть, как алгоритм классифицирует все возможные объекты (в нашем примере точки) из набора данных.

    Начнем с простейшего класса нейронной сети, с одним входным и выходным слоем. Такая сеть пытается отделить два класса данных, разделив их линией.



    Такая сеть не используется на практике. Современные нейронные сети обычно имеют несколько слоёв между их входом и выходом, называемыми «скрытыми» слоями.



    Схема простой сети


    Визуализируем поведение этой сети, наблюдая за тем, что она делает с разными точками в своей области. Сеть со скрытым слоем отделяет данные более сложной кривой, чем линия.



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

    В предыдущей визуализации рассмотрены данные в «сыром» представлении. Вы можете представить это, посмотрев на входной слой. Теперь, рассмотрим его после того, как он будет преобразован первым слоем. Вы можете представить это, посмотрев на скрытый слой.
    Каждое измерение соответствует активации нейрона в слое.



    Скрытый слой обучается на представлении, так чтобы данные были линейно разделимы.

    Непрерывная визуализация слоев

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

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

    Рассмотрим слой tanh для конкретного примера. Tanh-слой tanh (Wx + b) состоит из:

    1. Линейного преобразование «весовой» матрицей W
    2. Перевод с помощью вектора b
    3. Точечное применение tanh.

    Мы можем представить это как непрерывное преобразование следующим образом:



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



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



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

    Топология слоев tang


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

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

    Теорема

    Слои с N входами и N выводами являются гомоморфизмами, если весовая матрица W не является вырожденной. (Нужно быть осторожным в отношении домена и диапазона.)

    Доказательство:
    1. Предположим, что W имеет ненулевой детерминант. Тогда это биективная линейная функция с линейным обратным. Линейные функции непрерывны. Итак, умножение на W является гомеоморфизмом.
    2. Отображения — гомоморфизмы
    3. tanh (и сигмоиды и softplus, но не ReLU) являются непрерывными функциями с непрерывными обратными. Они являются биекциями, если мы внимательно относимся к области и диапазону, который мы рассматриваем. Применение их поточечно, является гомоморфизмом.

    Таким образом, если W имеет ненулевой детерминант, слой является гомеоморфным.

    Топология и классификация


    Рассмотрим двухмерный набор данных с двумя классами A, B⊂R2:

    А = {х | d (х, 0) <1/3}

    В = {х | 2/3 <d (х, 0) <1}



    A красный, B синий

    Требование: нейронная сеть не может классифицировать этот набор данных, не имея 3 или более скрытых слоя, независимо от ширины.

    Как упоминалось ранее, классификация с сигмовидной функцией или слоем softmax эквивалентна попытке найти гиперплоскость (или в этом случае линию), которая разделяет A и B в конечном представлении. Имея только два скрытых слоя, сеть топологически неспособна разделять данные таким образом, и обречена на неудачу в этом наборе данных.
    В следующей визуализации мы наблюдаем скрытое представление, пока сеть тренируется вместе с классификационной линией.



    Для этой сети обучения недостаточно для достижения стопроцентного результата.
    Алгоритм попадает в непроизводительный локальный минимум, но способен достичь ~ 80% точности классификации.

    В этом примере был только один скрытый слой, но он не срабатывал.
    Утверждение. Либо каждый слой является гомоморфизмом, либо весовая матрица слоя имеет определитель 0.

    Доказательство:
    Если это гомоморфизм, то A по-прежнему окружен B, и линия не может их разделить. Но предположим, что она имеет детерминант 0: тогда набор данных коллапсирует на некоторой оси. Поскольку мы имеем дело с чем-то, гомеоморфным исходному набору данных, A окруженных B, и коллапсирование на любой оси означает, что мы будем иметь некоторые точки из A и B смешенными, и что приводит к невозможности для различения.

    Если мы добавим третий скрытый элемент, проблема станет тривиальной. Нейронная сеть узнает следующее представление:



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



    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 скрытого элемента.

    Доказательство:
    1. Самая сложная часть — линейное преобразование. Чтобы это было возможно, нам нужно, чтобы W обладала положительным определителем. Наша предпосылка заключается в том, что она не равна нулю, и мы можем перевернуть знак, если он отрицательный, переключив два скрытых нейрона, и поэтому можем гарантировать, что определитель положителен. Пространство положительных детерминантных матриц является связным, поэтому существует p: [0,1] → GLn ®5 такое, что p (0) = Id и p (1) = W. Мы можем непрерывно переходить от функции тождества к W-преобразованию с помощью функции x → p (t) x, умножая x в каждой точке времени t на непрерывно переходящую матрицу p (t).
    2. Мы можем непрерывно переходить от функции тождества к b-отображению с помощью функции x → x + tb.
    3. Мы можем непрерывно переходить от тождественной функции к поточечному использованию σ с функцией: x → (1-t) x + tσ (x)

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

    Связи и узлы являются одномерными многообразиями, но нам нужны 4 измерения, чтобы сети могли распутать все из них. Точно так же может потребоваться еще более высоко размерное пространство, чтобы иметь возможность разложить n-мерные многообразия. Все n-мерные многообразия могут быть разложены в 2n + 2 размерностях. [3]

    Легкий выход


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



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

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

    Улучшенные слои для манипулирования многообразиями?

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

    Возможно, имеет смысл иметь совсем другой слой, который мы можем использовать в композиции с более традиционными?

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



    А затем деформируем пространство, основанное на векторном поле:



    Можно было бы изучить векторное поле в неподвижных точках (просто взять некоторые фиксированные точки из набора тестовых данных для использования в качестве якорей) и каким-то образом интерполировать.

    Векторное поле выше имеет вид:
    Р (х) =( v0f0 (х) + v1f1 (х) )/( 1 + 0 (х) + f1 (х))

    Где 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 снижает вероятность ошибки — и использование более простых архитектур ухудшает результаты.

    Заключение


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

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

    Ссылки на источники и пояснения
    [1] A lot of the natural transformations you might want to perform on an image, like translating or scaling an object in it, or changing the lighting, would form continuous curves in image space if you performed them continuously.

    [2] Carlsson et al. found that local patches of images form a klein bottle.
    [3] This result is mentioned in Wikipedia’s subsection on Isotopy versions.
    Поделиться публикацией
    Комментарии 40
      +4
      Требование: нейронная сеть не может классифицировать этот набор данных, не имея 3 или более скрытых слоя, независимо от глубины.

      Во-первых, «3 или более скрытых слоя» — это и есть глубина. Во-вторых, доказательства этому утверждению так и не увидел.
        0
        Благодарю за поправку. Это статья носит скорее характер размышления, чем строгого научного изложения и доказательства, я подумаю как лучше изложить обоснование.
          0
          Даже с поправкой утверждение не особо корректное, так как стоит, конечно же, уточнить, что речь идёт только про сеть, где все скрытые слои имеют sigmoid-активацию (чего никто не делает последние лет шесть).
            0

            Интересное утверждение. Это для каких нс и задач?

              +1
              Для любых нерекуррентных сетей с глубиной больше 1-2 слоев сейчас повсеместно используют нелинейности семейства relu в качестве активации.
                –2
                Вообще-то как раз линейности, ReLU — rectified linear unit.
                  0
                  Если это шутка, то я её не понял.
                  Все функции этого семейства не являются линейными. ReLU и Leaky ReLU — кусочно-линейные, а ELU даже близко не линейная.
                  Суть использования этих функций как раз таки в том, что они вносят в активации нелинейность.
                    0

                    Я далёк от нейронных сетей, но я что-то не понял в вашем комментарии. Ведь гиперболический тангенс и прочие сигмоиды тоже нелинейные, то есть тоже вносят нелинейность.

                      0
                      Разве я где-то этому противоречил?
                      Мой тезис такой: сейчас для активаций скрытых слоёв практически не используют tanh и sigmoid, потому что relu по многим причинам является существенно более эффективным способом внести нелинейность.
                        0

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

                      –1
                      Речь шла о сравнении сигмоидной функции и ReLU.
                        0
                        Какое сравнение? ReLU нелинейная вне зависимости от того, с чем её сравнивать.
                          –1
                          Кусочно-линейная. Не leaky ReLU, не ELU. Если max(0,x) и сигмоид для кого-то одинаково нелинейные — не вижу смысла продолжать.
                            0
                            Не leaky ReLU, не ELU.

                            ELU даже не кусочно-линейная, если что.

                            Кусочно-линейная.

                            Кусочно-линейная != линейная.

                            Если max(0,x) и сигмоид для кого-то одинаково нелинейные — не вижу смысла продолжать.

                            Раздел 3.1. Вы не поверите, но семейство ReLU для нелинейности как замена семейству сигмоид — это одна из киллер-фич победоносного решения с ImageNet 2012, которое начало революцию глубокого обучения.
                              –1
                              Я немного в курсе, спасибо. Уже написал выше что спорить о терминологии не собираюсь.
                                0
                                >получил пруф противоположной точки зрения в одной из самых известных статей в ML
                                >спорить не собираюсь
                                Окей.
                                  –2
                                  В чем она противоположная? В том что проблема сигмоида с насыщением решилась использованием ReLU, которая линейная для x > 0? Я не спорю с умниками, придирающимся к терминологии.
                                    0
                                    В чем она противоположная?

                                    Наверное, в том, что тезис этого раздела: «ReLU — отличная non-linearity».

                                    Я не спорю с умниками, придирающимся к терминологии.

                                    Ничего, что это вы придрались к терминологии в моем комментарии, сказав, что ReLU — является линейной?
                                      –1
                                      Ничего, что это вы придрались к терминологии в моем комментарии, сказав, что ReLU — является линейной?

                                      Относительно сигмоида. Думаю все всех поняли, на этом можно завершить.
          –1
          В глубоком обучении термин «глубина», как это ни странно, имеет одинаково частое употребление в двух разных смыслах: глубина, как количество скрытых слоев (network depth); и глубина, как размерность слоя (layer depth).
            0
            Пруфы можно? Потому что если где и говорят layer depth, то разве что в сверточных слоях, и имеют в виду там глубину тензора (т.к. он получается трёхмерным), соответствующую числу каналов. А вот в отношении количества нейронов в полносвязном слое как-то я и не слышал такого. А даже если бы и использовали, всё равно это «глубина слоя», а не «глубина сети».
              0

              У вас какая-то своя терминология… сленгово обычно глубиной называют число слоев, в шириной число каналов...

            0
            Яснее принцип работы не стал…
              0
              если я правильно понял эту простыню — принцип работы сети на сигмоидальных активирующих функциях — биективно преобразовать пространство входных состояний в пространство выходных, где кластеры разных сигналов становятся разделимы гиперплоскостями.
                0
                Ааа, так вот что имел в виду автор. Теперь все ясно!
              +1
              называются гомеоморфизмами (Wiki — Это отображение алгебраической системы А, сохраняющее основные операции и основные отношения).


              Вы перепутали гомоморфизмы с гомеоморфизмами.
                0
                Благодарю
                  0
                  А еще вы неверно определили изотопию: каким-то образом F_0: X -> Y у вас стало отображением A «в себя», хотя явно видно, что это невозможно, ведь «X -> Y». Вам надо починить определение, сказав, что либо X \subset Y либо что-то получше, вроде F: [0, 1] x X -> Y_t X, Y_t \subset топологическое пространство \Omega.
                0
                Если можно, разобью комментарий на два.
                Сначала по общим моментам

                Извините, а русский для вас — родной язык? Просто меня очень смущают какие-то невероятно нагроможденные конструкции, которые я не могу разобрать и с десятого раза («Линейная разделимость может быть огромной и, возможно, необоснованной потребностью в нейронных сетях.» — я очень смутно понимаю о чем это может быть)

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

                Ну и про некоторую несовместность с как-никак устоявшимися терминами глубины-размерности сетей вам уже указали.
                  +4

                  Это же просто кривой перевод довольно известной статьи: http://colah.github.io/posts/2014-03-NN-Manifolds-Topology/ Хуже всего то, что переводчик не проставил ссылку на оригинал, выставив себя автором.

                    +3

                    Я не совсем прав, название статьи и автор упоминаются в первом абзаце. И всё же, учитывая, что это просто перевод, надо было как перевод и оформлять.

                      +1
                      К сожалению, не увидел при создании возможности поменять на перевод, а при редактировании поменять нельзя. Выделил жирным ссылку, чтобы не путать читателей.
                      0
                      Это фиаско.
                      Теперь, кстати, понятно, что на самом деле имелось в виду в тех строках, к которым я прицепился выше в комментариях. Ведь автор оригинала пишет:
                      It is impossible for a neural network to classify this dataset without having a layer that has 3 or more hidden units, regardless of depth.

                      Что означает «Невозможно классифицировать этот датасет, не имея слоя с 3 или более нейронами, независимо от глубины», во всяком случае, если под unit автор имеет в виду то же, что называют этим словом в Keras или sklearn — нейрон скрытого слоя.

                      А автору этого «перевода» двойка как за перевод, так и за то, что оригинальная статья указана лишь как референс, а на самом деле передраны и текст, и картинки.
                        0
                        И, кстати, теперь понятно, почему автор рассматривает в основном старые архитектуры и приемы. Ведь оригинальная статья была написана в 2014 году.
                          0
                          И понятно, что же за такие таинственные «слои tang» упомянул автор. Имелись в виду, конечно же, слои с активацией tanh.
                      0
                      И второй — по теории
                      Я к сожалению не очень понял о чем в целом статья. Она подозрительно наукообразна, но выводы мягко говоря странные. Мы идем через топологию, гомеоморфизмы и изотопии, чтобы в конце сказать «существуют данные, которые неглубокие сети не смогут разрешить со стопроцентной гарантией». Но во-первых, вроде с этим никто особо и не спорит, а во-вторых такая задача (в области гарантии) обычно и не ставится перед сетями (да и ML в целом). Я думаю, можно даже переформулировать утверждение к виду «для любой заданной структуры сети можно найти набор данных, который сеть не сможет разрешить» и оно останется корректным (строго сходу доказать не возьмусь, но направление рассуждений вроде видно).

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

                      А если вы хотите порассуждать об ограниченности сигмоидальных сетей — так зачем ограничиваться гомеоморфизмом? Ведь любая такая сеть — это по сути бесконечно дифференцируемая аналитическая функция на мой вкус — это куда более сильное утверждение, да и доказывать его практически не нужно — просто развернуть функцию из «послойного» представления и всё…

                      Ну и мне не встречалось пока специалистов, которые бы сомневались в том, что сети к сожалению пока работают «вопреки». Да, очевидно, что в общем виде пока нет способа как предложить структуру, решающую любую задачу (да и с структурой для любой заданной задачи не всё так хорошо, как хотелось бы). Да в конце концов, даже backprop работает только потому, что работает. Он вообще в теории не может находить глобальный минимум, но почему-то на практике иногда срабатывает достаточно хорошим образом.
                        0
                        Например, спирали, разделить которые это может быть очень сложно.

                        Явно что-то не так.
                        Насколько понимаю сейчас в качестве нелинейности в основном используют ReLu так как считается быстро и в переделе его можно рассматривать как сумму бесконечного ряда сигмойдов, то есть выразительности ему хватает.
                          0
                          Удивительно, что в столь математично написанной статье вместо термина «прямая» всюду используется «линия». Это немного сбивает с толку. Линии бывают разные :-)

                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                          Самое читаемое