С Новым годом! Форум программистов, компьютерный форум, киберфорум
ИИ, нейросети, LLM, ML, Data Science, ИИ-агенты
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.66/88: Рейтинг темы: голосов - 88, средняя оценка - 4.66
45 / 6 / 1
Регистрация: 20.08.2012
Сообщений: 200

Простейшая нейронная сеть для аппроксимации параболы

08.05.2019, 16:18. Показов 19149. Ответов 229
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пробую написать свою первую нс из двух нейронов. На выходе простой сумматор.
http://images.vfl.ru/ii/155731... 2257_m.png
Задаю значения х = [0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9] и по ним получаю y = (2*x-1)^2 + 0.1 см график ниже
http://images.vfl.ru/ii/155731... 2396_m.png
у - это зеленый точки (соединенные просто для понимания) синими линиями.
y = [0,74 0,46 0,26 0,14 0,1 0,14 0,26 0,46 0,74]. Исходные значения х и y задаю в квадрате 0-1 чтобы избавиться от нужды в нормализации.
Голубая линия - это выход сети (его обозначаю в дальнейшем y1), который получаю так:
сначала задаю случайные веса от -0.5 до 0.5: w = rand(6,1)-0.5; и по ним вычисляю выход сети: y1 = ynet(x, w);
(код на матлабе специально писал предельно просто, развернуто, без матриц)
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function y = ynet(x, w) % ф-ция вычисляет выход сети
for i = 1:numel(x)
  y(i,1) = forward(x(i), w);
end
end
 
function f = forward(x, w)
% y = w5*f(xw1+w3)+w6*f(xw2+w4)
f1 = smd(x*w(1)+w(3));
f2 = smd(x*w(2)+w(4));
f = w(5)*f1 + w(6)*f2;
end
 
function f = smd(x)
f = 1./(1+exp(-x)); % логический сигмойд
end
 
function df = dsm(x)
f = smd(x); df = f.*(1-f); % производная сигмойда
end
Задача ясна: изменить так значения весов w чтобы выходные значения y1 совпали или были близки к истинным y, т.е. минимизировать ф-цию ошибки сети E см ниже
http://images.vfl.ru/ii/155731... 2684_m.png
Пробую это делать тремя способами и ни один не работает и не понимаю почему.

Способ 1.
Нахожу производную от ф-ции ошибки сети по весам (как по формулам приведенным на рис выше) и соответственно ей изменяю веса (w1 = w - a*dE; w = w1)
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
function full_x(w, x, y)
a = 0.1;
for i = 1:100
  dE = dE_analytic(w, x, y);
  w1 = w - a*dE;
  er1 = sumerr(x, y, w);
  er2 = sumerr(x, y, w1);
  if er1 < er2
    disp('err')
  else
    w = w1;
  end
end
end
 
function dE = dE_analytic(w, x, y) % ф-ция вычисляет градиент Е по весам w
y1 = ynet(x, w); d = y1 - y;
for i = 1:numel(x)
  de1(i) = d(i)*x(i)*dsm(x(i)*w(1)+w(3));
  de2(i) = d(i)*x(i)*dsm(x(i)*w(2)+w(4));
  de3(i) = d(i)*dsm(x(i)*w(1)+w(3));
  de4(i) = d(i)*dsm(x(i)*w(2)+w(4));
  de5(i) = d(i)*smd(x(i)*w(1)+w(3));
  de6(i) = d(i)*smd(x(i)*w(2)+w(4));
end
dE1 = w(5)*sum(de1);
dE2 = w(6)*sum(de2);
dE3 = w(5)*sum(de3);
dE4 = w(6)*sum(de4);
dE5 = sum(de5);
dE6 = sum(de6);
dE = [dE1 dE2 dE3 dE4 dE5 dE6]';
end
 
function err = sumerr(x, y, w)
temp = [];
for i = 1:numel(x)
  y1 = forward(x(i), w);
  d = y1 - y(i);
  temp = [temp; d*d];
end
err = sum(temp);
end
На выходе получаю (и всегда что-то близкое к этому)
http://images.vfl.ru/ii/155732... 2811_m.png
В чем тут дело? В чем ошибка? Через десяток итераций сеть перестает обучаться.

Способ 2.
Меняю веса по градиенту Е, но вычисленному после каждого x(i) и y(i), но результат такой же, похожий

