2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Проект “Дафния”. (Нейросети)
Сообщение10.04.2020, 08:43 
Ищу энтузиастов соучастников в открытый научно-исследовательский проект Дафния.

Цель проекта: принципиальное моделирование нервной системы.

То есть, наша задача не повторить в точности нервную систему дафний, а смоделировать принципы работы нервной системы животных. Причём эти принципы мы будем зачастую искать не в научной литературе, а в самой компьютерной модели. Делая нервную систему нашей компьютерной Дафнии максимально эффективной, мы вероятно обнаружим те же принципы, которые уже “придумала” эволюция. Название “Дафния” условно, оно взято, так как дафния один из самых простых организмов, у которого, по некоторым свидетельствам (см. опыты А.Б.Когана) могут быть получены условные рефлексы.

Цели для участников:

Задача-минимум: освоить современные технологии, связанные с параллельными вычислениями. Поднять квалификацию и найти работу в этой области.

Задача не минимум: придумать как заработать деньги самим на основе изученных технологий.

Участвовать можно по следующим направлениям:

- разработка физики вселенной №1 мне в помощь. Включает: идеи усовершенствования физики, программирование сервера на c++.
- разработка клиента на Unreal Engine с++ мне в помощь. Включает: рисование графики для красивой визуализации происходящего на сервере, программирование нервной системы на с++ или возможно на процессоре видеокарты.
- разработка собственного клиента на любом удобном движке и взаимодействие с сервером по UDP протоколу. Это приветствуется для создания соревновательности. Всякая помощь по серверу с моей стороны будет оказана.
- если хотите разработать собственную вселенную с другой физикой, то это также приветствуется, код открытый, можно форкаться.

Проекты на github
https://github.com/talashby/Daphnia
https://github.com/talashby/DaphniaServer

Ежемесячные отчёты публикую здесь:

Архитектура вселенной и протокол взаимодействия с сервером здесь.

 
 
 
 Re: Проект “Дафния”. (Нейросети)
Сообщение10.04.2020, 18:53 
Насколько понял из описания, хватит карты ядер на 500, чтобы смоделировать все возможные "приобретенные" навыки - слишком узок диапазон возможных действий. А вообще, вряд ли будет что-то типа "Мы не ожидали, а оно - вон как научилось!"..

 
 
 
 Re: Проект “Дафния”. (Нейросети)
Сообщение10.04.2020, 20:46 
Аватара пользователя

(Оффтоп)

Дафния - это то, что ест гуппия.

 
 
 
 Re: Проект “Дафния”. (Нейросети)
Сообщение10.04.2020, 22:59 
A_I в сообщении #1453388 писал(а):
Насколько понял из описания, хватит карты ядер на 500, чтобы смоделировать все возможные "приобретенные" навыки - слишком узок диапазон возможных действий.

Я общался с Андреем Белкиным, который сделал головастика на нейрона.
Он высказался, что обработка цветной зрительной информации задача очень сложная из-за большого количества рецепторов и других факторов. Но будем пробовать, а в случае проблем с быстродействием, можно будет оставить один цвет.

 
 
 
 Re: Проект “Дафния”. (Нейросети)
Сообщение14.04.2020, 09:34 

(Оффтоп)

Будут ли есть цифровые гуппии цифровых дафний?

 
 
 
 Re: Проект “Дафния”. (Нейросети)
Сообщение07.05.2020, 00:52 
В апреле продолжил:
Этап 2. Сверхбыстрая физика.

1. Теперь сервер поддерживает множество клиентов. Две дафнии впервые увидели друг друга.
2. На сервере реализован TCP/IP протокол для администратора. Он нужен для красивых демонстраций происходящего на сервере на графике Unreal Engine. Сейчас UE4 клиент уже умеет закачивать с сервера состояние вселенной (положение шариков корма), но пока он видит только собственную дафнию, что делают другие дафнии не видно.
3. Разработан минимальный клиент на WinApi, который коннектится к серверу, отображает состояние глаза Дафнии, а также даёт команды моторным нейронам с клавиатуры.
4. Создан ютуб-канал и записан демонстрационный ролик. https://youtu.be/VyoSWdGh6Rg

Сервер https://github.com/talashby/DaphniaServer
Клиент UE4 https://github.com/talashby/Daphnia
Клиент WinApi https://github.com/talashby/DaphniaWinApi

В планах сделать минимальные клиенты на Unity и на Python, для лёгкого старта желающих участвовать в проекте. Далее сам буду разрабатывать нервную систему на WinApi-клиенте.

Преимущества научно-исследовательского проекта Дафния перед другими ИИ-проектами:
- упрощённая физика с чёткими законами
- распараллеливаемость физики

На мой взгляд реальная физика слишком сложна для компьютерного моделирования, как в плане быстродействия, её трудно распараллелить по ядрам, так и в плане качественной реализации. Обычно приходится обходить множество нюансов, что является препятствием для усложнения мира, где существует ИИ.

 
 
 
 Re: Проект “Дафния”. (Нейросети)
Сообщение07.05.2020, 07:17 
Аватара пользователя
talash в сообщении #1460783 писал(а):
упрощённая физика с чёткими законами
Можно подробнее о кодировании направления взгляда и реализации его поворота?

 
 
 
 Re: Проект “Дафния”. (Нейросети)
Сообщение07.05.2020, 12:23 
Утундрий в сообщении #1460803 писал(а):
talash в сообщении #1460783 писал(а):
упрощённая физика с чёткими законами
Можно подробнее о кодировании направления взгляда и реализации его поворота?

Дафния занимает одну пространственную ячейку и испускает из неё эхолокационные фотоны. Направление Дафнии задаётся географическими координатами широтой и долготой. На эти координаты можно воздействовать через клавиатуру, поворачивая Дафнию. У глаза угол обзора 90 градусов. От направления Дафнии вычисляются географические координаты направлений эхолокационных фотонов. Вычисления примерные для скорости исполнения. Вот код:
Код:
void Observer::CalculateEyeState()
{
   float len = EYE_FOV / CommonParams::OBSERVER_EYE_SIZE;

   for (int32_t yy = 0; yy < CommonParams::OBSERVER_EYE_SIZE; ++yy)
   {
      for (int32_t xx = 0; xx < CommonParams::OBSERVER_EYE_SIZE; ++xx)
      {
         int16_t latitude = m_latitude + EYE_FOV * yy / CommonParams::OBSERVER_EYE_SIZE - EYE_FOV / 2;
         int16_t longitude = 0;
         int16_t longitudeShift = EYE_FOV * xx / CommonParams::OBSERVER_EYE_SIZE - EYE_FOV / 2;
         if (latitude < -90 || latitude > 90)
         {
            latitude = Sign(latitude) * 180 - latitude;
            longitude = m_longitude - longitudeShift;
            longitude = longitude < -179 ? 360 + longitude : longitude;
            longitude = longitude > 180 ? -360 + longitude : longitude;
            longitude = longitude - 180;
            longitude = longitude < -179 ? 360 + longitude : longitude;
         }
         else
         {
            longitude = m_longitude + longitudeShift;
            longitude = longitude < -179 ? 360 + longitude : longitude;
            longitude = longitude > 180 ? -360 + longitude : longitude;
         }

         float pi = 3.1415927410125732421875f;

         int16_t latitudeDownFactor = (int16_t)(abs(longitudeShift) * sinf(latitude * pi / 180));
         latitude -= latitudeDownFactor;
         assert(latitude <= 90);
         assert(latitude >= -90);


         VectorFloatMath orientFloat;
         orientFloat.m_posX = cosf(latitude * pi / 180) * cosf(longitude * pi / 180);
         orientFloat.m_posY = cosf(latitude * pi / 180) * sinf(longitude * pi / 180);
         orientFloat.m_posZ = sinf(latitude * pi / 180);

         OrientationVectorMath orient = MaximizePPhOrientation(orientFloat);
         m_eyeArray[yy][xx] = orient;
      }
   }
   CalculateOrientChangers();
}


ЗЫ Ремарка, структурно Ваш вопрос относится не к физике вселенной (в коде это namespace ParallelPhysics), а к физике наблюдателя (класс Observer), можно сделать другого наблюдателя (класс Observer2), у которого направления эхолокационных фотонов будет вычисляться математически строго и поместить его в ту же вселенную.

 
 
 
 Pi
Сообщение07.05.2020, 17:06 
Аватара пользователя
talash в сообщении #1460857 писал(а):
Код:
float pi = 3.1415927410125732421875f;

The first 50 decimal digits are 3.14159265358979323846264338327950288419716939937510..

 
 
 
 Re: Pi
Сообщение07.05.2020, 20:21 
SergeCpp в сообщении #1460939 писал(а):
talash в сообщении #1460857 писал(а):
Код:
float pi = 3.1415927410125732421875f;

The first 50 decimal digits are 3.14159265358979323846264338327950288419716939937510..

Спасибо за поправку :D пусть будет float pi = 3.14159f. Для наших целей хватит.

 
 
 
 Re: Проект “Дафния”. (Нейросети)
Сообщение07.06.2020, 16:02 
В мае продолжил:
Этап 2. Сверхбыстрая физика.

1. Демонстрационный клиент теперь умеет графически отображать других дафний.
2. Разработаны минимальные клиенты на Unity и на Питоне для лёгкого старта участия в проекте специалистов в этих платформах. В этих клиентах дафния управляется с клавиатуры кнопками-стрелочками. Задача написать нейросеть и научить дафнию поедать шарики-крошки самостоятельно.
3. На ютуб-канал залит отчёт за май: https://www.youtube.com/watch?v=6j_CDeVwp2s В нём рассказываю про перспективы развития проекта:
В планах найти участников и устроить соревнование дафний. Каждый участник обучает дафнию простому поеданию шариков корма на своём оборудовании. Далее периодически будем запускать полуфинальные сервера, где будут соревноваться дафнии, прошедшие первоначальное обучение. Победители будут попадать на финальный сервер, который будет работать постоянно. План примерный и может меняться в зависимости от обстоятельств.

Сервер https://github.com/talashby/DaphniaServer
Клиент UE4 https://github.com/talashby/Daphnia
Клиент WinApi https://github.com/talashby/DaphniaWinApi
Клиент-Python https://github.com/talashby/DaphniaPython
Клиент-Unity https://github.com/talashby/DaphniaUnity

 
 
 
 Re: Проект “Дафния”. (Нейросети)
Сообщение29.11.2022, 00:02 
Тут интересуются проектом.

Инструмент для соревнования, первая версия вселенной, в принципе реализован. Далее нужно заниматься нервной системой. Но у этого проекта сейчас нет участников. До этого был один я и только благодаря китайцам, которые закрыли айтишную контору, где я работал и выплатили сразу много з/п. 8-) Сейчас работаю, но скоро есть шанс повторения истории.

Без финансирования трудно тянуть, тем более одному. А финансирование имеет смысл искать, как мне кажется, только если соберётся группа участников.

А группу собрать очень трудно. Во-первых, в принципе довольно мало людей, которые занимаются/занимались кибернетическими животными. Во-вторых, нужно совпадение взглядов на развитие проекта. Некоторые авторы ищут волшебные алгоритмы самообучения, чтобы животное быстро обучалось с нуля. А я считаю, что нужно смотреть в сторону наследования опыта. То есть, вводить конкуренцию кибердафний, чтобы неудачно действующие погибали, а удачные клонировались с наследованием опыта. И тут ещё на ситуацию накладывается идеологическое неприятие "ламаркизма", что ещё больше снижает шансы на набор группы и поиск финансирования.

 
 
 [ Сообщений: 12 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group