en ru

Проект от 84.201.239.*

1

http://www.gotai.net/forum/Default.aspx?postid=50106#50106 - 07.05.2011

доброе время суток
буду сохранять анонимность, хотя деанонимизации как явления я не чураюсь - придёт время раскроюсь. я веб-разработчик, руководитель коммерческой организации, работающей в своей области, которая начиналась как сброд из вольно шатающийхся энтузиастов разного уровня и разной степени занятости.. на своём веку я потерял одну такую команду по неосторожности, но нашёл силы и собрал новую. есть деньги, есть ресурсы (сервера и т.д.) и коммерческие наработки в области web-технологий, но я этого ничего не дам просто так (позже объясню, почему). есть богатый опыт в области анализа кода, низкоуровневой оптимизации, языками программирования разных уровней (в совершенстве владею 3.5 из них - ASM, C/C++ и PHP). уже где-то 6 лет интересуюсь проблемами высокого AI, было много попыток организовать локальную группу для создания ядра сильного AI (преимущественно просто умные люди, компьютерные лингвисты и программисты), но из-за расхожести взглядов, отсутствия одной цели и прочих важных и неважных, группа переформировывалась.

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

из существенных результатов локальной группы в области AI - только базовая модель ядра AI с одним недостатком. если его закрыть (нужно решить не через implementation, а через suggestion), то можно двигаться дальше. модель хороша тем, что от неё есть практическая польза и она сама по себе может стать открытым проектом. если не выгорит с этой командой, то другие группы смогут воспользоваться нашими результатами. это тожу и плюс, и минус (позже объясню, почему).

зачем я всё это говорю? чтобы привлечь к себе внимание. в открытых проектах и в командной работе важна открытость идеи и целей, а не открытость персоналий. буду честным, это первый проект, в котором я бы хотел участвовать, не зная никого лично. безвоздмездная помощь на программерских форумах и допилы GPL-проектов не в счёт, потому как я нахожу в них изрядную долю эгоизма. на форумах я помогаю другим, чтобы потешить своё чувство собственной важности (косвенно другие получают ресурсы), а участие в main-stream проектах обусловлено только желанием расширить функционал под себя. так или иначе, я считаю, что множественная дилемма о заключенных работает и в ней я занимаю свою стратегию (личностный эгоизм с выработкой побочных ресурсов). я не говорю, что я крут в какой-то области, нет. и я не говорю, что я альтруист до мозга костей. и я знаю, что таких, как я можно завлечь только чем-то материальным. под материальным я понимаю выработанные концепции, чье-то время, ресурсы (процессорное время, память, энергия), технологии, наработки и т.д. поэтому я сам готов в разумных пределах жертвовать что-то из этого списка другим, чтобы получить что-то в замен.

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

у меня есть возможность обеспечить вас вычислительными мощностями, но делать я этого не стану. потому что это превратится в нахлебничество, раз. эти мощности сейчас приносят деньги, т.е. арендуются клиентами, два. другими словами, мне придётся достать эти деньги из своего кармана. в ответ на это я хочу сам получить гарантии, тогда я стану поддерживать открытый и бесплатный продукт. что я вижу, когда говорю "гарантии": хоть сколько-нибудь регулярная поддержка проекта хотя бы 1-2 специалистами (это может быть что угодно, хоть выработка концепций на словах, хоть перевод технической документации для других специалистов, хоть написание кода), отсутствие однозначно деструктивных действий со стороны участников (перепродажа кода, втягивание в судебные дрязги из-за прав на интеллектуальную собственность, угрозы физической или иной расправы и т.д.)

составление анкет считаю достаточно глупой идеей на данном этапе. "анкетирование" произойдёт само собой в малой группе, а в большой группе отсутствие координации по причине незнания скилов друг друга станет самостоятельной проблемой, и вопрос поднимут сами же участники проекта. сейчас нельзя гасить любой запал. всё, что есть - это актив, это нужно беречь.

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

суть:
сюди с разрозненными интересами не смогут долгое время сотрудничать, если они не удовлетворяют своих потребностей. вот я, к примеру, хочу видеть множество промежуточных результатов. желательно в виде открытых продуктов. поэтому, если можно получить из продукта A за 1000 часов продукт B, или за 600 часов продукт C и из него за 700 часов продукт B, то я буду голосовать за двусоставных путь. потому что:

  1. люди приходят и уходят. не факт, что я сам буду участвовать в этом проекте бесконечно. но я могу гарантировать бэкапы системы (web-ресурса) с серверов любому, кто этого пожелает, в любое время. зохотели продолжить проект без меня - вот вам дампы, вот вам файлы, вот вам флаг в руки.
  2. глобальная цель только задаёт вектор, но она не манит и не тянет. если я утром просыпаюсь от желания что-то делать, то эта мысль с бОльшей вероятностью связана с чем-то реальным, а не эфимерным. мотивация сильнее, если ты можешь вкусить результат.
  3. утрата доверия = утрата команды. утрата мотивации = утрата связанных с ней же ресурсов. утрата ресурсов = утрата темпов развития со всеми вытекающими. поэтому нужно сразу поманить человека куском, чтобы увидеть, кому каждый из вас доверяет, а кому нет. проект открытый, поэтому результаты достаются всем в равной степени. поэтому всех интересуют законченные наработки. если команда работала 10000 часов, а результат будет только через 100000 часов, и кого-то обманули, отвергли (мало ли еще что), ничего кроме обиды и сырого кода это никому не даст. если отрезать малыми порциями и делить на всех, то потери будут минимизированы.
  4. маленькие этапы требуют выполнения накладнОй работы. обычно такая работа привлекает новых людей. команда растет, проявляется интерес других разработчиков и просто зевак. это не плохо, потому что вы так или иначе даете возможность другим выразить себя. это улучшает настроение и командный дух.

суть концепции ядра сильного AI (слои):

  1. (данные/представление/связи) = состояние
  2. обработчики
  3. accessors/initors
  4. сенсоры/impactor'ы (могут быть направлены как наружу, так и внутрь) - весь мир крутится вокруг этих задач. самый развитый слой - слабый ИИ во всём своём разнообразии почти весь находится здесь.
  5. среда (сущность, с которой взаимодействует сенсор или импактор)

наша локальная группа добилась формулирования только первого пункта (мета-слоя), который сам по себе был не без недостатков. его нужно основательно допилить, с учетом 2 важных вещей. сначала суть, потом недостатки.
суть:
данные храним отдельно от протознаний. в качестве протознаний используем модифицированную денотатную модель, где каждый денотат - это есть сущность, определяемая исторически, модифицируемая и резделяемая под воздействием других знаний на другие денотаты, уточняемые под воздействием среды. всякая связь также определяется как денотат и обладает теми же свойствами, что и сущностный. т.е. система представления протознаний, т.е. денотатной среды, гомогенная.
плюсы: такой подход даёт возможность бесконечно масштабировать систему, не меняя тип хранения данных. данные описывают сами себя, только за счёт своей природы.
минусы: обработчики среды протознаний могут быть написаны только после формирования прототипа такой базы протознаний
и снова плюсы: такая база протознаний сама по себе может быть продуктом. это что-то вроде википедии, которая может в самой упрощенной форме хранить информацию о событиях, явлениях, просто языковых конструкциях и связях между ними. если реализовать удобное взаимодействие между пользователем такой дено-wiki, то система может вполне неплохо расширяться без участия разработчиков. так как в основе лежит денотатная модель, по сути - это сущностная модель, нет привязки к языку. я уже говорил, что данные и протознания хранятся отдельно. если связи будут нежесткими, то можно будет обвешать эту аморфную среду естесственными языками. получаем автоматически интернациональный словарь со всеми вытекающими.

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

0. сущность (включает в себя всё) - базовое понятие
1. реальность (изначально закладывалось то, что реальность реальна - сложный вопрос, но мы в дискуссиях пришли к такому заключению: AI должен предполагать, что реальность реальна)
2. нереальность
3. свойство
4. состояние (совокупность свойств)
5. изменение состояния (действие как явление)
6. связь (взаимодействие, отношение и снятие)
больше не помню. вспомню - напишу

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

подводные камни:
чем мне не нравится вообще разработка AI в открытом виде - когда появятся результаты, всем станет насрать на закон. люди начнут извлекать из этого выгоду всеми доступными способами. малейший допил "почти готовой системы" оставит текущий проект позади, позволив коммерциализироваться чуть более прогрессивной разработке. но до этого еще дожить нужно.

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

2

http://gotai.net/forum/Default.aspx?postid=50144#50144 - 08.05.2011

На: Размышления о суровом открытом проекте.
Добавлено: 07 май 11 21:02
прошу прощения. я не могу и не хочу исправлять опечатки в своих сообщениях. вот ссылки на статьи:

особую благодарность хочу выразить Алексею Турчину за переводы статей. оригиналы приятны и точны, но не всем доступны. Алексей, вы делаете великое дело!
другие его работы: http://www.proza.ru/avtor/turchin