Способ 3.
Меняю веса через вычисление обратного распространения ошибки
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function backprop(w, x, y)
a = 0.1;
for i = 1:40
  for j = 1:9
    y1 = ynet(x(j), w); d = y1 - y(j);
    d1 = d*w(5); d2 = d*w(6);
    df1 = dsm(x(j)*w(1)+w(3));
    df2 = dsm(x(j)*w(2)+w(4));
    w(1) = w(1)+d1*df1*x(j)*a;
    w(2) = w(2)+d2*df2*x(j)*a;
    w(3) = w(3)+d1*df1*a;
    w(4) = w(4)+d2*df2*a;
    f1 = smd(x(j)*w(1)+w(3));
    w(5) = w(5)+d1*f1*a;
    f2 = smd(x(j)*w(2)+w(4));
    w(6) = w(6)+d2*f2*a;
  end
end
end
Миниатюры
Простейшая нейронная сеть для аппроксимации параболы   Простейшая нейронная сеть для аппроксимации параболы   Простейшая нейронная сеть для аппроксимации параболы  

Простейшая нейронная сеть для аппроксимации параболы  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.05.2019, 16:18
Ответы с готовыми решениями:

Нейронная сеть для аппроксимации
Написал скрипт, для нейронной сети, но при запуске ничего не происходит. clear all N=80; x=rand(1,N); y=(rand(1,N)-0.5)*4; ...

Нейронная сеть для функции
Как написать нейронную сеть для решения такой задачи: У меня есть нейронная сеть. Я хочу ее обучить, например возводить числа в куб. ...

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

229
47 / 15 / 1
Регистрация: 26.08.2017
Сообщений: 162
02.10.2019, 13:10
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Excalibur921 Посмотреть сообщение
Понятия не имею как так точно аппроксимировало у вас за 1 раз…фантастика.
Или там брутофорс из 1000 рандомов это лучшая аппроксимация?
Когда 11 точек и 3 нейрона то примерно 50\50% что сойдётся, бывает не сходится, но это нормально.
Цитата Сообщение от Excalibur921 Посмотреть сообщение
Может их нужно перемешивать?
Вам ответил ув. Виктор Генадич.
Цитата Сообщение от Excalibur921 Посмотреть сообщение
Может у вас другая парабола? Откуда там от 0 до 25 по Y на рис?
Цитата Сообщение от Excalibur921 Посмотреть сообщение
1)напишите все ваши веса w0 –w7.
2)в каких пределах у вас задана рандом инициализация весов?
3)сколько эпох\итераций
4)напишите массив 11 векторов, может там я беру неправильные Y близкие к 1 и это плохо?
Будьте внимательней читая ответы на Ваши вопросы, я же предоставил код, там есть алгоритм генерации датасета, потом повторял в числах, конфигурацию сети тоже описывал как минимум один раз, сперва наперво вам нужно натренировать внимательность, без неё в программировании нечего делать, особенно в машинном обучении, где алгоритмы могут быть сложные.

Добавлено через 7 минут
Цитата Сообщение от YagDen Посмотреть сообщение
Вы заменили функции активации. А грубые ошибки в моих-то формулах где?
Нет не только, Вы не понимаете свои "формулы", наверно списали откуда то типа хабра, где объяснения как для дошкольников, Mlp изучать нужно ТОЛЬКО по Хайкину, а если не понятно, значит IQ не соответствует, оставьте это дело более умным. Иначе бы регрессию вы бы не загоняли в {0,1} сигмоидой, это позор, facepalm, грубейшая ошибка, если кто то узнает ваше настоящее имя и сообщит на работе, работу вам больше не найти НИКОГДА, разве только сторожем или дворником.
0
45 / 6 / 1
Регистрация: 20.08.2012
Сообщений: 200
02.10.2019, 13:57  [ТС]
Цитата Сообщение от danila_zaytcev Посмотреть сообщение
Mlp изучать нужно ТОЛЬКО по Хайкину, а если не понятно, значит IQ не соответствует, оставьте это дело более умным.
Если непонятно — значит написание не соответствует текущему мат-уровню и все. IQ тут не причем. Вместе с технологиями в мире совершенствуется и дидактика в различных областях. В школе физику учат не по работам Ньютона или Эйнштейна. А с НС еще время не пришло сделать понятным среднему школьнику. Сделать нечто понятным каждому — это не малая работа. А ошибки, позорные ошибки — у кого их нет?
0
47 / 15 / 1
Регистрация: 26.08.2017
Сообщений: 162
02.10.2019, 14:11
Цитата Сообщение от tur9 Посмотреть сообщение
А с НС еще время не пришло сделать понятным среднему школьнику.
Этого и не нужно делать, также как делать понятным среднему школьнику работу БАК, или пространств Калаби-Яу в теории струн. Зачем пытаться разгрызть орешек, который не по молочным зубкам? Всему своё время.

