Posts Tagged ‘нейронные сети’

Копия с aicommunity.org

Среда, Март 10th, 2010

Форум на aicommunity.org умер уже более полугода назад. Нашел кусок текста, который писал на тот форум в процессе обсуждения (кажется, http://forum.aicommunity.org/viewtopic.php?p=50498):
Выработана достаточно необычная модель ИНС. Краткое описание:
1) Квазинейроны.
Нейроны в модели соответствуют группам биологических нейронов.
2) Сложная структура нейронного кластера
Нейроны в модели объединяются в кластеры. В отличии от других моделей, разные части кластера имеют специализацию. Например, пусть есть нейронный кластер, распознающий набор признаков {П}. Одна часть кластера (отдельный квазинейрон) содержит связи с нейронов {П}. Такой (квази)нейрон можно назвать «входом кластера». Другой нейрон – «спуск к низкоуровневым признакам» – шлет сигналы к нейронам из {П} (а не принимает их). Отдельный нейрон служит «выходом» кластера – шлет сигналы вверх по иерархии признаков (иерархия условная). Другие части кластера занимаются проведением сигнала с учетом временной последовательности срабатывания, управлением режимами работы кластера, и т. д.
Такое разделение делает нейросеть более понятной для разработчика, по аналогии с фреймовыми моделями, но в то же время сохраняет гибкость и решает проблему внутренней активности.
3) Соединение кластеров в универсальные цепочки памяти.
Так как у кластеров сложная структура, то цепочка из кластеров может работать в различных режимах – и распознавания, и прогнозирования, и воспоминания. При запоминании, создается цепочка из кластеров, каждый кластер содержит входящие связи от (нейронов) признаков, которые были активны в тот некоторый момент. При поступлении похожей последовательности признаков, такая цепочка активируется (распознавание). В другом режиме работы, та же цепочка последовательно активирует входящие в нее кластера и запомненные ими признаки.
4) Управление условиями срабатывания отдельных подсистем ИНС
Это что нужно для управления режимами работы универсальных нейронных цепочек. Среди всех нейронных кластеров, нейроны одного функционального назначения группируются. Например, группируются все нейроны распознавания признаков (всех кластеров), или все нейроны посылки сигналов к признакам, входы/выходы/нейроны управления режимами работы. Каждую такую группу для краткости я называю «нейронный контур (работы)». В результате такого условного разделения, управлять нейросетью становится значительно легче. Обработку нейронов одного типа можно производить без учета других групп. Например, пусть в отдельном цикле происходит проход по всем нейронам из группы «выход кластера». Все активные нейроны признаков (например, активные кластеры зрительной коры) пошлют сигналы на своих выходы. Пока ничего нового в сравнении с другими моделями нет, но будет позже. Далее – проход по всем нейронам типа «вход кластера», обработка изменений, произошедших на предыдущих шагах. На этих нейронах как раз появилась активация, посланная на предыдущем шаге с нейронов «выход признака». Имеем ситуацию – распознаны более высокоуровневые признаки. Теперь можно в отдельном цикле обработать нейроны «посылка сигналов прогнозирования развития ситуации». Такое разделение позволяет работать с нейросетью, не беспокоясь о синхронизации отдельных подсетей. Например, так как нейроны признаков никто не трогает, активация на них не меняется, и не важно, что нейросеть будет делать – слать прогнозирование, или задействовать какие-то другие нейронные контуры, и сколько подобных шагов и в какой последовательности были произведены.
* не важна последовательность срабатывания других нейронных контуров
* можно варьировать скорости угасания сигналов в разных нейронных контурах
* можно игнорировать накопившийся потенциал на нейронах некоторого контура до того времени, пока они не понадобятся – сигналы будут слаться вовремя
* можно управлять семантикой операций – раздельно слать сигналы вверх/вниз по иерархии, и т. д.
5) Пример высокоуровневых нейронных операций, которые можно производить при помощи таких особенностей ИНС
Пересечение признаков. Активны два нейронных кластера. Нужно найти общие признаки. Достаточно пройтись по контуру «посылка сигналов вниз к признакам». Неактивные кластеры сигналы не пошлют. Признаки, входящие в оба активных кластера (имеющие связи от активных кластеров к себе), получат двойное превышение активации над порогом. Для объединения достаточно выделить кластеры с любой активацией, превышающей порог.
Найти разницу: один активный кластер шлет тормозящие сигналы, другой – активирующие. Полученные активные нейроны входят только во второй кластер.
6) Пример еще более высокоуровневого режима работы
Активны по одному кластеру у двух цепочек памяти.
Активные кластеры шлют сигналы к своим признакам.
Признаки, входящие в оба кластера, выделяются.
Выделенные признаки заносятся в отдельный, новый кластер – пусть Н0.
Исходные кластеры активируют нейронный контур «перейти вперед по цепочке памяти».
Активируются два следующих нейрокластера тех же нейронных цепочек, соответствующие развитию исходной ситуации во времени. Два предыдущих активных нейрокластера тормозятся. Повторение шагов, выделение общих признаков, занесение их в новый отдельный нейрокластер Н1 – и присоединение этого Н1 к Н0 в качестве роста новой нейронной цепочки.
Такой алгоритм выделяет устойчивую последовательность активации признаков, производит обобщение памяти.
Теперь должно быть понятно, что при разнообразии высокоуровневых нейтронных алгоритмов важно, чтобы было легко управлять скоростью угасания сигнала на отдельных нейронных контурах, следить за тем, чтобы сигналы с различным назначением и разных циклов не накладывались друг на друга.
7) Виртуализация внутрикластерных межнейронных связей. Упрощение управления режимами работы ИНС.
Изначально, взаимодействие между различными нейронными контурами внутри одного нейронного кластера происходило по обычным межнейронным связям. Например, нейрон признаков некоторого кластера распознал свои признаки, активировался, и шлет сигнал на нейрон выхода того же кластера, и на нейрон прогнозирования. А если нужно, чтобы сработал только один из них – прогнозирования или выхода, а не оба? При раздельной обработке нейронных контуров, можно было просто не обрабатывать нейроны некоторого типа несмотря на то, что на них есть сигнал. Но есть лучшее решение: один из нейронов – прогнозирования или выхода – затормозить. Или вовсе не слать на него сигналы. Но программирование таких эффектов утомительно. Решение – виртуализация внутрикластерных связей. Примерный код: «для всех нейронных кластеров, если активен нейрон признаков, активировать нейрон прогнозирования соответствующего кластера». Не нужно создавать тормозящие связи внутри кластера; активация появляется только на тех нейронах, где она нужна. Соответственно, алгоритм из пункта 6 будет теперь содержать пункты: «активный кластер активируют нейроны посылки сигналов к признакам», «активные кластеры активируют нейроны посылки сигналов к кластерам, следующим в цепочке памяти», «нейроны контура Х обнуляют активацию»
8) Гиппокамп, быстрая память – концепция
Принята следующая концептуальная модель. При активации некоторого нейронного кластера, гиппокамп быстро запоминает данный факт через, наверное, сложные нейросети коммутации. Ночью, гиппокамп может активировать признаки в той же последовательности. Повторная активация признаков в той же последовательности, но позже, повышает вероятность образования связей механизмами, рассмотренными Емельяновым-Ярославским (или Бощенко), так как проходит время на образования дополнительных комбинаций межнейронных связей (нейронная пластичность), а уже обнаруженные связи дополнительно закрепляются. Дополнительная активация некоторых других нейронов может способствовать нахождению дополнительных вставных нейронов, благодаря которым образуется связь (1000 связей на нейрон – 1000 потенциальных целей, один промежуточный нейрон – миллион потенциально достижимых целей, еще один – миллиард).
9) Благодаря концепции в п. 8, в искусственной нейросети можно принять: так как известно, что гиппокамп поможет созданию цепочки нейронов, при поступлении признаков (активации нейрокластеров) можно сразу же создавать нейронные цепочки, соответствующие идеальному случаю: абсолютно точное восстановление исходных признаков. Можно не ждать кучу времени, пока образуются такие цепочки.
10) Медленный сон.
Пункт 8 объясняет возможное назначение медленного сна. Дополнительная работа, которую производят мои модели ИНС во время медленного сна – выделение обобщающих нейронных цепочек по типу пункта 6. Тут же происходит очищение гиппокампа и удаление малоприоритетных нейронных цепочек
11) Производительность
В целях повышения просотты разработки, не только группы нейронов и связей объединяются в «квазинейроны» и «квазисвязи», но также и спайки моделируются одним квазиспайком. Вместо посылки множества спайков, берутся абстрактные «послать сигнал до полной активации». Все это значительно экономит ресурсы.
12) «Двойная активация» из пункта 5 и 6 (цитирую сообщение из своего блога на http://neurocod.net/ )
Но у этого подхода есть концептуальные недостатки. Как известно, потенциал действия биологических нейронов при разрядке всегда один и тот же. Накопление на мембране «двойного заряда» не подходит. Повышение порога гуморальными механизмами – слишком медленно (а люди просыпаются достаточно быстро). Можно рассмотреть изменение потенциала на мембранах вспомогательной нейросетью. Можно в режиме выделения тормозить ею нейроны, так что активироваться смогут только нейроны с двойной порцией активации. Или можно во время обычной работы дополнительно активировать нейроны, а в режиме выделения – прекращать поставлять помощь. Можно комбинировать активацию и торможение. Но мне более вероятным кажется использование времени активации в качестве варьируемого параметра. Так как посылка активации в природных нейросетях в режиме высокочастотного возбуждения происходит не единовременно, а множеством спайков, то нейрон, получающий двойную порцию активации (от двух цепочек), будет активирован примерно вдвое быстрее, чем в нормальных условиях. Вариантов реализации механизма выделения нейронов с двойной активацией тогда остается два. В одном варианте, нейроны цепочек шлют вдвое меньше спайков, чем обычно, и активируются только нейроны, входящие в обе цепочки. Мне более вероятным представляется случай, при котором отдельная нейросеть детектирует нейроны, активировавшиеся вдвое быстрее, чем обычно. Вдвое быстрее, конечно, после предыдущего такта нейросети «посылка к признакам». Тот же Бужаки говорил, что есть нейроны, очень точно реагирующие на время активации.
13) Ритмы мозга, электроэнцефалограммы
Различные высокоуровневые алгоритмы работы ИНС содержат различные последовательности активации нейронных контуров. Эти потворяющиеся последовательности в разных режимах – разной длинны. Во время активации некоторого нейронного контура, количество активных нейронов отличается от предыдущего шага. Все это вместе напоминает картину, возникающую при анализе электроэнцефалограмм, различные ритмы мозга. Наличие одновременно нескольких ритмов в мозге человека наводит на мысли о том, что мозг обычно одновременно решает несколько задач – например, прогнозирование и обобщение, поиск аналогий и запоминание.

