Лекция
Привет, мой друг, тебе интересно узнать все про моделирования человеческих рассуждений связи , тогда с вдохновением прочти до конца. Для того чтобы лучше понимать что такое моделирования человеческих рассуждений связи , настоятельно рекомендую прочитать все из категории Моделирование мыслительных процессов на естественном языке и Символьное моделирование.
1. Любое "знание" это "путь" по связям образов.
Система бинарна и следовательно, все имеет только два состояния - Да/Нет (1/0, true/false)
Все "разветвления" пути имеют только два варианта развилок - Да/Нет (1/0, true/false). При этом "отрицательная зона" не хранится.
Обозначим развилку как "переключатель".
Следовательно: у переключателя возможных состояний - 3.
1. Не знаю
2. Да
3. Нет
ДА - это путь куда-то по связям.
НЕТ - конец пути.
НЕ ЗНАЮ - это отсутствие связей. Абсолютно нормальное (естественное) состояние переключателя.
Если представить любое "понятие" в виде спиленного дерева, повернутого комелем (торцом) к наблюдателю.
То центральный ствол это "образ_как_совокупность_образов". Ветви от центральной части это будут "образы_как_объект".
А листья на концах веток - это ссылки на данные от органов чувств. Пока размышляешь, идем дальше.
Горизонтальные связи между понятиями это связи между деревьями и ветками вперемешку. При этом рассматривается только "место пересечение" или "место разветвления" - называется "переключателем". Вот такая аналогия...
В таком случае, если извлечь только "горизонтальную" связь (а не все дерево целиком :) то получившаяся структура и будет "фразой на естественном языке".
А как же работает "понимание"? А понимание это как раз "обратный процесс". Имея "горизонтальную связь" мы подбираем "место" куда ее "притулить нужно". Если нет подходящей ветви или даже целого дерева, то все, задача решена не будет...
И поэтом ИР (ИИ) не может "понять" фразу введенную человеком. Об этом говорит сайт https://intellect.icu . Просто банально "нет в БД"
Как обойти?
Когда я говорю, что нужно создать "правильную БД" значит нужно создать "лес деревьев" или задать механизм самопроизвольного зарождения (появления) этих деревьев. Если в процессе "подбора" нет необходимого "дерева" - оно создается и т.д.
Необязательно реализовывать ИР неприменно именно так, но "что-то" в этом есть...
Тем кто думает, что процесс лавинообразный и ИИ очень быстро захлебнется в беконечном потоке информации, отвечу. Далеко не так. Ограничения в системе конечно нужны, но "поток информации" не столь уж и бесконечен, как кажется. Поскольку очень быстро пойдет "складывание" (компактизация) системы. Синонимы, предложения с одинаковым смыслом и т.д. Стволов (понятий) на выходе окажется значительно меньше, чем вы думаете ;)
А вот "шаблонов" - может быть бесконечно много. Смысла наполнять БД "шаблонами" и в ответ на один "шаблон" отвечать другим "шаблоном" нет никакого... (но так реализованы все существующие чат-боты)
И так на основе этого параноидального примера, я хотел показать разницу между "пониманием" и "реагированием".
И так, мы имеем дерево. Но заведомо не знаем, ВСЕ ли ветви у нас есть и КАКИЕ и СКОЛЬКО листьев на концах....
Это не важно. Не важно какие данные есть, каких нет. Так как в настоящий момент мы оперируем со стволом (образ_как_совокупность_образов) частности нам не важны, и лишь при необходимости, мы опускаемся "вниз" к листьям, за "конкретной" информацией.
(черт, не очень хороший пример с деревом привел:) ну да ладно...
На каком уровне "появляется" информация об объекте? Ответ: на любом.
Мы имеем на входе фразу: Земля имеет форму шара.
Смотрим по БД дерево "Земля" (понятие, образ_как_совокупность_образов) и протягиваем ленточку к дереву "Геометрические объекты" - "шар". У нас получилась "горизонтальная связь": Земля-(форма)шар
Мы имеем на входе фразу: Какого цвета "апельсин"?
Смотрим по БД. "Апельсин" опускаемся "вниз" по стволу и смотрим "характеристику" цвет. Передаем данные для подготовки ответа.
Мы имеем на входе фразу: Обезъяна кушает банан.
Смотрим по БД."Обезъяну" знаем, а слово "банан" нам неизвестно. Заводим дерево "банан" на уровне ствола, все данные - переключатели в состоянии "не_знаю" на первом этапе все. Смотрим по "контроллеру приоритета" насколько важна информация.
Если это "просто информация" :) то ничего не делаем, будем делать тогда, когда понадобится...
Если это вопрос например и требуется ответ на вопрос выводим соответствуеющее ситуации сообщение. (Ну не знаю я что такое банан, не видел ни разу. Или. А что такое банан? или Прежде чем я смогу ответить на ваш вопрос, поясните мне значение слова "банан", стыдно признаться, но я не знаю что это такое)
1. Сколько и каких листьев может быть?
Количество "маленьких веточек" ограничено количеством органов чувств а количество листьев - количеством рецепторов.
(уж простите за святотаство)
2. Сколько и каких может быть ветвей у дерева?
Количество ветвей зависит от количества имеющихся в распоряжении "свойств"
3. Понятие и дерево это оно и тоже?
Да, просто у дерева одна из ветвей отвечает за "инструкции"
и т.д. Если есть еще вопросы по структуре данных задавайте вопросы.
Если пример с деревом более-менее понятен, то поговорим о БД.
Изначально для быстродействия системы, нам не нужна ВСЯ информация по объекту а нужна лишь метка (ярлык, ID, срез ствола) и лишь при необходимости мы будем "доставать из нужной ячейки нужные данные. Опускаясь или поднимаясь по стволу.
Виды связей.
>только по стрелочке, а против стрелочки идти нельзя.
на "верхнем" - (классы) - ("понятие" - "понятие") - двунаправленные.
>делаем 2 стрелочки, одна туда, другая оттуда
>2) оба понятия абсолютно равноправны, можно по связи гулять туда-сюда совершенно свободно в обоих направлениях. И нельзя сказать что связь выходит откуда-то и входит куда-то, она просто соединяет 2 равноправных понятия.
ПАДАЮТ СНЕЖИНКИ.
КРУТИТСЯ КОЛЕСО.
Вертикальные связи - это описание и характеристики. ПАМЯТЬ. ЗНАНИЯ. (внутри системы) БД.
Горизонтальные - это ОБЩЕНИЕ. РЕЧЬ.
Общаемся мы только "цепочкой горизонтальных связей"
При попадании цепочки внутрь, достраивается ВСЕ ДЕРЕВО ЦЕЛИКОМ. (даже если дерево состоит из 1- 2 веточек)
1. Речь это цепочка горизонтальных связей.
2. Деревья объединяют разрозненные данные в единое целое (лес) - внутреннее представление в памяти.
(рассортированные по понятиям)
3. Каждому дереву - соответствует понятие.
4. развилка это ответвление на определенные "данные", причем как ответвление "вертикальное" так и "горизонтальное" устроены одинаково.
(тут нужны примеры) Как их отличить? Никак. Они равноправны и независимы. Единственное деление на "верхнего уровня" и "нижнего уровня" нижний уровень заканчивается "данными от органов чувств" (будь то запах, цвет, форма и т.д. не важно) "верхний уровень" это просто переплетение ничем не заканчивающееся - лабиринт. хаос. Упорядоченный тем - что уже есть. "Я знаю то - что УЖЕ знаю, чего я не знаю - то я УЗНАЮ со временем".
5. "Путь по связям" - это процесс работы с БД. (алгоритм, исполняемая часть программой при просчете)
Просто данные не могут быть извлечены "просто так" (подайте мне всю выборку по этой теме!) Так как данных по теме может оказаться НАСТОЛЬКО много, что не хватит объема оперативной памяти. Данные извлекаются только "по пути" по связям (точнее вдоль пути).
Возможно несколько ограниченный способ, поскольку до некоторых данных придется идти "кривыми окольными тропами", но именно так устроено в ЕИ. Важнее не иметь доступ ко всем сразу, чем утонуть в хаосе и переизбытке информации. Самоограничение. Защита от зависания.
Ответвления бывают только от ствола и от ветвей. Так же не бывает "двухсмысленностей"
(Квадратный круг)
Переключатель играет роль не только фильтра но и контролера-перепроверятеля правильности записанных данных. Проверка производится все время, (так же как Касперский проверяет файлы в папке, когда ты заходишь в папку).
>"цепочка горизонтальных связей" - направлена или нет?
НЕТ. Примеры:
колесо - автомобиля
автомобильное - колесо
снег - идет
идет - снег
ветер - дует
дует - ветер
Просто связи. Данные. Направление появляется когда они УПОРЯДОЧЕНЫ в структуру (дерево).
Главное - это иерархия дерева.
Просто отсутствует принцип взаимодействия "горизонтальных связей" без "вертикальных". Горизонтальные связи - это набор фраз. Каша. Хаос. Каждая связь имеет смысл (осмыслена) Каждая фраза связана с другой/другими. Но разобраться в этом хитросплетении будет НЕВОЗМОЖНО.
Вертикальные связи УПОРЯДОЧИВАЮТ структуру.
Объекты и процессы.
Процесс мышления идет НЕ СЛОВАМИ а образами. ОБРАЗ не = СЛОВО. Соответствие только приблизительное.
Слова-синонимы и образы-синонимы РАЗНЫЕ вещи, хотя и находятся в очень тесной взаимосвязи и определения похожи.
В чем эта разница состоит?
Слова НУЖНО отделить от ОБРАЗОВ (мыслей) так как привязка одного к другому производится на ВХОДЕ и НА ВЫХОДЕ системы (на входе мы имеем строку текста, на выходе строку текста но ВНУТРИ СИСТЕМЫ мышление идет ОБРАЗАМИ)
Кроме того, одни и теже СЛОВА (предложения) могут соотносится с РАЗНЫМИ ОБРАЗАМИ (зависит от контекста) и наоборот, одни и теже ОБРАЗЫ могут быть выражеными РАЗНЫМИ СЛОВАМИ.
Почему так тупо? Потому что мысль это мысль и к СЛОВАМ она отношения НЕ ИМЕЕТ. Речь (слова) это вторая сигнальная, значит привязка образов/связей производится ПОТОМ, во вторую очередь. Мышление идет НЕ СЛОВАМИ.
Тут страшного ничего нет. Но просто нужно 2 вещи:
1. это ПЕРЕВОД из ВНЕШНЕГО (речь, слова, предложения) ЯЗЫКА во ВНУТРЕННИЙ (образы/связи-цепочки образов) и НАОБОРОТ.
2. это не путать слово "СЛОН" и образ "СЛОН". Поэтому я и предложил как-то их "метить" хотябы так:
(СЛОН)
Анализ ЛЮБОЙ мысли, неважно, "родившейся" внутри системы, или поступившей "снаружи", начинается с "определения смысла". То есть, вначале анализируется поступившая информация. Затем сравнивается с имеющейся. (контекст) Потом выстраивается в буфере "текущая мысль". Определяется смысл (так что он этим хотел сказать?)(смысловых слоев бывает НЕСКОЛЬКО, зависит от "глубины погружения") И лишь только потом производится "привязка_к_Я".
Привязка_к_Я это РЕАКЦИЯ ИР как личности, на поступившую информацию.
Я - как бы посредник между собеседником и собственной БД.
Это просто еще одна проверка, "на необходимость" хранения данной мысли.
Мысль помещается в "виртуальный буфер", прежде чем будет занесена в БД. В основновном, из-за искажений при переводе из "внешнего" во "внутренний" язык. И из-за недоверия к собеседнику. (собеседник может ошибаться/не знать, лгать, фантазировать, издеваться, шутить, наконец просто оказаться "дебилом"). Различных "систем координат" у собеседников (тут вам и наличие/отсутствие знаний, тут и словарный запас, тут и коэфициент интеллекта и умение подбирать слова своим мыслям и многое другое). Наконец просто шум/помехи/искажения от непонимания друг-друга из-за кучи всевозможных причин (начиная от рассовой принадлежности и кончая религиозными убеждениями и психической нормальности).
После всех "модификаций" мысль "вроде бы" становится понятной, то есть она приведена "в порядок" и "является тем, что передавалось". Теперь необходимо "оценить" необходимость в этой мысли. А она вообще нужна? Имеет ли она какое-то значение (приоритет) для меня, как личности. Или же бесполезна и о ней можно забыть? Или наоборот вредна (неправильна)
И так. Что такое вообще "собственное мнение"?
Жизненный опыт. Знания. Эмоциональные переживания. Выводы.
Что такое общение? Это обмен всем вышеперечисленным.
Следовательно, на основе этих данных попробуем продумать типы возможных реакций личности на поступившую информацию. Классифицируем информацию по типам.
1. Бесполезная информация. (низкий коэфициент доверия к собеседнику, соответственно, разговор надолго не запоминается и большая часть данных уничтожается, тем более ничего не записывается в "долговременную память").
2. малополезная информация. (то же самое)
3. Общая (ознакомительная) информация.
4. Информация по конкретной теме.
5. Поведенческая информация (инструкция).
6. Неизвестная информация (важно! всегда важно то, что неизвестно. Неизвестное может представлять опасность).
7. Уточняющая информация. (Борис, ты не прав!)
8. Опровергающая информация. (исправление связей)
9. Закрепляющая информация (я это уже знаю, но повторение - мать учения, дополнительная уверенность в знаниях не повредит)
10. Собственные догадки (непроверенные связи).
11. ??? (сможете добавить?)
Для чат-бота, все можно сделать и попроще...
Что такое (например) ЯБЛОКО?
1. ОПРЕДЕЛЕНИЕ.
Проще всего, загоняем определение (для коммуникатора) в текстовой форме (например: толковые словари, википедия, энциклопедии и т.д.)
1.1 Для процесса (КАК?) - описание процесса.
2. ПРЕДСТАВЛЕНИЕ. см схему. по стрелочке и вниз, где визуальноорганолептическое представление в архиве от органов чувств. Для чат-бота, думаю вполне достаточно... Для ИР придется делать еще и МОДЕЛЬ-представление.
2.1 Для процесса (КАК?) точно так же - КАК выглядит процесс? (если это например"забивать", то визуализация/представление процесса забивания)
3. ИНСТРУКЦИЯ. (если она есть) Это описана РЕАКЦИЯ ИР НА "ПОНЯТИЕ".
"Понятие" это ни что иное, как обыкновенная связь. Просто ВЫДЕЛЕННАЯ от остальных и помеченная ЯРЛЫКОМ для упрощения использования.
Например: "написать письмо", "съездить на дачу с шашлыками", "пригласить девушку в кино", "сходить в ресторан" и т.д.
Самая большая сложность здесь - это большое количество информации в самой инструкции. Например "пригласить девушку в кино" подразумевает целую бездну ЗНАНИЙ, ПОСТУПКОВ и линий поведения, в зависимости от реакции девушки.
(А если откажет?/как добится своего, а если не может?/перенести на другой день, а если фильм не интересный?/поискать другой кинотеатр, А что ПОСЛЕ сеанса?/смотреть по обстановке, то ли прощальный поцелуй... то ли "пригласить попить чаю"/главное что б в постели не курила :)
Наши задачи (пока) не настолько глобальны, и все же...
При поступлении информации, в первую очередь отыскивается "понятие" и выстраивается "линия поведения" извлечением имеющейся "инструкции".
На следующем этапе - этапе обучения, при обнаружении "инструкции" в "чистом виде" она ЗАПИСЫВАЕТСЯ в раздел "инструкции".
Например: "Перебивать собеседника невежливо", "если с тобой поздоровались - нужно поздороваться в ответ", "с незнакомым человеком нужно общаться на Вы".
Это самые обыкновенные инструкции, после перевода их на "внутренний язык", их можно еще и перевести на "язык инструкций" и записать в необходимую ячейку БД.
В конце - концов, чат-бот всегда может спросить/уточнить что-либо...
Например спросить, "как он должен себя вести" в той или иной ситуации.
(а это тоже инструкция:) Не знаешь что-то - спроси...
1. И так у нас есть какая-то информация на входе.
Информация проанализирована, выделен смысл на основании контекста.
По БД инструкций не найдено ни каких "рекомендаций" по использованию данной информации. Информация просто занесена в память. Привязка_к_Я:
- Я Вас понял.
- Спасибо я запомнил.
1.1 То же, что и в п1. но информация уже известна:
- Да, я это уже знаю.
- Мне это уже известно.
- Вы не сообщили мне, ничего нового.
Вообщем, что-то в этом духе...
В любом случае, вначале надо делать что-то попроще, но оставить возможность "для наращивания БД" в будущем.
Если я не полностью рассказал про моделирования человеческих рассуждений связи ? Напиши в комментариях Надеюсь, что теперь ты понял что такое моделирования человеческих рассуждений связи и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Моделирование мыслительных процессов на естественном языке и Символьное моделирование
Ответы на вопросы для самопроверки пишите в комментариях, мы проверим, или же задавайте свой вопрос по данной теме.
Комментарии
Оставить комментарий
Моделирование мыслительных процессов на естественном языке и Символьное моделирование
Термины: Моделирование мыслительных процессов на естественном языке и Символьное моделирование