Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

Упрощённый алгоритм расчёта функции sigmoid

Автор Yougi, августа 20, 2021, 14:00

0 Пользователи и 1 гость просматривают эту тему.

Yougi

 вот есть такая функция сигмоид, по русски S-образная кривая, или y(t)=1/(1+e^-t)
Как-то для упрощения вычислений её можно привести к виду, когда не надо е возводить в степень?
Хотя бы на промежутке t от 0 до 10?

Bhudh

Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Toman

Цитата: Yougi от августа 20, 2021, 14:00
Как-то для упрощения вычислений её можно привести к виду, когда не надо е возводить в степень?
Возведение некого фиксированного основания в степень вроде не шибко сложно. Можно делать хоть табличным способом - по разрядам или группам разрядов, если непосредственно аппаратно не поддерживается или невыгодно.
Во́зле до́ма хо́лм с куля́ми - вы́йду на́ холм, ку́ль поставлю.
В славном городе Miami тётки мерялись ногтями, тик иң озын завсегда у Фиделя борода!

Yougi

 
ЦитироватьМожно делать хоть табличным способом
не, это понятно... Мне как-то один грамотный мужик ( он доктор наук был, правда ) упрощал эту формулу до бесстепенной формы, но это было 20 лет назад и я уже не помню, как он это делал.
ЦитироватьДля упрощения ReLU берут.
Где дают, то, что берут? Ничего не ясно...

kemerover

Логистическая функция это примитивная трансформация гиперболического тангенса. Но навряд ли это будет упрощением.

Можно в ряд Тейлора разложить, только надо точность посмотреть.

Yougi

ЦитироватьДля упрощения ReLU берут.
А, теперь понял. Не, я не активирую нейросети, я моторы разгоняю по сигмоиде.
ЦитироватьМожно в ряд Тейлора разложить,
что-то не нашёл в интернете готового решения, а Бронштейн с примкнувшим к нему Семендяевым тоже так хорошо спрятались на книжной полке, что не попадаются на глаза.

yurifromspb

Если гиперболический тангенс поддерживается аппаратно, то можно и ускорить, но не на порядок.
Sigma(x) = (tanh(x*0.5)+1.0)*0.5
А так, только заменять на что-то похожее, но быстрее.
Дяденька, я ведь не настоящий лингвист, а этимологический словарь я в интернете нашёл.

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

Bāb-lišānī lapit-ma, lū awīlāta! // from "Lamentations of Urišapibim".

yurifromspb

Можно использовать разложение в непрерывную дробь, экспериментально подобрать достаточное число членов, оптимизировать конечную формулу.
http://bitman.name/math/article/1910/488/
[tex]\tanh x = {{e^{2x} -1} \over {e^{2x} + 1}} = {x \over {1 + {x^2 \over {3+{x^2 \over 5+...}}}}}[/tex]
Дяденька, я ведь не настоящий лингвист, а этимологический словарь я в интернете нашёл.

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

Bāb-lišānī lapit-ma, lū awīlāta! // from "Lamentations of Urišapibim".

kemerover

Цитата: Yougi от августа 21, 2021, 18:58
А, теперь понял. Не, я не активирую нейросети, я моторы разгоняю по сигмоиде.
Вручную что ли? Как там может потребоваться ускорение вычисления сигмоиды?

Цитата: Yougi от августа 21, 2021, 18:58
что-то не нашёл в интернете готового решения, а Бронштейн с примкнувшим к нему Семендяевым тоже так хорошо спрятались на книжной полке, что не попадаются на глаза.
https://www.wolframalpha.com/input/?i=Taylor series of sigmoid around 5

yurifromspb

Цитата: yurifromspb от августа 21, 2021, 23:50
Можно использовать разложение в непрерывную дробь, экспериментально подобрать достаточное число членов, оптимизировать конечную формулу.
http://bitman.name/math/article/1910/488/
[tex]\tanh x = {{e^{2x} -1} \over {e^{2x} + 1}} = {x \over {1 + {x^2 \over {3+{x^2 \over 5+...}}}}}[/tex]
А нет, эта штука расходится при |x|>1. Зато при |x|<=1 быстро сходится.
Дяденька, я ведь не настоящий лингвист, а этимологический словарь я в интернете нашёл.

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

Bāb-lišānī lapit-ma, lū awīlāta! // from "Lamentations of Urišapibim".

Волод


