Archive for Ноябрь, 2009

Скорость работы ИНС, 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 бы заманалась создавать трафики в десятки гигабайт. Потому, что вместо пары активных слов «отправки сигналов» нужно было бы создавать трафик от сотен образов, которые активировались с предыдущих разговоров, и суммировать сигналы на значительном проценте «нейронов».

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

Как сделать свой суперкомпьютер

Пятница, Ноябрь 27th, 2009

Очередная хорошая статья Андрея Зубинского – наиболее ценимого мною журналиста Компьютерного Обозрения: «Неправильная SiCortex» http://ko-online.com.ua/node/43941

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

Основную идею дизайна машин SiCortex лучше всего пояснить с помощью анализа несложного уравнения:

Tрешения задачи = Tпроцессора + Tожиданий памяти + Tобмена.

Метафора АФАР при ведении расследований

Пятница, Ноябрь 27th, 2009

Если будут доступны сверхточные полиграфы, описанные М. Калашниковым, то инструмент, описываемый в этой статье, может и не пригодиться. Но идея АФАР применима и в других областях. Поэтому ознакомиться с применением может быть полезно в любом случае.
О принципах работы АФАР можно почитать тут: http://dxdt.ru/2007/11/26/836/
Мафия, сопротивляющаяся ведению расследования, обычно стоит в заведомо выигрышном положении. Следователь, ведущий расследования, известен, а преступная группа – нет. Преступная группа бывает намного более многочисленна. В случае устранения следователей, можно использовать сокрытие в пространстве и времени – следователей устранять в разное время, в разных местах, различными исполнителями. Даже при поимке исполнителей, они могут не знать своего заказчика, и тем более – стратегических целей своего заказа. Последняя схема позволяет бороться со следствием даже при наличии совсем небольшого круга осведомленных лиц. Такие лица – аналоги центральных процессоров, а исполнители – аналоги передатчиков АФАР.
Можно попытаться перенести принципы работы АФАР на сторону следователя. Схема может быть следующей. (далее…)

Аналогии – ЯО и ИИ

Пятница, Ноябрь 27th, 2009

Также опубликовано тут http://community.livejournal.com/ru_singularity/44096.html и тут http://transhumanism-russia.ru/forum/index.php?showtopic=1591

Что было бы, если бы ядерное оружие появилось во время, когда уже были бы развиты ракеты? Например, ракетостроение могло развиваться по требованию развития систем ПВО. Тогда, после испытаний ЯО, и накопления совсем небольшого количества ядерных боеприпасов, можно было бы ставить ЯО на ракеты и наносить первый удар без возможности его перехвата. Времени на обзаведение ЯО у других стран совсем мало.

(Как известно из истории, США не нанесли первого ядерного удара по СССР потому, что не были уверены в первое – доставке всех боеприпасов, второе – в том, что самая опытная, отмобилизованная и грозная армия СССР не откинет их за считанные недели до Ламаша, после чего они утрачивают возможности для нормальной войны на суше, и начинается многолетняя война через океан с неизвестным исходом).

Не возникнет ли аналогичного риска при создании систем ИИ?

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

Это все хорошо для тех, у кого есть ИИ. А если ИИ попадает к тем, кому и близко не нужна никакая Сингулярность? Зато есть деньги, аппарат насилия над учеными, контроль за компьютерной промышленностью… Некоторые методы контроля за научными исследованиями описаны в предыдущих заметках. Промышленность контролировать еще легче.

Тогда, не следует ли опасаться запоздалого появления ИИ у «не тех» людей? Все хорошо вовремя…

С другой стороны, и преждевременное появление опасно. Так как дает больше времени на монополизацию технологии до того, как технология сможет стать общедоступной. В контексте ИИ, общедоступность означает как минимум свободную продажу оборудования, способного при наличии нужного ПО сравняться с человеком в интеллектуальных способностях. Такое оборудование должно быть доступно и по цене, и по размерам и потребляемой электроэнергии. Для выполнения таких условий, после появления ИИ может потребоваться подождать несколько циклов развития процессорных архитектур. То есть – несколько лет. В условиях реакции властей, закон Мура для населения может перестать действовать. Я оцениваю сроки для остановки всемирного свободного распространения компьютерной техники не более, чем в 2 года – и то, лишь потому, что останутся нереализованные запасы товаров у людей, которые не контролируются напрямую.

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