Метрические пространства и ИНС

Среда, Февраль 10th, 2010

Читал в википедии новый стандарт С++, и по ссылкам плавно перешел к определению метрического пространства. В целях креативного продуктивного развлечения, решил скрестить образы метрического пространства и ИНС.
Сначала возникло: «Элементы множества – нейроны, расстояние между нейронами определяется как сила некоторого коэффициента в межнейронной связи… ». Но это в каком году надо было такое писать? Явно не в 2010. Поэтому вторая попытка:
Элементам метрического пространства ставятся в соответствие отдельные кластеры нейросети. Можно ставить не отдельные кластеры, а отдельные нейронные цепочки – так как последний кластер такой цепочки будет соответствовать все тому же «один кластер».
Расстояние между элементами пространства задается при помощи нейронных цепочек из одного или более кластеров
Архитектура цепочки, которая хранит информацию о расстоянии между объектами, может быть различной. Пусть А и Б – нейронные кластеры, соответствующие некоторым элементам множества, на котором определено метрическое пространство. Тогда расстояние может сохраняться (см. рисунок, нейроны на рисунке обозначают кластеры):


Варианты хранения информации о расстоянии между А и Б


Вариант 1. Есть кластер с тремя связями: от А, Б и от кластера с информацией о расстоянии. Для того, чтобы оперировать с информацией о расстоянии, могут применяться различные механизмы. Но для начала, кластер, обозначенный как «d=1.7», нужно активировать. В схеме 1 – активировать А и Б, далее служебный кластер частично активируется (нечеткое распознавание), на нем концентрируется внимание, он распознается полностью, и активирует кластер «d=1.7». Чтобы убрать нечеткое распознавание, можно пойти другим путем – снизить порог срабатывания.
Вариант 2. Чтобы убрать стадию нечеткого распознавания, добавлен отдельный кластер. Связь «вперед» должна также полностью активировать следующий кластер. Как видно, во всех этих вариантах соблюдается условие симметрии А и Б – так как они должны активироваться одновременно.
Вариант 3. В многозадачной ИНС кластеры, объединяющие А и Б, могут хранить не только информацию о расстоянии. Чтобы не путать такие кластеры, в данном случае добавлен кластер вопроса «d?». Для того, чтобы узнать расстояние, нужно активировать кластеры обоих объектов и кластер вопроса о расстоянии. Нечеткое распознавание не нужно.
Вариант 4. То же, что и в пункте 3, но расстояние хранится не в одном кластере, а в цепочке – в данном случае, цепочке знаков, которые можно преобразовать в число.

