Обновить

Комментарии 5

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

Например: Точно ли это тот "Александр Иванов" может это другой? Есть ли другие Александры Ивановы? В моей базе этого нет, в следующий раз спрошу у пользователя, может быть он в курсе. Переодически дергать на этот предмет "неубедительные" факты, чуть реже "убедительные" и совсем редко "абсолютно точные" факты. Убедительность кореллирует с количеством подтверждений. "Кот Васька" - именно тот самый кот, а не другой похожий, потому-что я точно видел его сто раз и знаю о нем очень много фактов которые могу проверить. А вот другой кот - непонятный, возможно его я видел, возможно нет, просто черный пушистый кот, данных для его однозначной идентификации и утверждения что это какой-то определенный у меня нет.

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

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

Спасибо, вы как раз описали то, что мне самому кажется важным.

Я тоже не хочу, чтобы система один раз что-то решила и потом считала это истиной навсегда. Если она не уверена, пусть так и хранит: непонятно, возможно, нужно больше данных. Потом появляются новые документы, новые связи, новые факты — и старый вывод можно пересмотреть. Даже если раньше он казался довольно надёжным.

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

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

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

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

Останусь скептиком. Едва ли эта задача имеет решение в общем виде. Да и кто будет ее заказчик? Но вот частные решения по узким предметным областям мне кажутся возможными.

Но желаю удачи! По крайней мере, этим интересно заниматься.

Спасибо, за комментарий.

Вы правы, что в статье я показал только фундамент. Но у меня немного другая постановка: система не обязана разрешить анафору или идентичность в момент первого чтения. Если данных недостаточно, состояние остаётся AMBIGUOUS / UNRESOLVED / DEFERRED и не превращается в факт. Позже, когда появляются новые документы, связи или противоречия, они становятся поводом для переоценки старого решения. Жизненный цикл примерно такой: неизвестно → кандидат → подтверждение → принято → новые данные → переоценка → уточнение / split / merge / rollback. Именно в этом я вижу саморазвитие системы: не в том, чтобы просто «переписывать себя», а в том, чтобы постоянно улучшать собственную картину мира по мере накопления новых доказательств.

Там проблема была в чем. Да нет. в чем была проблема вообще в символическом (без нейро) подходе. Он прекрасно вообще работал. Просто замечательно. Под него было полно наработок и решены почти все проблемы, анализ, планирование, оптимизация поиска и т.п. Проблема была в одном - она не могла учить сама себя. Т.е. это был ребенок которому дали какие-то фрагментарные кусочные знания о мире и не научили читать. И все, собственно. Теперь в НЕЙРОСИМВОЛИКЕ появилась одна важная штука - языковой движок. Не как самостоятельная единица, а как элемент, у которого хватает "своих мозгов" более-менее понимать реальный мир (по тексту если это LLM или по тексту+звуку+картинкам если это мултимодальная модель). При этом она работает с символической частью на партнерских условиях (симбиоз) и в рамках строго формального API. И вот в этом случае вы получаете систему которая обладает способностью LLM понимать ввод и формировтаь вывод и получаете все плюшки символических систем как-то: надежность и прозрачность вывода. У ABBYY не было LLM на тот момент. А просто сухой онтологией и правилами обработки конечно вы ничего не решили бы, это невозможно.

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

Как-то так

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации