Список форумов Форум Форум
Форум
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   medals.phpНаграды   РегистрацияРегистрация 
 ПрофильПрофиль   СудокуСудоку   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Однослойный персептрон на PHP (10 нейронов). Работает :)))
На страницу Пред.  1, 2, 3  След.
 
Начать новую тему   Ответить на тему    Список форумов Форум -> Наука и технологии
Предыдущая тема :: Следующая тема  
Автор Сообщение
Gruz
Мастер-Флудер I
Мастер-Флудер I


Репутация: +29/–8    

Зарегистрирован: 17.11.2011
Сообщения: 4264
Откуда: Kiev
Награды: Нет

СообщениеДобавлено: Чт Июн 14, 2012 11:27 pm    Заголовок сообщения: Ответить с цитатой

что?

Последний раз редактировалось: Gruz (Пт Июн 15, 2012 11:29 am), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Gruz
Мастер-Флудер I
Мастер-Флудер I


Репутация: +29/–8    

Зарегистрирован: 17.11.2011
Сообщения: 4264
Откуда: Kiev
Награды: Нет

СообщениеДобавлено: Чт Июн 14, 2012 11:28 pm    Заголовок сообщения: Ответить с цитатой

нан пхп делать мат вычисления да еще с графикой это жесть.

А что улучшает эта Смигма? Зачем она вообще нужна
_________________
-=- infinity-=-
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
xcont
Пользователь 1ого уровня
Пользователь 1ого уровня


Репутация: +2    

Зарегистрирован: 11.01.2012
Сообщения: 119
Откуда: Аккаунт изъят администрацией форума
Награды: Нет

СообщениеДобавлено: Пт Июн 15, 2012 6:40 am    Заголовок сообщения: Ответить с цитатой

Добавляет нелинейность в нейронную сеть
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
xcont
Пользователь 1ого уровня
Пользователь 1ого уровня


Репутация: +2    

Зарегистрирован: 11.01.2012
Сообщения: 119
Откуда: Аккаунт изъят администрацией форума
Награды: Нет

СообщениеДобавлено: Пт Июн 15, 2012 6:46 am    Заголовок сообщения: Ответить с цитатой

Но в моей нейронной сети она до писды. Она нужна в многослойных нейронных сетях с обратным распространением ошибки
Вернуться к началу
Посмотреть профиль Отправить личное сообщение



   






СообщениеДобавлено: Сб Апр 04, 2015 10:00 pm    Заголовок сообщения: Ответить с цитатой

Может меня кто то посчитает некропостером, но дюже интересно продолжить беседу о нейронных сетях. Есть ли на этом форуме жители знакомые с НС ?
Вернуться к началу
BrittaniLouiseBieber
Мастер-Флудер I
Мастер-Флудер 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
Мастер-Флудер 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
Мастер-Флудер I


Репутация: +31    

Зарегистрирован: 06.06.2006
Сообщения: 18216
Откуда: КиевЪ
Награды: Нет

СообщениеДобавлено: Сб Дек 28, 2019 5:40 pm    Заголовок сообщения: Ответить с цитатой

а шо она делает?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Rasty
Crackpot


Репутация: +89/–10    

Зарегистрирован: 23.05.2006
Сообщения: 24422

Награды: Нет

СообщениеДобавлено: Сб Дек 28, 2019 11:05 pm    Заголовок сообщения: Ответить с цитатой

Кто?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Slav
Мастер-Флудер I
Мастер-Флудер I


Репутация: +31    

Зарегистрирован: 06.06.2006
Сообщения: 18216
Откуда: КиевЪ
Награды: Нет

СообщениеДобавлено: Вс Дек 29, 2019 6:07 am    Заголовок сообщения: Ответить с цитатой

Нейронка
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Rasty
Crackpot


Репутация: +89/–10    

Зарегистрирован: 23.05.2006
Сообщения: 24422

Награды: Нет

СообщениеДобавлено: Вс Дек 29, 2019 7:40 pm    Заголовок сообщения: Ответить с цитатой

В данном случае, обучается выживать в некоторых заданных условиях.

Смотри, что вообще за хуита эти "нейросети".

Spoiler:

Цитата:
"Многослойный перцептрон - это просто математическая функция, отображающая множество входных значений на множество выходных."



Самый простой нейрон - это сумма множества "входные сигналов" умноженных на соответствующие им "весовые коэффициенты".



Входными сигналами могут быть, например, цвета пикселей на картинке. Черный пиксель - 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    Заголовок сообщения: Ответить с цитатой

Сидел после Нового Года от травы отходил, читал Википедию и ВНЕЗАПНО понял, как работают сверточные нейронные сети

Экспериментального котяру посворачивал:



Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Форум -> Наука и технологии Часовой пояс: GMT
На страницу Пред.  1, 2, 3  След.
Страница 2 из 3

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB