|
|
|
|
Рейтинг 4.66/88:
|
|
45 / 6 / 1
Регистрация: 20.08.2012
Сообщений: 200
|
||||||||||||||||
Простейшая нейронная сеть для аппроксимации параболы08.05.2019, 16:18. Показов 21203. Ответов 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
|
||
|
820 / 579 / 75
Регистрация: 20.09.2014
Сообщений: 3,820
|
|
| 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
Сообщений: 217
|
||
| 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 | |
|
Нейронная сеть для распознавания лиц
Нейронная сеть для распознавания чисел Нейронная сеть для сайта Asp.net Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Часы электронные
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 реально казались вершиной жары, когда можно было весь день пропадать на. . .
|