Волод


maratique

Memento mori
普京回罗

Yougi

ЦитироватьКак там может потребоваться ускорение вычисления сигмоиды?
да очень просто. Есть задатчик скорости, неважно какой, скорость меняется от s1 до s2; можно её менять по линейной рампе с постоянным ускорением, можно по сигмоиде, что лучше для регулятора скорости.
В малобюджетных контроллерах и ПЛК никакой аппаратной математики обычно нет, и вычисления с плавучкой жрут немеряно ресурсов. Поэтому обычно сигмоиду аппроксимируют тремя отрезками; занятый изобретением собственного драйвера BDLC мотора решил я попробовать другой путь - но, судя по тоннам статей в IEEE Transactions не такое это простое дело - быстренько посчитать энту логистическую кривую...

Волод

А с каким шагом будет изменяться показатель степени на интервале от 1 до 10?

Yougi

 А это от заданного ускорения зависит.
Если у нас ускорение высеченно в камне, тогда проще табличку сделать.
А если меняется - тогда пересчитывать надо.

Волод


maratique

Если нельзя табличку, то, может, можно рекуррентное  соотношение? У логистической кривой довольно классное дифференциальное уравнение:
y' = y(1 - y),
y(0)=0.5


То есть примерно y(x+h)=y(1+h(1-y))

Например, для  h=1:

y —> y(2-y)
y1~0.75, тогда как на самом деле у(1)= 0.731
y2~0.9375, а у(2)= 0.88
y3~0.996, а у(3)= 0.953

Погрешность метода Эйлера — О(h). Можно другим методом уменьшить погрешность, но и сложность возрастет.
Memento mori
普京回罗

Волод

Если t будет изменяться на интервале от 1 до 10 с шагом 0,01, то для расчёта еt с помощью двух операций умножения понадобится запомнить 30 чисел.

Hellerick

y(t) ≈ (0,00506*t^5+0,4399*t^4-1,96*t^3+4,196*t^2-0,964*t+1)/(0,00506*t^5+0,4399*t^4-1,96*t^3+4,196*t^2-0,964*t+2)

E cual esatia tu nesesa?

А вам какая точность нужна?

maratique

Memento mori
普京回罗

yurifromspb

Цитата: Yougi от августа 23, 2021, 11:04
ЦитироватьКак там может потребоваться ускорение вычисления сигмоиды?
да очень просто. Есть задатчик скорости, неважно какой, скорость меняется от s1 до s2; можно её менять по линейной рампе с постоянным ускорением, можно по сигмоиде, что лучше для регулятора скорости.
В малобюджетных контроллерах и ПЛК никакой аппаратной математики обычно нет, и вычисления с плавучкой жрут немеряно ресурсов. Поэтому обычно сигмоиду аппроксимируют тремя отрезками; занятый изобретением собственного драйвера BDLC мотора решил я попробовать другой путь - но, судя по тоннам статей в IEEE Transactions не такое это простое дело - быстренько посчитать энту логистическую кривую...
Тогда зачем именно логистическая функция? Пойдёт любая сигмоида, типа x/sqrt(1+x*x).
Или, не знаю, если там только целые числа, можно взять бином Ньютона и аккумулирвать и масштабировать. Будет табличка. Или я не понял, в чём проблема.
Дяденька, я ведь не настоящий лингвист, а этимологический словарь я в интернете нашёл.

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

Bāb-lišānī lapit-ma, lū awīlāta! // from "Lamentations of Urišapibim".

Hellerick

Цитата: maratique от августа 23, 2021, 13:09
А откуда это еt ~ 0,00506*t^5+0,4399*t^4-1,96*t^3+4,196*t^2-0,964*t+1?

La metodo de la ajusta santa.

Метод святого подгона.

Волод

Цитата: Hellerick от августа 23, 2021, 13:53
Цитата: maratique от августа 23, 2021, 13:09
А откуда это еt ~ 0,00506*t^5+0,4399*t^4-1,96*t^3+4,196*t^2-0,964*t+1?

La metodo de la ajusta santa.

Метод святого подгона.

Скоко будет по этой формуле е10   ???

maratique

ЦитироватьLa metodo de la ajusta santa.

Метод святого подгона.
Минимизацией   [tex]\int\limits_a^b(e^x - P(x))^2dx[/tex]   что ли?
Memento mori
普京回罗

Быстрый ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр