|
|
|
|
|
Рейтинг 4.66/88:
|
|
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); (код на матлабе специально писал предельно просто, развернуто, без матриц)
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 |
|
47 / 15 / 1
Регистрация: 26.08.2017
Сообщений: 162
|
||||||
| 02.10.2019, 13:10 | ||||||
|
Добавлено через 7 минут
0
|
||||||
|
45 / 6 / 1
Регистрация: 20.08.2012
Сообщений: 200
|
||
| 02.10.2019, 13:57 [ТС] | ||
|
0
|
||
|
47 / 15 / 1
Регистрация: 26.08.2017
Сообщений: 162
|
||
| 02.10.2019, 14:11 | ||
|
Что говорит Эклизиаст по этому поводу? Время сеять и время жать, время жить и время умирать и тп. Профанация это плохо, изучите вначале линейную алгебру, математический анализ, теорию вероятностей, а потом уже и машинное обучение можно попробовать, после изучения Си разумеется, те кто не может понять указатели и внимательно прочитать пост, скорей всего физиологически не в состоянии изучить всё это.
0
|
||
|
45 / 6 / 1
Регистрация: 20.08.2012
Сообщений: 200
|
||
| 02.10.2019, 14:22 [ТС] | ||
|
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 дня. Даже есть сдвиги больше нуля. Никто не пробовал его сделать? Даже на первой строке ошибка сети считается совсем не так как здесь: https://ru.wikipedia.org/wiki/... ния_ошибки
0
|
||||||
|
47 / 15 / 1
Регистрация: 26.08.2017
Сообщений: 162
|
|||||
| 02.10.2019, 17:01 | |||||
|
*Вырезано цензурой* Добавлено через 2 минуты
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 - указатель на голубую (видели моё 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, не хотите поставить себе матлаб? Простейшая программа в своей основе.
0
|
|||||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|||||||
| 02.10.2019, 18:03 | |||||||
![]() Боже какие накруты…Лично для меня форум просто развлекуха от скуки и не более+ тут мне помогают решать мелкие задачи или я помогаю. Сам удивлен откуда у меня репутация больше нуля …магия =)). Нужно запустить по готовым формулам, вы ж видите у danila_zaytcev, работает, хоть и 50\50. Сначала нужно попробовать уменьшить параболу и глянуть loss по эпохам как я и предполагал но никто не заметил. У меня из игрушек уже есть GeoGebra, и Mathemetica 8, а Mathcad забросил. Сейчас играю в лаговой Mathemetica 8, хотя наверно лучше б запилил на С++ простой код и сразу +100500 к скорости работы.
0
|
|||||||
|
47 / 15 / 1
Регистрация: 26.08.2017
Сообщений: 162
|
|||||||
| 02.10.2019, 18:15 | |||||||
|
последняя попытка, код на пайтоне максимально приближенный к вашим формулам:
1
|
|||||||
|
45 / 6 / 1
Регистрация: 20.08.2012
Сообщений: 200
|
|||
| 02.10.2019, 18:24 [ТС] | |||
|
0
|
|||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
||||||||||||||
| 02.10.2019, 19:48 | ||||||||||||||
|
№1 .Раскрываем кашу функций будет g1 = delta * w5 * (1.0 – (math.tanh(w1 * x + w3)) * (math.tanh(w1 * x + w3))) Берем вашу прошлую версию формулы g1 = delta * w5 * (1.0 - tanh(w1 * x + w3)^2) Прикольно… Зачем писать на питоне который я не знаю? В 6 раз прошу “Напишите свои формулы вот в этом стиле выше просто текст” Видимо спешили и напутали формулы, а тут я разгребаю почему бред. Затем редакция формул 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 [ТС] | ||||
|
На одной лекции по НС преподаватель рассказал, как его бывший ученик позвонил к нему и спросил: как долго может не получаться? И преподаватель ответил: у меня это было полтора года, но потом все-таки получилось.
0
|
||||
|
47 / 15 / 1
Регистрация: 26.08.2017
Сообщений: 162
|
|||||||||
| 02.10.2019, 22:42 | |||||||||
|
пайтон то там же тот же самый "текст" что и у вас, это язык почти как устная речь, ничего лишнего, любая доярка никогда не видевшая комп сможет понять пайтон вы вообще смотрели что вам пишут? 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 | ||
|
И еще, ваши хваленые гиперболические тангенсы тоже не заработали. И на всякий случай, если вы переживаете за мою судьбу - можете быть спокойны. Я не сторожем и не дворником работаю.
0
|
||
|
47 / 15 / 1
Регистрация: 26.08.2017
Сообщений: 162
|
||||
| 03.10.2019, 01:17 | ||||
|
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 [ТС] | ||
|
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 рандомов лучший визуально. Может убрать эти приколы с повышением графика ошибки? Если новый loss больше старого то стоп? Но может проходить локальный минимум и падать ниже... Вот ошибка по эпохам для параболы выше. Тогда алгоритм “Если новый loss больше старого то стоп” не даст обучать дальше. Похоже на игру в лотерею а не обучение, море локальных минимумов и эта 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
|
|
| 03.10.2019, 15:21 | |
|
Помогаю со студенческими работами здесь
180
Нейронная сеть для распознавания лиц
Нейронная сеть для распознавания чисел Нейронная сеть для сайта Asp.net Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель микоризы: классовый агентный подход 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?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|