45 / 6 / 1
Регистрация: 20.08.2012
Сообщений: 200

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

08.05.2019, 16:18. Показов 21482. Ответов 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
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
06.10.2019, 23:52
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от VTsaregorodtsev Посмотреть сообщение
Переизобретение покоординатного спуска
Разве? Вроде как покоординатный не локализует корень по одной переменной, а применяет любую локальную оптимизацию. Это скорей можно назвать стохастический локальный покоординатный поиск без локализации и уточнения корня.
0
45 / 6 / 1
Регистрация: 20.08.2012
Сообщений: 200
07.10.2019, 13:52  [ТС]
Цитата Сообщение от Excalibur921 Посмотреть сообщение
Никакие локальные методы в которым относиться оптимизация по градиенту (спуск) НИКОГДА не сравняться с этим перебором в малой области. Это очевидно. У него намного больше шансов найти глобальный минимум который вашему спуску не снился.
Конечно, т.к. спуск не ищет глобальный минимум. Я это пробовал: перебор в малой области, а еще попробовал реализовать генетический алгоритм отбора весов. Сходу не получил удовлетворительного результата. Меня сломало то, что в матлабе по умолчанию стоит Левенберг и работал он на моих примерах великолепно. А теперь у меня совсем другая ситуация. После каждого обучения всматриваюсь в значения весов и выяснилось, что значения многих весов в несколько десятков и даже сотен в зависимости от задачи. Причем так почти всегда, даже когда число итераций менее полутора десятков. Что это значит? — вот вопрос! Просто какой-то выверт, локальный минимум? Но ведь не в этом дело. Нужно получить не просто работающую НС, но оптимальную, решающую задачу минимальным числом весов. А для этого нужен глобальный минимум (по всей вероятности). Видимо это путь в генетические алгоритмы. Еще есть идея перебора всех значений весов с некоторым шагом и затем отбора лучшего десятка и запуска каждого вектора из этого десятка как стартового в Левенберга. Что скажете, Rayvenor, VTsaregorodtsev?
Вот иллюстрация в этому вопросу


Полторы синусоиды три нейрона, 12 итераций Левенбергом, веса приведены справа вверху. Вопрос такой: где глобальный минимум? - на "продолжении" этих найденных весов или совсем в другой яме? И даже не такой вопрос, а такой: при глобальном минимуме веса будут примерно также разновелики? Вообще что это значит w3 = -17? Ведь х = -0.2:0.005:0.2. Всего 81 значение.
Уменьшим в два раза число х = -0.2:0.01:0.2. тогда получим

Могут ли веса быть велики или близки к нулю если они являют собой глобальный минимум? Или их чрезмерный разброс однозначно указывает например на избыточность числа нейронов (или единицы) в сети?

Цитата Сообщение от VTsaregorodtsev Посмотреть сообщение
у каждого локального/глобального минимума - есть КОМБИНАТОРНОЕ число его полностью эквивалентных копий (получаемых в ходе эквивалентных трансформаций набора весов в MLP).
Какой смысл этого комбинаторного числа?
- "эквивалентных копий" Эквивалентных чему?
Цитата Сообщение от VTsaregorodtsev Посмотреть сообщение
У каждого глоб.минимума - существует комбинаторное число его копий
Что значит у глоб.минимума? У каждого вектора весов существует комбинаторное число его копий — это вы имели в виду?
0
45 / 6 / 1
Регистрация: 20.08.2012
Сообщений: 200
07.10.2019, 14:15  [ТС]
Excalibur921, нашел картинку

