|
|
|
|
Рейтинг 4.80/25:
|
|
45 / 6 / 1
Регистрация: 20.08.2012
Сообщений: 200
|
|||||||||||||||||||||||||||||||
Проблема с обучением простой нейронной сети методом Левенберга-Марквардта04.09.2019, 17:22. Показов 6802. Ответов 69
Метки метод левенберга-марквардта (Все метки)
На простом примере сформулирую свой вопрос. Сеть ниже прекрасно обучается методом Левенберга
Вот процесс обучения https://youtu.be/eL8rE4VMBMA Как видим всего 12 итераций На вход подаю (с шагом 0.05) 17 точек x = 0.1:0.05:0.9, на выходе надо получить параболу: y = (2*x - 1).^2 + 0.1; (синие точки на видео и в программе). Программа написана на матлабе специально в упрощенном виде так, чтобы каждый мог ее легко понять. Кликните здесь для просмотра всего текста
Опишу подробно каждую функцию. Кликните здесь для просмотра всего текста
Формула для матрицы Якоби Матрица ниже есть раскрытие матрицы выше. Многоточие означает дополнительные строки для каждого х. Всего 17 строк. Кликните здесь для просмотра всего текста
Кликните здесь для просмотра всего текста
Перехожу к моей проблеме. Рассмотрим похожую сеть с двумя выходами Каждый выход должен нарисовать свою параболу. Изменения в функциях ниже Кликните здесь для просмотра всего текста
Проблема моя в том что я не знаю как посчитать матрицу Якоби для "функции" с двумя выходами. Есть вариант считать последовательно для первого выхода J и dE, и обновлять веса, затем для второго выхода J и dE и обновлять веса. Но этот метод работает не так хорошо как функции net в матлабе. В матлабе эта сеть обучается за 10-30 итераций, а этот способ последовательного обновления дает десятки тысяч итераций. Можно минимизировать функцию ошибки сети Но это тоже не работает: https://youtu.be/ekuE5zfobOo Считал я это так: Не по теме:
Кликните здесь для просмотра всего текста
0
|
|||||||||||||||||||||||||||||||
| 04.09.2019, 17:22 | |
|
Ответы с готовыми решениями:
69
Решение системы интегральных уравнений методом Левенберга-Марквардта Проблемы с обучением нейронной сети |
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|||
| 26.09.2019, 16:42 | |||
|
Иначе угол альфа ничего не даст о центре, только его примерное положение. Тогда нужно будет подбирать a,b коэффициенты и читая растр смотреть какой это эллипс. По сути это опять алгоритм Хафа? Может ускорить его например читая не все пиксели периметра а неким пунктиром? Как я раньше не подумал набрать =)) в гугле Template Matching tablets “. Medical Tablet Damage Detection Based on Circle Hough Transform.” Ну прям оно… и много других разных. ИМХО полезней изучить как они делали. Хотя б топ 10 ответов гугла.
0
|
|||
|
45 / 6 / 1
Регистрация: 20.08.2012
Сообщений: 200
|
||||
| 29.09.2019, 17:38 [ТС] | ||||
|
0
|
||||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
| 30.09.2019, 16:32 | |
|
Это тоже не хотите смотреть? Hough Transform ellipse
Добавлено через 41 минуту Тут вообще жесть, полсотни алгоритмов по детектированию эллипсов. Наверно платная библиотека. http://www.visionbib.com/bibliography/edge256.html Жизни не хватит всех посмотреть…Бегло попался как вы и хотели Further Five-Point Fit Ellipse Fitting,
0
|
|
|
45 / 6 / 1
Регистрация: 20.08.2012
Сообщений: 200
|
|||
| 10.10.2019, 17:13 [ТС] | |||
|
Есть вопрос по НС. Пока у меня один слой. И проблема у меня тоже одна. Вы сказали, что это не нормально когда значения весов в несколько десятков и я проверяю все что сделал с этой точки зрения. Я выяснил, что во всех упражнениях от параболы до программы для нахождения центра тела по пяти точкам дуги, везде значения некоторых весов (двух, трех и более) превосходят несколько десятков и даже сотен. Везде стоит тангенс, везде Левенберг. Чтобы не углубляться возьму в пример простейшую НС с тремя нейронами и полуторной синусойдой: вот результат после нескольких десятков попыток: Здесь все отлично: 16 итераций, ошибка меньше 0.001, все веса меньше 10. Но этот результат получен случайно, а как правило результат получаю такого типа: Здесь несколько весов уже перевалили за 50 Приведенная выше сеть с тремя нейронами не может аппроксимировать синусойду с двумя периодами (а только полтора периода может) потому что не хватает "мощности" сети. Если взять четыре нейрона, то такая сеть уже сможет и два периода аппроксимировать. А три нет. Для трех нужно добавить пятый нейрон. Все это не более чем иллюстрация для моей проблемы. Рабочая сеть у меня с семью входами одним слоем от 5 до 9 (для разных случаев) нейронов и двумя выходами. Требуется получить небольшую ошибку, при этом число итераций достигает несколько сотен тысяч, а значения некоторых весов несколько сотен. Тем не менее не удается получить приемлемую ошибку. Увеличение числа нейронов почти не приводит к уменьшению ошибки. В чем тут может быть дело? В методе обучения или в чем то другом? Можете что-то сказать или необходимо развернуть подробней детали моей задачи? Еще раз: 1) можно ли считать сеть обученной если значения некоторых весов в несколько сотен? 2) если при обучении сети не достигается желательный уровень ошибки и интуитивно ясно, что дело не в мощности сети, то следует ли менять метод обучения, например перейти к генетическим алгоритмам?
0
|
|||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|||
| 10.10.2019, 17:45 | |||
|
А разве не очевидно добавить нейронов? Добавлено через 8 минут Еще не факт что подаете правильные данные сети. Нужно смотреть обучающую выборку. Так и не понял зачем вам центр тела, вам кол-во штук считать? Зачем для этого центр и ореинтация? Наверно до всей этой наукоемкой ерунды с нейросетями и прочим была просто воронка куда сыпали таблетки и фотореле по прерыванию луча считало количество.
0
|
|||
|
3141 / 1742 / 274
Регистрация: 19.02.2010
Сообщений: 4,550
|
|||
| 10.10.2019, 20:32 | |||
|
Если ему от весов нужны такие "коэффициенты усиления" - значит, что-то неверно с нормализацией данных (либо, как вариант, выходному нейрону всё-таки не хватает bias'а). Во-вторых, веса таки имеют значение, и это активно изучалось в 90ых. Как пример - статья 1996г https://papers.nips.cc/paper/1... etwork.pdf Специально даю ссылку только на ту работу, которая рассматривала задачу классификации - чтобы самообразование у народа не превращалось в халяву ![]() Но могу намекнуть, что надо, например, поискать среди статей очень известного японского нейросетевика.
1
|
|||
|
45 / 6 / 1
Регистрация: 20.08.2012
Сообщений: 200
|
|||||||
| 10.10.2019, 22:06 [ТС] | |||||||
|
0
|
|||||||
|
3141 / 1742 / 274
Регистрация: 19.02.2010
Сообщений: 4,550
|
|||
| 11.10.2019, 00:46 | |||
|
Вернее, если у Вас в коде остался тот же вариант изменения скорости обучения, что и в стартовом посте этой темы (когда скорость увеличивалась в 2 раза, если ошибку на эпохе удавалось снизить) - то отключите такой сценарий. Т.е. попробуйте именно постоянный=константный шаг. Сначала - тот, который исходно установлен, затем уменьшенный в 10 раз. И желательно для сравнения попробовать ещё и обучение обычным кондовым бэкпропом, без Л-М. В том числе негативный эффект может проявляться там, где мала плотность обучающих данных. Т.е. не надо думать, что нейронка всю свою "нелинейность" использует там, где ей это нужно для аппроксимации нелинейной зависимости выхода от входа. Она может немонотонно зааппроксимировать и монотонные участки - на приложенной картинке как раз и выделил такой кусок (где осцилляций даже в зашумлённом сигнале нет - а нейронка из-за малой плотности точек-эталонов провела там именно немонотонное решение). Вот чтобы не было такого - и нужно стараться давить веса по амплитуде (или давить производные в обучающих точках). Естественно, так, чтобы это не начинало негативно влиять на точность обучения (т.е. вес регуляризующего=штрафного компонента - подбирается на практике под задачу). Меньшие по амплитуде веса и/или производные - это ликвидация (либо меньшая амплитуда) тех колебаний решения, которые нейронка добавила от себя.
1
|
|||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
| 11.10.2019, 17:02 | |
|
1) Найти грубо центры таблеток размытием растра + порог.
Уже была последовательность фоток по этому. 2)Пространство Хафа. Крутим и масштабируем кривую контура чтобы найти центр точней и ориентацию таблетки(угол поворота). Либо прикладываем контур таблетки и крутим и двигаем контур считая сколько пикселей вошло через раз или пунктиром на контуре…это опять же просто вариант Хафа. ИМХО тут нет альтернатив. Единственно уменьшить размеры растра. 3)Дальше нужен скан поверхности т.к. просто приложить растр целой таблетки никак… разные условия освещения. Это в конвейерах таблетки загоняют в указанное место и фоткают. Тут не так…отсюда намного сложней матан. Зная центр таблетки и 3д модель поверхности скана считаем сумму квадратов отклонений целой таблетки от текущей. Еще под вопросом другая сторона таблетки =). Пристали вы к этим дугам…ничего они вам не дадут.
0
|
|
|
45 / 6 / 1
Регистрация: 20.08.2012
Сообщений: 200
|
|||
| 11.10.2019, 18:20 [ТС] | |||
|
Excalibur921, уже все давно перепробовано и найден лучший вариант, легчайший для процессора. Все давно работает, но со сбоями. То, что вы предлагаете, для процессора неподъёмно. Даже если бы я захотел в корне поменять технологию мне бы это не позволили сделать. Предлагаю обсудить как я составляю данные для обучения сети: Проблема с обучением простой нейронной сети методом Левенберга-Марквардта Проблема с обучением простой нейронной сети методом Левенберга-Марквардта
0
|
|||
| 11.10.2019, 18:20 | |
|
Проблемы с обучением LSTM нейронной сети Как же обучать автокодировщик? Непонятная ситуация с обучением нейронной сети Метод Левенберга - Марквардта Алгоритм Левенберга-Марквардта Применение алгоритма Левенберга-Марквардта Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки
Правым кликом по серверу -> отладочная информация -> edit
Заменить "net": "raw", на "net": "tcp",
Нажать кнопку reload.
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|