|
|
|
|
Рейтинг 4.66/88:
|
|
45 / 6 / 1
Регистрация: 20.08.2012
Сообщений: 200
|
||||||||||||||||
Простейшая нейронная сеть для аппроксимации параболы08.05.2019, 16:18. Показов 21224. Ответов 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); (код на матлабе специально писал предельно просто, развернуто, без матриц)
http://images.vfl.ru/ii/155731... 2684_m.png Пробую это делать тремя способами и ни один не работает и не понимаю почему. Способ 1. Нахожу производную от ф-ции ошибки сети по весам (как по формулам приведенным на рис выше) и соответственно ей изменяю веса (w1 = w - a*dE; w = w1)
http://images.vfl.ru/ii/155732... 2811_m.png В чем тут дело? В чем ошибка? Через десяток итераций сеть перестает обучаться. Способ 2. Меняю веса по градиенту Е, но вычисленному после каждого x(i) и y(i), но результат такой же, похожий Способ 3. Меняю веса через вычисление обратного распространения ошибки
0
|
||||||||||||||||
| 08.05.2019, 16:18 | |
|
Ответы с готовыми решениями:
229
Нейронная сеть для аппроксимации Нейронная сеть для функции Не работающая нейронная сеть для xor |
|
1 / 1 / 0
Регистрация: 06.02.2019
Сообщений: 217
|
|||||||||||||
| 30.09.2019, 23:50 | |||||||||||||
0
|
|||||||||||||
|
1 / 1 / 0
Регистрация: 06.02.2019
Сообщений: 217
|
|
| 01.10.2019, 00:31 | |
|
Хотя нет, что-то даже получилось.
0
|
|
|
820 / 579 / 75
Регистрация: 20.09.2014
Сообщений: 3,820
|
||
| 01.10.2019, 04:08 | ||
|
Виктор Царегородцев говорит, что это тенденция тупых западных Дело в том, что кружочки, которые рисуют на схемах нейронных сетей - это не нейроны! Это сигналы. Соответственно bias - это всего лишь единичный сигнал, а никак не целый нейрон. У него даже нет функции активации. Он как возбуждается-тормозится? Без bias не решишь даже задачи XOR по-нормальному, тем более XOR с помехами на входе.
0
|
||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
| 01.10.2019, 12:37 | |
|
Mikhaylo, Снова 5 строк формул не пашет…
0
|
|
|
47 / 15 / 1
Регистрация: 26.08.2017
Сообщений: 162
|
||
| 01.10.2019, 14:24 | ||
|
Ладно... иногда полезно взять в руки калькулятор и позаниматься арифметикой. Итак: Layer0 : N0 : w0: 0.824 w1: 2.835 out: 1 err: 0.0004 N1 : w0: 0.833 w1: -2.892 out: 0.855 err: -3.6 Layer1 : N0 : w0: -12.5 w1: 12.495 w2: 26.193 out: 24.379 err: -0.326 У нас было обучающее множество входов {-5,-4,-3,-2,-1,0,1,2,3,4,5} и квадраты выходы; Оно же и тестовое. Посчитаем половинку, так как функция симметричная: формула 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) L0.N0.w0=0.824 L0.N0.w1=2.835 L0.N1.w0=0.833 L0.N1.w1=-2.892 L1.N0.w0=-12.5 L1.N0.w1=12.495 L1.N0.w2=26.193 Подставляем: x = 0 L0.n0.out = tanh(0*0.824+ 2.835) = 1 L0.n1.out = tanh(0*0.833 + -2.892) = -1 L1.n0.out = (1*-12.5 + - 1*12.495 + 26.193) = 1.198 x = 2 L0.n0.out = tanh(2*0.824+ 2.835) = 1 L0.n1.out = tanh(2*0.833 + -2.892) = -0.84 L1.n0.out = (1*-12.5 + - 0.84*12.495 + 26.193) = 4.1972 x = 5 L0.n0.out = tanh(5*0.824+ 2.835) = 1 L0.n1.out = tanh(5*0.833 + -2.892) = 0.85 L1.n0.out = (1*-12.5 + 0.85*12.495 + 26.193) = 25.31375 ну, всё верно вроде... Добавлено через 11 минут ЗЫ экстраполяция\интерполяция функций это задача регрессии, то есть отображения вектора в вектор(скаляр) а значит последний слой без функции нелинейности(сигмоид, гипертангенс), походу у Вас именно в этом были затруднения)) Но то что Вы так долго страдали, так долго испытывали муку, это хорошо, это правильно, хорошее начало, если с таким же упорством продолжите не будет перед Вами существенных препятствий.
0
|
||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|||||||
| 01.10.2019, 14:40 | |||||||
|
Где тут ошибка?
0
|
|||||||
|
47 / 15 / 1
Регистрация: 26.08.2017
Сообщений: 162
|
|
| 01.10.2019, 16:37 | |
|
0
|
|
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
| 01.10.2019, 16:45 | |
|
Мда…
Полдня пилил код и в итоге если Epoh>10 то у Mathematica 8 полностью едет крыша…море ошибок Меньше работает ![]() Добавлено через 1 минуту danila_zaytcev, Где ошибки в алгоритме пост 146? Веса правильно обновляют? Нейрон смещения это w7.
0
|
|
|
47 / 15 / 1
Регистрация: 26.08.2017
Сообщений: 162
|
||
| 01.10.2019, 17:13 | ||
|
0
|
||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
||
| 01.10.2019, 18:13 | ||
![]() Я у вас уже 5 раз просил написать формулы а не код. YagDen, никак не пашет.
0
|
||
|
1 / 1 / 0
Регистрация: 06.02.2019
Сообщений: 217
|
|||
| 01.10.2019, 20:52 | |||
|
Добавлено через 2 минуты
0
|
|||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
||
| 01.10.2019, 22:57 | ||
|
Обучаю по этой: f[x_]:=(2*x-1)^2+0.1; Как любит писать VTsaregorodtsev, все эти алгоритмы и формулы на вебсайтов перепевки Шаляпиных =). Т.е. заведомо не пашут и искажены + никем не проверены. Вот тут вроде четко все пошагово: https://habr.com/ru/post/198268/ попробовал написать формулы то там опечатка то нейроны смещения забыли, расчет не проверен там и вообще странные формулы. Кароче бардак. А где искать проверенные расчетом формулы хз…
0
|
||
|
47 / 15 / 1
Регистрация: 26.08.2017
Сообщений: 162
|
|||||||
| 01.10.2019, 23:22 | |||||||
|
вот исправленные формулы
0
|
|||||||
|
1 / 1 / 0
Регистрация: 06.02.2019
Сообщений: 217
|
|||
| 01.10.2019, 23:49 | |||
|
0
|
|||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
| 02.10.2019, 00:23 | |
|
Всеравно не хочет честно из рандом весов…
speed=0.001; Epoh=10000; rMinW=-0.5; // пределы начальных рандом весов rMaxW=0.5; X эпохи, Y средняя сумма квадратов отклонений в 11 точках параболы от НС. speed=0.6; Epoh=100; rMinW=-10.5; rMaxW=10.5; {5.74198,5.25908,1.23013,-6.41618,-3.42504,2.67133,6.63578} Всеравно не обучение а перебор из 50 рандом в заданных пределах только пару примерно годных как часть залазит на параболу. Результат сильно зависит от удачи. Значит падает в локальный минимум. Понятия не имею как так точно аппроксимировало у вас за 1 раз…фантастика. Или там брутофорс из 1000 рандомов это лучшая аппроксимация? speed=0.1; Epoh=100; rMinW=-20.5; rMaxW=20.5; {-2.93199,-2.95084,-5.14015,4.4262,-7.13367,-9.10463,2.16476}
0
|
|
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
||||
| 02.10.2019, 00:32 | ||||
|
Обучение бегает по кругу читая всегда 11 точек подряд на параболе из массива.
Может их нужно перемешивать? Раньше было так: Простейшая нейронная сеть для аппроксимации параболы Может у нас разные параболы? =)
0
|
||||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
| 02.10.2019, 01:17 | |
|
Сделал в GeoGebra примерно по рис полином по 3 точкам, можно на википедии взять 3 точки и получить уравнение параболы но лень.
Эта тоже похоже на нее. Правда странный размер ячеек по горизонтали у вас на рис, это не анаморфирование? Т.е. по X не растянута координата? По X и Y одинаковый шаг координат? X нач=3 X кон=42 f(x)=0.0613*x^2-2.7625*x+31.9984 Аппроксимирует еще хуже. Там хоть сдвиги были. Почти всегда горизонтальная прямая ответ НС и график обучения не двигается. Вот наверно лудший из порядка 20 рандомов: speed=0.1; Epoh=10; rMinW=-100.5; rMaxW=100.5; Странная форма кривой от НС…не обычный краказябр.
0
|
|
|
3131 / 1727 / 273
Регистрация: 19.02.2010
Сообщений: 4,516
|
|||
| 02.10.2019, 01:54 | |||
![]() Асимптота -> производная=0 -> обучения при таком аргументе функции нет (независимо значения лосса и его производной по выходу нейрона). Так что - надо нормализовать такие данные (и зависимые, и независимые признаки) перед тем, как их совать в сетку. Ответ сети переводить затем в исходный интервал формулой, обратной к той, которой ранее нормализовывались требуемые выходные данные.
0
|
|||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
||||
| 02.10.2019, 10:00 | ||||
|
danila_zaytcev,
1)напишите все ваши веса w0 –w7. 2)в каких пределах у вас задана рандом инициализация весов? 3)сколько эпох\итераций 4)напишите массив 11 векторов, может там я беру неправильные Y близкие к 1 и это плохо? VTsaregorodtsev, Эти формулы правильны? Уже редакция 2. Простейшая нейронная сеть для аппроксимации параболы На википедии другой алгоритм. вход от X от -0.25 до 0.25 и выход Y от -0.25 до 0.25? Или что-то одно важно в этом интервале? Обучающая пара X вход Y правильный ответ. Позже задам правильную формулу и пределы X. Может еще правильно добавить специальную функцию корректирующую плотность точек на параболе? Сильно они лезут к вершине параболы. Красные F[x_]:=(2*x-1)^2+0.1; X шаг 0.1 Зеленые примерно равномерной плотности, может так лучше? Какой функцией можно задать Fspec(x) чтобы получить зеленые точки? F[x_]:=(2*Fspec(x)-1)^2+0.1;
0
|
||||
|
45 / 6 / 1
Регистрация: 20.08.2012
Сообщений: 200
|
|||||||||||||||||
| 02.10.2019, 12:28 [ТС] | |||||||||||||||||
|
Excalibur921, вот программа для двух нейронов и единицы и на выходе сумматор (или что то же самое нейрон с выходной функцией y = x). Сеть и веса показаны в верхнем посту каждой страницы. Там же функция сети и ее производные по весам, т.е. там приведены формулы градиента. Программа ниже обучает эту сеть наискорейшим спуском. Кликните здесь для просмотра всего текста
Кликните здесь для просмотра всего текста
Кликните здесь для просмотра всего текста
Разбил весь код на три куска для удобства. Функция start2n выдает не первые попавшиеся веса w, а проверяет множество случайных векторов w, для каждого из них вычисляет ошибку сети и возвращает вектор w с минимальной ошибкой меньшей 0.5 - вот в этом случае только работает наискорейший спуск. Для обучения по Левенбергу эта процедура не требуется. Вот как работает программа https://youtu.be/nR9A1DH5Crw Если что непонятно - спрашивайте(я не могу все объяснение сразу продумать безупречно)
0
|
|||||||||||||||||
| 02.10.2019, 12:28 | |
|
Нейронная сеть для распознавания лиц
Нейронная сеть для распознавания чисел Нейронная сеть для сайта Asp.net Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Лето уходит
kumehtar 17.08.2026
|
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
|
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины".
За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html
Задача: . . .
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
|
Часы электронные
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 имитационную модель процессов. . .
|