|
|
|
|
Рейтинг 4.79/34:
|
|
130 / 25 / 12
Регистрация: 12.08.2015
Сообщений: 221
|
|
Нейронная сетка . Деградация весов с большим количеством итераций01.06.2019, 17:40. Показов 8179. Ответов 45
Метки нет (Все метки)
Я тут экспериментировал с нейронной сеткой, наблюдал изменения выходных значений при решении простых задач, интересовался, как же этот метод градиентного спуска работает воочию.
И я стал наблюдать очень интересную вещь. Для меня - необычную. Быть может, это всё-таки какой-то баг в моей реализации на C#. У меня есть трёхслойный перцептрон. Функция активации - сигмоида, корректировка весов - через её производную. Так вот, задача была очень простая, мне было интересно пронаблюдать процесс корректировки выходных значений воочию, задача была предельно простая. Я тренировал сетку на одном-единственном примере, и прогонял его n-ное количество раз. На входе - 10 нейронов, в середине - 50 - на выходе - тоже 10. Я загонял на вход данные такие данные: [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9] На выходе я пытался получить просто инвертированную последовательность. [0.9, 0.8, 0.7, 0.6 ...... 0.1] Я поставил тренировку на 10000 итераций с learningrate 0.3. Сначала всё шло отлично! Выходные значения стремительно приближались к входным, но внезапно, когда выходные значения стали соответствовать на 99,9....% инвертированному значению входных, произошло нечто... хмм... Неприятное. Внезапно, вся выходная последовательность начала стремиться к 0.5 Спустя 10 000 итераций (считайте, мини-эпох из одного единственного примера) Когда я взглянул на вывод, я аж поперхнулся. На всех выходах - везде, вообще везде было, ровно по 0.5. Из этого я сделал вывод, что сетка деградировала, и на связях между каким-либо, либо обоими слоями веса стали равны нулю. Потому что только 0 может дать 0.5 при проворачивании через сигмоиду. Я конечно, понимаю, что градиентный спуск не может привести к выходным значениям никогда, на то он и бесконечно стремящийся, но не так же? Что произошло? Это вообще, нормально? Или у меня есть какая-то бага в вычислениях? Проект могу скинуть любителям покопаться, если что. Или даже сюда кодом, там немного. Еще заметил одну вещь, что чем меньше нейронов, тем быстрее идет деградация. На 10 нейронах в скрытом слое - очень быстро. Если в скрытом слое поставить 100 нейронов - результат гораздо лучше, деградация весов не наступает долго, если 200 - еще лучше. А если поставить например 500 нейронов в скрытом слое, то там вообще такая дичь на выходе, что умереть - не встать, и оно - не корректируется уже никак и никогда. Я хотел бы понять всю глубинную суть этих явлений))
0
|
|
| 01.06.2019, 17:40 | |
|
Ответы с готовыми решениями:
45
Работа с большим количеством pictureBox Запрос к БД с большим количеством записей Работа с большим количеством COM портов. |
|
130 / 25 / 12
Регистрация: 12.08.2015
Сообщений: 221
|
||
| 03.07.2019, 20:44 [ТС] | ||
|
Я кстати сейчас немного поразмышлял и пришёл к выводу, что таки одного bias- нейрона вполне достаточно для нужды сети. Если надо, она сама подстроит веса связей так, что некоторые из нейронов скрытых слоев станут bias - нейронами, я даже схематически, грубо, прорисовал возможную ситуацию. Но это, наверное, конечно несколько более долгий процесс, чем по bias-нейрону к каждому скрытому слою, но вполне работоспособно.
0
|
||
|
130 / 25 / 12
Регистрация: 12.08.2015
Сообщений: 221
|
||
| 04.07.2019, 16:39 [ТС] | ||
|
Сделал CSV парсер, буду приступать непосредственно к спирали. Посмотрел на спираль визуально - устрашающе! Даже в песочнице tensorflow спираль менее хардкорна. Плюс добавил bias нейроны к каждому скрытому слою. Скорость аппроксимации функций существенно возросла (не удивительно). Отпишусь о результатах после, процесс будет долгим, ноутбук тарахтит как трактор, каждая эпоха чуть ли не пол минуты длится
Добавлено через 53 минуты Сварганил другие множеста, линейно разделимые, с петлями, она их решает. А тут не может. Если бы витков было меньше, как например в песочнице thensorflow, она бы точно справилась бы
0
|
||
|
3141 / 1742 / 274
Регистрация: 19.02.2010
Сообщений: 4,550
|
||
| 04.07.2019, 16:52 | ||
![]() Беда/фишка этого датасета - в том, что сначала идут примеры одного класса, а затем - другого. И длительная (>2000 примеров подряд) настройка на один класс напрочь отбивает у нейронки все ранее возникшие мысли о другом
1
|
||
|
130 / 25 / 12
Регистрация: 12.08.2015
Сообщений: 221
|
||
| 04.07.2019, 17:16 [ТС] | ||
|
Спустя 2300 с лишком эпох без рандомного перемешивания...
0
|
||
|
130 / 25 / 12
Регистрация: 12.08.2015
Сообщений: 221
|
|
| 04.07.2019, 17:20 [ТС] | |
|
А вот то, что было в начале:
0
|
|
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|||
| 04.07.2019, 22:50 | |||
|
Вы 19 часов обучали НС классифицировать двумерный вектор какой спирали принадлежит?
0
|
|||
|
130 / 25 / 12
Регистрация: 12.08.2015
Сообщений: 221
|
||
| 04.07.2019, 23:18 [ТС] | ||
|
просто. Разумеется мне объяснили что проблема состоит в том, что датасет со спиралью был не перемешан, из-за чего скорость обучения серьезно снизилась. Я обязательно повторю эксперимент со спиралью, как только докручу программе функцию перемешивания строк датасета. Если же смотреть на общее затраченное реальное время, то на 96% точности ушло около 2 часов. Но опять же, мой косяк, что обучающие примеры не были перемешаны. Я сильно удивлен, что сетка вообще справилась в таких лютых условиях.
0
|
||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
| 04.07.2019, 23:27 | |
|
2 часа тоже сурово…это скриптовый язык, наверно питон? Я бы не стал ждать столько =).
0
|
|
|
130 / 25 / 12
Регистрация: 12.08.2015
Сообщений: 221
|
||
| 04.07.2019, 23:40 [ТС] | ||
|
А на питоне я не умею. Я сколько статей не читал про нейросетки, то тут питон, то там питон, то здесь, уже начинал под кровать заглядывать, когда новую статью открывал, не появился ли и у меня под кроватью питон? Я ничего не хочу сказать про питон плохого, но я его - не могу понять! Я пытался, честно! Для меня он жестоко дискомфортен. По этой же причине не смог полноценно освоить тензорфлоу, керас и так далее. Поэтому сурово пишу свой собственный велосипед под те языки, которые мне близки. Есть и плюсы. Практика, бесценный опыт. Если всё удачно пойдёт, то появится и достаточно достойная свободная сетка для C- подобных языков на фоне других наколенных поделок. Достойная для любителей поэксперементировать, конечно же. P.S. Ну и ноут у меня старенький, слабенький для таких экспериментов, тоже + ко времени не хилый.
0
|
||
|
3141 / 1742 / 274
Регистрация: 19.02.2010
Сообщений: 4,550
|
||
| 05.07.2019, 00:28 | ||
|
Так что вангую, что Ваш код просто пополнит число наколенных поделок - и на этом фоне никак не выделится. Даже в сравнении с FANN, которая реализует только лишь несколько древнючих алгоритмов и структур и не умеет ничего современного глубокого/свёрточного/рекуррентного.
0
|
||
|
130 / 25 / 12
Регистрация: 12.08.2015
Сообщений: 221
|
||
| 05.07.2019, 07:47 [ТС] | ||
|
Что по теме нейронных сеток. Если после перемешивания датасета всё получится, и спираль выучится быстрее, хочу поэксперементировать с крестиками ноликами 3х3. И тут возникает несколько вопросов. Это же задача на классификацию, верно? Это как с распознаванием рукописных цифр, только тут на входе 9 рецепторов на каждую клетку поля, и мы распознаем игровые позиции, и на выходе тоже получается 9, при этом если на одном из выходов самое большое по модулю число, это и есть ответ, например, если один из нейронов выдает -1, это значит, что она хочет сходить ноликом на ту клетку, к которой приурочен нейрон. Вообще, то, как я описал, будет эта система работать? я говорю сейчас про обучение с учителем, не про самообучение в среде, это несколько сложнее.
0
|
||
|
130 / 25 / 12
Регистрация: 12.08.2015
Сообщений: 221
|
|
| 05.07.2019, 08:10 [ТС] | |
|
И да, результаты с алгоритмом перемешивания датасета:
accuracy ~0.99
0
|
|
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
||
| 05.07.2019, 08:47 | ||
![]() Да… такое чувство что все эти либы какие-то кривые поделки троллей индусов. Как не смотрю как создают все НС всюду просто море из каши левого кода который просто вымыкает… Если обзывают этот глитч библиотекой то пусть и создают адекватные функции в пару строк типа 1)Создает сеть Net(нейронов слоя 1, нейронов слоя 2… , тип нейросети, еще опций…) 2) Показывает архитектуру нейросети, сколько можно мазюкать фотошоп или пеинт? Что за колхоз? NetArch(название графиков, показывать эпохи или итерации и т.д. плюшки) 3) тренировать сеть Train(название массива, итераций, эпохи) 4) ну и очевидно показать точность ShowEror (тип графика и т.д) Где все это парой строк? Мда… А если теперь захотелось обучить принадлежность такой кривой а не школьную спираль архимеда за 5 класс то все? Никакой гуру нейросетей понятия не имеет какую НС брать и сколько брать нейронов и глубину нейросети? И придется выбирать устройство НС отбалды постепенно уменьшая ее размеры по сотне\тысячи экспериментов научно обзывая это мытарство по факту гиперпараметр? Но ведь эту ерунду решает просто набрасывание точек на растр из обучающего примера + размытие и взятие порога…получаем прям эту же картинку кривой, затем читаем цвет пикселя который приходит и все… у нас классификатор с обобщением без всяких бредовых эпох и итераций, нагибает по скорости и точности любую НС без шаманства? ИМХО НС довольно маразмна вообще как идея…
0
|
||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
| 05.07.2019, 09:24 | |
|
А если нужно классифицировать принадлежность точки не примитивной спирали
а кривым областям (черному) на спирали то приплыли? Нужно будет 100500 нейронов и 800 лет обучения и экспериментов какая же самая простая и адекватная по сложности НС будет тут работать? Т.к. из-за лютой нелинейности нейронов и малости областей на спирали график ошибки в процессе обучения да и еще + гиперпараметры будет похож на шум? Но эту ерунду решает алгоритм выше точно также...за 1 эпоху.
0
|
|
|
3141 / 1742 / 274
Регистрация: 19.02.2010
Сообщений: 4,550
|
||
| 05.07.2019, 11:05 | ||
|
Это растущие нейронки, выполняющие (в том или ином виде) оценку многомерной плотности распределения вероятности и ставящие нейроны там, где данных набросано погуще. Т.е. от древних ART и растущего нейронного газа до изобретённых уже в этом тысячелетии SOINN/ESOINN. Либо двухшаговка. Карта Кохонена - для квантования обучающих данных, чтобы затем для любого приходящего на классификацию вектора отбирать эталонные=обучающие точки только из того кластера, куда попал этот вектор, и из соседних с ним. И затем обычная непараметрическая оценка плотности распределения на основе парзеновских ядер - на сокращённой (ради ускорения inference) именно под проверяемый вектор обучающей подвыборке. Точность по сравнению с непараметрикой не уменьшится - а скорость расчётов увеличится (из-за уменьшения, например, на порядок числа отобранных обучающих примеров, участвующих в расчётах для любой проверяемой точки) как на "обучающем" этапе оптимизации коэффициента размытости парзеновского ядра, так и собственно при "боевой работе" (когда надо будет работать с любыми новыми точками).
0
|
||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
||
| 05.07.2019, 11:57 | ||
![]() Тут решение то всего округлить и прочитать число в массиве, дальше одна строка “если то” и все решение. А вот для нейронок это потребует как нетривиального знания всех нейронок так и зубодробительного матана в них с целой кучей вычислений и все это будет в 100 раз медленней чем алгоритм выше…но зачем усложнять?
0
|
||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
| 05.07.2019, 12:22 | |
|
Вот растр 100 на 100 пикселей с рандом черной точкой. Вход алгоритма классификации 2д вектор с плавающей от 0 до 100.0
Честно мне даже страшно представить насколько сложно создание и обучение нейросети классифицировать принадлежность черным пикселям 2д вектор с плавающей… и вообще возможно ли это для чисто нейросетей или нужны будут куча уловок от других разделов например статистики или цифровой обработки (фильтры и т.п.).
0
|
|
|
47 / 15 / 1
Регистрация: 26.08.2017
Сообщений: 162
|
||||||||||
| 05.07.2019, 13:01 | ||||||||||
Добавлено через 8 минут Добавлено через 2 минуты
0
|
||||||||||
|
3141 / 1742 / 274
Регистрация: 19.02.2010
Сообщений: 4,550
|
|||
| 05.07.2019, 15:36 | |||
|
Заметьте также, что я отвечал для картинки-спиральки - где задача была не в запоминании рандома, а таки наблюдалась=существовала явная возможность аппроксимации многомерной плотности вероятности. Подсовывать качественно иную задачу взамен - это либо передёргивание, либо очередная некомпетентность (незнание рамок успешной применимости тех или иных методов - и поэтому думание, что качественное изменение свойств задачи ничего не изменит). ![]() Ты бы хоть немного думал перед тем, как писать ![]() Напоминаю также, что ты так и не доказал правильность твоей фантазии о пригодности метода Ньютона для обучения нейросеток чуть бОльшего, чем в задаче XOR, размера (да и вообще не продемонстрировал ничего - начиная собственно от вычисления матрицы вторых производных и т.д.). И алгоритм обращения матриц у тебя как не работал - так и не работает с любой матрицей, содержащей хотя-бы 1 нолик
0
|
|||
|
130 / 25 / 12
Регистрация: 12.08.2015
Сообщений: 221
|
||
| 05.07.2019, 15:42 [ТС] | ||
|
Ребят! Не надо спорить пожалуйста! Тема утонет в в ваших дебатах)) Помогите плиз с крестиками ноликами 3х3, у кого какие мысли как правильно обучать сетку?
0
|
||
| 05.07.2019, 15:42 | |
|
Форма с большим количеством компонентов Select с большим количеством option Заполнить БД большим количеством значений Сервер с большим количеством клиентов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
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 и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|