GotAI.NET

Форум: Проблемы искусственного интеллекта

 

Регистрация | Вход

 Все темы | Новая тема Стр.1 (7)След. > >>   Поиск:  
 Автор Тема: Модель Logos AI
Corwin
Сообщений: 1324
Модель Logos AI
Добавлено: 19 окт 07 3:04
Поскольку мой проект начал давать хоть какие-то интересные результаты, то решил ознакомить общественность с этим проектом. Наперед хочу отметить, что сам проект готов приблизительно только на 10%. Сам проект представлен в виде программы, которая свободна для скачивания.

Апдейт: 29 июн 09
Последние достижения можно посмотреть здесь:
Модель Logos AI 3
[Ответ][Цитата]
Corwin
Сообщений: 1324
На: Модель Logos AI
Добавлено: 19 окт 07 3:05
Даная модель предназначена для поиска (создания) и использования логических конструкций в вводимом тексте. На данный момент реализована работа с дедуктивной формой логики (не совсем точно, но думаю так понятней). В целом можно сказать, что в программе формируется и используется семантическая структура текста. Работа с программой состоит из двух частей:
1. Обучение.
Вводим правильные примеры, на их основании собственно и производиться анализ логики. При обучении очень важно чтобы примеры были попроще и правильными.
2. Считывание результатов.
Смотрим реакцию системы на вводимый текст. Конечно, что бы была какая-то реакция сначала должно пройти обучение
[Ответ][Цитата]
Corwin
Сообщений: 1324
На: Модель Logos AI
Добавлено: 19 окт 07 3:05
Сразу извиняюсь за столь плохое описание самого проекта… В будущем постараюсь расписать подробнее и понятнее, а пока надеюсь, что смысл самого проекта будет понятен из приведенных примеров работы экспериментальной программы.
[Ответ][Цитата]
Corwin
Сообщений: 1324
На: Модель Logos AI
Добавлено: 19 окт 07 3:06
По поводу примеров.
Сами примеры полностью рабочие (по крайней мере в текущей версии программы) и при желании могут быть проверены на самой программе. Хочу также уточнить, что программа действительно обучается и никаких запрограмированых шаблонов или данных в ней нет. Вся нужная информация берется из изученного текста.
В примерах используются системные команды, которые начинаются со знака "@" и заканчиваются знаком абзаца (т.е. в конце строчки).
"//" – означает комментарий и все что идет после этих двух символов до знака абзаца, самой программой будет игнорироваться.

Под самим примером также приведен результаты его проверки. (Данные результаты появляются в центральном поле программы после выполнения примера).
В приведенных результатах префикс "U>" означает текст введенный пользователем (User), а префикс "L>" означает ответ (реакцию) программы (Logos).
[Ответ][Цитата]
Corwin
Сообщений: 1324
На: Модель Logos AI
Добавлено: 19 окт 07 3:07
Краткий список системных команд:
@worktype write - Даная команда включает режим обучения. По дефолту при запуске программы он автоматически включен.
@worktype read - Эта команда переводит программу в режим «ответа» (считывание результатов). Т.е. Программа будет комментировать каждую последующую строчку пока включен этот режим. Собственно именно эти строчки с префиксом "U>" и их комментарии от программы ("L>") и приведены под «кодом» примера.
@endsample - Эта команда означает конец примера (или разрыв в обучении). Используется чтобы в режиме обучения разные строчки не воспринимались как один пример.
[Ответ][Цитата]
Corwin
Сообщений: 1324
На: Модель Logos AI
Добавлено: 19 окт 07 3:08
Сами примеры работы программы:
___________________________________________________________
Пример 1
------
@worktype write
собака это друг человека. рекс это собака. рекс это друг человека.
@worktype read
птица умеет летать. ласточка это птица.
------

То что получаем на выходе:
U> птица умеет летать. ласточка это птица.
L> ласточка умеет летать.
___________________________________________________________
Пример 2
------
4 делиться на 2 значит 4 - чётное
@endsample
6 – чётное значит 6 делиться на 2
@worktype read
8 делиться на 2
10 – чётное

------

