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

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

08.05.2019, 16:18. Показов 21201. Ответов 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
Модератор
Эксперт функциональных языков программирования
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,900
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
3129 / 1720 / 273
Регистрация: 19.02.2010
Сообщений: 4,511
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
Ответ Создать тему
Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru