Archive for Июль, 2009

EDLUT

Понедельник, Июль 27th, 2009

Ух как стараются, изо всех своих интернациональных сил )) http://code.google.com/p/edlut/ The EDLUT (Event-Driven simulator based on Look-Up-Tables) is an advanced tool that allows splitting neural network simulations.

Универсализация нейронных цепочек

Четверг, Июль 23rd, 2009

Уже говорилось, что одиночные сенсорные нейроны также лучше заменять унифицированными кластерами. Цепочки памяти и распознавания также имеют одинаковые кластеры. Не сделать ли их одинаковыми и в остальных проявлениях?

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

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

Превращение распознающих цепочек в запоминающие на каждом шаге распознавания позволяет значительно экономить память, так как новые цепочки пристраиваются уже к созданным, а не строятся заново.

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

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

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

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

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

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

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

  1. //В мозге Б1, было несколько типов кластеров:
  2. //Time Chain Element of Brain B1
  3. class TceB1: public NeuroCluster<neuronB1, linkB1>
  4. {
  5. public:
  6.         enum Type
  7.         {
  8.                 GTC = 0|NeuroTypeInfo::CanMemory,//Gnostic Time Chain Cluster
  9.                 STC = 1|NeuroTypeInfo::CanMemory,//Sensor Time Chain Cluster
  10.                 LTC = 2,//Long-term memory Time Chain Cluster
  11.                 OTC = 3,//Operative Time Chain Cluster
  12.                 RTC = 4,//Root memory Time Chain Cluster
  13.         };
  14.         QString getTypeName()const;//для просмотра в Нейролаборатории
  15.         …
  16. protected:
  17.         Type m_type;
  18. };
  19.  
  20. //В Б2, все стало намного проще:
  21. class TceB2: public NeuroCluster<neuronB2, linkB2>
  22. {
  23.         …
  24.         bool m_bCanMemorize;
  25.         bool m_bCreatedAtSleep;
  26.         bool m_bIsSensor;
  27.         bool m_bUnused;//на всякий случай добавлено смещение – для оптимизации скорости доступа к памяти
  28.         …
  29. };

Объекты цепочки памяти

Вторник, Июль 21st, 2009

До появления виртуальных внутрикластерных связей было достаточно одних нейронов. С появлением виртуальных связей, возникла необходимость в объекте «нейронный кластер». Кроме хранения указателей на нейроны кластера, объект кластера использовался для хранения другой общей информации – например, типа кластера в цепочке памяти, общего комментария, …

Теперь в ИНС нужно было содержать указатели на следующие кластеры:
• первый кластер цепочки всей памяти, которая добавлена за «день» – чтобы с нее начинать сон
• последний кластер той же цепочки – чтобы при запоминании добавлять новые кластеры к ней
• последний кластер формируемой распознающей цепочки (ГВЦ), чтобы присоединять новые кластеры к нему

Со временем, ситуация усложнилась. Необходимо также стало хранить информацию для присоединения нейронов нечеткого распознавания на длинных дистанциях («№91 Нечеткое распознавание и поиск в ИНС Б2» ( http://neurocod.net/blog/2009/2009/04/№91-нечеткое-распознавание-и-поиск-в-ин )). Это привело к созданию объекта «цепочка памяти», которая может быть как общей памятью, так и выделенным обобщением. Она хранит список всех кластеров, составляющих эту цепочку, а также информацию для создания и присоединения нечетких распознающих цепочек. В дальнейшем, все такие объекты «цепочка памяти» можно будет просматривать в Нейролаборатории в отдельном окне.
И объект кластера, и объект цепочки наследуются от шаблонного класса NeuroCluster:

  1. template< typename _neuron, typename _link>
  2. class NeuroCluster
  3. {
  4. public:
  5.         typedef typename NLBrain<_neuron, _link> Brain;
  6.         typedef typename Brain::neuron neuron;
  7.         typedef typename Brain::link link;
  8.         virtual __forceinline neuron* getNeuronByType(NeuronType ntype)=0;
  9.         virtual bool isActiveClusterInAnyCycle()const=0;
  10. };
  11.  
  12. //Например:
  13. class TceB2: public NeuroCluster<neuronB2, linkB2>
  14. {
  15. public:
  16.         neuron* nIn     ;//вход с признаков
  17.         neuron* nDown   ;//вниз на признаки
  18. };

Для объекта «цепочка памяти» NeuroCluster удобен тем, что вводит синонимы «neuron» и «link».

Пакет обновлений к последним заметкам

Вторник, Июль 21st, 2009

По работе с множествами нейронов. Забыл упомянуть главное, что подразумевал с самого начала, и ввиду очевидности забыл упомянуть – такие операции должны быть доступны для сознания ИИ. То есть, соответствующие операции должны быть доступны через активацию соответствующих нейронов действия. Я не знаю, закладываются ли такие программы у человека с рождения, или такие НС формируются путем обучения. Считаю, что глобальные НС управления типа контуров закладываются генетически, трудности могут возникнуть только с умением их использовать. Люди, которые не используют вызов таких операций над множествами, например, в школе, разучиваются и утрачивают способность быстро обучаться.

Кроме доступа к операциям через эффекторы, есть дополнительные отличия (от повтора про те же по сути операции над множествами при, например, выделениях совпадений во время сна). Упомянул про сравнение множеств А и Ф(А), но явно не говорил, что Ф(А) может быть результатом работы не за один цикл. Тогда сохранение сравнений А и Ф(А) экономит время на получение аналогичных результатов в будущем.

Теперь про удаление связей и кластеров из цепочек памяти. После того, как в некоторой нейронной цепочке многие кластеры утратят базисы ввиду распознавания признаков более высокоуровневыми признаками, и кластеры с пустыми базисами будут удалены, произойдет уплотнение цепочки, она станет более широкомасштабной по времени. После этого станет доступен прозвон и выделение обобщений на больших дистанциях. Альтернативный путь – создавать новую ВЦ, в которую входят только высокоуровневые признаки.

Теперь про роботизированного военизированного пожирателя трупов. По-видимому, аж на аминокислоты разложить не выйдет. Выйдет глубже, хе-хе )) Ура, товарищи! Эмергенция избежна все меньше!.. :))) Если подтвердятся предположения людей с этого форума http://www.berkem.ru/interesno-kak/ :

Mukaddam1 Says:
Июль 16th, 2009, 13:58
бРАТВА! не ебите мозги ни себе ни людям! Это известная довольно давно технология, на 100 % или спизженная в СССР или купленная на Украине, и даже знаю, кто продал. Она разрабатывалась для автономной системы жизнеобеспечения станции Мир, работает на ЛЮБОЙ органике, выдавая электроэнергию и парогазовую смесь. Подобные же штуки делают в израиловке, НА Украине и у нас ин-т Курчатова в мск. А сам изобретатель делает это еще круче, вплоть до автомобильного двигателя на мусоре и энергоустановки для коттеджа, но живет в полной жопе. Его и убивали уже, а жив ли сейчас – не знаю.

arc Reply:
Июль 16th, 2009 at 14:43
Суть процесса в общих чертах можно? Есть процесс переработки органики анаэробными бактериями, получается смесь газов, включая метан, различные оксиды серы, азота, немного водорода (все горючие). Дальше или дом обогревать, електричество вырабатывать и т.д. Но сам процесс очень длителен и требует огромного бака – накопителя отходов. В данном случае – суть процесса не ясна.

Mukaddam1 Reply:
Июль 16th, 2009 at 19:27

Это высокотемпературный пиролиз, но с обработкой рабочей зоны плазмой, за счет этого достигается 100% разложение органики без образования диоксинов и фуранов, которые есть бич любого температурного процесса, что сжигания, что крекинга. А теплотворная способность того же мусора – не хуже чем у бензина. Универсальный процесс, годится и для мусоропереработки. и для перегонки нефти, и для выплавки металлов, и для других целей. Автор – гений со склочным и мерзким характером и крупными жидовскими заморочками (жаба невъебенная душит дяденьку, на чем и попадалово постоянное). Жив сейчас или нет – не днаю, и под кем, если жив – тоже ХЗ. Убивали его, но выжил. А меня с партнерами круто и изящно вывели из игры, посадив на крупные бабки свершенно официально. Так на Урале и в Сибири не состоялось энергетики на мусоре. кот орый есть неисчерпаемое топливо 21 и22 ит.д. веков, ибо гавно будет всегда, пока жив человек…

373 Reply:
Июль 16th, 2009 at 21:24
Диоксины, они какбэ из хлорорганики образуюццо, а мы тут за трупы говорили)
В которых 80% воды, а из того, что осталось, больше половины костей) Как этим плазмогенератор запитывать? За счёт чего выкипятить 50-70 кг воды?
>плазмокрекинг нефти
- это жесть. получаем сажу, водород, метан и чуток ацетилена – кому это нахер надо?
Сцылка грамотная на работы есть?

Paradoxe Reply:
Июль 17th, 2009 at 17:32
Мож там такая ВЫЖИМАЛКА есть – сходи в ванную посмотри. Бойцы в войну другое придумывают – но это к БаБ

Вот так-то вот – была русская космическая станция «Мир», стал американский наземный военный пожиратель трупов! Амеры жгут (трупы)!

В биореактор, на аминокислоты!

Вторник, Июль 21st, 2009

«Пентагон профинансирует разработку роботов-людоедов» http://www.lenta.ru/news/2009/07/15/cannibals/

EATR получает энергию от теплового двигателя, разработанного компанией Cyclone Power Technology. Он вырабатывает энергию за счет «внешней камеры сгорания», которая нагревает воду в замкнутой системе, из-за чего генерируется электричество. Fox News подчеркивает, что термины «биомасса» и «другие органические источники энергии» не обязательно ограничиваются растительными материалами, поскольку трупы людей и животных содержат большое количество энергии и могут находиться в местах ведения боевых действий.

Удаление кластеров из нейронных цепочек памяти

Вторник, Июль 21st, 2009

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

У кластера может не остаться признаков в базисе по двум причинам. По причине удаления связей: удаления связей в результате забывания, оптимизации памяти, распознавания признака более высокоуровневым и понижения приоритета на его запоминание. И по причине создания кластера, но не добавления к нему ни одного признака. Такое может случиться, например, при прозвонке с «разрывом», когда в некоторый такт у двух цепочек не оказалось общих элементов, а кластер был создан. Последний случай можно рассматривать как недостаток алгоритма создания пустых ненужных кластеров, но все же лучше учесть и его.

1) Если в гностической временной цепочке (ГВЦ) первый элемент содержит пустой базис, то такой кластер можно удалить. Первый кластер часто может иметь тип, отличный от типов кластеров оставшейся части ГВЦ. Например, первый кластер, распознающий только один признак, с информационной точки зрения дублирует исходный признак, и полезен лишь как линия задержки для отправки сигнала на следующий кластер. Тогда, тип кластера может указывать, что при активации такого первого кластера в ГВЦ заносить его в цепочку памяти не нужно. Если такой первый кластер потерял базис и будет удален, этот тип нужно не забыть передать следующему за ним кластеру.
2) Если кластер, последний в уже созданной ГВЦ, оказался с пустым базисом, то такой кластер можно удалить.
3) Если ИНС поддерживает работу на распознавание без линий задержки, то можно удалять и кластеры с пустыми базисами, расположенными в середине ГВЦ. (Естественно, удаление подразумевает соединение образовавшихся частей ГВЦ, расположенных до и после удаляемого кластера). Говоря иначе, кластеры с пустым базисом можно удалять, если для распознавания не нужно прохождение сигнала для задержки по пустым кластерам. Иначе, можно удалять, если линия задержки может нормально работать лишь с одним переходом по связи для большого количества циклов ожидания. Принципов работы устранения длинных линий задержки два: сохранение активации на время, большее одного цикла, и сокращение задержки между активацией кластеров во время прозвона благодаря «перепрыгиванию» через пустые элементы – тогда распознавание можно провести по памяти позже, во время ускоренного воспоминания.