U> 8 делиться на 2
L> значит 8 - чётное
U> 10 – чётное
L> значит 10 делиться на 2
___________________________________________________________
Пример 3
------
птица умеет летать. ласточка это птица. ласточка умеет летать.
@endsample
птица умеет летать. ворон это птица. ворон умеет летать.
@worktype read
птица умеет летать. орел это птица.
колибри это птица.

------

U> птица умеет летать. орел это птица.
L> орел умеет летать.
U> колибри это птица.
L> колибри умеет летать.
___________________________________________________________
Пример 4
------
птица летает. ласточка это птица. ласточка летает.
@worktype read
птица умеет летать. ласточка это птица.
человек смертен. сократ это человек.
умный человек умеет говорить. карл кори это умный человек.
собака имеет четыре лапы. рекс это собака.

------

U> птица умеет летать. ласточка это птица.
L> ласточка умеет летать.
U> человек смертен. сократ это человек.
L> сократ смертен.
U> умный человек умеет говорить. карл кори это умный человек.
L> карл кори умеет говорить.
U> собака имеет четыре лапы. рекс это собака.
L> рекс имеет четыре лапы.
___________________________________________________________
Пример 5
------
меня зовут корвин. приятно познакомиться корвин.
@endsample
my name is corwin. glad to see you corwin.
@worktype read
привет. меня зовут мерль кори.
hello. my name is carl corey.

------

U> привет. меня зовут мерль кори.
L> приятно познакомиться мерль кори.
U> hello. my name is carl corey.
L> glad to see you carl corey.
___________________________________________________________
Пример 6
------
все люди разумны. некоторые животные - люди. некоторые животные разумны.
@worktype read
все золото плавиться. некоторые металлы – золото.
все собаки лают. некоторые животные – собаки.

------

U> все золото плавиться. некоторые металлы – золото.
L> некоторые металлы плавиться.
U> все собаки лают. некоторые животные – собаки.
L> некоторые животные лают.
___________________________________________________________
Пример 7
------
каждый раз в шесть часов бьет колокол. сейчас шесть часов значит сейчас бьет колокол.
@worktype read
каждый раз в полдень солнце находится в зените. сейчас полдень
каждый раз в 22:00 я ужинаю. сейчас 22:00.

------

U> каждый раз в полдень солнце находится в зените. сейчас полдень
L> значит сейчас солнце находится в зените.
U> каждый раз в 22:00 я ужинаю. сейчас 22:00.
L> сейчас я ужинаю.
___________________________________________________________
Пример 8
------
он сказал что придёт если не будет идти дождь. но идёт дождь. значит он не придёт.
@worktype read
он сказал что починит крышу если не будет идти дождь. но идёт дождь.
------

U> он сказал что починит крышу если не будет идти дождь. но идёт дождь.
L> значит он не починит крышу.
___________________________________________________________
Пример 9
------
некоторые из тех кто ходят умеют бегать. лишь люди ходят. некоторые люди умеют бегать.
@worktype read
некоторые из тех кто достойны славы получают награду. лишь храбрые люди достойны славы.
------

U> некоторые из тех кто достойны славы получают награду. лишь храбрые люди достойны славы.
L> некоторые храбрые люди получают награду.
___________________________________________________________
[Ответ][Цитата]
Corwin
Сообщений: 1324
На: Модель Logos AI
Добавлено: 19 окт 07 3:25
Для проверки примера, достаточно скопировать «код» примера (то что находиться между "------") в правое поле ввода в программе и нажать Learn.
Также можно сам пример построчно вводить в верхнее поле ввода и нажимать Analize

