Этот отрывок из статьи привлек мое внимание. Несмотря на то что статья очень хорошо написана и подробно рассказывает о том, как она была разработана и продумана. В этом отрывке есть тонкость в вашем понимании предмета. Возможно, вы предвзяты, потому что все настойчиво говорят определенные вещи о нейронных сетях. Но ваша статья написана хорошо, и вы объяснили все детали. Я решил предвосхитить то, что буду показывать в будущем. Статья для этого уже написана, но сначала я хочу закончить объяснение того, как построить Replay / Simulator, где осталось всего несколько статей, чтобы завершить публикацию. Поймите следующее: Функции активации НЕ используются для создания нелинейности в уравнениях. Скорее, они служат своего рода фильтром, цель которого - уменьшить количество слоев или перцептронов в строящейся сети. Это ускоряет процесс сходимости данных в определенном направлении. В ходе этого процесса мы можем стремиться к классификации или сохранению знаний. В итоге мы получим один или другой результат, но никогда не оба.
В своей статье https://www.mql5.com/ru/articles/13745 я демонстрирую это на довольно простом примере. Хотя там я только начинаю объяснять, как понять, что такое нейронная сеть. Но поскольку ваша статья написана хорошо и вы приложили к ней много усилий, я дам вам совет. Возьмите несколько случайных данных и удалите функции активации перцептрона. После этого начните пытаться сходиться. Вы заметите, что это будет выглядеть не очень хорошо. Но если вы начнете добавлять слои и/или больше перцептронов, то со временем сходимость начнет улучшаться. Это поможет вам лучше понять, зачем нужны функции активации. 😁👍

- www.mql5.com
Этот отрывок из статьи привлек мое внимание. Несмотря на то что статья очень хорошо написана и подробно рассказывает о том, как она была разработана и продумана. В этом отрывке есть тонкость в вашем понимании предмета. Возможно, вы предвзяты, потому что все настойчиво говорят определенные вещи о нейронных сетях. Но ваша статья написана хорошо, и вы объяснили все детали. Я решил предвосхитить то, что буду показывать в будущем. Статья для этого уже написана, но сначала я хочу закончить объяснение того, как построить Replay / Simulator, где осталось всего несколько статей, чтобы завершить публикацию. Поймите следующее: Функции активации НЕ используются для создания нелинейности в уравнениях. Скорее, они служат своего рода фильтром, цель которого - уменьшить количество слоев или перцептронов в строящейся сети. Это ускоряет процесс сходимости данных в определенном направлении. В ходе этого процесса мы можем стремиться к классификации или сохранению знаний. В итоге мы получим один или другой результат, но никогда не оба.
Вероятно, автоперевод не очень точен, но выделенное неверно. Именно нелинейность увеличивает вычислительные способности сети, и это не только ускоряет процесс сходимости (о чем вы сами же тоже сказали в другом предложении) но принципиально позволяет решать задачи, которые невозможно решить без введения нелинейности (сколько бы слоев вы ни добавили). Более того, без нелинейности любую (синхронную) нейронную сеть можно "схлопнуть" в эквивалентную однослойную сеть.
Именно нелинейность увеличивает вычислительные способности сети, и это не только ускоряет процесс сходимости (о чем вы сами же тоже сказали в другом предложении) но принципиально позволяет решать задачи, которые невозможно решить без введения нелинейности (сколько бы слоев вы ни добавили). Более того, без нелинейности любую (синхронную) нейронную сеть можно "схлопнуть" в эквивалентную однослойную сеть.
+100500
Хорошо сказано. Пока составлял ответ - вижу, что уже ответили.
Скажу больше, да, любую нелинейную функцию можно описать линейными кусочными функциями в количестве, стремящемся к бесконечности при ошибке описания, стремящейся к нулю. Только зачем, если нелинейные функции активации как раз и применяются с целью упростить описание объекта в задаче.
Думаю, возникло недопонимание между тем, что я хотел сказать, и тем, что я на самом деле изложил в виде текста.
В этот раз я постараюсь быть немного яснее. 🙂 Когда мы хотим КЛАССИФИЦИРОВАТЬ вещи, такие как изображения, предметы, фигуры, звуки, короче говоря, где будут царить вероятности. Нам нужно ограничить значения в нейронной сети так, чтобы они попадали в заданный диапазон. Обычно этот диапазон составляет от -1 до 1. Но он может быть и от 0 до 1, в зависимости от того, как быстро, с какой скоростью и каким образом обрабатывается входная информация, с которой мы хотим познакомить сеть, и как она лучше всего направляет свое обучение, чтобы создать классификацию вещей. В ЭТОМ СЛУЧАЕ НАМ ПОНАДОБЯТСЯ функции активации. Именно для того, чтобы удерживать значения в этом диапазоне. В итоге мы получим средства для генерации значений с точки зрения вероятности того, что входные данные являются теми или иными. Это факт, и я его не отрицаю. Настолько, что нам часто приходится нормализовать или стандартизировать входные данные.
Однако нейронные сети используются не только для классификации, они также могут и используются для сохранения знаний. В этом случае от функций активации во многих случаях следует отказаться. Деталь: Бывают случаи, когда нам нужно что-то ограничить. Но это очень специфические случаи. Все дело в том, что эти функции мешают сети выполнять свое предназначение. А оно заключается именно в сохранении знаний. И на самом деле я частично согласен с замечанием Станислава Короткого о том, что сеть в таких случаях можно свернуть до чего-то эквивалентного одному слою, если не использовать функции активации. Но когда это произойдет, это будет один из нескольких случаев, поскольку есть случаи, когда одного полинома с несколькими переменными недостаточно, чтобы представить или, лучше сказать, сохранить знания. В этом случае нам придется использовать дополнительные слои, чтобы результат действительно можно было воспроизвести. Или же можно сгенерировать новые. Немного запутанно объяснять это вот так, без должной демонстрации. Но это работает.
Большая проблема в том, что из-за моды на все сейчас, в последние 10 лет или около того, если мне не изменяет память, это было связано с искусственным интеллектом и нейронными сетями. Хотя бизнес по-настоящему расцвел только в последние пять лет. Многие люди совершенно не знают, что это такое на самом деле. И как они на самом деле работают. Это происходит потому, что все, кого я вижу, всегда используют готовые фреймворки. А это совершенно не помогает понять, как работают нейронные сети. Это просто уравнение с несколькими переменными. В академических кругах их изучают уже несколько десятилетий. И даже когда они вышли за пределы академических кругов, их никогда не анонсировали с такой помпой. На начальном этапе и в течение длительного времени ФУНКЦИИ АКТИВАЦИИ НЕ ИСПОЛЬЗОВАЛИСЬ. Но цель сетей, которые в то время даже не назывались нейросетями, была другой. Однако из-за того, что три человека хотели извлечь из них выгоду, они были разрекламированы, что, на мой взгляд, несколько неправильно. Правильнее всего, по крайней мере с моей точки зрения, было бы правильно объяснить их суть. Именно так, чтобы не создавать путаницы в умах многих людей. Но это не страшно, они втроем делают кучу денег, а люди теряются больше, чем собака, упавшая с грузовика для вывоза мусора. В любом случае, я не хочу отговаривать вас от написания новых статей, Андрей Дик, но я хочу, чтобы вы продолжали учиться и старались еще глубже погрузиться в эту тему. Я видел, что вы пытались использовать чистый MQL5 для создания системы. Что, кстати, очень хорошо. Это привлекло мое внимание, и я понял, что ваша статья очень хорошо написана и спланирована. Я просто хотел обратить ваше внимание на этот момент и заставить вас подумать об этом немного больше. На самом деле, эта тема очень интересна, и о ней мало кто знает. Но вы взялись и изучили ее.
Debates em alto nível, são sempre interessantes, pois nos faz crescer e pensar fora da caixa. Brigas não nos leva a nada, e só nos faz perder tempo. 👍

- 2025.01.21
- MetaQuotes
- www.mql5.com
В качестве ф-ии активации можно использовать что угодно, хоть косинус, результат получается на уровне популярных. Рекомендуется использовать relu (со сдвигом bias 0.1 (не рекомендуется использовать вместе с инициализацией случайным блужданием)), т.к. он простой (быстро считается) и лучше идет обучение: Эти блоки легко оптимизировать, потому что они очень похожи на линейные. Разница только в том, что блок линейной ректификации в половине своей области определения выводит 0. Поэтому производная блока линейной ректификации остается большой всюду, где блок активен. Градиенты не только велики, но еще и согласованы. Вторая производная операции ректификации всюду равна нулю, а первая производная равна 1 всюду, где блок активен. Это означает, что направление градиента гораздо полезнее для обучения, чем в случае, когда функция активации подвержена эффектам второго порядка... При инициализации параметров аффинного преобразования рекомендуется присваивать всем элементам b небольшое положительное значение, например 0.1. Тогда блок линейной ректификации в начальный момент с большой вероятностью окажется активен для большинства обучающих примеров, и производная будет отлична от нуля.
В отличие от кусочно-линейных, сигмоидальные блоки близки к асимптоте в большей части своей области определения – приближаются к высокому значению, когда z стремится к бесконечности, и к низкому, когда z стремится к минус бесконечности. Высокой чувствительностью они обладают только в окрестности нуля. Из-за насыщения сигмоидальных блоков градиентное обучение сильно затруднено. Поэтому использование их в качестве скрытых блоков в сетях прямого распространения ныне не рекомендуется... Если использовать сигмоидальную функцию активации необходимо, то лучше взять не логистическую сигмоиду, а гиперболический тангенс. Он ближе к тождественной функции в том смысле, что tanh(0) = 0, тогда как σ(0) = 1/2. Поскольку tanh походит на тождественную функцию в окрестности нуля, обучение глубокой нейронной сети напоминает обучение линейной модели при условии что сигналы активации сети удается удерживать на низком уровне. При этом обучение сети с функцией активации tanh упрощается.
Для lstm нужно использовать сигмоид или арктангенс (рекомендуется устанавливать смещение 1 для вентиля забывания): Сигмоидальные функции активации все же применяются, но не в сетях прямого распространения. К рекуррентным сетям, многим вероятностным моделям и некоторым автокодировщикам предъявляются дополнительные требования, исключающие использование кусочно-линейных функций активации и делающие сигмоидальные блоки более подходящими, несмотря на проблемы насыщения.
Линейная активация и уменьшение параметров: Если каждый слой сети состоит только из линейных преобразований, то сеть в целом будет линейной. Однако некоторые слои могут быть и чисто линейными – это вполне нормально. Рассмотрим слой нейронной сети, имеющий n входов и p выходов. Его можно заменить двумя слоями, в одном из которых используется матрица весов U, а в другом – матрица весов V. Если в первом слое нет функции активации, то мы, по сути дела, разложили на множители матрицу весов исходного слоя, основанного на W. Если U порождает q выходов, то U и V вместе содержат только (n + p)q параметров, тогда как W – np параметров. Для малых q экономия параметров может быть существенной. Платой за это является ограничение – линейное преобразование должно иметь низкий ранг, но таких низкоранговых связей часто достаточно. Таким образом, линейные скрытые блоки предлагают эффективный способ уменьшить число параметров сети.
Релу больше подходит для глубоких сетей: Несмотря на популярность ректификации в ранних моделях, в 1980-е годы ее почти всюду заменили сигмоиды, поскольку они лучше работают в очень малых нейронных сетях.
Но в целом оно лучше: для небольших наборов данных использование ректифицирующих нелинейностей даже важнее, чем обучение весов скрытых слоев. Случайных весов достаточно для распространения полезной информации по сети с линейной ректификацией, что позволяет классифицирующему выходному слою обучаться отображению различных векторов признаков на идентификаторы классов. Если доступно больше данных, то процесс обучения начинает извлекать так много полезных знаний, что превосходит по качеству случайным образом выбранные параметры... обучение гораздо легче проходит в ректифицированных линейных сетях, чем в глубоких сетях, для которых функции активации характеризуются кривизной или двусторонним насыщением...

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Опубликована статья Функции активации нейронов при обучении: ключ к быстрой сходимости?:
В данной работе представлено исследование взаимодействия различных функций активации с алгоритмами оптимизации в контексте обучения нейронных сетей. Особое внимание уделяется сравнению классического ADAM и его популяционной версии при работе с широким спектром функций активации, включая осциллирующие функции ACON и Snake. Используя минималистичную архитектуру MLP (1-1-1) и единичный обучающий пример, производится изоляция влияния функций активации на процесс оптимизации от других факторов. Предложен подход к контролю весов сети через границы функций активации и механизма отражения весов, что позволяет избежать проблем с насыщением и застоем в обучении.
Представьте себе реку со множеством притоков. В обычном состоянии вода течёт свободно, создавая сложный узор течений и водоворотов. Но что произойдет, если мы начнем строить систему шлюзов и плотин? Мы сможем контролировать поток воды, направлять его в нужное русло и регулировать силу течения. Функция активации в нейронных сетях выполняет аналогичную роль: она решает, какой сигнал пропустить дальше, а какой задержать или ослабить. Без неё нейронная сеть была бы просто набором линейных преобразований.
Функция активации добавляет динамику в работу нейронной сети, позволяя улавливать тонкие нюансы в данных. Например, в задаче распознавания лиц функция активации помогает сети замечать мельчайшие детали, такие как изгиб бровей или форма подбородка. Правильный выбор функции активации влияет на то, как нейронная сеть справляется с различными задачами. Некоторые функции лучше подходят для начальных этапов обучения, обеспечивая чёткие и понятные сигналы. Другие функции позволяют сети улавливать более тонкие закономерности на продвинутых этапах, а третьи — отсекают всё лишнее, оставляя только самое важное.
Если не знать свойства функций активации, то можно столкнуться с проблемами. Нейронная сеть может начать "спотыкаться" на простых задачах или "не замечать" важные детали. Основная задача функций активации — внесение нелинейности в нейронную сеть и нормализация выходных значений.
Цель этой статьи — выявить проблемы, связанные с использованием различных функций активации, и их влияние на точность прохождения нейронной сети через точки примеров (интерполяция) при минимизации ошибки. Мы также выясним, действительно ли функции активации влияют на скорость сходимости, или это свойство используемого алгоритма оптимизации. В качестве эталонного алгоритма мы применим модифицированный популяционный ADAMm, который использует элементы стохастичности, и проведем тесты со встроенным в MLP ADAM (классическое использование). Последний интуитивно должен иметь преимущество, так как имеет прямой доступ к градиенту поверхности фитнес-функции благодаря производной функции активации. В то время как популяционный стохастический ADAMm не имеет доступа к производной и совершенно не представляет себе поверхность задачи оптимизации. Давайте проследим, что из этого получится, и сделаем выводы.
Автор: Andrey Dik