4 факта о нейронных сетях

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



1. Нейронная сеть – это не модель человеческого мозга


Человеческий мозг – одна из самых больших загадок, над которой бьются ученые не одно столетие. До сих пор нет единого понимания, как все это функционирует. Есть две основные теории: теория о «клетке бабушки» и теория дистрибутивного представительства. Первая утверждает, что отдельные нейроны имеют высокую информационную вместимость и способны формировать сложные концепты. Например, образ вашей бабушки или Дженнифер Энистон. Вторая говорит о том, что нейроны намного проще в своем устройстве и представляют комплексные объекты лишь в группе. Искусственную нейронную сеть можно в общих чертах представить как развитие идей второй модели.


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

4 факта о нейронных сетях Нейронные сети, Статья, Длиннопост

Что из этого следует? ИНС создаются по архетипу человеческого мозга в том же смысле, как олимпийский стадион в Пекине был собран по модели птичьего гнезда. Это ведь не означает, что стадион – это гнездо. Это значит, что в нем есть некоторые элементы его конструкции. Лучше говорить о сходстве, а не совпадении структуры и дизайна.



2. Размер имеет значение, но больше – не всегда значит лучше

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


Сколько и какие инпуты нужно использовать?

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


Сколько необходимо скрытых нейронов?

Оптимальное число скрытых элементов – специфическая проблема, решаемая опытным путем. Но общее правило: чем больше скрытых нейронов – тем выше риск переобучения. В этом случае система не изучает возможности данных, а как бы запоминает сами паттерны и любой содержащийся в них шум. Такая сеть отлично работает на выборке и плохо за пределами выборки. Как можно избежать переобучения? Есть два популярных метода: ранняя остановка и регуляризация. Первое означает то, что мы просто остановимся в тот момент, когда validation loss начнет расти. Второе - мы будем регулировать веса синапсов путем добавления их в функцию loss: таким образом, сеть будет стремиться не только дойти до идеального результата предсказания, но еще и сохранить адекватные веса.



3. Нейронным сетям не всегда нужен большой объем данных


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


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


4. Нейронную сеть нельзя обучить на любых данных


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


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


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


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

Спасибо за прочтение!

Часть текста скопировано, а часть урезана (бОльшая часть) и изменена с целью более упрощенной читаемости и меньше_букав. А значит пенять на меня, а не на автора. Источник.

Искусственный интеллект

2.4K постов9.7K подписчиков

Добавить пост

Правила сообщества

Здесь вы можете свободно создавать посты по теме Искусственного интеллекта. Добро пожаловать :)


Разрешено:


- Делиться вопросами, мыслями, гипотезами, юмором на эту тему.

- Делиться статьями, понятными большинству аудитории Пикабу.

- Делиться опытом создания моделей машинного обучения.

- Рассказывать, как работает та или иная фиговина в анализе данных.

- Век жить, век учиться.


Запрещено:


I) Невостребованный контент

  I.1) Создавать контент, сложный для понимания. Такие посты уйдут в минуса лишь потому, что большинству неинтересно пробрасывать градиенты в каждом тензоре реккурентной сетки с AdaGrad оптимизатором.

  I.2) Создавать контент на "олбанском языке" / нарочно игнорируя правила РЯ даже в шутку. Это ведет к нечитаемости контента.


II) Нетематический контент

  II.1) Создавать контент, несвязанный с Data Science, математикой, программированием.

  II.2) Создавать контент, входящий в противоречие существующей базе теорем математики. Например, "Земля плоская" или "Любое действительное число представимо в виде дроби двух целых".

  II.3) Создавать контент, входящий в противоречие с правилами Пикабу.


III) Непотребный контент

  III.1) Эротика, порнография (даже с NSFW).

  III.2) Жесть.


За нарушение I - предупреждение

За нарушение II - предупреждение и перемещение поста в общую ленту

За нарушение III - бан

6
Автор поста оценил этот комментарий