Для тех кто решил поэкспериментировать с программой.
Для большего удобства разработки программа наделена рядом ограничений, которые следует учитывать при экспериментировании:
-Сама программа является полностью экспериментальной (к тому же жутко не доделанной) поэтому она рассчитана только на один пример за одну сессию работы (просто в программе пока не реализирована очистка памяти, поэтому после использования примера остается много мусора, который может мешать обучению нового примера (появиться ошибка)). Т.е. для обучения нового примера необходимо перезапустить программу.
-Даная версия для уменьшения неточностей приводит весь текст в нижний регистр.
-Программа имеет довольно слабую шумостойкость. Т.е. присутствие лишнего слова в предложении будет учитываться как часть самого предложения. Также плохо реагирует на отсутствие слов (или точки) если таковые должны быть согласно примеру.
-В программе из всех символов выделяется только точка и пробел. Остальные символы будут учитываться как часть слова или как отдельный объект. Т.е. "Привет!" не равно "Привет".
-Программа жутко не дописанная, к тому же несколько ограниченная в памяти, поэтому вполне возможны вылеты при написании «некорректных» примеров.
-Поскольку база данных программы пустая, то возможны неточности в реакции программы на фразы. Т.е. ответ программы в некоторых случаях может казаться некорректным, хотя это вполне нормально учитывая что программа работает с минимумом знаний.
[Ответ][Цитата]
Corwin
Сообщений: 1324
На: Модель Logos AI
Добавлено: 19 окт 07 3:27
Саму программу можно скачать по следующему адресу: [Данная версия проекта не доступна для закачки] (36 kb, .Net 2.0)
Насколько я знаю существуют несколько программ способных к логическим выводам на основании резолюции (или других методов), но такие программы как правило не способны к обучению, тем более к обучению на естественном языке, что как раз и является основной особеностю моей модели.
[Ответ][Цитата]
Corwin
Сообщений: 1324
На: Модель Logos AI
Добавлено: 19 окт 07 3:28
В принципе на данный момент реализирована только логика первого порядка, поэтому примеры столь примитивны. В будущем (после доработки текущей версии) планируется добавить логику высших порядков, что позволит решать (в смысле обучаться решению и решать) более сложные задачи. К примеру стандартные детские математические задачи или задачи по физике из средних классов школы.
Планы на будущее:
1. Исправление неточностей в работе текущей версии (их полно )….
2. Добавить еще некоторые функциональные возможности.
3. Добавить возможность решения задач многоуровневой логикой (более широкий и сложный класс решаемых задач).
[Ответ][Цитата]
гость
195.131.172.*
На: Модель Logos AI
Добавлено: 19 окт 07 4:40
а исходник будет?
[Ответ][Цитата]
гость
195.131.172.*
На: Модель Logos AI
Добавлено: 19 окт 07 4:51
из примеров я только увидел простейшую формализацию: a = b

и алгоритм вида:

a = b; b = c;

-> a = c

что-нибудь ещё в ней есть?

Дмитрий Сычев.
[Ответ][Цитата]
daner
Сообщений: 4593
На: Модель Logos AI
Добавлено: 19 окт 07 5:22
Как бы там нибыло, я зрау выражаю свое одаблрение!!!!! побольше бы таких как вы, Corwin.
Что же касается самой программы... Ну собственно, что ту можно сказать, если алгоритм даже в общих чертах не описан. Примеры очень простые, и что хуже всего (для такой программу) оне даются по отдельности. Тут как раз дело не в том, что программа "мала знает". Если бы ей дадите все примеры сразу, то еще надо посмотреть, как она отреагируает. Поэтому, сложно здесь говорть об обужении (ну не в узком формальном смысле, а в широком).
есть несколько вопросв (если уточните конечно...)
1 - лог. вывод, как делается? резолюция? Если да, то ждите комбинаторных проблем, с более или мнее длинными предложениями.
2 - как предложение разбивается на лексемы? важный вопрос, тем более, что вы позиционируете работу с ЕЯ, как основной фичер своей работы.

ОЧЕНЬ ВАЖНО, особенно для промежуточных результатов:
Я не увидел примеры, с которыми ваша программа не справилась! Было бы интересно на них посмотреть (вам проще их подобрать, так как вы знакомы с самим алгоритмом).

Будем ждать продолжения.
[Ответ][Цитата]
shuklin
Сообщений: 2053
На: Модель Logos AI
Добавлено: 19 окт 07 17:21
Цитата:

Саму программу можно скачать по следующему адресу: [Данная версия проекта не доступна для закачки] (36 kb, .Net 2.0)