Что говорит Эклизиаст по этому поводу? Время сеять и время жать, время жить и время умирать и тп. Профанация это плохо, изучите вначале линейную алгебру, математический анализ, теорию вероятностей, а потом уже и машинное обучение можно попробовать, после изучения Си разумеется, те кто не может понять указатели и внимательно прочитать пост, скорей всего физиологически не в состоянии изучить всё это.
0
45 / 6 / 1
Регистрация: 20.08.2012
Сообщений: 200
02.10.2019, 14:22  [ТС]
Цитата Сообщение от danila_zaytcev Посмотреть сообщение
Зачем пытаться разгрызть орешек, который не по молочным зубкам?
То чем мы занимаемся в этой теме как раз по молочным зубам. И Си и прочее тут не причем. Посмотрите мой последний код — да его в школе можно преподавать, давать как домашнее задание.
0
698 / 572 / 75
Регистрация: 20.09.2014
Сообщений: 3,700
02.10.2019, 15:04
Надо не просто повторить код, а понять его. Надо понять, как нейронка работает - после этого любые (даже неточные) формулы сойдут.
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
02.10.2019, 15:48
Если честно то здесь очень много узкоспецифичных только для матлаба инструкций. Буквально через каждую строку мне неизвестные действия.
Если бы код был специально сделан без особых функций матлаба либо в виде алгоритма или псевдокода тогда бы его мог повторить абсолютно любой на любом языке.

Вот буквально первые 8 строк.
№1 function targ_n_n_forum
Что это? Желательно называть функции поясняющие их действие либо описание в комментарии
№6 b = 100; j = 0;
Имена переменных должны пояснять сами за себя что это и для чего

№7 [x y w h i] = start2n;
Что это такое? Понятия не имею.
№8 while 1
О.. узнал из С\С++…

№22 a = 0.1; er1 = sumerr_n(x, y, w);
Почему некоторые команды в 2 строки?

a = 0.1
Это название называется магическая константа, имена должны сами за себя говорить для чего они и что делают.

Функции желательно отделять закомментированными линиями
Типа такого //= = = = =
Это визуально их хорошо отделяет. Ни одного комментария в коде =)).
А лучше вынести выше основной программы и назвать “объявление функций” все функции в одном куске.

Будете ли вы тратить время переписывая код? Вероятно нет.
Может и можно попробовать его понять, но давайте сначала вымучаем очень удобный псевдокод в 10 строк который я тут мучаю уже 2 дня. Даже есть сдвиги больше нуля.

Цитата Сообщение от tur9 Посмотреть сообщение
проверяет множество случайных векторов w, для каждого из них вычисляет ошибку сети и возвращает вектор w с минимальной ошибкой
Тогда это скорей можно назвать случайный локальный поиск а не наискорейший спуск. Наискорейший спуск требует аналитического или численного градиента целевой.
Цитата Сообщение от danila_zaytcev Посмотреть сообщение
Будьте внимательней
Так и непонятно где у вас какие веса, другие имена у всех весов.
Цитата Сообщение от danila_zaytcev Посмотреть сообщение
50\50% что сойдётся, бывает не сходится, но это нормально.
Жесть. На википедии кстати другой алгоритм.