В вариантах 1-2-3 кластер «d=1.7» мог соответствовать последнему кластеру цепочки, похожей на вариант 4, которая кодировала расстояние побуквенно. Для обработки такой цепоки нужно умение счета, умение сравнивать числа на величину и т. д. А можно добавить такую возможность в ИНС на базовом уровне, где за операции с числами будет отвечать интерфейс к калькулятору. Тогда нужно меньше нейронов (один кластер вместо цепочки), и вариант 4 не нужен.

Кстати, между нейронами показываются стрелочки – эту функцию можно отключать через контекстное меню ради ускорения прорисовки больших количеств нейронов.

Запоминание повторений

Пятница, Февраль 5th, 2010

Пусть некоторый сигнал поступает постоянно. Например, «АААА». Рассмотренные схемы на такой ввод будут запоминать каждое вхождение признака, что может быть избыточно в некоторых случаях. Не во всех. Например, некоторое правило может срабатывать только на четвертое появление признака. Тогда к четвертому появлению признака можно привязать более точное прогнозирование, и т. д. Поэтому в некоторых случаях, нужно заносить все вхождения признака и оставлять исходную цепочку. Но в некоторых случаях это может быть излишне. Например, может быть достаточно признака «пошел повтор признака А». Решение о том, что выгоднее, должна принимать ИНС на основе вычисления приоритета – связи каких высокоуровневых цепочек оказались более востребованными.
Вместе с признаком «пошел повтор сигнала А», логично добавить и дополняющий к нему признак «повтор сигнала А прекращен».
Признаки типа «пошел повтор сигнала А» могут заноситься в цепочку памяти периодически – на порядок реже, чем встречается А. Например, на каждую десятую встречу исходного признака. Это экономит нейросети множество ресурсов. Для нормальной работы прогнозирования и других механизмов, может понадобится, чтобы при повторной прозвонке исходной цепочки, после активации такого высокоуровневого признака, он бы оставался в активном состоянии в течении нескольких циклов. До встречи признака «следует прекратить активацию» или в течении некоторого срока. Такие высокоуровневые признаки могут выделяться гиппокампом.

