|
|
|
|
Рейтинг 4.80/25:
|
|
45 / 6 / 1
Регистрация: 20.08.2012
Сообщений: 200
|
|||||||||||||||||||||||||||||||
Проблема с обучением простой нейронной сети методом Левенберга-Марквардта04.09.2019, 17:22. Показов 6662. Ответов 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
|
|||
|
3131 / 1727 / 273
Регистрация: 19.02.2010
Сообщений: 4,516
|
|||
| 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
|
|||||||
|
3131 / 1727 / 273
Регистрация: 19.02.2010
Сообщений: 4,516
|
|||
| 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 нейронной сети Как же обучать автокодировщик? Непонятная ситуация с обучением нейронной сети Метод Левенберга - Марквардта Алгоритм Левенберга-Марквардта Применение алгоритма Левенберга-Марквардта Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Лето уходит
kumehtar 17.08.2026
|
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
|
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины".
За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html
Задача: . . .
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
|
Часы электронные
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 имитационную модель процессов. . .
|