Никто не пробовал его сделать? Даже на первой строке ошибка сети считается совсем не так как здесь:
Цитата Сообщение от danila_zaytcev Посмотреть сообщение
delta = Y - o3
Или здесь:
Цитата Сообщение от YagDen Посмотреть сообщение
delta = f(x) - o3
“Алгоритм: BackPropagation”
https://ru.wikipedia.org/wiki/... ния_ошибки
0
47 / 15 / 1
Регистрация: 26.08.2017
Сообщений: 162
02.10.2019, 17:01
Цитата Сообщение от Excalibur921 Посмотреть сообщение
Так и непонятно где у вас какие веса, другие имена у всех весов.
*Вырезано цензурой*, вы не в состоянии сопоставить это
Цитата Сообщение от danila_zaytcev Посмотреть сообщение
L0.n0.out = tanh(x*L0.n0.w0+ L0.n0.w1)
L0.n1.out = tanh(x*L0.n1.w0+ L0.n1.w1)
L1.n0.out = (L0.n0.out*L1.n0.w0 + L0.n1.out*L1.n0.w1 + L1.n0.w2)
и это

Цитата Сообщение от danila_zaytcev Посмотреть сообщение
s1 = w1 * x + w3;
o1 = f(s1)
s2 = w2 * x + w4
o2 = f(s2)
s3= o1*w5 + o2*w6 + w7
o3 = s3
чтобы найти w1...w7 ????

*Вырезано цензурой*

Добавлено через 2 минуты
Цитата Сообщение от Excalibur921 Посмотреть сообщение
На википедии кстати другой алгоритм.
Опять фэйл, там алгоритм такой же, но с инерцией, что не обязательно(всю херь с альфой можно убрать). Но вы понятное дело не поймёте, ведь наверно сравниваете формулы посимвольно, я прав?
0
45 / 6 / 1
Регистрация: 20.08.2012
Сообщений: 200
02.10.2019, 17:16  [ТС]
Excalibur921, вы совершенно правы со своими вопросами. Похоже я просто ослеп, не вижу как мой код выглядит со стороны, окуклился в своей субъективности. Давайте вы мне поможете задавая все вопросы, а я на них буду отвечать.

function targ_n_n_forum
первое слово определяет что далее и идет имя функции
targ_n_n_forum - имя ф-ции, можно иначе: my_func
У меня имена ф-ций внутри папок с разного рода упражнениями, их уже много, я в них (в старых, месяц и более) уже путаюсь.

[x y w h i] = start2n; - это вызов ф-ции start2n, она приведена во втором куске.
start2n - имя ф-ции, т.е. старт для 2-х нейронов, просто я так назвал для себя, для памяти и чтоб от другого отличить. Важно не имя ф-ции, а что она возвращает, а возвращает она то, что указано в квадратных скобках - [x y w h i], здесь:
x y - координаты точек параболы, w - массив весов (их шесть в нашем случае), h - указатель на голубую (видели моё
Цитата Сообщение от Excalibur921 Посмотреть сообщение
Тогда это скорей можно назвать случайный локальный поиск а не наискорейший спуск. Наискорейший спуск требует аналитического или численного градиента целевой.
видео?) линию графика, i - просто переменная в которой есть единица, это счетчик как видно из дальнейшего.
while 1 - это начало цикла while, а 1 - означает вход в цикл всегда будет.

№22 a = 0.1; er1 = sumerr_n(x, y, w);
Почему некоторые команды в 2 строки?

Мне удобней в одну строку, но можно и в две:
a = 0.1; - это ваша speed. Конечно имена должны говорить, но есть еще личная история, где-то так назвали и это приклеилось ко мне.
er1 = sumerr_n(x, y, w); - ф-ция возвращающая ошибку сети - er1, x, y, w - входные параметры этой ф-ции
Цитата Сообщение от Excalibur921 Посмотреть сообщение
Ни одного комментария в коде =)).
Каюсь, торопился выложить на форум.

Цитата Сообщение от Excalibur921 Посмотреть сообщение
Будете ли вы тратить время переписывая код?
Давайте я его вам сейчас объясню — это и будет комментарий. Что еще неясно?

Цитата Сообщение от Excalibur921 Посмотреть сообщение
Тогда это скорей можно назвать случайный локальный поиск а не наискорейший спуск. Наискорейший спуск требует аналитического или численного градиента целевой.
Да, так и есть, но наискорейший спуск дальше, посмотрите и увидите - naiskor_spusk

