Быстрая альтернатива степени числа - страница 4

 
Urain:

Обратная функция к сигмоиду гипербола но совмещёная в месте разрыва те точка разрыва гиперболы есть седловой точкой сигмоиды 0,5.

Если рассмотреть геперболу то видно что перелом шага (те нелинейность) происходит в точке сечения гиперболы линией 45 градусов. y=x

Для сигмоиды это будет обратная ей 45 град линия те y=1/x. и эта линия сечёт сигмоид в районе  0.7853981633974483

это соответствует аргументу сигмоиды ~1.3

те для нелинейных преобразований очень важно чтоб распределение аргументов было вокруг ~1.3 для этого собственно и нужен коэфф при аргументе чтоб подправить сдвиг в нужную область.

Да? А если сигнал лежит в области {-беск;-100]U[100;+беск}  а зона чувствительности нейрона [-1;1]? Никакой коэффициент смещения не поможет, что бы сдвинуть указанную область аргументов в зону чувствительности нейрона - именно об этом была речь.
 
joo:
Да? А если сигнал лежит в области {-беск;-100]U[100;+беск}  а зона чувствительности нейрона [-1;1]? Никакой коэффициент смещения не поможет, что бы сдвинуть указанную область аргументов в зону чувствительности нейрона - именно об этом была речь.

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

double Sigma(double x,double A,double B){return(1./(1.+exp(B-A*x)));}
 

На CUDA нейросети работают очень быстро

Скажем, 200-300 сетей небольшого размера (хотя 8 нейронов в слое или 32 - разницы нет никакой), прогоняются по выборке из 100тыс баров на GTX 460 примерно за одну-две секунды

 

Сделал интересную функцию активации.  Очень гибкая.

Формула:   Y = X^3 / (A + abs(X)^3)^(1+C)

В прицепе эксельный файл, каждый может поиграться с параметрами.

Возведение в куб в числителе и знаменателе создаёт ступеньку в области низких значений. 

Кому не нужна - можно в куб не возводить ни числитель ни знаменатель.  Если наоборот хочется ступеньку увеличить - степень можно увеличить до 5..13 и больше

//  Но нечётная целость обязана быть!  Хотя.. в принципе и любую другую можно использовать, только формула усложнится:  Y = abs(X)^P *sign(X) / (A + abs(X)^P)^(1+C)

Картинки:

A= 0.06
C= 0.1


//  1 + C= 1.1


A= 0.06
C= -0.1


// 1 + C= 0.9


A= 0.0006
C= 0.1


//  1 + C= 1.1


A= 0.02
C= 0


//  1 + C= 1



A= 0.000002
C= 0


//  1 + C= 1


Файлы:
MyFA.zip  18 kb
 
yu-sha:

На CUDA нейросети работают очень быстро

Скажем, 200-300 сетей небольшого размера (хотя 8 нейронов в слое или 32 - разницы нет никакой), прогоняются по выборке из 100тыс баров на GTX 460 примерно за одну-две секунды

На ОпенЦЛ - то же самое.