Аналогом высокоуровневого признака «обнаружен повтор» может выступать периодическое занесение в память распознающей цепочки из нескольких признаков. Например, цепочка из 10 повторяющихся признаков. На большую длину она не растет. После распознавания всех 10 признаков, очередной распознающий кластер ничто не тормозит, он заносится в память. Со следующего цикла эта же цепочка начинает запоминание с самого начала заново. Разбивка каждой цепочки на максимум 10 элементов может быть выгодной и в других случаях. С биологической точки зрения, короткие цепочки реализовать легче, чем единую неразрывную цепочку по всему гиппокампу.

За счет усложнения возможностей работы обычных цепочек, можно получить нечто среднее между запоминанием одного признака «встречен повтор» и запоминанием всей исходной цепочки. Для этого нужно, чтобы распознающая цепочка работала медленнее, чтобы на переход к следующему кластеру (на распознавание) требовалась бы активация нескольких низкоуровневых признаков.

Прогнозирующие связи

Суббота, Январь 23rd, 2010

В самом мягком варианте, прогнозирующие сигналы распространяются по уже рассмотренным цепочкам памяти, а также вверх по обобщающим связям. Но тянет на порядок повысить возможности. Например, хочется иметь возможность:
1) Создавать прямые прогнозирующие связи между нейронами, не дожидаясь выделения соответствующей высокоуровневой цепочки. Кроме создания самой связи, это дает возможность прогнозировать на много циклов вперед сразу, не дожидаясь прохождения подпорогового сигнала по всей цепочке.
2) Кроме возможности прогнозирования далеко вперед по времени, сделать такое прогнозирование как можно более точным
Рассмотрим пункт 1. Как обычно, все важные события запоминаются и заносятся в цепочку памяти. Дополнение к ранее описанным режимам работы: от всех признаков, которые встретились не далее, чем N циклов назад, создать прогнозирующие связи на все признаки, которые встретились в данном цикле. (N для начала возьмем небольшое, порядка 15, а затем покажем, как его увеличить без значительной деградации производительности).
Такой алгоритм по возможной топологии связей между кластерами сразу на порядок увеличивает возможности ИНС. (Пока рассматривается только топология, без анализа влияния таких связей на активацию нейронов). Такие ИНС приближаются по возможностям к ИНС с постоянной пластичностью нейронов. Почему? Потому, что в ИНС с постоянной пластичностью нейронов все равно будут усиливаться только те связи, которые попали в некоторый интервал N – те же, что и тут. Но в ИНС с пластичностью связей будет много таких связей, которые никогда не будут активированы – а тут создаются связи, которые в уже правильно «сработали» и «закрепились». Второе преимущество – в ИНС с пластичностью связей много полезных связей может быть пропущено, а тут они создаются гарантировано.
Видно, что таким алгоритмом будет создаваться очень много связей, большинство из которых малополезны. Их можно и нужно будет удалять после переоценки их важности через некоторый период времени. Формула оценки необходимости удаления будет включать в себя количество правильных срабатываний связи (удачное прогнозирование), возраст связи (молодой связи с небольшим количеством срабатываний надо дать шанс проявить свои полезные качества), параметры нейронов отправки и назначения и важность связи в их контексте, эмоциональный фон значимости. Кроме того, вспомните про среднее значение в несколько тысяч связей у нейрона – есть куда расти.
Но между двумя произвольными признаками уже может быть связь – тогда надо использовать уже существовавшую. Причем, она могла создаваться для работы на других временных задержках. Как повысить точность? Так как имеем дело с ИНС, то возможен любой беспредел. Пусть связь будет содержать информацию о N циклах. Эта информация будет хранить данные о вероятности срабатывания нейрона назначения за данный цикл, отстоящий на некоторое количество шагов от цикла возникновения сигнала. Очень похоже на ТРФ.
Коэффициенты необходимости и достаточности уже рассматривались. Пусть iє[0; N] и А[i] – вероятность Активации нейрона назначения за цикл, отстоящий на i+1 шагов после активации нейрона отправки (плюс один цикл – смысл в том, что в текущем цикле, который может отстоять на 0 шагов от цикла активации, вычисляется вероятность, а вычисленное значение переходит для обработки в следующий цикл). Так как за i шагов нейрон отправки может сработать не один раз, то говорится не «отстоящий на i шагов от _последней_ активации» – а просто активации.
Соответственно, значения коэффициентов массива А[i] должно вычисляться так:
* при активации нейрона-отправителя, сигнал пускается по внутренней цепочке массива коэффициентов прогнозирования. Тут одна связь похожа на целую нейронную цепочку в ИНС, которые рассматривались ранее. В ЕНС, это могут быть различные механизмы отложенного запуска химических реакций.
* при активации нейрона назначения, пересчитываются вероятности для всего массива: если сигнал отправки дошел до некоторого элемента массива – то для этого элемента вероятность увеличивается, для всех остальных – уменьшается.
Что, если хочется не ждать все i циклов, а получить значение прогноза сразу?
Пусть iє[0; N], а Н[i]=1-А[i] – статистическая вероятность того, что нейрон назначения НЕ сработает в цикл, отстоящий на i шагов от активации нейрона отправки.
Пусть j циклов назад, jє[0; N], нейрон отправки был активирован, и других активаций не было. Вероятность того, что за оставшиеся циклы от j до N нейрон назначения также НЕ будет активирован будет П = Произведение( Н[i] ), iє[j; N]. Тогда вероятность того, что сработает хоть раз – (1-П). Ожидаемое количество активаций нейрона назначения С = Сумма( А[i] ), iє[j; N].
Если за время, меньшее N, нейрон отправки был активирован несколько раз, то произведение П следует считать для каждого из сигналов, а потом их перемножить. Сумма всех А[i], iє[j; N], для всех j, даст прогнозируемое количество активаций нейрона назначения. Кто учил теорвер, подскажите точнее :).
Величина N – небольшая. Для больших интервалов прогнозирования, нужно использовать признаки, образы и цепочки памяти, которые работают с большим масштабом времени. Например, полученные в результате обобщения, или в результате выборки по некоторым признакам.
Но можно рассмотреть вариант увеличения интервала прогнозирования без увеличения длины массива коэффициентов прогнозирования. Для этого нужно, чтобы элементы массива отвечали за интервалы времени большие, чем один цикл. Для того, чтобы сохранить баланс точности и длины прогнозирования, предлагается первым элементам массива ставить в соответствие по одному циклу, и лишь после достижения некоторого количества циклов увеличивать соотношение «циклов на элемент массива».