Excalibur921, не хотите поставить себе матлаб? Простейшая программа в своей основе.
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
02.10.2019, 18:03
Цитата Сообщение от danila_zaytcev Посмотреть сообщение
вы не в состоянии сопоставить это
Просто не вчитывался в ту кашу из точек. Пришлось N раз повторять что мне нужны формулы а не коды.
Цитата Сообщение от danila_zaytcev Посмотреть сообщение
чтобы найти w1...w7 ????
А нельзя было просто сразу написать их? Уже 3 раза просил =).
Цитата Сообщение от danila_zaytcev Посмотреть сообщение
наверно сравниваете формулы посимвольно, я прав?
Нуда, первая строка и совсем другая формула. Обозначения там дурацкие как и псевдокод. Так алгоритмы не пишут.
Цитата Сообщение от danila_zaytcev Посмотреть сообщение
Пипец.... эпик фэйл, стыд и срам. Назовите своё имя и фамилию хотя бы,

Боже какие накруты…Лично для меня форум просто развлекуха от скуки и не более+ тут мне помогают решать мелкие задачи или я помогаю. Сам удивлен откуда у меня репутация больше нуля …магия =)).
Цитата Сообщение от tur9 Посмотреть сообщение
Похоже я просто ослеп, не вижу как мой код выглядит со стороны, окуклился в своей субъективности.
Вы же для себя пишите. Я не буду повторять рандомный поиск.
Нужно запустить по готовым формулам, вы ж видите у danila_zaytcev, работает, хоть и 50\50.
Сначала нужно попробовать уменьшить параболу и глянуть loss по эпохам как я и предполагал но никто не заметил.
Цитата Сообщение от tur9 Посмотреть сообщение
не хотите поставить себе матлаб?
Не…
У меня из игрушек уже есть GeoGebra, и Mathemetica 8, а Mathcad забросил.
Сейчас играю в лаговой Mathemetica 8, хотя наверно лучше б запилил на С++ простой код и сразу +100500 к скорости работы.
0
47 / 15 / 1
Регистрация: 26.08.2017
Сообщений: 162
02.10.2019, 18:15
Цитата Сообщение от Excalibur921 Посмотреть сообщение
Боже какие накруты…Лично для меня форум просто развлекуха от скуки и не более+ тут мне помогают решать мелкие задачи или я помогаю. Сам удивлен откуда у меня репутация больше нуля …магия =)).
да я прикалываюсь тоже, как же без этого, но вы серьёзно чото немного подтормаживаете...

последняя попытка, код на пайтоне максимально приближенный к вашим формулам:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import random
import math
 
inputs = list(range(-5,6))
outputs = [x*x for x in inputs]
 
speed = 0.001
 
def rnd(mult): return mult*(random.random()*2-1)
 
m1 = 0.5
m2 = 0.3
w1 = rnd(m1)
w2 = rnd(m1)
w3 = rnd(m1)
w4 = rnd(m1)
w5 = rnd(m2)
w6 = rnd(m2)
w7 = rnd(m2)
 
for _ in range(100000):
    index = random.randint(0,len(inputs)-1)
    x = inputs[index]
    Y = outputs[index]
    
    o1 = math.tanh(w1 * x + w3)
    o2 = math.tanh(w2 * x + w4)
    o3 = o1 * w5 + o2 * w6 + w7
    
    delta = Y - o3
    g3 = delta
    g1 = g3 * w5 * (1.0 - o1 * o1)
    g2 = g3 * w6 * (1.0 - o2 * o2)
    
    w1 = w1 + speed * x * g1
    w2 = w2 + speed * x * g2
    w3 = w3 + speed * g1
    w4 = w4 + speed * g2
    w5 = w5 + speed * o1 * g3
    w6 = w6 + speed * o2 * g3
    w7 = w7 + speed * g3
 
for i in range(len(inputs)):
    x = inputs[i]
    Y = outputs[i]
    o1 = math.tanh(w1 * x + w3)
    o2 = math.tanh(w2 * x + w4)
    o3 = o1 * w5 + o2 * w6 + w7
    print("expected: "+str(Y)+ " aproximate: "+str(o3))
