|
Форум Форум
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Gruz Мастер-Флудер I
Репутация: +29/–8
Зарегистрирован: 17.11.2011 Сообщения: 4264 Откуда: Kiev Награды: Нет
|
Добавлено: Чт Июн 14, 2012 11:27 pm Заголовок сообщения: |
|
|
что?
Последний раз редактировалось: Gruz (Пт Июн 15, 2012 11:29 am), всего редактировалось 1 раз |
|
Вернуться к началу |
|
|
Gruz Мастер-Флудер I
Репутация: +29/–8
Зарегистрирован: 17.11.2011 Сообщения: 4264 Откуда: Kiev Награды: Нет
|
Добавлено: Чт Июн 14, 2012 11:28 pm Заголовок сообщения: |
|
|
нан пхп делать мат вычисления да еще с графикой это жесть.
А что улучшает эта Смигма? Зачем она вообще нужна _________________ -=- infinity-=- |
|
Вернуться к началу |
|
|
xcont Пользователь 1ого уровня
Репутация: +2
Зарегистрирован: 11.01.2012 Сообщения: 119 Откуда: Аккаунт изъят администрацией форума Награды: Нет
|
Добавлено: Пт Июн 15, 2012 6:40 am Заголовок сообщения: |
|
|
Добавляет нелинейность в нейронную сеть |
|
Вернуться к началу |
|
|
xcont Пользователь 1ого уровня
Репутация: +2
Зарегистрирован: 11.01.2012 Сообщения: 119 Откуда: Аккаунт изъят администрацией форума Награды: Нет
|
Добавлено: Пт Июн 15, 2012 6:46 am Заголовок сообщения: |
|
|
Но в моей нейронной сети она до писды. Она нужна в многослойных нейронных сетях с обратным распространением ошибки |
|
Вернуться к началу |
|
|
|
Добавлено: Сб Апр 04, 2015 10:00 pm Заголовок сообщения: |
|
|
Может меня кто то посчитает некропостером, но дюже интересно продолжить беседу о нейронных сетях. Есть ли на этом форуме жители знакомые с НС ? |
|
Вернуться к началу |
|
|
BrittaniLouiseBieber Мастер-Флудер I
Репутация: +61/–9
Зарегистрирован: 14.02.2011 Сообщения: 7108 Откуда: сны Джастина Награды: Нет
|
Добавлено: Сб Апр 04, 2015 10:10 pm Заголовок сообщения: |
|
|
Терантул писал(а): | Может меня кто то посчитает некропостером, но дюже интересно продолжить беседу о нейронных сетях. Есть ли на этом форуме жители знакомые с НС ? |
Есть. Я только не уверен, что он на форум заходит. |
|
Вернуться к началу |
|
|
Rasty Crackpot
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24422
Награды: Нет
|
Добавлено: Вс Апр 05, 2015 9:47 pm Заголовок сообщения: |
|
|
|
|
Вернуться к началу |
|
|
Gruz Мастер-Флудер I
Репутация: +29/–8
Зарегистрирован: 17.11.2011 Сообщения: 4264 Откуда: Kiev Награды: Нет
|
Добавлено: Вс Апр 05, 2015 10:37 pm Заголовок сообщения: |
|
|
Терантул писал(а): | Может меня кто то посчитает некропостером, но дюже интересно продолжить беседу о нейронных сетях. Есть ли на этом форуме жители знакомые с НС ? |
есть есть. давайте, начинайте тогда _________________ -=- infinity-=- |
|
Вернуться к началу |
|
|
Rasty Crackpot
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24422
Награды: Нет
|
Добавлено: Пт Дек 27, 2019 8:03 pm Заголовок сообщения: |
|
|
Недели три назад начал читать книгу по нейросетям (Ян Гудфеллоу, Иошуа Бенджио, Аарон Курвиль - "Глубокое обучение"). Тяжело идет. Там первая глава, на 50 страничек, по Линейной Алгебре. 15 лет назад учил Линейную Алгебру на первом курсе. Линейные уравнения тогда решал очень бодренько, а сейчас все позабывал, причем наглухо. Сидел две недели вспоминал. Ну, как-то хз. Две недели сидеть линейные уравнения решать, вместо программирования нейросетей. Книгу, короч, отложил - потом дочитаю.
Надо че-нить напрограммировать. Че можно напрограммировать? Вообще, у специалистов по машобу есть своя "хеллоу ворлд" программа - программа, с которой начинают изучение нейросетей и на которой потом соревнуются, чья нейросеть круче. Это программа, распознающая рукописные цифры. Существует база данных MNIST, которая содержит 60 000 картинок для обучения и 10 000 картинок для тестирования. Картинки такие:
Унылота, блеать
Во-первых, на JS получить цвет пикселя на картинке - то еще колдунство. Политика безопасности браузеров не позволяет загружать в скрипт картинки с веника. В противном случае, злоумышленник мог бы получить содержимое любого файла, находящегося на компьютере пользователя, зашедшего на сайт. Поэтому приходится загружать картинки на сайт, в папку со скриптом. Там это все дело тоже работает на отъебись. Намудохался летом, когда клеточные автоматы делал. Массив с популяцией затер, но осталась картинка с генофондом. Пришлось парсить. JS через раз файл подгружает.
Во-вторых, обучать нейросеть распознавать цифры - скучно это. В 60-х годах обучили
Куда еще можно нейросеть прикрутить? Таки вспомнил ту хуиту, которую 7 лет назад навыдумывал
xcont писал(а): | Мяу писал(а): | примитивный генетический алгоритм |
Не совсем ГА, но что-то интересное должно получится.
Скажем, есть у нас черные и красные "бактерии", черные у нас агрессивные и пытаются слопать красные. Все это происходит на поверхности (скажем 500х500) клеточного автомата с периодическими граничными условиями (без них не интересно). Каждая бактерия видит вокруг область диаметром 3-4 клетки. Бактериями управляет свой персептрон с 8 нейронами (каждый из которых определяет, куда бактерия переместится в следующий момент времени). Если это красные бактерии - они ищут вокруг себя черные бактерии и пытаются от них съебаться. Чем ближе черные и чем их больше - тем больше опасность. Если бактерия неправильно съебалась - уменьшаем веса нейрона, который сказал ей неправильно съебаться. (черные делают то-же самое, только с точностью да наоборот) Ну и в какой-то рандомный момент времени бактерия может размножиться передав нейронам потомков свои весовые коэффициенты.
Можно попробовать два варианта:
1. каждой бактерией управляет свой персептрон. Если бактерий 1000 - то и персептронов соответственно не меньше
2. Бактериями управляют только два персептрона, один черными, другой - красными. |
Сейчас забавно читать ту хуиту, которую тогда написал. О генетических алгоритмах имел тогда очень смутное представление, равно как и о нейросетях. К клеточным автоматам, описанное выше непотребство, не имеет никакого отношения. Но суть, в принципе, та же.
Короч, есть поле, 200х200 клеток. На поле находятся 1000 "бактерий":
В первой модели все бактерии одного вида, никто ни от кого не съебывается, никто никого не съедает. Чисто потестировать нейросеть. Дальше можно усложнять, добавляя какие-нить новые правила.
Бактерия может двигаться в 9-ти направлениях: 4 по диагонали на одну клетку, 4 по вертикали и горизонтали на одну клетку и 1 - остаться в исходной клетке (не двигаться). За один цикл вычисляются координаты всех бактерий. Далее используются некоторые правила, которые изменяют hp бактериям, после чего запускается следующий цикл. Когда бактерия добавляется на поле, ей устанавливается hp=1000 (от балды). За один цикл бактерия теряет 20 hp. Если в смежной клетке находится другая бактерия - бактерия получает 19 hp сверху (суммарно теряет всего 1 hp). Сие необходимо, чтобы бактерии научились группироваться, чтобы выживать. Если две бактерии оказываются на одной клетке - они теряют еще по 20 hp сверху.
Без нейросеточки смоделировал: http://xcont.com/n/ - направление движения каждой бактерии определяется рандомом. Выглядит сие весьма хаотично и безобразно.
Далее нейросеточку прикрутил. Каждая бактерия видит вокруг себя 121 клетку (11х11):
Нейросеть состоит из 34-х нейронов - 25 в скрытом слое и 9 нейронов на выходе, отвечающих за движение бактерии. Весовые коэффициенты редактировать будем генетическим алгоритмом.
Как оно обучается? Когда у бактерии заканчивается hp-шка - она дохнет. Освобождается место. Берем две самые старые бактерии (дольше всего находятся на поле = самые умные). Смешиваем генотипы, применяем мутации, два потомка добавляются вместо двух дохлых бактерии в рандомное место на поле (1000 hp-шки у каждой, 0 lifetime - этот параметр увеличивается на единицу на каждом цикле и используется, чтобы отобрать две самые старые бактерии для скрещивания). Все.
Модель с нейросетью: http://xcont.com/n/11x11/
Пока это все выглядит не очень круто, но модель готова. Генетический алгоритм вполне справляется с обучением нейросети. Теперь ее (модель) можно усложнять, добавляя более навороченные правила. Следующая цель - бактерии трех видов. Красные, зеленые и синие. Красные съедают зеленых, зеленые съедают синих, синие съедают красных. Как-то так. |
|
Вернуться к началу |
|
|
Rasty Crackpot
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24422
Награды: Нет
|
Добавлено: Сб Дек 28, 2019 12:12 pm Заголовок сообщения: |
|
|
[youtube]http://youtube.com/watch?v=Tf0f28pmz7Y[/youtube] |
|
Вернуться к началу |
|
|
Slav Мастер-Флудер I
Репутация: +31
Зарегистрирован: 06.06.2006 Сообщения: 18217 Откуда: КиевЪ Награды: Нет
|
Добавлено: Сб Дек 28, 2019 5:40 pm Заголовок сообщения: |
|
|
а шо она делает? |
|
Вернуться к началу |
|
|
Rasty Crackpot
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24422
Награды: Нет
|
Добавлено: Сб Дек 28, 2019 11:05 pm Заголовок сообщения: |
|
|
Кто? |
|
Вернуться к началу |
|
|
Slav Мастер-Флудер I
Репутация: +31
Зарегистрирован: 06.06.2006 Сообщения: 18217 Откуда: КиевЪ Награды: Нет
|
Добавлено: Вс Дек 29, 2019 6:07 am Заголовок сообщения: |
|
|
Нейронка |
|
Вернуться к началу |
|
|
Rasty Crackpot
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24422
Награды: Нет
|
Добавлено: Вс Дек 29, 2019 7:40 pm Заголовок сообщения: |
|
|
В данном случае, обучается выживать в некоторых заданных условиях.
Смотри, что вообще за хуита эти "нейросети".
Самый простой нейрон - это сумма множества "входные сигналов" умноженных на соответствующие им "весовые коэффициенты".
Входными сигналами могут быть, например, цвета пикселей на картинке. Черный пиксель - 0 на вход, белый пиксель - 1 на вход. Весовые коэффициенты - константы, которые мы редактируем в процессе обучения, чтобы научить нейрон активироваться (выдавать нужное число на выходе) только когда на входы поступают "правильные" сигналы. Сигнал на выходе считается максимум просто:
y=x1*w1+x2*w2+...+xn*wn
Например, обучаем нейрон распознавать цифру 3 на картинке. Пиксели на картинке - xn. Устанавливаем весовые коэффициенты wn таким образом, чтобы сумма была максимальной, если на входе тройка, и минимальной, если на входе другая цифра. Следующий нейрон обучаем распознавать девятку. Для него тоже устанавливаем соответствующие весовые коэффициенты. Для каждого нейрона свои весовые коэффициенты, которые никак не зависят от весовых коэффициентов других нейронов. Два нейрона, например:
Циферки размером 3х5 пикселей такая нейронка распознает без проблем (в самом начале этой темы ссылка и исходник на PHP), но если сделать картинки побольше - нейронка начинает тупить. Не только картинку побольше - перевернешь картинку вверх ногами и нейросеть ее больше не распознает. Решается это добавлением "скрытый слоев" в нейронку. Выходы нейронов в каждом скрытом слое являются входами для нейронов в следующем слое. На картинке пример с двумя слоями:
Скрытые слои не распознают картинку, а учатся выделять некоторые свойства картинки. Например, кружочки или палочки на картинках, если пытаемся обучить сеть распознавать цифры. Слой на выходе уже не напрямую с пикселями работает, а с кружочками и палочками из скрытого слоя.
Все нейросетки делаются по вышеописанному принципу, с некоторыми модификациями. Сложность нейросети не в архитектуре, а в способе обучения. Много разных способов напридумывали, как обучить нейросеть. Самый кайф той системы, что я тут на днях напридумывал в том, что нейросеть вполне можно обучить генетическим алгоритмом. Даже не так. Самый кафй в том, что обучение нейросети - одна из тех задач, которые решаются генетическим алгоритмом.
Каждая особь ("генотип" каждой особи) в генетическом алгоритме - это массив с весовыми коэффициентами, которые нам надо подобрать (подобрать коэффициенты = обучить сеть). В начальной популяции, состоящей из некоторого числа особей, эти коэффициенты заполняются случайным образом. Каждая особь в популяции пытается решить определенную задачу - берем коэффициенты из массива (генотипа) особи, подставляем в нейросеть, смотрим, что нейросеть дает на выходе. Далее считаем количество ошибок сделанных каждой особью. Те особи, которые чаще всего ошибаются - уничтожаются. Те, которые реже ошибаются - размножаются. Размножение - берем две лучшие особи, смешиваем их генотипы (массивы с весовыми коэффициентами), добавляем мутаций (несколько рандомных чисел записываем в массив), получаем две особи, которыми заменяем двух уничтоженных особей. Если повторять это многократно (решение задачи -> генетический алгоритм -> решение задачи -> генетический алгоритм ->) - в популяции будут оставаться особи, которые делают все меньше и меньше ошибок.
Задача, которую пытаются решить нейросети (в той модели, которую я тут напрограммировал) - необычная. Кайф в том, что они решают ее не по отдельности, а совместно. То есть, нейросеть, кроме всего прочего должна понимать, что рядом с ней может находится плохо обученная нейросеть, которая делает ошибки и, тем самым, мешает решить задачу.
В том виде, в котором сейчас это дело у меня во вкладке запущено, задача выглядит следующим образом. Есть поле 200х200 клеток. На поле 200 красных точек, 200 зеленых и 200 синих. Красные точки - это особи-нейросетки, синие и зеленые - боты, которые не двигаются. Красные спавнятся в верхней части поля, зеленые - в центральной, синие - в нижней. У каждой точки есть параметр hp (у ботов тоже). Когда особь добавляется на поле (при первом запуске или после скрещивания, когда плохие особи убираются с поля и вместо них добавляются новые), ей устанавливается значение hp равное 10000. За один цикл (один цикл - каждая сетка смотрит, что находится вокруг нее и делает ход в одном из 9-ти направлений) особь теряет 1 hp. Красные едят зеленых, синие едят красных (зеленые едят синих, но это не происходит, томущо они спавнятся в разных областях и не двигаются). Как едят? Если красная становится в клетку, где находится зеленая - hp красной увеличивается на 100 за один цикл, hp зеленой уменьшается на 100. Если красная становится в клетку, где находится синяя - у красной уменьшается hp, у синей - увеличивается. Чем больше стартовое hp - тем дольше живет особь и тем тщательней происходит отбор (тщательней собирается статистика для отбора).
После инициализации, все точки заспавнились в своих областях:
6000 циклов. Красные равномерно заполняют поле:
30000 циклов. Большая часть красных занимает область, где спавнятся зеленые и старается не лезть в область с синими:
85000 циклов:
400000 циклов:
523000 циклов:
Вот здесь реализация: http://xcont.com/n/rgb/
Как это реализовано. Фактически, здесь три поля, вместо одного. Одно поле - на котором размещаются красные точки, второе - зеленые, третье - синие. Каждая особь видит вокруг область 11х11=121 пикселей вокруг своих координат (клетки, где она находится). 121 на красном поле, 121 на зеленом и 121 на синем. Итого 363 входа. В скрытом слое находится 121 нейрон (число взято от балды - предположительно, чем больше нейронов в скрытом слое - тем умнее сеть). В выходном слое 9 нейронов, отвечающих за изменение координат особи.
Вот так это безобразие выглядит в динамике после 7-ми часов обучения:
[youtube]http://youtube.com/watch?v=XIbkmkw-8PA[/youtube] |
|
Вернуться к началу |
|
|
Rasty Crackpot
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24422
Награды: Нет
|
Добавлено: Пт Янв 03, 2020 10:17 am Заголовок сообщения: |
|
|
Сидел после Нового Года от травы отходил, читал Википедию и ВНЕЗАПНО понял, как работают сверточные нейронные сети
Экспериментального котяру посворачивал:
|
|
Вернуться к началу |
|
|
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
Powered by phpBB © 2001, 2005 phpBB Group Русская поддержка phpBB
|