3

http://gotai.net/forum/Default.aspx?postid=50163#50163 - 08.05.2011

как и обещал, выкладываю некоторые наработки по модели.

как я уже говорил, та модель, которую мы разрабатывали ранее опирается на слои:

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

Слой состояния.

как я уже говорил, данные хранятся отдельно протознаний. данные скорее относятся к среде. слой состояния представлен денотатами. денотаты можно сравнить с некоторой сложной переменной (технически планировалось представлять их структурами). если можно, я буду в дальнейшем сокращать Д. (именительный), Д.-у, Д.-а, Д., Д.-ом, Д.-е. Д. - это целостное понятие, которое не может иметь другого смысла, кроме того, который оно несет. Например, Д. 0х00.00.00.01 "грабли" представляет собой все возможные грабли и вообще предметы, которыми гребут или могут грести. в то же время Д. с адресом 0х00.00.00.02 "грабли" представляют собой грабли из моего сада с синей ручкой, другими словами - реальный предмет. все Д.-ы поддерживают базовые свойства:

за счет свойств 1,2,3 можно описать реальность и виртуальную реальность какой угодно сложности.

примечание: там где я буду говорить "денотатные цепи", нужно читать "фокусы" или "денотатные деревья". о них ниже.

недостатки:

  1. такая модель - хуже чем ассемблер. для того чтобы описать реальность, нужно создать все опорные элементы. и их весьма много. я думаю, как раз этот слой можно было бы выделить в web-сервис типа denawiki, чтобы все желающие могли настроить связи по своему усмотрению с тем весом, который они считают нужным. тогда они будут наслаиваться друг на друга и сила мнения каждого человека будет уменьшаться, а информация уточняться. сервис хорош тем, что можно сразу увидеть сильно связанные понятия. например, я хочу узнать что-либо про ADSL, и вижу, что это технология, относится она с компьютерным сетям, эта технология проводная, похожая технология xDSL. как бы я не получил точной информации, но понял, куда копать. для многих такая информация ценнее, нежели простыни из текстов.
  2. второй недостаток - это сложность организации связей в реальных событиях и явлениях - очень длинные цепи, поясняющие друг друга. возможно, в дальнейшем можно будет делать проекции на конкретные денотаты, забирать во времененный кэш снопы окружающих их цепей, тем самым ускоряя работу с ними.
  3. сложность контроля связей (решается за счет визуализации). хотя по сравнению с нейросетями это просто мана небесная.

достоинства

  1. мощность (она же эластичность) поражает воображение. никаких ограничений. можно описать всё, что захочется.
  2. все элементы идентичны. а значит в базе данных они могут быть представлены одной и той же структурой. одна страница - всего пару бинарных индексов (соизмеримых с размером самой базы, к сожалению). базы могут быть расцеплены. т.е. 20-30Гб общих целовеческих ценностей и моделей поведения в них идентичны (или почти идентичны), а специфические (вроде углубленных знаний в области физики и химии) могут быть вынесены отдельно.
  3. введение новых понятий не отличесется от изучения человеком чего-то нового. создаем денотат, определяем новые связи с базовыми элементами, 99% остальных связей можно не достраивать - они либо логичны, либо уточняться тогда, когда в этом знании будет необходимость.
  4. легкость тестирования на всех этапах разработки. можно отследить, по какой причине AI сдалал тот или иной вывод, почему поступил так, а не иначе.
  5. совместимость с естесственными языками на уровне словарей. можно с каждым денотатом соспоставить некоторые слова и описать весом связей, на сколько точно они отражают денотат. это снимает ограничение на использование слов другого языка (если один язык не имеет точных аналогов слова или языковой конструкции другого).
  6. поиск и слияние идентичных (почти идентичных) денотатов легко решается математически.
  7. в случае наразрешимого конфликта можно расщепить денотат, уменьшив тем самым противоречие
  8. практически нативная поддержка нечеткой логики
  9. с такой базой одновременно может работать столько экземпляров AI, сколько сможет одновременно обслужить СУБД, при этом у каждого экземпляра можно выделить свой фокус (область на денотатном пространстве, в котором он работает). это еще один плюс для масштабирования в дальнейшем. например, на втором слое один обработчик ищет новые связи и "доучивает" AI на основании тех знаний, которые у него есть, а второй получает новый опыт и строит новые денотаты, изменяет веса тех связей, которые уже есть. и что немаловажно, конфликты данных легко обходятся - не нужно лочить таблицы. все изменения происходят "на горячую"