1
45 / 6 / 1
Регистрация: 20.08.2012
Сообщений: 200
02.10.2019, 18:24  [ТС]
Цитата Сообщение от Excalibur921 Посмотреть сообщение
Нужно запустить по готовым формулам, вы ж видите у danila_zaytcev, работает, хоть и 50\50.
Рандомный поиск как раз и нужен чтобы исключить 50/50. Без этого поиска обучение всегда будет останавливаться на горизонтальной прямой. Это не моя идея, где-то прочитал что без этого работать не будет и я этого нахлебался уже.
Цитата Сообщение от Excalibur921 Посмотреть сообщение
Сначала нужно попробовать уменьшить параболу
Зачем? Сначала парабола должна быть в единичном квадрате.
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
02.10.2019, 19:48
Цитата Сообщение от danila_zaytcev Посмотреть сообщение
но вы серьёзно чото немного подтормаживаете...
Давайте посчитаем:
№1
Цитата Сообщение от Excalibur921 Посмотреть сообщение
Напишите свои формулы вот в этом стиле выше просто текст без всяких Latex.
№2
Цитата Сообщение от Excalibur921 Посмотреть сообщение
Что это все и зачем?
Где тут ошибка?
№3
Цитата Сообщение от Excalibur921 Посмотреть сообщение
danila_zaytcev, Где ошибки в алгоритме пост 146?
№4
Цитата Сообщение от Excalibur921 Посмотреть сообщение
Я у вас уже 5 раз просил написать формулы а не код.
№5
Цитата Сообщение от Excalibur921 Посмотреть сообщение
Можете написать формулы для этой сети? В той ветке
Ура пост 153, всего 5 повторов вопроса и профит .
Цитата Сообщение от danila_zaytcev Посмотреть сообщение
Ну ладно, сжалюсь над вами, всё равно толку не будет,
Теперь новый прикол?
Цитата Сообщение от danila_zaytcev Посмотреть сообщение
g1 = g3 * w5 * (1.0 - o1 * o1)
g2 = g3 * w6 * (1.0 - o2 * o2)
Это версия 3 сети? Абсолютно другие формулы.
Раскрываем кашу функций будет
g1 = delta * w5 * (1.0 – (math.tanh(w1 * x + w3)) * (math.tanh(w1 * x + w3)))
Берем вашу прошлую версию формулы
Цитата Сообщение от danila_zaytcev Посмотреть сообщение
g1 = g3 * w5 * df(o1) // градиент соответствующего нейрона скрытого слоя
Раскрываем кашу функций будет
g1 = delta * w5 * (1.0 - tanh(w1 * x + w3)^2)
Прикольно…


Цитата Сообщение от danila_zaytcev Посмотреть сообщение
код на пайтоне
И в 6 раз закинул дед невод…
Зачем писать на питоне который я не знаю? В 6 раз прошу
“Напишите свои формулы вот в этом стиле выше просто текст”
Видимо спешили и напутали формулы, а тут я разгребаю почему бред.


Цитата Сообщение от tur9 Посмотреть сообщение
Рандомный поиск как раз и нужен чтобы исключить 50/50.
Тогда и обучать можно так и намного быстрей чем этот бред обратного распространения.
Цитата Сообщение от tur9 Посмотреть сообщение
Зачем? Сначала парабола должна быть в единичном квадрате.
Насколько понял из-за функции активации нужно чтобы парабола была там где близкий к прямой участок функции активации. Или я снова не так понял =)).
Цитата Сообщение от VTsaregorodtsev Посмотреть сообщение
надо нормализовать такие данные (и зависимые, и независимые признаки) перед тем, как их совать в сетку.
tur9,теперь ясно почему не пашет. Просто YagDen, привел неправильные формулы в Редакции№1 раз не обучилось и у него при тесте и у меня.

Затем редакция формул danila_zaytcev,
Редакции№2 тоже неправильные т.к. в его новой Редакции№3 формулы абсолютно другие.

Поменял параболу f[x_]:=8*x^2-0.25; X от -0.25 до 0.25
Падает в локальный мин и все. Теперь то ясно почему.
[quote="tur9;13871094"] , YagDen,
если вам известны заклинания на питоне пробуйте формулы Редакции№3. Мне надоело =).

Засим харе… так и не получены внятные правильные формулы подтвержденные вычислениями простой НС.
0
45 / 6 / 1
Регистрация: 20.08.2012
Сообщений: 200
02.10.2019, 20:13  [ТС]
Цитата Сообщение от Excalibur921 Посмотреть сообщение
Тогда и обучать можно так и намного быстрей чем этот бред обратного распространения.
А вот обучать вряд ли получится, т.к. чем меньше ошибка тем трудо-затратней подбирать веса, так никто не делает и, думаю, не просто так. Вы бы попробовали сначала. И у меня нет обратного распространения, я просто вычитаю градиент (для каждого веса свой) посчитанный по всей выборке. Вы взгляните на первый кусок и увидите на сколько он прост и ясен.
Цитата Сообщение от Excalibur921 Посмотреть сообщение
Насколько понял из-за функции активации нужно чтобы парабола была там где близкий к прямой участок функции активации. Или я снова не так понял =)).
Поначалу ф-ции активации нужно чтобы на нее подавался сигнал от -1 до 1, ну или на худой конец от -5 до 5 сигмойд и -3 до 3 г.тангенс. Это ж видно по их графикам. Это нужно для ускорения обучения.

Цитата Сообщение от Excalibur921 Посмотреть сообщение
Засим харе… так и не получены внятные правильные формулы подтвержденные вычислениями простой НС.
Это нельзя оставлять, надо добить до полной победы.

На одной лекции по НС преподаватель рассказал, как его бывший ученик позвонил к нему и спросил: как долго может не получаться? И преподаватель ответил: у меня это было полтора года, но потом все-таки получилось.
0
47 / 15 / 1
Регистрация: 26.08.2017
Сообщений: 162
02.10.2019, 22:42
Цитата Сообщение от Excalibur921 Посмотреть сообщение
Зачем писать на питоне который я не знаю? В 6 раз прошу
“Напишите свои формулы вот в этом стиле выше просто текст”
Видимо спешили и напутали формулы, а тут я разгребаю почему бред.
ммммда.... походу ещё один "Hretgir" жжет

пайтон то там же тот же самый "текст" что и у вас, это язык почти как устная речь, ничего лишнего, любая доярка никогда не видевшая комп сможет понять пайтон

вы вообще смотрели что вам пишут?

g1 = g3 * w5 * df(o1) = g3 * w5 * (1.0 - o1 * o1) потому что производная гипертангенса равна 1-o^2 нет там никаких "прошлых" и настоящих версий, версия одна, просто вы не думаете.


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


Добавлено через 1 час 52 минуты
Цитата Сообщение от Комментарий модератора Посмотреть сообщение
спокойнее относитесь к попыткам Вам помочь
это оказывается были попытки МНЕ помочь...

ок спасибо
0
1 / 1 / 0
Регистрация: 06.02.2019
Сообщений: 216
03.10.2019, 00:26
Цитата Сообщение от danila_zaytcev Посмотреть сообщение
Нет не только, Вы не понимаете свои "формулы", наверно списали откуда то типа хабра, где объяснения как для дошкольников, Mlp изучать нужно ТОЛЬКО по Хайкину, а если не понятно, значит IQ не соответствует, оставьте это дело более умным. Иначе бы регрессию вы бы не загоняли в {0,1} сигмоидой, это позор, facepalm, грубейшая ошибка, если кто то узнает ваше настоящее имя и сообщит на работе, работу вам больше не найти НИКОГДА, разве только сторожем или дворником.
Так вы умник, как я погляжу? И ваш IQ соответствует? Так объясните, мне, тупому школьнику, в чем проблема, если я аппроксимирую функцию в пределах от 0 до 1, использовать сигмоид? И где вы такой чуши начитались, что единственный возможный вариант апроксимации функции - это без функции активации? Так вот, просвещаю: в зависимости от задачи, функция активации может меняться. Просто мозг нужно включить. Я не утверждаю, что сигмоид - оптимальная функция активации для этой задачи, но она точно имеет право на существование.
И еще, ваши хваленые гиперболические тангенсы тоже не заработали. И на всякий случай, если вы переживаете за мою судьбу - можете быть спокойны. Я не сторожем и не дворником работаю.
Миниатюры
Простейшая нейронная сеть для аппроксимации параболы   Простейшая нейронная сеть для аппроксимации параболы  
0
47 / 15 / 1
Регистрация: 26.08.2017
Сообщений: 162
03.10.2019, 01:17
Цитата Сообщение от YagDen Посмотреть сообщение
И где вы такой чуши начитались, что единственный возможный вариант апроксимации функции - это без функции активации?
Регрессии а не апроксимации, там последний слой без нелинейности и только не образованные школьники делают с активацией, которые списали с хабра, а сами ничего не понимают.
Цитата Сообщение от YagDen Посмотреть сообщение
объясните, мне, тупому школьнику, в чем проблема, если я аппроксимирую функцию в пределах от 0 до 1, использовать сигмоид?
Можно и синусоиду использовать, тоже как то будет работать, но лучше гипертангенс.
Цитата Сообщение от YagDen Посмотреть сообщение
Я не сторожем и не дворником работаю.
Возможно это из за богатых родителей, пока так, но это время пройдёт и когда нибудь вам придётся встретиться с реалиями жизни, а там с вами церемониться не будут, уж поверьте. Любой работе будите рады, работа сторожем будет подарком.
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
03.10.2019, 12:43
VTsaregorodtsev, подарите котятам правильные формулы для 3 нейронов чтобы аппроксимировать могучую параболу? =)).
0
45 / 6 / 1
Регистрация: 20.08.2012
Сообщений: 200
03.10.2019, 13:30  [ТС]
Цитата Сообщение от Excalibur921 Посмотреть сообщение
VTsaregorodtsev, подарите котятам правильные формулы для 3 нейронов чтобы аппроксимировать могучую параболу? =)).
Все эти формулы расписаны на каждой странице этой темы в вернем посту. Только не для трех, а для двух - и они работают. Еще раз: я дал простейший рабочий вариант. Нужно только посмотреть их и спросить если что неясно. Формулы привел, не только код.
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
03.10.2019, 15:05
tur9, Так я думал обратного распространения так и не получилось. А почему остались фотки там аппроксимации где она не получилась?

