VIVI: что если знания не загрузить в ИИ, а попробовать сделать так что бы они родились из опыта?. python.. python. rust.. python. rust. графовая память.. python. rust. графовая память. искусственный интеллект.. python. rust. графовая память. искусственный интеллект. когнитивная архитектура.. python. rust. графовая память. искусственный интеллект. когнитивная архитектура. Машинное обучение.. python. rust. графовая память. искусственный интеллект. когнитивная архитектура. Машинное обучение. Программирование.

Можно ли построить систему, которая не получает готовый «мозг» с заложенными знаниями, а постепенно формирует собственную память, связи между знаниями и способы работы с ними?

            Как и многие, я пытался сделать что-то своё, и для повседневных задач использую LLM — но меня это не устраивает.

Сейчас будут скажем так мои размышления. Моя теория.

            Что такое:

  • «ЗНАНИЯ» — это совокупность данных и опыта.

  • «ИНТЕЛЕКТ» — это совокупность знаний, понимания знаний, умении применять эти знания и опыта от применения знаний как неудачный, так и удачный.

            Какие бывают знания:

  •                         «САМОСТОЯТЕЛЬНЫЕ» — полученные в процессе размышлений, наблюдений и т.д.

  •                         «НЕ САМОСТОЯТЕЛЬНЫЕ» — это основной источник знаний, которые мы получаем от кого-либо.

Представим, что мы учимся считать. Сначала учитель знакомит нас с цифрами от 0 до 9 и объясняет значение знаков + и =. На этом этапе мы получаем данные: узнаём о цифрах и узнаём о знаках и то, что они означают. Затем учитель показывает пример: 1 + 1 = 2 Теперь мы знаем не только значение цифр и знаков, но и получаем конкретное знание о том, как использовать их вместе. Позже учитель объясняет, что означает знак −, но не показывает пример 1 − 1 = 0. Мы уже знаем цифры, понимаем значение равенства, умеем складывать и получили объяснение вычитания. Используя эти знания, мы самостоятельно приходим к выводу: 1 − 1 = 0 Этот конкретный результат мы не получили от учителя в готовом виде. Мы вывели его самостоятельно, опираясь на ранее полученные сведения. Затем мы начинаем применять сложение и вычитание в разных ситуациях. Постепенно учимся выбирать нужную операцию, понимать условия задачи, замечать ошибки и корректировать свои действия. Повторюсь еще раз это сугубо мое мнение.

Нужны ли нейросети для ИИ?

Моё мнение, и оно сугубо личное. Для когнитивных способностей (память, логика, обучение с одного раза) — нет, не нужны, но в то же время для восприятия мира нейросети нужны по крайне мере сейчас, но они идут как отдельные модули, которые можно подключить по желанию.

Что такое VIVI и что она уже умеет.

VIVI — это система, которая сейчас пока только превращает текст в события и сохраняет в графовую память, предсказывает следующее событие и может потом объяснить, почему она так предсказала. Я не использовал ни какие языковой модели (LLM). Внутри нет ни одного чужого веса. Система рождается с базовым набором данных (цифры, буквы, слога и немного слов) и в дальнейшем получает знания только из чтения или диалога.

1. Основная гипотеза и что уже умеет VIVI.

В основе VIVI лежит моя теория:

  • данные сами по себе ещё не являются полноценным знанием;

  • знания приобретают практический смысл через опыт применения;

  • накопленный опыт может менять связи между знаниями;

  • изменившаяся структура памяти может приводить к новым выводам и другому поведению.