Привет. У меня частично меркантильный интерес. Какая модель данных исспользуется для представления знаний? Если сетевая - предлагаю посмотреть в сторону моего поделия, о котором ты наверняка уже в курсе. Т.к. и там и там .NET - вполне возможно состыковать проекты. Понятное дело мой "полуфабрикат" обеспечивает только хранение и инстанциацию узлов. Все интеллектуальное наполнение так и останется твоим.
[Ответ][Цитата]
Corwin
Сообщений: 1324
На: Модель Logos AI
Добавлено: 19 окт 07 19:05
гость> а исходник будет?

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

Дмитрий Сычев> из примеров я только увидел простейшую формализацию: a = b
и алгоритм вида:
a = b; b = c;
-> a = c

Частично Вы правы. В некоторых примерах (п 1,3,4,6) действительно показаны классические примеры логики (силлогистика Аристотеля). Эти примеры (ИМХО) наиболее интересны с точки зрения ЕЯ, поскольку используют три переменные (a,b,c или S,M,P), да к тому же общеизвестны. Сама модель способна изучить и использовать примеры с большим количеством переменных, но сложно подобрать интересные примеры на ЕЯ, чтобы использовалось большее количество переменных.

А основной особенностю даной программы является то что алгоритмы вида "a = b; b = c; -> a = c" формируются (выводятся) на основании входных примеров т.е. во время обучения. (алгоритмы логического вывода не "зашиты" в программу). Сама программа проявляет некоторые возможности по созданию алгоритмов для обработки текста, хотя пока и примитивные.

---

Как одну из интересных особенностей работы программы можно отметить "Пример 3" где программа научилась что если что-то это птица, значит это что-то умеет летать. (Хотя конечно она будет ошибаться в случаях с пингвинами и страусами, но в принципе как и чему обучали то и получили ).

Также примеры 2,5,7,8 можно назвать примерами контекстной логики, поскольку они привязаны к определенному смысловому тексту. Я бы сказал что это весьма интересная форма логики, поскольку именно логика такого типа является основной при обычном разговоре.

Также хочу уточнить что часть приведенных примеров была скопировано с какого-то сайта (или книги). Разработка и тестирование самой программы происходила не на ЕЯ. Поэтому большинство тех примеров которыми я предпочитаю пользоваться будут несколько не понятны "неподготовленным" людям.
[Ответ][Цитата]
Corwin
Сообщений: 1324
На: Модель Logos AI
Добавлено: 19 окт 07 19:09
daner> Примеры очень простые, и что хуже всего (для такой программу) оне даются по отдельности

Примеры действительно простые. Логика первого порядка не является особо показательной для решения сложных примеров. Хотя стоит заметить что люди при ведении диалога используют именно логику первого порядка. Даже на существующей в даный момент платформе можно написать очень неплохого чат бота, с возможностю обучения и интеллектуальными ответами. Примеры 5,7,8,2 довольно неплохо указывают на такую перспективу использования модели.

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

daner> лог. вывод, как делается? резолюция?

Нет не резолюция. Наглядно можно посмотреть как работает логический вывод на примере 8. Там в обученном примере "он сказал что придёт если не будет идти дождь. но идёт дождь. значит он не придёт." слово "придёт" просто заменяется на слова "починит крышу". Как видим просто создается ассоциация вводимого текста с эталонными (обученными) примерами. Т.е. все операции с текстом напрямую зависят от того чего программу научили.
Хотя комбинаторные проблемы с длинными предложениями всеравно сохраняются

daner> 2 - как предложение разбивается на лексемы?

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

daner> Я не увидел примеры, с которыми ваша программа не справилась! Было бы интересно на них посмотреть (вам проще их подобрать, так как вы знакомы с самим алгоритмом).

Да собственно их больше чем тех с которыми моя программа справляется ИМХО скорее мне как автору более рациональней писать рабочие примеры, поскольку нерабочие примеры может написать кто угодно
Ну если всетаки рассматривать "правильные" примеры, то даная версия программа не способна обучаться следующему примеру:

//Обучение таблицы умножения
2*2=4
2*3=6
2*4=8
.....
Сколько будет 2*2? Будет 4.
@worktype read
Сколько будет 2*4?
L> Будет 8.
Сколько будет 2*3?
L> Будет 6.

Собственно над реализацией понимания таких примеров я сейчас и работаю.
[Ответ][Цитата]
 Стр.1 (7): [1]  2  3  4  5  ...  7След. > >>