Я на какое-то новое знание не претендую, новых алгоритмов и архитектура не разрабатываю. Решаю довольно узкие задачи. Из интересного - личный опыт обучения и тестирования нейронных сетей на реальных клинических данных (патологии системы свертывания крови). И да это тот случай, когда сеть работает с 10-ю входными нейронами эффективнее, чем с 16-ю, а обучать порой лучше на множестве 10х50, но сбаллансированом, чем на 10х100, но с перекосом в "норму" (собственно ваши пункт 3 и 4).

раскрыть ветку (1)
1
DELETED
Автор поста оценил этот комментарий

Не мои, кхе-кхе.

А вот причем тут

И да это тот случай, когда сеть работает с 10-ю входными нейронами эффективнее, чем с 16-ю
Ведь количество входных зависит от кол-ва фич. Либо я не понял, что вы имели ввиду. Но по-любому, если ваш опыт работы - не плод больного воображения, пишите посты в сообщество, думаю, будет интересно.
показать ответы
2
Автор поста оценил этот комментарий

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

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

С какого перепугу? И что по-вашему есть "проявление активности"?

показать ответы
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
3
DELETED
Автор поста оценил этот комментарий

Постом ошиблись, сударь. Тут не о геометрической организации речь идет. Несложно разместить нейроны по пространству. Если хотите что-то сказать - честно, лучше не стоит.

показать ответы
Автор поста оценил этот комментарий

Постойте, но этап подготовки данных, он же "до" инициализации сетей. И это самый масштабный и сложный этап. Я про обучение с учителем говорю (если брать самоорганизующиеся сети, тут я с вами согласна). И принцип работы сети тут вторичен, гораздо важнее принцип составления набора обучающих примеров, их количества, соотношения, исследуемых параметров. И если данные слабоструктурированные (данные из фрмализованных историй болезней, например), то зачастую понять применимость той или иной архитектуры можно только попробовав эту самую архитектуру. Перебрать архитектуры просто (всего 3 строки кода: обучение, тестирование, оценка эффективности). Сформировать обучающее мнежество в разы, в десятки раз сложнее. Но это, в большей степени, не исследование принципов работы сети, а исследование особенностей поставленной задачи и имеющихся в распоряжении данных.

раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

Ахах, вы на fastai пишете что ли?)

На самом деле, честно говоря, все еще несогласен. Да, подготовка данных - чрезвычайно важная часть, но не более важная, чем составление структуры сети. Если от структуры сетки результат не меняется - то либо задача решается линейной регрессией, либо вы делаете что-то не так. Мне тут коллега рассказывал, у него, например, добавление свертки с ядром 1х1 посередине сетки дало нефиговую accuracy. Это при том, что такая свертка - это просто поточечное умножение тензора на константу (с точностью до сессии, очевидно). Так что уж не знаю, как именно вы работаете с сеткой, но если вы не звездабол - я серьезно говорю, расскажите же нам!) Если ваш опыт столь сильно отличается от моего, думаю, будет это интересно всем.

показать ответы
Автор поста оценил этот комментарий

Забыла написать, самое классное в нейронных сетях - это как раз то, что совершенно необязательно знать, как именно они работают. Чёрный ящик. Но при этом они-таки работают.

раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

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

показать ответы
46
Автор поста оценил этот комментарий

Как человек уже лет 15 работающий (в том числе) с нейронными сетями, скажу вам, что статья без целевой аудитории. Новичкам надо как-то проще, не задавливая корреляцией, "аутпутами" и "инпутами" (чем вам общепринятые входы-выходы не угодили?). У того же Горбаня по полочкам разложено. Проще, яснее, короче. А тем, кто более-менее разобрался, как накропать простенькую сеть для классификации, текст уже - записки капитана очевидность.

раскрыть ветку (1)
5
DELETED
Автор поста оценил этот комментарий

15 лет с сетками? Не хотите что-нибудь нам рассказать? Думаю, было бы интересно!)

показать ответы
Автор поста оценил этот комментарий

Я в матлабе пишу)

И я не говорила, что от изменения структуры ничего не меняется - меняется, ещё как. Просто при некорректном обучающем множестве никакая структура не спасет.

А про опыт - если настаиваите, напишу.

раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий
Эм, матлаб для визуализпции данных. Там есть статистика, но не то, что бы много
показать ответы