Скорость работы ИНС, MapReduce как аналог нейросети

Суббота, Ноябрь 28th, 2009

Сильно ускорить работу интеллекта традиционными компьютерами не выйдет из-за квантовой природы окружающего мира. Так как любой квантовый объект в общем виде может взаимодействовать с любым количеством других объектов, нужны вычисления, экспоненциально усложняющиеся с ростом размерности задачи.

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

За счет игнорирования слабых связей, при N нейронах, нужно создавать не О(N*N) синапсов «все нейроны соединены со всеми», а намного меньше – у человека около (10^4)*N, где N составляет миллиарды. За счет этого же игнорирования, можно активировать не все нейроны одновременно, а лишь небольшую часть – это тоже экономия на порядок.

В общем виде, при анализе некоторого процесса, интеллект должен постоянно производить сопоставление этого процесса со всеми знаниями, которыми он уже обладает. Так как крутейшая оптимизация уже проведена – вместо N*N связей используются только значимые, и их относительно немного, то уж эти актуальные связи точно придется обрабатывать. Так называемый ассоциативный поиск, который производят нейросети. Кроме поиска, это может быть и прогнозирование – учет всех ассоциаций от данного образа с учетом развития времени. Неважно, как это называть – важно то, что при анализе всего _одного_ процесса или явления, нужно одновременное сопоставление его со всей памятью. Это сразу накладывает ограничения на скорость мышления примерно до человеческого уровня, так как все ресурсы задействуются для решения всего одной задачи.