второй слой: Слой обработчиков

для того чтобы управлять первым слоем, нужен некоторый драйвер. этакий API к данным.

количество типов таких обработчиков конечное число. думаю, что я смогу учесть их все, но перечислю самые очевидные:

  1. projector. генерирует временные таблицы (фокус внимания), необходимые для решения локальных задач. чем шире фокус, тем больше вывод согласован с протознаниями первого слоя. чем Уже фокус, тем быстрее решается задача. точность можно варировать некоторым значением эпсилон (способность к распространению). например, при решении одной задачи (новое высокотехнологичное изобретение) будет достаточно построить фокус, где значение веса связей на краях будет не менее 0.001 (область захвата будет огромной), а для другой (сварить кофе) будет достаточно и 0.1 (область захвата будет небольшой)
  2. gluer (склейщик). это что-то вроде демона (процесс, который работает постоянно и отвязан от внешнего интерфейса). ищет денотаты максимально приближенные по значению (к примеру, у AI есть предположение с точностью 99,9%, что упоминае в определенном контексте слов рефриджиратор и холодильник - это одно и то же. смыслов! не слов!). тогда gluer склеивает эти денотаты, может вызвать другой обработчик для проверки после склеивания. отвечает также за "забывание" всякой малозначительной информации в силу своей природы.
  3. splitter (раскалыватель). еще один обработчик-демон, но более чутко реагирующий на раздражители. можете назвать это подсознанием. ищет конфликты в слое протознаний и раскалывает денотаты, понижая напряженности и определяя новые связи и их веса. первый хелпер при использовании омонимии или недослышанности. может вызывать других демонов и всегда отслеживает изменения около области обучения. в случае, если размер конфликта значительный, передаёт информацию о конфликте solver'у.
  4. logician (логик). демон, который достраивает и кэширует недостающие связи. в первую очередь отрицания. если связь используется очень часто, внедряет её на постоянной основе. если вызывается для решения какой-то задачи (для получения нового вывода), достраивает положительные связи на постоянной основе
  5. solver (решатель). это метод. может быть вызван как извне, так и изнути. его алгоритм представлен цепями первого слоя, т.е. всё время изменяется. можете считать, что это сознание AI. получает задания в виде упорядоченных цепей первого слоя и действует по алгоритму, извлеченного из первого же слоя. чуть менее, чем полностью рекурсивый. думаю, что и без лябда-счислений здесь не обойдётся. один экземпляр ставит задачи, сам же (второй-надцатый) сводит их к решению. может вызывать всех остальных обработчиков, при недостаточности информации. в случает, если задача неразрешима (бесконечно-рекурсивна) или решение не достоверно, вызывает сам себя с целью свормировать адекватный ответ (return). если ответ может быть получен, передает его вверх. если ответ не может быть получен, возвращает наверх что-то вроде исключения. солвер исходя из своего алгоритма может запрашивать информацию не только с нижних уровней, но и запрашивать что посложнее сверху, если знает, как к ним обратиться. это уже зависит от протознаний. если есть протознания о том, как позвать что-то сложное - вызывает. нет - вызывает нервную дугу. мощность первого слоя должна достигать некоторой критической массы, для того чтобы действия солвера возбуждали последующие следующие солверы бесконечно. иначе влияние солвера будет затухать через какое-то время. берусь делать только осторожные прогнозы... думаю, что мощность должна быть огромной... нет... чудовищно огромной. радует только то, что при прямых инициациях солвера вышестоящими слоями мощность первого слоя будет расти в геометрической прогрессии. но настройка при приближении к критической массы будет очень сложной, практически ювилирной. сложность будет заключаться не в том, чтобы изменить веса связей, нет. скорее в поиске недостающих знаний, которые, возможно, придётся отдавать для AI в очень сложной форме.
  6. нервная дуга (рефлекторная дуга). это метод, ожидающий вызова солвера. принимает задание в виде цепей или фокусов, представленных денотатами первого слоя. отвечает за базовые реакции (рефлексы) в случае, когда солвер не может решить поставленную задачу или когда реакцию нет смысла осмыслять. на первое время послужит нативным багтрекером. в дальнейшем, скорее всего полностью прирастет к солверу или солвер сам переопределит поведение нервной дуги.

третий слой: Слой аксессоров и иниторов.

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

четвертый слой: Слой сенсоров и импакторов.

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

пятый слой: Слой среды.

это собственно реальность и есть.


© AIKernel 2011
09.05.2011 - 09.05.2011