До полноценной Сингулярности еще далеко… В случае появления ИИ, свободное развитие данной области будет приостановлено, перейдет к военным… Далее – стагнация, как с Космосом. Ракеты для доставки ЯО есть? И хватит. Чем лететь на Марс, сделаем часть населения продажными пидарасами, сосущими пиво. «Карнавализация» социумов продолжится… (Термин по Кургиняну). В таком сценарии, действительно, Сингулярности можно ожидать хоть до 2040, хоть и позже. Аналогично тому, как и сейчас все ожидают полета на Марс или хотя бы на Луну. Сильно ожидают? Как в фантастических фильмах, где есть только центральный правительственный ИИ, а население живет в трущобах.

После монополизации ИИ, развитие может быть существенно замедлено. Если сейчас субъектами могут выступать отдельные люди, то после монополизации, для работы с системами типа ВПК, законодательства и разворота общественного мнения нужны будут субъекты совершенно другого уровня. Те, которые смогут влиять одновременно на законодательство, военных и СМИ. Особенно, в условиях противодействия. Такие группы есть, но они как минимум антагонистичны обычному населению, а как максимум – научному прогрессу вообще. В дополнение к своим теперешним возможностям, таким группам легко заручиться поддержкой религиозных фанатиков, криминала и прочих.

В качестве борьбы за ИИ может выступать создание распределенных систем типа описанных тут «Метафора АФАР при ведении расследований» ( http://neurocod.net/blog/2009/2009/11/метафора-афар-при-ведении-расследова ), но при контроле за Интернетом со стороны противника и это будет проблематично. А при монополизации ИИ контроль за Интернетом будет несравним с теперешним. Я сомневаюсь в возможности развертывания подобных оппозиционных групп после монополизации ИИ. Я сомневаюсь в неоспоримой необходимости проведения исследований в области ИИ – хотя бы из соображений дать еще немного лет для свободного развития компьютерной техники и робототехники (датчики, двигатели).

ASSERTоподобные точки останова

Пятница, Ноябрь 27th, 2009

Обычные инструкции типа ASSERT, как и обычные точки останова, останавливают исполнение в отладчике. Нейронные точки останова останавливают работу нейросети в Нейроредакторе без прерывания программы. Но устанавливать однотипные точки останова после каждого запуска – ненужная рутина. Поэтому их можно перед запуском создавать программно. Но программное создание такой же точки останова, как и в интерфейсе Нейроредактора, которая может редактироваться через ГИП, не тривиально, и занимает несколько строк. Для некоторых стандартных случаев типа остановки каждые несколько циклов созданы функции-обертки. Но можно пойти еще одним путем – использовать упрощенные точки останова, которые не отображаются в интерфейсе, и которые невозможно изменить. Условно говоря – вызвать функцию типа maybeStopNeuroNet(bool) с условием проверки точки останова. Еще удобнее использовать макрос: если условие сработает – нейросеть остановится после завершения прохода по всем нейронам, а условие, которое сработало, будет выведено в журнал исполнения. Булевское условие можно писать любое, даже такое, которое не входит в список полей Д3, по которым только и работают обычные точки останова Нейролаборатории. Например, можно объявить локальную переменную, и по ней останавливать ИНС.
Еще один вариант – использовать QtScript, и код точек останова вводить в виде JavaScript в Нейролаборатории. Но этот способ требует существенного усложнения кода, и пока не нужен.

JIT и Нейролаборатория

Четверг, Ноябрь 26th, 2009

В теории, JIT можно применять для компиляции точек останова. Компилировать можно код итераторов вместе с кодом проверок условий. Может совмещаться проверка нескольких точек останова при прохождении одного нейрона или иного объекта.

Критерии лженаучности

Четверг, Ноябрь 26th, 2009

Цитата из http://m-kalashnikov.livejournal.com/239415.html :
Основа инновационного развития – наука. Только тоталитаризм сможет преодолеть кризис современной науки. Она скурвилась. Нынешниенаучные гранды по большей счастью не ищут новых смыслов и знаний, а заняты сохранением своей монополии, привилегий, а также удушением возможных конкурентов. Вместо того, чтобы смело искать новое и прорывное, официальная наука решила бороться со «лженаукой». Показательна в этом смысле судьба РАН: стать самой инновационным центром, проверять экспериментально (а не бумажно-теоретически) новые гипотезы – ни в какую. А вот научную инквизицию создать – за ради бога.
«Но если современная наука не производит смыслы/инновации/технологии, откуда же они тогда берутся? Ответ может показаться парадоксальным: функции креативного генератора взяла на себя лженаука.
Напомню, что основными признаками лженаучной публикации являются: (1) отсутствие ссылок на работы предшественников или необязательность таких ссылок, (2) стремление автора решать глобальные проблемы, научные или общественные, (3) склонность к необоснованной генерализации, (4) склонность к сенсационности, (5) отступление от общепринятого стиля научных публикаций, (6) игнорирование фактов, не укладывающихся в рабочую гипотезу автора. Давно подмечено, что публикации А.Эйнштейна по специальной теории относительности и работы Д.Менделеева по Периодическому закону отвечают всем критериям лженауки. Что касается А.Вегенера, автора концепции дрейфа материков, то он был прямо обвинен в шарлатанстве и незнании основ геологии…
«Лжеученые», берущие на себя ответственность не заниматься исследовательской работой, а делать открытия, встречаются среди ТРИЗовцев, методологов, экзистенциальных психологов, диалектиков, программистов, бизнесменов … даже в среде ученых нет-нет, да и появится индивидуум, который набрасывается на тихую, не приносящую никому вреда проблему и рубит ее под корень. Другой вопрос, что вся эта деятельность существует как бы вне канонического пространства науки, практически не оплачивается и очень плохо утилизируется.
Я бы сказал, что задачей государства является создание институтов, способных доводить до технологического уровня научные результаты, полученные вне официальной научной среды… Поэтому «задачей момента» является интенсификация лженауки, ее индустриализация.
Бессмысленно искать результаты там, где их ищут все. Еще более бессмысленно их там, где их нет и быть не может…»

О роботах (психологическое)

Среда, Ноябрь 25th, 2009

В заметке «О роботах (психологическое)» http://ko-online.com.ua/node/46087 люди боятся роботов. Наверное, потому, что старые. Я не помню, чтобы при первом просмотре хоть что-то почувствовал :). Может потому, что сам разработчик?
Перед массовым внедрением роботов может понадобиться подождать, пока новые поколения займут основные позиции в обществе. Те, кто еще в детском садике смотрел Робокопа :).

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

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

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