Для последнего случая – когда линии задержки не нужны, все три пункта можно объединить в один: если кластер в ГВЦ потерял базис – его можно удалить. Более того, тогда пункт 2 больше не нуждается в уточнении «кластер в уже созданной ГВЦ» – даже если ГВЦ растет, и последний кластер, который скоро может оказаться далеко не последним, потерял базис, то его также можно удалять. Более того, все то же самое тогда распространяется не только на ГВЦ, но и на ВЦ остальной памяти, на любые ВЦ. Конечно, в случае образования длительных разрывов, к каждому кластеру полезно присоединять информацию о времени между наступлением событий, которую ИНС сможет использовать при работе.

Критика самоучителя игры на мировой шахматной доске

Вторник, Июль 21st, 2009

Книжка Переслегина «Самоучитель игры на мировой шахматной доске» интересная, но с самого начала бросаются в глаза ключевые несоответствия. (далее…)

ИИ, грабящий поисковик

Вторник, Июль 21st, 2009

Когда-то я пытался найти способ ограбить поисковую выдачу гугла. Например, можно было бы купить загрузку своего модуля на зараженные компьютеры. Как у распространителей спама – такой бизнес довольно распространен, не только спаммеры пользуются подобными услугами. Или периодически использовать легальные компьютеры единомышленников – например, по 5 запросов в день с каждого компьютера, 10 друзей – 18000 результатов в год.

Но теперь я узнал о Яндекс.xml ( http://xml.yandex.ru/ ) – до 1000 запросов в сутки с одного зарегистрированного IP. Для подпольного ИИ, можно заранее провести поиск по всем словам русского и английского языков. Правда, может понадобиться давать объяснения, почему приходят такие странные запросы. Для маскировки, можно использовать всё ту же маскировку по принципу «анти-АФАР». Распределение в пространстве – запросы делают боты с компьютеров разных людей. Распределение запросов во времени с каждого компьютера. Распределение по «направлениям» – порядок поиска слов можно менять и неравномерно распределять словарь между компьютерами. Заодно, делать в день менее 1000 запросов с одного IP. Хотя, ничего особо зазорного в такой деятельности не вижу (если только не знать про ИИ :) ).

Кот Леопольд

Понедельник, Июль 20th, 2009

Пишу специально для брата. Интересно, если бы авторов мультика про Леопольда немного почмырили (дней сорок – чтобы в подсознание прописалось поглубже), через сколько бы серий леопольдик выпустил бы кишки мышкам? )) (далее…)

Работа с множествами активных нейронов

Четверг, Июль 16th, 2009

Продолжение рассмотрения работы оперативных механизмов работы ИНС.
Рассмотрим некоторое множество активных нейронов А. Если в А входят все нейроны, активные в ИНС в некоторый момент времени, то такое множество можно называть контекстом (контекстом активации ИНС). Такое множество можно сохранить в «регистр»: в ИНС создать нейрон со связями на все активные нейроны, при активации нейрона регистра его связи должны активировать нейроны исходного множества с активациями, равными тем, что были на момент создания регистра. Такая операция довольно трудоемка. В ЕНС такие регистры, предположительно, могут работать на основе коммутации при помощи активаций в гиппокампе. Возможно, в ЕНС количество таких регистров ограничено знаменитым числом 7±2, причем, в каждом таком регистре сохраняется не весь контекст, а лишь небольшое количество активных образов.

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

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

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

Пусть имеется два регистра нейронов: А и Б. (Нейроны или кластеры А и Б, содержащие ссылки на бывшие активными в некоторые моменты времени нейроны). За один такт ИНС легко получить новые множества нейронов, а именно: (А объединение Б), (А пересечение Б), (А минус Б) (и соответственно Б минус А). Описание на мозгокоде: (далее…)