Аналогичный процесс наблюдается при работе поисковых систем типа google. Во время построения индекса, поисковику приходится агрегировать информацию касательно всех связей некоторого слова – собирать все страницы мира, содержащие заданное слово, затем сортировать полученный список. Тут отдельное слово или отдельная страница выступает аналогом отдельного нейрона. Гиперссылки – аналог межнейронных связей. Данный алгоритм (map reduce – http://labs.google.com/papers/mapreduce.html / http://ru.wikipedia.org/wiki/MapReduce ) универсален, и тем же google используется в тысячах задач. MapReduce – аналог работы нейросети. Шаг «map» – это аналог прохождения по всем нейронам, и создание наборов «нейрон отправки сигнала, нейрон назначения сигнала, уровень сигнала». Например, «нейрон отправки»=«страница с url=xxx». «Нейрон назначения»=«содержит слово Y». «Значение активации» = «рейтинг слова на странице». Затем происходит шаг «reduce»: для всех нейронов назначения, происходит «суммирование связей и сигнала». Например, создается «нейрон»: данное слово содержится в таких-то документах, с такими-то рейтингами.

Еще один пример, из google maps: «нейрон отправки»=«географический объект с названием Х» (фирма/дом/дорога), «нейрон назначения»=«область с координатами=Y». После шага «reduce» получается «нейрон», который имеет связи со всеми объектами, которые находятся по заданным координатам (точнее, в заданной области).

Сейчас google выступает аналогом нейросети, где нейросеть читает все доступные через Интернет документы, хранит почти все связи между ними, а отдельные части нейросети хранятся в специализированном сжатом виде. Например, часть нейросети, знающая url, хранится в виде строк, а не нейронов, что на три порядка эффективнее. Часть нейросети, знающая приоритет страницы, хранится в качестве четырехбайтового или восьмибайтового числа, что на два порядка эффективнее. Часть нейросетей заменены специализированными и быстро выполнимыми алгоритмами, на основе вариаций того же MapReduce, моделирующего работу нейросети. Например, нейросети со знанием изображений выделены в одну подсистему, со знанием навигационной информации google maps – в другую.

При этом, отдача результатов поисковиком – это аналог всего нескольких циклов работы нейросети, аналог мгновенного воспоминания, с выдачей сформированного образа человеку. Если поисковый запрос содержит несколько слов, то аналог работы поисковика в нейросети – это посылка сигналов от всех слов-нейронов в запросе. «Нейроны» страниц суммируют все пришедшие сигналы с нейронов-слов с учетом рейтинга. Страницы, «потенциал действия» которых в результате суммирования максимален, выводятся в поисковый ответ первыми.

Когда google добавляет всего пару «тактов работы нейросети» в отдачу результатов поиска, все радуются. Например, добавили такт, когда слово посылает сигналы не только на страницы, на которые оно входит, но также и на «нейроны» других словоформ, а уж те в свою очередь шлют сигналы страницам – все радуются новому качеству поиска.

Я сомневаюсь, что можно придумать что-то эффективнее google без применения квантовых компьютеров. Но google только на пару тактов своей «нейросети» – на один поисковый запрос – создает трафик в сотни мегабайт. Если не хочется мириться с ограниченностью google, а хочется иметь ИИ, то нужно будет сделать две вещи: 1) унифицировать данные до формата нейросетей – чтобы разные части ИНС могли более свободно обмениваться информацией, а не работать в рамках ограничений частных реализаций алгоритмов MapReduce, пусть бы частных случаев были сотни. 2) Позволить делать «нейросети» не пару тактов, а работать все время. Уберем требование, чтобы ИИ знал весь Интернет на память, но увеличим на три порядка требование к памяти после перевода на нейросеть – получим все тот же трафик в гигабайты при только одном такте нейросети. Что приводит к все тем же требованиям по быстродействию, которые описаны выше.

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