все по слогам расписано. Это одно из первых моих упражнений
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
07.10.2019, 14:19
Цитата Сообщение от tur9 Посмотреть сообщение
что значения многих весов в несколько десятков и даже сотен в зависимости от задачи.
Тут что-то пропущено =).
Цитата Сообщение от tur9 Посмотреть сообщение
но оптимальную, решающую задачу минимальным числом весов.
Не существует метода выбора конкретной архитектуры НС от задачи. Это еще один жирный минус НС.
Цитата Сообщение от tur9 Посмотреть сообщение
А для этого нужен глобальный минимум
Чтобы найти глобальный минимум любой задачи применяют полный перебор, он же брутофорс.
Цитата Сообщение от tur9 Посмотреть сообщение
Видимо это путь в генетические алгоритмы.
Нет. Генетический алгоритм это всего лишь один из видов поиска использующий мутацию и скрещивание параметров. Это разновидность локального поиска.
Цитата Сообщение от tur9 Посмотреть сообщение
Вопрос такой: где глобальный минимум?
Вы путаете графики аппроксимации функции и поверхность целевой функции.
Поверхность целевой функции и показывает все локальные и глобальный минимум.
Но построить ее вы не сможете т.к это многомерная поверхность, у нее 9 измерений =)). Т.к. поверхность целевой это функция от ваших 9 нейронов.

Либо вам нужно придумать как сделать так, чтобы ваши 9 нейронов задавали уникальную точку в 2д плоскости по аналогии с декартовой системой координат тогда по этим координатам можно например высотой поверхности Z вывести loss. Так и получите то что называют поверхность целевой…
0
29 / 6 / 0
Регистрация: 14.12.2015
Сообщений: 51
07.10.2019, 14:28
Цитата Сообщение от Excalibur921 Посмотреть сообщение
Лучше любого бекапропа =)…
w=читаем вес.
loss=находим loss с текущими весами и сохраняем.
Генерируем рандом 10 весов в некоторой области вокруг w.
Считаем всем 10 весам loss и выбираем лучший wNew и его lossNew
Если lossNew< loss то записываем wNew в текущий вес w.
Повторить всем весам.
Проход всех весов это одна итерация.
Это великолепно что Вы изобретаете новые алгоритмы обучения MLP, но это задача крайне не простая, не смотря на кажущуюся простоту обучения однослойного персептрона. На столько не простая что всей планете понадобилось пару десятков лет на это, бэкпроп находка гения как E=mc^2, к ней не прийти с помощью здравого смысла и\или методом тыка, посадив сотню дорогих спецов с хорошей зп на пару лет. Это не "градиентная задача", судя по всему с ней не справилась даже матушка природа.
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
07.10.2019, 14:45
Цитата Сообщение от puchik Посмотреть сообщение
Это великолепно что Вы изобретаете новые алгоритмы обучения MLP,
Это не изобретение, а вариация идеи покоординатного спуска которых навалом.
Цитата Сообщение от Excalibur921 Посмотреть сообщение
Но построить ее вы не сможете т.к это многомерная поверхность, у нее 9 измерений =)).
Поднимал давно этот интересный вопрос, но математики не оценили его важность либо просто не справились. Может просто не существует общеизвестного решения?
Как показать во что преобразует многомерный вектор нейросеть?

Добавлено через 7 минут
Это наверно была бы революция в математике… анализе многомерных данных, AI…
Но контингент ребят бывает не тот =).
Цитата Сообщение от NO_ Посмотреть сообщение
Вырежьте из картофелины фигурку кошки. А мы посмотрим.

Цитата Сообщение от Excalibur921 Посмотреть сообщение
“показать во что преобразует многомерный вектор нейросеть”
Уберет черный ящик, будет видно какую поверхность строит обученная нейросеть произвольной глубины. Будет видно причины ошибки классификации, правильно ли выбрана сложность нейросети, избыточна она или нет. Возможно нейросеть эффективней будет заменить параметрической поверхностью или чем то другим. Будет видно ландшафт который и аппроксимирует нейросеть. Можно будет поиграть с весами сети наблюдая как меняется ландшафт.
0
29 / 6 / 0
Регистрация: 14.12.2015
Сообщений: 51
07.10.2019, 15:31
Цитата Сообщение от Excalibur921 Посмотреть сообщение
Это не изобретение, а вариация идеи покоординатного спуска которых навалом.
Это стохастический поиск, он не плохо работает для однослойного персептрона, но совсем плохо для многослойного.
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
07.10.2019, 16:16
Цитата Сообщение от puchik Посмотреть сообщение
плохо для многослойного.
ИМХО это покоординатный стохастический. Я думаю ему всеравно сколько измерений =).
0
 Аватар для evmir