Что VIVI сейчас уже умеет:

  • Почти стабильное когнитивное ядро с измеримыми критериями качества.

  • Почти стабильное когнитивное ядро с измеримыми критериями качества.

  • Почти стабильное когнитивное ядро с измеримыми критериями качества.

    • когнитивное ядро с измеримыми критериями качества;

    • граф знаний, который различает знания «от учителя» и знания, полученные самостоятельно;

    • механизм опыта применения: когда система использует знание и получает подтверждение или опровержение, сила связи в графе меняется;

    • сон (консолидация памяти): во время «сна» VIVI усиливает полезные связи, ослабляет слабые и формирует новые концепты;

    • рабочую память и механизмы внимания;

    • базовое понимание событий: фразу она раскладывает не в цепочку слов, а в структуру «кто — что сделал — с чем — где — когда»;

    • объяснимость: любой вывод можно проследить по пути активации в графе.

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

    Приведу простой пример, это VIVI уже умеет.

    1) Противоречие и самостоятельный вывод.

    Я написал VIVI что «собака — это животное», «собака — это растение» и «собака — имеет лапы, хвост». Она сохранила соответствующую связь в памяти. И если сразу у VIVI спросить кто такая собака, она ответит, что собака — это и животное, и растение. Затем я написал VIVI про кошку и хомяка, что у них есть лапы и хвосты и они животный. Теперь после обработки данных VIVI обнаружили закономерность между объектами и их свойствами, и общим понятием. И теперь на вопрос кто такая собака, она ответит, что собака — это животное и сможет объяснить почему. Впоследствии если VIVI встретит неизвестный объект, у которого есть лапы и хвост, она предполагает, что перед ней животное, так как она самостоятельно вывела правила животное ≠ растение. Проверилось на льве.

    2) Формирование своих понятия.

    После загрузки в VIVI русских народных сказок и нескольких книг «Я познаю Мир». VIVI смогла создать свои понятия.

    • собака — домашний_животное;

    • собака — уличный_животное;

    • лиса — лесной_животное.

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

    3) Структура события.

    Предложение: «Пастух завтра пойдёт пасти овец». Для VIVI — это предложение становится структурой, с которой она должна работать. Предложение разбивает на:

    • АГЕНТ: ПАСТУХ

    • ДЕЙСТВИЕ: ПОЙТИ

    • ЦЕЛЬ: ПАСТИ

    • ОБЪЕКТ: ОВЦЫ

    • ВРЕМЯ: ЗАВТРА

    Для возможности дальнейшей работы с ним и отвечать на вопросы по ролям: кто пойдёт пасти овец? – пастух, когда это произойдёт? – завтра, что завтра будет делать пастух? – пасти овца, кого он будет пасти? – овца. Это реальные ответы. Сразу оговорюсь сейчас это работает только на простые предложения. Сложные предложения, сарказм и т.д. сейчас VIVI пока не может понять.

    Чего VIVI сейчас пока не умеет, но к этому идет.

    Моя конечная цель — сделать не «умный чат», а постараться сделать цифровой организм, способный:

    • самостоятельно замечать пробелы в знаниях и задавать точный вопрос («я знаю, что король похож на принца, но не знаю, кто такой принц, — расскажи»);

    • строить планы и проверять их результат;

    • иметь полноценную самомодель: что я умею, чего не умею, чему научилась вчера, где ошиблась;

    • воспринимать не только текст, но и изображения, звук и действия пользователя;

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

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

    2. Что из себя сейчас представляет VIVI.

    Изначально проект был проще: первые версии хранили объекты и связи в структурах Python. По мере роста стало понятно что память должна быть отдельная архитектура. Она должна обеспечивать сохранность данных и операции над большим количеством узлов и связей. В результате VIVI стала строиться на Python и на Rust. Упрощённо её можно представить так.

    Что

    За что отвечает

    Python

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

    Rust

    память: узлы, связи, эпизоды, несколько уровней памяти

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

    3. Почему я пошел именно этим путем.

    Потому что большинство проектов, которые я вижу, идут по пути «взять LLM и обернуть». Возможно, есть другие проекты — но я не нашёл, возможно плохо искал. Конечно LLM даёт быстрый и красивый результат, но не даёт настоящего понимания. Это пока чёрный ящик, который умеет говорить, но он не умеет помнить, сомневаться и учиться по настоящему. Я для VIVI выбирал более медленный и более трудный путь: строить архитектуру снизу-вверх. Где каждое её решение имеет объяснение, где память самоорганизуется, где новые понятия появляются из опыта, где она может сказать «я этого пока не знаю — научи меня».

    4. Что было, что есть и что должно быть.

    1) Уйти от жестких правил в коде, но только для языка. Изначально логика строилась на прямых жестких правилах типа:

    if text.lower().startswith("кто такой"):
        return handle_define()
    
    if " это " in text:
        return handle_learn_isa()
    

    Сейчас частично я уже ушел от этого, так как с жесткими правилами есть много проблем из-за постоянного роста правил. Пример: «Кто такой король?», «Расскажи про короля», «Что известно о короле?», «Дай определение короля» — для человека это почти одно и то же, но для кода это четыре разных варианта, и под каждый писать правило — ну его…

    Сейчас сделано так, что в графе есть отдельный слой языковых правил. Переход пока ещё не закончен, но направление именно такое: понимание языка — ни код, а сама памяти.

    2) Уйти от pymorphy. Сейчас VIVI использует pymorphy3 для лемматизации: библиотека хорошо знает русскую морфологию и быстро приводит слово к начальной форме. Но для моего проекта у такого подхода есть фундаментальная проблема. pymorphy — это внешний источник знания: он знает, что «королём» — это форма слова «король», ещё до того, как VIVI вообще увидела это слово. То есть часть понимания языка VIVI получает не из опыта, а из чужой предобученной модели. Меня это не устраивает. Моя цель — чтобы VIVI постепенно училась сама: какие формы относятся к одному понятию, какие слова связаны между собой, как меняется значение в зависимости от контекста.

    3) Прийти к тому, чтобы VIVI понимала. И вот тут я пока даже не понимаю, как это сделать. В первых двух пунктах я примерно знаю, как можно прийти к тому результату который я хочу, но здесь — пока вообще нет ни каких мыслей. Но есть понимание. Скажем так у меня есть граф с тысячами фактов, и VIVI умеет отвечать по ним на вопросы. Но это ещё не значит, что она понимает причины событий, строит причинно-следственные связи или переносит опыт на новые задачи.

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

Автор: Merehim

Источник