Можно ли увеличить на порядок скорость работы, заставив нейросеть одновременно анализировать не один процесс/явление, а множество? Это затруднительно по следующим причинам. Чтобы достичь качества моделирования, как и при одном процессе, нужно будет создавать в общем случае множество контекстов моделирования. Например, моделируя разговор, нужно помнить контекст – модель собеседника, модель разговора, прогнозировать развитие событий. Если моделировать много разговоров одновременно, то возникают задачи типа такой: «в контексте вычислений 1, машина поехала налево, в контексте 2 – направо. В контексте 1 она врезалась, и машина слева находится в перевернутом состоянии, в контексте 2 машина слева еще едет направо». Это ведет к взрывному росту информации, которую нужно хранить и моделировать. В общем виде контекст затрагивает всю нейросеть. В нейросетях за единственный контекст отвечает единственный потенциал действия у каждого нейрона. Каждый нейрон можно было бы наделить несколькими копиями потенциалов действия, так что одна нейросеть могла бы думать одновременно над разными процессами. При этом, в сравнении с просто еще одной копией нейросети был бы выигрыш в том, что многие данные типа общих связей и параметров нейронов общие и не дублируются. А дублируется лишь небольшая часть ИНС, касательно потенциалов действия. Но это ускорение не на порядок, а лишь в разы, причем в пределе дальнейшее линейное ускорение работы требует линейного роста объемов памяти. И исследование такой ИНС пока трудно: возникают проблемы синхронизации, когда создается связь из-за информации в одном из контекстов. Хотя такие ИНС могут применяться для случаев, когда обучение не нужно или ограничено – в разных узкоспециализированных областях.

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

В некоторых моделях нейросетях (типа моделей Шуклина), контекст информации о выполнении создается «на лету». Аналог – и работа современных поисковиков. Но такие ИНС на задачах постоянно работающего многоитеративного широкого ассоциативного поиска при активации значительных количество нейронов будут медленнее, так как производится лишняя работа по созданию контекста, который в других моделях нейросетей никуда не пропадает и присущ нейронам. Так, если бы вы разговаривали с google, а не задвали бы один запрос, google бы заманалась создавать трафики в десятки гигабайт. Потому, что вместо пары активных слов «отправки сигналов» нужно было бы создавать трафик от сотен образов, которые активировались с предыдущих разговоров, и суммировать сигналы на значительном проценте «нейронов».

Можно сделать предположение относительно облика поисковых систем будущего. Это нейросети, выполняющие ограниченное количество тактов на запрос, но ограничение значительно выше современного. Данные предельно унифицированы с нейросетью, но специализированные данные типа гиперссылок по прежнему хранятся в более экономичном виде. Нейросеть хранит примитивные обобщения, типа «тут слово замок употреблено в контексте строения». Нейросеть содержит классификации, так что на запрос «строение с названием Х» может найти ответ в виде текста «данный замок называется Х», так как знает, что «замок=строение». Нейросети можно задавать вопросы, информация о которых и результат обработки которых сохраняется для следующих запросов. Такая поисковая система предположительно должна быть создана после экспериментов в области нейронных вики-движков, как описано в блоге.

Оптимизация ИНС

Воскресенье, Ноябрь 15th, 2009

Оптимизация будет осуществляться при выпуске промышленных версий, или когда будет не хватать памяти. Желательно автоматически.
Нормализация по кластеру. (далее…)

Нелокальные воздействия и нейросети

Вторник, Ноябрь 10th, 2009

Имеется в виду нелокальность в смысле квантовой физики. Квантовая запутанность устанавливается между любыми взаимодействующими объектами. Одна из основных трудностей при создании квантовых компьютеров – невозможность устранить квантовое запутывание ячеек квантового компьютера и окружающей материи на время, необходимое для проведения вычислений – даже хотя бы на доли секунды. (далее…)

Нейронная энциклопедия

Воскресенье, Ноябрь 8th, 2009

В продолжение «№66 БД промежуточного типа» ( http://neurocod.net/blog/tag/2009/01/№66-бд-промежуточного-типа )
Проект – wiki-подобный движок, в котором внутренний формат хранения информации – нейронная сеть. Нейронный сети – более универсальный формат, чем текст. (далее…)

Шишковидная железа и интуиция

Воскресенье, Ноябрь 8th, 2009

В дополнение к предыдущему сообщению «Тренажер интуиции Норбекова» ( http://neurocod.net/blog/tag/2009/11/тренажер-интуиции-норбекова ). Цитата из книжки «Где зимует кузькина мать, или как достать халявный миллион решений» Норбекова:

Как делаются…
Откуда берутся…
Открытия в науке – способ создания приключению для своей (далее…)

Тренажер интуиции Норбекова

Воскресенье, Ноябрь 8th, 2009

Однажды я купил следующее устройство: http://tintuit.ru/tin/ .

На тот момент я был атеистом-агностиком. Что же меня заставило обратить внимание на прибор? (далее…)