|
|
|
|
Рейтинг 4.66/88:
|
|
45 / 6 / 1
Регистрация: 20.08.2012
Сообщений: 200
|
||||||||||||||||
Простейшая нейронная сеть для аппроксимации параболы08.05.2019, 16:18. Показов 22630. Ответов 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 |
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|||
| 12.05.2019, 14:28 | |||
|
В моем понимании нужно так: По Y графика точность ответа нейросети от 0 до 1 после N итераций, считается например как сумма квадратов разностей между f(x) параболы и f(x) ответ нейросети из например 30 значений по X. По X графика номер итерации. Инициализируем рандом веса, считаем точность. Ставим первую точку графика. Делаем 10 итераций обучения, считаем точность, наносим на график т.д. например всего пусть 100 итераций. Сделайте такой график.
0
|
|||
|
45 / 6 / 1
Регистрация: 20.08.2012
Сообщений: 200
|
||||||||
| 12.05.2019, 14:40 [ТС] | ||||||||
|
Это ф-ция sumerr
0
|
||||||||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
||
| 12.05.2019, 14:50 | ||
|
Откуда волны, график должен быть ломанная. Может это ваш мат пакет сглаживает ломанную? Точки по X каждые 9 итераций? Там промежуточные значения откуда? Волны похоже как периодически снова делаете рандом веса примерно каждые 10 итераций.
0
|
||
|
45 / 6 / 1
Регистрация: 20.08.2012
Сообщений: 200
|
|||||||
| 12.05.2019, 15:55 [ТС] | |||||||
на нижнем графике показано изменение ошибки сети. Ошибка не меняется при достижении примерно 0.5 что согласуется с положением зеленой линии, на верхнем графике. Т.е. сеть почти не обучается.
0
|
|||||||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
||
| 12.05.2019, 16:52 | ||
|
Почему в видео скорость обучения берут константа 0.1? ИМХО логичней сделать это обратно пропорциональной зависимостью от точности ответа НС. Больше точность НС меньше скорость обучения. Может нейросеть падает в ближайший локальный минимум? Начать обучения с больших значений например a=0.5 или даже 1. Вроде скорость обучения это вообще гиперпараметр (то что подбирают экспериментом), построить графики разного цвета точности НС от итераций для разных скоростей 0.1, 0.3 до 1. Добавлено через 35 минут Тут два вида ошибок: 1) ошибка между f(x) НС и f(x) параболы одно значение то что для обучения. 2) сумма из 10 значений X для f(x) НС и f(x) параболы то что идет на графики. Может берете сумму 10 ошибок где обучение НС? Поэтому она теряется. Похоже это ваши графики ошибка 2 это dd, 1 это err. Странно зачем надо вообще показывать err и почему тогда по X не такое количество итераций как для dd... Странно почему для err по Y какие-то 1.25..1.7 что это хз.
0
|
||
|
45 / 6 / 1
Регистрация: 20.08.2012
Сообщений: 200
|
|
| 12.05.2019, 16:58 [ТС] | |
|
Сделал так w = 20*rand(6,1)-10; Вот лучшее что получил:
Но ясно что это не решение и ясно также что дело не в скорости обучения, не в а = 0.1 или а = 0.001. Тут что то глубже в самом методе обучения, похоже что сделали нож из фольги и пытаемся им разрезать гвоздь.
0
|
|
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
| 12.05.2019, 17:29 | |
|
0
|
|
|
45 / 6 / 1
Регистрация: 20.08.2012
Сообщений: 200
|
||||||||||
| 12.05.2019, 17:55 [ТС] | ||||||||||
Я пишу в комментариях: Можно учесть ошибку в точке (dd) после каждого изменения весов и общую ошибку (err) после предъявления одной точки. Тогда это выглядеть так:
0
|
||||||||||
|
45 / 6 / 1
Регистрация: 20.08.2012
Сообщений: 200
|
||||||
| 12.05.2019, 18:46 [ТС] | ||||||
|
Мне удалось случайным образом и с помощью этой программы найти серии удачных весов
здесь белая линия это от ини-w, красная - после обучения на 10000х9 итерациях. Ошибка как видим порядка тысячных. Конечно это не решение, но хоть что то отличное от нуля.
0
|
||||||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
||
| 13.05.2019, 00:12 | ||
|
Пытался набыдлокодить в Mathematica 8...не сходиться никак. Может все формулы баян? ![]() Пробуйте вкурить "Создаем нейронную сеть" Тарик Рашид и код по нему…с нуля.
0
|
||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
| 13.05.2019, 10:05 | |
|
Нужен тест обучения.
НС из одного нейрона, поиск одного веса. Одна НС1 из 1 нейрона которая строит функцию. Другая НС2 из 1 нейрона которой ищем один вес обучая. Задаем слайдером НС1 вес такой, чтобы при небольшом изменении веса функция НС1 плавно изменяла форму. Запоминаем пределы весов в которых это изменение (локализация корня). Все теперь есть веса wMin wMax если алгоритм задает веса НС2 больше во время обучения значит ошибка алгоритма.
0
|
|
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
| 13.05.2019, 11:51 | |
|
Промоделировал в GeoGebra 1 нейрон, обучение по этим формулам не работает правильно. Зеленая точка рандом задания веса, ответ сети f(x), старт.
Черные точки итерации, должны двигаться к красной. Скорость обучения должна задавать скорость приближения точек. 20 итераций всего, черная кривая f(x) нейрона. Скорость 0.01 почти не работает. Скорость 5. Возле 0 почти не работает, начинает сходиться при приближении к границам -1 и 1 там где и какраз нет функции которую аппроксимируем ![]()
1
|
|
|
45 / 6 / 1
Регистрация: 20.08.2012
Сообщений: 200
|
||||
| 13.05.2019, 12:44 [ТС] | ||||
0
|
||||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
| 13.05.2019, 13:32 | |
|
0
|
|
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
| 13.05.2019, 14:39 | |
|
tur9,Дальше что? Будете искать очередной урок в инете или шерстить по куче книг выискивая неполные описания алгоритма? Вкуривать тягомотину и обилие воды Тарика Рашида? Читать его тот еще подвиг…я немогу =)).
Наверно в 2019 писать с нуля такое это как писать вычисление косинуса на ассемблере с нуля. Пару лет назад вычислял больше миллиона косинусов в день в своей проге которая интерактивно рисовала математическую абстракцию по моим уравнениям. Понятия не имею через какие ряды там аппроксимируют косинус и на кой черт это практически сдалось знать? Рулили этими косинусами тысячами =)). В некоторых книгах так и пишут кстати: Франсуа Шолле - Глубокое обучение на Python 2018 Стр78.
0
|
|
|
45 / 6 / 1
Регистрация: 20.08.2012
Сообщений: 200
|
|||||||||
| 13.05.2019, 18:22 [ТС] | |||||||||
А работает это так Теперь надо тоже самое сделать для параболы. Теперь сделаете?
0
|
|||||||||
|
45 / 6 / 1
Регистрация: 20.08.2012
Сообщений: 200
|
|
| 13.05.2019, 18:33 [ТС] | |
|
0
|
|
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
||||
| 13.05.2019, 19:05 | ||||
|
ИМХО НС довольно дурацкий аппроксиматор. Кто не верит пусть попробует потаскать веса нейросети хотя бы из жалких 9 весов вручную. Видимо тот кто придумал идею НС просто не пробовал вручную таскать слайдеры весов чтобы прикинуть линейность поведения выдуманной модели. Каждый вес это нелинейное влияние по амплитуде и типу на функцию НС: это сдвиг, поворот, масштаб + их комбинация веса которой меняются от изменения любого из других весов. Иногда поведение функции от смены всего 1 веса похоже на сканирование поверхности мятой ткани т.е. целая куча нелинейностей. Другими словами НС как аппроксиматор довольно бестолкова. Почему это работает? Потому, что с “хорошим мотором и забор полетит” т.е. компы перемалывают огромное кол- во вычислений и да…сходиться с бубном и магией. Вот и ваша парабола…как красиво ее нагибает оптимизация по Y даже жалкой ломанной из 10 точек ![]() Также мне непонятно каким боком производная функций активации помогает найти градиент целевой функции это странно.
0
|
||||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
| 13.05.2019, 19:30 | |
|
Вот и снова всплытие бестолковости НС как модели.
Изменяя веса например кривой Безье 2 степени можно решить это задачу на тех же 6 переменных. И кривая Безье будет вести себя намного адекватней чем прибаханная НС с ее дичайшей нелинейностью. При изменении одного из весов кривой Безье будет деформация кривой а не лютые зигзаги как в НС непредсказуемым способом. Изменение веса не влияет на влияние других весов на Безье…но не в НС… НС просто мрак =)). Эксперименты для забавы. 9 параметрическая нелинейная функция где веса нелинейно влияют на поведение функции решена вручную! ![]() 9 весов…
0
|
|
| 13.05.2019, 19:30 | |
|
Нейронная сеть для распознавания лиц
Нейронная сеть для распознавания чисел Нейронная сеть для сайта Asp.net Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . .
Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
|
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг.
Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует.
В процессе разработки. . .
|
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
|
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации:
1. Вернуть возможность использования знаков | 1 l I;. . .
|
|
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С.
Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
|
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию?
Фраза «Любая достаточно развитая технология неотличима от магии». . .
|
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль?
Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
|
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология.
«Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
|