Как стать автором
Обновить

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

Время на прочтение9 мин
Количество просмотров45K
Всего голосов 49: ↑42 и ↓7+35
Комментарии40

Комментарии 40

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Относительно сигмоида. Думаю все всех поняли, на этом можно завершить.
сейчас повсеместно используют нелинейности семейства relu

Вообще-то как раз линейности, ReLU — rectified linear unit.

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

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

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


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

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

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

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

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

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

К сожалению, не увидел при создании возможности поменять на перевод, а при редактировании поменять нельзя. Выделил жирным ссылку, чтобы не путать читателей.
Это фиаско.
Теперь, кстати, понятно, что на самом деле имелось в виду в тех строках, к которым я прицепился выше в комментариях. Ведь автор оригинала пишет:
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 — нейрон скрытого слоя.

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

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

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

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

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

Публикации

Изменить настройки темы

Истории