|
|
|
|
Рейтинг 4.66/88:
|
|
45 / 6 / 1
Регистрация: 20.08.2012
Сообщений: 200
|
||||||||||||||||
Простейшая нейронная сеть для аппроксимации параболы08.05.2019, 16:18. Показов 20067. Ответов 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
|
|
|
818 / 577 / 75
Регистрация: 20.09.2014
Сообщений: 3,771
|
||
| 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
|
|
|
2829 / 1690 / 273
Регистрация: 19.02.2010
Сообщений: 4,462
|
|||
| 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 | |
|
Помогаю со студенческими работами здесь
160
Нейронная сеть для распознавания лиц
Нейронная сеть для распознавания чисел Нейронная сеть для сайта Asp.net Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
|
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
|
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика
Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
|
Модель здравосохранения 17. Планы на выгорание
anaschu 23.05.2026
Вот конкретная схема реализации:
В классе Работник добавить:
накопленнаяУсталость — растёт каждый час работы, снижается в перерывы и болезни
коэффициентПрезентеизма — снижает продуктивность. . .
|
|
Изменение цветов в палитре gif файла aka фавикона
russiannick 23.05.2026
Изменение цветов в палитре gif файла, юзаемого как фавиконка в составе html-файла, помещенная в base64, средствами нативного Java Script, навеянное сном в майский день.
Для работы необходим браузер,. . .
|
Модель здравосохранения 16. Слишком хорошие и здоровые сотрудники уходят, недовольные зарплатой
anaschu 23.05.2026
Отладка увольнений и настройка производительности
Сегодня во второй половине дня разобрались с механикой увольнений и настроили коэффициент сложности заданий. Вот что было сделано.
. . .
|
Как я стал коммунистом))) Модель сохранения здоровья сотрудников, запись блога номер 15
anaschu 23.05.2026
Внезапно хорошее здоровье сотрудников не нужно капиталистам?))
|
Модель здравоСохранения 15. Как мы чинили AnyLogic модель рабочего коллектива: сочленение диаграммы состояний болезней и поломок в ресурспул
anaschu 23.05.2026
Как мы чинили AnyLogic модель рабочего коллектива
Сегодня разобрались с пятью багами, из-за которых модель либо падала с ошибкой, либо давала совершенно бессмысленные результаты. Каждый баг был. . .
|