В таком стиле можете сделать все формулы с активацией и производными?
Простейшая нейронная сеть для аппроксимации параболы
1)С указанием пределов рандома весов инициализации. wMin wMax
2)С весами на которых сеть у вас получилась обучить, стартовые веса. StartW1.. StartW5
3)Количеством итераций в эпохе. IterNum
4)Количеством эпох Epoh
5)Скорость обучения Speed
6)И что рисует функции.
7)И график Loss по эпохам.
8)И веса при которых рисует такую параболу FinW1… FinW5.

У меня максимум 70% параболы повторяет. Причем настройки дикие:
Синий функция стартовые веса, коричневый обученная НС.
speed=0.1;
Epoh=1000;
rMinW=-3.25;
rMaxW=3.25;
MinLoss=0.0001;
Из 20 рандомов лучший визуально.
Название: ScreenShot00179.jpg
Просмотров: 28

Размер: 6.8 Кб
Может убрать эти приколы с повышением графика ошибки?
Если новый loss больше старого то стоп? Но может проходить локальный минимум и падать ниже...
Вот ошибка по эпохам для параболы выше. Тогда алгоритм “Если новый loss больше старого то стоп” не даст обучать дальше.
Название: ScreenShot00180.jpg
Просмотров: 28

Размер: 9.3 Кб
Похоже на игру в лотерею а не обучение, море локальных минимумов и эта delta по 1 точке просто баловство.

В любом случае нет примерно 50\50 сходимости к хорошему ответу даже примерно…скорей 1 к 20.
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
03.10.2019, 15:21
Но с другой стороны, зачем все это надо?

Берем обычную ломанную из 11 точек, проходим 1 итерацию при Speed=1
Все, функция повторена, выглядит как НС с Relu.

Если примеров много и они с неким шумом можно взять среднее значение тупо сложив Y значения… снова проходим 1 итерацию при Speed=1
Все, функция повторена, выглядит как НС с Relu.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.10.2019, 15:21
Помогаю со студенческими работами здесь

Нейронная сеть для распознавания лиц
Всем привет!) Хочу посоветоватся с людьми которые знакомы с нейронными сетями. Суть дела такова, мне необходимо запрограмировать систему...

Нейронная сеть для распознавания образов
Нужно сделать нейронную сеть для распознавания образов. Кто делал такое? Где проще это делать? Где есть нормальные гайды? Думаю между...

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

Нейронная сеть для распознавания чисел
Народ, дано вот такое задание: Создать нейронную сеть для распознавания десяти чисел, по одному из следующих методов: 1) Трехслойная...

Нейронная сеть для сайта Asp.net
Подскажите, надо для учебы разместить нейронную сеть(любую) на сайте. Можете подкинуть какую-нибудь литекратуру для этого. Сайт обычный...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
180
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru