Pull to refresh
210
0
Андрей «A.I.» Ситник @Iskin

Фронтенд-разработчик

Send message
Я не люблю страшные игры, но хотелось бы узнать сюжет :). Где можно прочитать?
Я думаю что будет очень плохо, если арабы (и другие народы) перейдут на латиницу. Это обернётся точно таким же ужасом, как монополия IE 6. Нет разнообразия — нет развития.
Да. Главный смысл — отсутствие вложенности [операторов if и т. д.] и прямое и простое кодирование в байты. Чтобы со строкой байт можно было делать всё что угодно и результат откомпилируется и будет отличаться от родителя, в зависимости от того, какие сильные были мутации. Можно скопировать кусок байт из алгоритма A и вставить в любое место алгоритма B, который в итоге приобретёт какие-то свойства алгоритма A.
Язык вообще на ДНК немного похож :).
Это не пространство, а оператор расстояния. В пространстве, каждому алгоритму должен быть присвоен уникальный номер (или уникальная группа номеров).
Кстати, если использовать ГА или PSO для генерации программ, то возникает ещё более интересный вопрос, как кодировать алгоритм, чтобы операция мутации и кроссовера была простой и лёгкой. Сейчас в основном используют нейронные сети или иерархические языки, но мне кажется, что это неправильный путь заимствования и я разрабатываю специальный язык, чтобы кодировать программы в для ГА — evolu.org
Ну а плюс, нам для PSO желательно не любое пространство решений. То есть мы не можем просто случайно раздать всем возможным алгоритмам свои координаты. Чтобы PSO нормально работал:
Если у нас есть алгоритмы A (с координатами x1, y2) и B (x2, y2), то алгоритм C, который расположен посредине между (x1, y1) и (x2, y2) должен иметь свойства частично присущие A, частично B.
Иначе у нас будет случайный перебор — близость между двумя пчёлами не будет означать близости значений fitness’а → следовательно понятие расстояния уже не имеет смысла и пчеле не имеет смысла лететь к более успешной пчеле.
Ну а распределить всё (бесконечное) множество алгоритмов по n-координатам так, чтобы это свойство соблюдалось будет очень сложно ;).
Пространство решений в математике — это просто символ, а не n-мерное пространство в нашей голове. В голове оно мешает. Проще представить PSO для программы в виде графа связанных между собой программ. Хорошая программа отдаёт свои куски в более плохую (на основе того, насколько они отличаются между собой). В итоге и нет зависимости кол-ва пчёл от измерений (если оно вообще было), хотя, конечно, пчёл мало не бывает :).
Вот хороший пример — мы же не используем метафору «пространства решений» для генетического алгоритма? (ну используем только в очень простых случаях, чтобы строить красивые графики и объяснять) И для PSO пространство решений (а тем более кол-во измерений) не обязательно (раз мы можем PSO свести к модификации ГА).
Но у того метода нет «пространства», поскольку нет измерений, есть только расстояния. Нет, конечно же всё можно свести к пространству с нужным кол-вом измерений, но тут пространство неправильно задавать, поскольку оно будет кодироваться неявно, не будет помогать нам понять и решить задачу.
Ведь любое множество решений можно закодировать с помощью 1-мерного пространства, поэтому связь измерения → кол-во пчёл не очень хороша :).
Кстати, автор, совершенно странно, что ты не используешь оригинальное английское название алгоритма (Particle Swarm Optimization), хотя бы для поиска статьи.
В том-то и дело, что не обязательно в оптимизации роем делать «пространство». Пространство вообще ограничение метафоры :). На самом деле нам нужно только три оператора: расстояние между двумя точками, случайное изменение точки и сдвигание одной точки в сторону другой. Всё это можно легко сделать для любого представления алгоритма (например, расстояние Левенштейна, случайная мутация и кроссовер). В статье ребята более подробно объясняют, как это они сделали: julian.togelius.com/Togelius2008Geometric.pdf
Кстати, предыдущую часть многие не видели (так как она из песочницы и не появлялась в RSS).
Кстати, а ведь метод роя (пчёл в названии, кстати нет ;) ), применим не только для координат. Есть проекты, где он может применяться для поиска любого универсального решения (например, программы, которая удовлетворяет заданным тестам).
Фактически, оптимизация роем — это некий аналог генетического алгоритма. Если откинуть лишнее, то он очень близки. Отличаются они двумя вещами:
1. В оптимизации роем самое лучшее решение не подавляет остальные. Всегда остаётся место для какой-то оппозиции. Так что оптимизация роем меньше застревает на локальных минимумах.
2. В генетическом алгоритме, популяция постоянно пересоздаётся — в итоге сильно увеличивается нагрузка на память. В оптимизации роем мы не клонируем «пчёл», а просто применяем мутацию (и слияние) на каждую из них.
В итоге, мне кажется, что надо оптимизацией роем заменять генетический алгоритм во многих задачах, потому что он гораздо лучше подходит к архитектуре наших процессоров.
На Хабре же теперь есть встроенная подсветка синтаксиса: <source lang="java">&lt/source>. Пример:
int a = 1;
Кстати, можно ли считать нейронную сеть самообучающейся, раз возможности её обучения ограничены её архитектурой (если нет нейронов с обратной связью, то она не способы иметь состояния и т. д.)? С другой стороны, если мы генерируем с помощью генетического алгоритма программу (в любом полном по Тьюрингу представлении), то она теоретически неограниченна по возможностям (хотя и ограничена практически временем генерации).
Ну кроме прикладных задач, перед нейронными сетями стоят и исследовательские задачи. Нейрохирургам тоже нужны ИНС и не для решения математических задач.
Кстати, а почему нельзя делать расчёты глифов заранее и хранить на сервере? Как минимум для одних устройств набор шрифта одинаков.
Кстати, не забывай приводить в статье больше примеров из реальной жизни. А-то много формальной математики — я, например, гораздо лучше думаю на основе примеров (визуальное мышление, все дела, приходится тратить ресурсы на поиск примеров удовлетворяющих формуле и т. д. :) ).
Это и есть нейронные сети, которые учатся без учителя, о которых Вы говорили ранее? ;)
Это да, но всё что нужно — это мультитач и хорошая экранная клавиатура. Первое уже сделано, второе можно взять и из сторонних программ.

Information

Rating
Does not participate
Location
Barcelona, Barcelona, Испания
Date of birth
Registered
Activity