![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Urain:
Ты не в том приложении строишь графики, у тебя ничего не видно , наложи графики разных сигмоидов на один чарт увидишь много нового.
Почему не в том? В том:
Желтая - последняя в списке на графике.
Классический сигмоид возьми за образец поведения , прогони все функции на разных коэффициентах угла атаки.
здесь A-коэффициентах угла атаки. Во все остальные формулы типа sigmoid abs , sigmoid new не так то легко встроить этот коэффициент а ведь с этого же всё началось, Коэф в функции активации это основное что тебе нужно? или тебе просто нужна функция делающая нелинейное преобразование?
Мне нужна быстрая нейронная сеть с нейронами, имеющими нелинейное преобразование.
TheXpert:
:) А теперь посчитаем.
допустим, в сети 80 входов, 200 на скрытом слое, 5 на выходе, сигмоиды только на скрытом слое, простой 3-слойный персептрон.
Распространение сигнала = O1 (80*200 + 5*200) = О1(85*200), преобразование сигнала = О2 (1*200).
Итого, получаем, чтобы цифры были равнозначны, функция вычисления степени должна быть в 100 раз дороже (примерно) чем умножение + сумма. Тогда получим выигрыш в 2 раза, если ускорим функцию в 100 раз. Впечатляют расчеты?
Если оптимизация действительно нужна (уже вряд ли, процесс обучения сети редко является узким местом, т.к. он априори подразумевает большие времязатраты), то надо мерять действительно узкие места, а не на глазок. Например, хорошее ускорение даст распараллеливание распространения сигнала по сети.
Воистину преждевременная оптимизация зло.
Ты прав. Такими простыми ухищрениями, которые предпринял я, особого выигрыша в скорости не добиться. Выход - распараллеливание алгоритма сети (CPU или лучше GPU).
Почему не в том? В том:
Желтая - последняя в списке на графике.
...Я имел в виду вставить в эти формулы коэф атаки сигмоида (если хочешь регулировку угла наклона, назвать можно по разному суть одна), благодаря коэф атаки у сетки появляется гибклсть которой небыло раньше.
так вот в классику этот коэф вставляется элементарно а вот в остальные формулы с гемороем.Те его нужно будет подстраивать искать формулы пересчёта в зависимости от входного параметра.
Хотя может я забегаю вперёд и такая задача у тебя пока не стоит, но она появится в последствии уверен.
ЗЫ кстати ты ограничил окно от -1 до 1 расширь горизонатль больше и увидишь много нового об этих функциях. Это конечно не актуально если ты предварительно будешь нормализовать данные, но вот классика потянет и без нормализации а новые формулы загнутся.
Urain:
Я имел в виду вставить в эти формулы коэф атаки сигмоида (если хочешь регулировку угла наклона, назвать можно по разному суть одна), благодаря коэф атаки у сетки появляется гибклсть которой небыло раньше.
так вот в классику этот коэф вставляется элементарно а вот в остальные формулы с гемороем.Те его нужно будет подстраивать искать формулы пересчёта в зависимости от входного параметра.
Хотя может я забегаю вперёд и такая задача у тебя пока не стоит, но она появится в последствии уверен.
Я тебя понял. И о коэффициенте кривизны знаяю/помню/применяю. Вот в последней как раз формуле какие коэффициенты не подставляй, нужной кривизны добиться не удастся. А вот в этой
3*х/(1+|x|+x*x) легко.
ЗЫ кстати ты ограничил окно от -1 до 1 расширь горизонатль больше и увидишь много нового об этих функциях. Это конечно не актуально если ты предварительно будешь нормализовать данные, но вот классика потянет и без нормализации а новые формулы загнутся.
Расширял, знаю. Удобство как раз в том, что формула имеет нужную кривизну и значения функции в диапазоне -1 до 1.
Сделал так:
Как видишь, из диапазона не вылезает. А то, что дальше -1,1 мне не интересно. :)
вот, с разными коэффициентами:
Короче, овчинка выделки нифига не стоит. Легче работать по старинке, и всю эту старинку перебросить в дэлээлку.
вот, с разными коэффициентами:
Короче, овчинка выделки нифига не стоит. Легче работать по старинке, и всю эту старинку перебросить в дэлээлку.
Вычисление степени числа очень ресурсоемкая задача.
Так, если используется в коде нейронная сеть с достаточно большим количеством нейронов с сигмоидой в качестве активационной функции, то время вычисления сети может запросто оказаться большим, чем требуется для остальной части кода программы. Возникает естественное желание ускорить вычисления с помощью различных ухищрений.
Первое, правда и последнее, что пришло на ум, заранее рассчитать функцию с достаточно для практического применения мелким шагом на заданном диапазоне чисел:
записать полученные значения в массив. А уже по мере надобности искать положение аргумента функции между двумя рассчитанными заранее значениями в массиве. Останется только интерполяцией или другим способом посчитать искомое значение функции.
Есть ли какие нибудь более быстрые способы расчета степени числа с заданной наперед точностью?
раздвинь горизонтальный масштаб от -20 до 20
ИМХО, математический сопроцессор (а именно он вычисляет степень числа, вернее, должен вычислять) вычислит все намного быстрее, чем любые ухищрения.
Зачем? У меня сигнал в каждую функцию активации ограничен диапазоном [-1;1]. Зачем расширять горизонтальный масштаб, если функция никогда не работает при аргументах вне диапазона [-1;1]?
Вот тут ты не прав, аргументом функции активации (те горизонтальная шкала на твоём графике) выступает сумма перемноженных входов и весов и этот аргумент легко вылетает за облать -1:1
ЗЫ а вот выход из функции активации (ось Y) конечно будет в заданном диапазоне.
Вот тут ты не прав, аргументом функции активации (те горизонтальная шкала на твоём графике) выступает сумма перемноженных входов и весов и этот аргумент легко вылетает за облать -1:1
ЗЫ а вот выход из функции активации (ось Y) конечно будет в заданном диапазоне.
Ну вот гляди. Если сумма произведений нейронов предыдущего слоя и их весов выходит за диапазон [-1;1], то он обрезается до -1 или 1. Таким образом, нейрон нечувствителен вне диапазона.
Тоже самое относится и к классическим сигмоидам, они так же чувствительны только в определенном диапазоне. Какая разница, если експонентная сигмоида дает значение -1 при сигнале на него -100, то же самое будет и с моей формулой (см код)? так же будет -1 при аргументе -100.