2 / 2 / 0
Регистрация: 17.08.2019
Сообщений: 39
07.10.2019, 16:42
Цитата Сообщение от danila_zaytcev Посмотреть сообщение
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
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))
Круто! Илюстрация обратного распространения на масенькой сеточке. Спасибо Но к такому коду нужна картинка поясняющая веса w1-w7


Если бы ещё к простому обратному распространению ещё "диагональный левенберга-марквардта" также проиллюстрировать на конкретных весах, было бы совсем респектище!
0
 Аватар для evmir
2 / 2 / 0
Регистрация: 17.08.2019
Сообщений: 39
07.10.2019, 16:48
картинка
Миниатюры
Простейшая нейронная сеть для аппроксимации параболы  
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
07.10.2019, 16:56
Цитата Сообщение от evmir Посмотреть сообщение
Круто! Илюстрация обратного распространения на масенькой сеточке. Спасибо
Еще неплохо бы добавить такое:
Цитата Сообщение от Excalibur921 Посмотреть сообщение
В таком стиле можете сделать все формулы с активацией и производными?
Простейшая нейронная сеть для аппроксимации параболы
1)С указанием пределов рандома весов инициализации. wMin wMax
2)С весами на которых сеть у вас получилась обучить, стартовые веса. StartW1.. StartW5
3)Количеством итераций в эпохе. IterNum
4)Количеством эпох Epoh
5)Скорость обучения Speed
6)И что рисует функции.
7)И график Loss по эпохам.
8)И веса при которых рисует такую параболу FinW1… FinW5.
Я этот алгоритм 5 постов выпрашивал. И всеравно на языке питон….просил же без привязки к языку. Алгоритм и все.
0
Модератор
Эксперт функциональных языков программирования
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,912
07.10.2019, 18:15
Цитата Сообщение от evmir Посмотреть сообщение
Но к такому коду
Предположу, что код не работает.
Цикл в строках 16-19 100000 раз вычисляет x и Y, но использует только последний вариант. Предположу, что в строках 20, 23, 27 опечатка - не хватает пары пробелов в начале строки.

Цитата Сообщение от Excalibur921 Посмотреть сообщение
просил же без привязки к языку
ИМХО Если читать код не как код Питон, а как текст, написанный на английском, то как раз и получится без привязки к языку. Разве что ещё вместо "for i in range(len(inputs))" написать "for each i in range from 0 to the length of inputs".
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
07.10.2019, 18:50
Цитата Сообщение от Shamil1 Посмотреть сообщение
код не работает.
Вообще не удивляет…Просил без привязки к языку.

Где там создание обучающей выборки?
Где подсчет loss?
Где вообще все? Пару формул с разрывом хронологии?
Почему не сделать функциями?
Где графики ошибки?
Баян…просто уже не стал мусолить.
Именно по этому:
Цитата Сообщение от Excalibur921 Посмотреть сообщение
1)С указанием пределов рандома весов инициализации. wMin wMax
2)С весами на которых сеть у вас получилась обучить, стартовые веса. StartW1.. StartW5
Очевидно все это просто чтобы сам создающий код проверил что он пашет. Чтобы кто хотел повторить могли отладить и проверить код на вход и выход на любом языке но нет же… и вот этот код это уже редакция 3 =)).
Где то тут в теме его пробовали и баян.
0
3136 / 1735 / 273
Регистрация: 19.02.2010
Сообщений: 4,535
07.10.2019, 18:57
Цитата Сообщение от tur9 Посмотреть сообщение
Нужно получить не просто работающую НС, но оптимальную, решающую задачу минимальным числом весов. А для этого нужен глобальный минимум (по всей вероятности). Видимо это путь в генетические алгоритмы. Еще есть идея перебора всех значений весов с некоторым шагом и затем отбора лучшего десятка
А ещё уже 3 десятилетия существуют методы вырезания из обученной сетки всего лишнего (неинформативного, избыточного), возможно, с некоторым дообучением сетки по ходу процесса такого жиросжигания.