Транссиб и Лукоморье

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

Лукоморье – проект, созданный в целях коррекции концептуальной среды общества в направлениях привития нигилизма. У них почти в каждой статье ЧСВ от хихиканья зашкаливает. Так, в ветке про Транссибирскую ЖД они умничали, что в случае войны китайцы ее одной бомбочкой раздалбливают, потому ее строили тупые совки. Конечно, сами умнее всех. Не знали, что транссиб создавался для целей:
1) Военных. Даже в условиях современной войны, подготовка к вторжению не проходит одномоментно и за один день. Даже если не брать во внимание период повышения политической напряженности и доклады разведчиков, чтобы оборудовать базы на границе, перекинуть и сконцентрировать войска, нужны недели. За такой срок по ЖД можно успеть переправить тысячи вагонов. Иным способом не вышло бы доставить такие грузы вообще никак. Самолетов бы не хватило (и топлива к ним), корабли – плывут долго, а зимой на севере лед. Машины тонут в непроходимых дорогах, проложенных по тысячам километров необжитых территорий.
2) Для повышения связности страны. Это устраняет угрозу отделения дальних областей. По Переслегину – «повышается внутренняя связность». Если внутренняя связность становится меньше, чем внешняя, на границе – то периферии становится выгоднее торговать с заграницей, а с течением времени – полностью переключиться на нее. Можно сказать, что Дальний Восток еще не отошел китайцам только из-за тех «тупых совков», которые строили эти ЖД. Этот пункт даже важнее военного, так как на случай войны у России есть ЯО.

И т. д. Есть целые научные труды по обоснованию необходимости прокладки ЖД. Данным вопросом заинтересовались еще при царе, когда анализировали причины плохих успехов в войнах, и пришли к выводу, что из-за расстояний Россия уступает в скорости военной мобилизации. Начали строить. Поняли, что война с Японией неизбежна. Когда годами готовились к Русско-Японской войне 1904го года, нам не хватило года для окончания постройки этой ЖД. Японцы сумели построить свой флот на год раньше, начали и выиграли войну. Каждый такой ход в геополитических шахматах занимает годы.

Но лулзы с лукоморья умнее всех. Перднули в свою вики – все, тупые совки строили ЖД от ФГМ. Я презрительно отношусь и к тем, кто пишет лукоморье, и к тем, кто его читает.