Цитата Сообщение от tur9 Посмотреть сообщение
Какой смысл этого комбинаторного числа?
Как минимум - указание на неединственность каждой особой точки (точки экстремума и/или некоей проблемной для некоторого метода оптимизации точки, типа седловой точки для градиентных алгоритмов).
Как максимум - указание, что при поиске методом случайного тыка (генетический и т.д.) можно исследовать не весь объём некоторого кубика в https://www.cyberforum.ru/cgi-bin/latex.cgi?R^n (где n - число синапсов, а стороны кубика заданы возможным/разрешённым интервалом значений весов), а только некоторую часть этого кубика.
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
07.10.2019, 19:25
Цитата Сообщение от VTsaregorodtsev Посмотреть сообщение
указание на неединственность каждой особой точки (точки экстремума
Цитата Сообщение от VTsaregorodtsev Посмотреть сообщение
можно исследовать не весь объём некоторого кубика
Проще говоря ничего кроме очевидного оно не говорит, т.е. пустое теоретизирование.
0
462 / 185 / 32
Регистрация: 04.08.2018
Сообщений: 732
07.10.2019, 19:29
Excalibur921, вас такой результат устроит? Как по мне результат плох. Очень большая ошибка в районе +-1, поэтому обучал на диапазоне от -0.5 до 0.5, но всё равно плохая точность в районе нуля. Как калькулятор использовать нельзя, но форму вполне повторяет.
На картинке: слева график точности (среднеквадратичное отклонение) по обучающим примерам; правее - параболы по обучающей выборке, красным исходные значения, синим ответ сети; самый правый график - параболы по тестовой выборке, цвета означают то же самое. Нижние графики как менялась точность в процессе обучения на обучающей и тестовой. Не первый раз замечаю, что на тестовой точность выше, объяснить не могу.
Параметры сети один слой, три нейрона, на каждый нейрон своё смещение. На выходном слое тоже действует функция активации, хотя её надо убирать.
Повторяемость хорошая.
Алгоритм и прочее опишу если будет заинтересованность. Документ маткада 4.0, где это всё считается прикладываю.
Миниатюры
Простейшая нейронная сеть для аппроксимации параболы  
Вложения
Тип файла: zip XX v4-norandom-batch.zip (747.1 Кб, 0 просмотров)
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
07.10.2019, 19:43
Rayvenor, Ну я как бы не выбиваю тут работающую сеть. Просто пытался повторить в коде что тут кидали формулы и как видите сильно не эффективно(море графиков в теме). Да лень давно мучить код.
Кто еще пробовал тоже не удачно…тут море картинок.
Цитата Сообщение от Rayvenor Посмотреть сообщение
плохая точность в районе нуля.

Вот плохая точность, каждый график результат обучения.
Простейшая нейронная сеть для аппроксимации параболы
Цитата Сообщение от Rayvenor Посмотреть сообщение
на тестовой точность выше, объяснить не могу.
Запомнила ответы, переобучение.
Цитата Сообщение от Rayvenor Посмотреть сообщение
три нейрона, на каждый нейрон своё смещение.
Ого…
Да что вы все усложняете сеть? У меня было вроде 5, потом 6 весов.
0
45 / 6 / 1
Регистрация: 20.08.2012
Сообщений: 200
07.10.2019, 21:44  [ТС]
Цитата Сообщение от VTsaregorodtsev Посмотреть сообщение
А ещё уже 3 десятилетия существуют методы вырезания из обученной сетки всего лишнего (неинформативного, избыточного), возможно, с некоторым дообучением сетки по ходу процесса такого жиросжигания.
У меня нулей практически нет, не они проблема. Проблема большие по модулю веса, более 10, 20.. 100...
Цитата Сообщение от VTsaregorodtsev Посмотреть сообщение
Как минимум - указание на неединственность каждой особой точки (точки экстремума и/или некоей проблемной для некоторого метода оптимизации точки, типа седловой точки для градиентных алгоритмов).
Как максимум - указание, что при поиске методом случайного тыка (генетический и т.д.) можно исследовать не весь объём некоторого кубика в (где n - число синапсов, а стороны кубика заданы возможным/разрешённым интервалом значений весов), а только некоторую часть этого кубика.
Понял. Вот для простейшей сети

допустим глобальный минимум получаем при w = [w1 w2 w3 w4 w5 w6] (веса все разные). Тогда сеть будет работать точно также и при таком векторе весов: w = [w2 w1 w4 w3 w6 w5]. Больше наверное нет тождественного варианта. В каком случае важно знать эти варианты? Сегодня попробовал найти глобальный минимум у сети Простейшая нейронная сеть для аппроксимации параболы таким образом: задал три положения для каждого веса -2 0 2 и нашел все возможные сочетания для всех векторов (по 9 весов в каждом векторе) этой сети. Посчитал для каждого вектора ошибку. Взял 20 весов с минимальными ошибками и запускал и в Левенберга и получил 20 векторов на выходе. И что вы думаете? В каждом векторе как минимум два веса близки к 20, т.е. нет ни одного вектора с весами хотя бы в пределах 10. Если для этой сети с тремя нейронами посчитать все возможные комбинаторные случаи, то наверное можно было бы получить не по три исходных позиции (-2 0 2), а больше. Это на сей день все зачем могут мне пригодиться комбинаторные числа.

Кто-нибудь может найти настоящий глобальный минимум для простейшей сети с двумя нейронами (указанной выше) и параболой на выходе?
А с тремя? см. Простейшая нейронная сеть для аппроксимации параболы
0
45 / 6 / 1
Регистрация: 20.08.2012
Сообщений: 200
07.10.2019, 21:49  [ТС]
Верно ли что глобальный минимум не зависит от количества точек параболы?
0
462 / 185 / 32
Регистрация: 04.08.2018
Сообщений: 732
07.10.2019, 22:15
Цитата Сообщение от Excalibur921 Посмотреть сообщение
Запомнила ответы, переобучение.
Она не видела тестовую выборку, поэтому это объяснение не подходит. Я списывал на случайное попадание, ведь точность от примера к примеру сильно меняется.
Цитата Сообщение от Excalibur921 Посмотреть сообщение
Да что вы все усложняете сеть? У меня было вроде 5, потом 6 весов.
Смещение это не полноценный нейрон. Я пробовал делать одно смещение на слой, но получалось нестабильно. Кто-то в этом разделе посоветовал делать персональные смещения, так и оставил.
Цитата Сообщение от Excalibur921 Посмотреть сообщение
Вот плохая точность, каждый график результат обучения.
Мне кажется, что если взять подобный простейший код, в котором не будет ошибок и заменить сигмоиду на гиперболический тангенс, убрать из обучения окрестность единицы по модулю, то там будет всё гораздо лучше.
Насколько я понимаю, НС это инструмент для поиска закономерностей, которые иным путём не находятся или нахождение требует бОльших усилий. Для ситуаций, где закономерность находится другим способом, использовать НС не эффективно. Я не понимаю зачем вам аппроксимировать параболу с помощью НС. Если для теста возможностей НС, то может продуктивнее поискать другое приложение?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.10.2019, 22:15

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
220
Ответ Создать тему
Опции темы

Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru