Фрейм (инженерия знаний)
Фрейм (англ. frame) — структура данных в области искусственного интеллекта, используемая для разделения знаний на подструктуры путём представления стереотипных ситуаций[1]. Концепция впервые была предложена Марвином Мински в 1974 году в статье «Структура для представления знаний»[1]. Фреймы являются основной структурой данных, применяемой в специализированных языках описания фреймов, где они хранятся в виде онтологий множеств[2].
Фреймы — одна из основных технологий схем представления и вывода знаний. Они были разработаны на основе семантических сетей, а потому относятся к классу структурных представлений знаний[3].
По определению С. Рассела и П. Норвига в книге «Искусственный интеллект: современный подход», структурные представления собирают «факты о конкретных типах объектов и событий и структурируют типы в крупную таксономическую иерархию, аналогичную биологической таксономии»[4].
Структура фрейма
Фрейм содержит информацию о правилах своего использования, о том, что должно произойти далее, и о действиях при несоблюдении этих ожиданий.
Часть информации во фрейме обычно неизменна, а другие данные, сохраняемые в терминалах, могут меняться; терминалы рассматриваются как переменные.
Верхнеуровневые фреймы содержат сведения, всегда истинные для данной задачи, однако значения терминалов могут изменяться по мере поступления новой информации. Разные фреймы могут использовать одни и те же терминалы.
Каждая единица информации конкретного фрейма хранится в отдельном слоте.
Информация в фрейме может включать:
- Факты или данные:
- Значения («facets» — фасеты)
- Процедуры (процедурные вложения):
- IF-NEEDED — отложенное вычисление
- IF-ADDED — обновление связанной информации
- Значения по умолчанию
- Для данных
- Для процедур
- Другие фреймы или подфреймы
Особенности и достоинства
Терминалы фрейма обычно уже заполнены значениями по умолчанию, что отражает принципы работы человеческого разума[1].
Например, когда человек слышит фразу «мальчик пинает мяч», большинство визуализирует конкретный знакомый мяч (например, футбольный), а не абстрактный объект без характеристик.
Одно из преимуществ фреймового представления знаний — возможность задания исключений для конкретных экземпляров, что отличает его от семантических сетей и придаёт гибкость, необходимую для адекватного отображения реальных явлений.
Аналогично семантическим сетям, фреймы поддерживают распространение активации при запросах. Согласно правилам наследования, любые значения, задаваемые для слота и наследуемые подфреймами, будут обновлены (IF-ADDED) во всех соответствующих слотах подфреймов; новые экземпляры фрейма также получат новое значение по умолчанию.
Благодаря структуре фреймов возможно построение семантической сети на их основе, хотя явные дуги могут отсутствовать. Ссылки на труды Ноама Хомского и его генеративную грамматику 1950-х годов, как правило, отсутствуют в работах Мински.
Упрощённые структуры фреймов обеспечивают лёгкий аналоговый вывод, что ценно для интеллектуальных агентов. Процедурные вложения во фреймах позволяют добиться большей гибкости и приближения к реальности, а также удобны для программных приложений.
Пример
Интересной особенностью является простота аналоговых рассуждений между, например, «мальчиком» и «обезьяной» благодаря одинаковому именованию слотов.
Экземпляр Alex («Алекс»), относящийся к классу «мальчик», наследует, например, пол («мужской») от базового фрейма, но конкретные значения, такие как количество ног, могут быть изменены как исключение.
| Слот | Значение | Тип |
|---|---|---|
| ALEX | _ | (Данный фрейм) |
| NAME | Алекс | (ключевое значение) |
| ISA | Мальчик | (родительский фрейм) |
| SEX | Мужской | (наследуемое значение) |
| AGE | IF-NEEDED: Subtract(current,BIRTHDATE); | (процедурное вложение) |
| HOME | 100 Main St. | (значение экземпляра) |
| BIRTHDATE | 4 августа 2000 | (значение экземпляра) |
| FAVORITE_FOOD | Спагетти | (значение экземпляра) |
| CLIMBS | Деревья | (значение экземпляра) |
| BODY_TYPE | Худощавый | (значение экземпляра) |
| NUM_LEGS | 1 | (исключение) |
| Слот | Значение | Тип |
|---|---|---|
| МАЛЬЧИК | _ | (Данный фрейм) |
| ISA | Человек | (родительский фрейм) |
| SEX | Мужской | (значение экземпляра) |
| AGE | До 12 лет | (процедурное вложение — ограничение) |
| HOME | Какое-либо место | (фрейм) |
| NUM_LEGS | По умолчанию = 2 | (по умолчанию, наследовано от фрейма «Человек») |
| Слот | Значение | Тип |
|---|---|---|
| ОБЕЗЬЯНА | _ | (Данный фрейм) |
| ISA | Примат | (родительский фрейм) |
| SEX | Один из (Мужской, Женский) | (процедурное вложение) |
| AGE | целое число | (процедурное вложение — ограничение) |
| HABITAT | По умолчанию = Джунгли | (по умолчанию) |
| FAVORITE_FOOD | По умолчанию = Бананы | (по умолчанию) |
| CLIMBS | Деревья | |
| BODY_TYPE | По умолчанию = Худощавый | (по умолчанию) |
| NUM_LEGS | По умолчанию = 2 | (по умолчанию) |
Фреймовый язык
Фреймовый язык — технология, применяемая для представления знаний в искусственном интеллекте. Он похож на иерархии классов в объектно-ориентированных языках программирования, хотя их фундаментальные цели различаются.
Фреймы нацелены на явно́е и интуитивное описание знаний, тогда как объекты ориентированы на инкапсуляцию и сокрытие информации. Фреймы возникли в исследованиях по ИИ, а объекты — преимущественно в разработке ПО.
Однако в реальной практике техники и возможности фреймовых и объектно-ориентированных языков во многом пересекаются.
Простым примером концепций, моделируемых во фреймовом языке, является онтология Friend of A Friend (FOAF), созданная для семантической сети и используемая в качестве основы для социальных сетей и календарей.
Главный фрейм в приведённом примере — «Person» («Человек»).
Примеры слотов: email, домашняя страница, телефон и др.
Интересы каждого человека могут быть представлены дополнительными фреймами, описывающими область бизнеса и развлечений.
Слот knows образует связи между людьми.
Значения интересов могут быть выведены по связям внутри социальной сети[5].
Первые языки на фреймах разрабатывались как индивидуальные решения для конкретных исследовательских проектов и не были оформлены в виде независимых инструментов.
Подобно экспертным системам с отдельными машинами вывода, учёные впоследствии начали выделять универсальную инфраструктуру и создавать обобщённые языки, не связанные со специфическими приложениями.
Одним из первых таких языков был KRL[2]. Одним из наиболее влиятельных ранних языков стал KL-ONE[3], породивший множество последующих стандартов.
Одним из самых распространённых преемников KL-ONE был язык Loom, разработанный Робертом Макгрегором в Институте информационных наук[6].
В 1980-х сфера искусственного интеллекта привлекла всё больше внимания бизнеса за счёт развития экспертных систем. Это привело к созданию коммерческих продуктов для проектирования систем на основе знаний. Ранние продукты обычно реализовывались на Lisp и совмещали правила IF-THEN для логического вывода с иерархиями фреймов.
Одной из самых известных ранних оболочек была Knowledge Engineering Environment (KEE), разработанная компанией Intellicorp, с полной поддержкой языка фреймов, множественного наследования, слотов, триггеров, значений по умолчанию и системы вывода, поддерживающей прямой и обратный вывод. Первоначально KEE функционировала на специализированных машинах Lisp, но затем была портирована и на ПК под UNIX[7].
Работы по семантической паутине способствовали возрождению интереса к автоматическим классификаторам и языкам фреймов. Примеры — стандарт OWL (Web Ontology Language), создающий семантический слой поверх Интернета, и предназначенный для организации веба по смысловым онтологиям, а не только по ключевым словам.
Название языка OWL иллюстрирует достоинства семантического подхода: если искать «OWL» сегодня, большинство страниц будут о сове, а не о стандарте. В семантической сети пользователь сможет точно указать, о каком значении идёт речь, без хлопот с омонимами и синонимами.
К стандартам и инструментам этого класса относятся OIL, DAML и Protégé от Стэнфордского университета, первоначально поддерживавший явные фреймы (до версии 3.5), впоследствии перешедший на OWL DL как более выразительный и промышленный стандарт[8].
Фреймовые и объектно-ориентированные языки имеют большое пересечение по возможностям. Несмотря на различие терминологии и целей на ранних этапах, к моменту коммерциализации разработчики стали активно комбинировать лучшие решения обеих парадигм.
Общая цель обоих подходов — максимально приблизить архитектуру программ к концепциям реального мира и их таксономиям.
Соответствие терминологии показано в таблице:
| Терминология фреймов | Терминология ООП |
|---|---|
| Фрейм | Класс объектов |
| Слот | Свойство объекта или атрибут |
| Триггер | Акцессоры и мутаторы |
| Метод (например, loom, KEE) | Метод (функция-член) |
Ключевое отличие состоит в подходе к инкапсуляции. В ООП инкапсуляция считается одним из главных требований — управление доступом к данным и методам важно для масштабирования сложных систем. Во фреймовых языках инкапсуляция не столь критична — значимее наличие гибких инструментов для описания правил, ограничений, логики.
Другое отличие — поддержка множественного наследования. Для фреймов это обязательное условие: концепции реального мира редко укладываются в строго раздельные таксономии. В ООП, напротив, тенденция — к единственному наследованию и модульности[9].
Поздние фреймовые языки вроде Loom и KEE включали механизм «сообщений», схожий с принципом message passing.
В ООП также реализованы стандарты для ассоциаций тестовых данных и ограничений с объектами (аналогично слоту «facets» во фреймах), а также для интеграции правил[10][11].
История
Ранняя работа по фреймам была вдохновлена психологическими исследованиями 1930-х годов, согласно которым люди используют стереотипные структуры знаний для интерпретации новых когнитивных ситуаций[12]. Термин «фрейм» был введён Марвином Мински для описания парадигмы понимания зрительного и речевого восприятия[13].
Первоначально предполагалось, что фреймы (или скрипты) позволяют устанавливать контекст задачи и резко сузить пространство поиска решений. Идея была расширена Роджером Шанкомом и Робертом Абельсоном, которые применили её для описания типовых человеческих взаимодействий, например заказа блюда в ресторане[14]. В таких сценариях хранились слоты, соответствовавшие объектным свойствам. Слоты могли иметь значения по умолчанию, но также требовали доопределения в ходе выполнения задания.
Как и объектные классы, фреймы организовывались в иерархии подтипов. Базовый фрейм (например, «заказ в ресторане») мог быть конкретизирован (фрейм «заказ в дорогом ресторане» с дополнительными слотами либо иными значениями по умолчанию)[15][2].
Большая часть ранних исследований в области фреймов была мотивирована опытом экспериментальной психологии (например, работы Шанка и Абельсона) и попытками создать средства представления знаний, отражающие реальные паттерны человеческой деятельности. Для этих исследователей математическая строгость не была главной — аналогично, как и в лингвистике Чарльз Филлмор в 1970-х выдвинул теорию фреймовой семантики, впоследствии реализованную, например, в системе FrameNet[16].
Другие исследователи, такие как Рон Брачман, стремились придать фреймам математическую строгость и свести их к теориям множеств и логике для автоматизации построения и проверки моделей с помощью логического вывода. Этот подход позволял применять автоматические классификаторы.
Это отражает классический конфликт в ИИ — «строгие» (neats) и «приближённые» (scruffies) подходы[17].
Наиболее известным формально-логическим языком был KL-ONE[3]. Он обеспечил автоматическую классификацию и проверку логических связей между фреймами (классификатор), что стало основой для функций вывода и обнаружения противоречий[6].
Эти технологии оказались крайне полезны для интерпретации неструктурированных данных, например, в семантической паутине[18].
Разделение на «строгих» и «приближённых» также проявилось и в развитии семантической паутины, породив, например, движение Linking Open Data — с упором больше на публикацию данных, чем на моделирование литералов[19].
Примечания
Литература
- Беляевская, Е. Г. О конвергенции когнитивных структур / Е. Г. Беляевская // Когнитивные исследования языка. — 2025. — № 3-1(64). — С. 18-23.
- Гончаренко, В. В. Фреймы для распознавания смысла текста / В. В. Гончаренко, Е. А. Шингарева ; Отв. ред. Р. Г. Пиотровский. — Кишинев : Штиинца, 1984. — 198 с. : ил.; 21 см.
- Гурина, Р. В. Фреймовое представление знаний : [монография] / Р. В. Гурина, Е. Е. Соколова. — Москва : Нар. образование : НИИ шк. технологий, 2005. — 175 с. : ил., табл.; 20 см.
- Категории искусственного интеллекта в лингвистической семантике. Фреймы и сценарии. — Москва : ИНИОН, 1987. — 53,[1] с. : 20 см.
- Кудряшов, В. А. Технология фрейм реле на цифровых сетях связи : Учеб. пособие / В. А. Кудряшов, А. К. Лебединский; М-во путей сообщения Рос. Федерации. Петерб. гос. ун-т путей сообщ. (ПГУПС-ЛИИЖТ). — СПб. : [Петерб. гос. ун-т путей сообщ.], 2002. — 29 с. : ил., табл.; 21 см.
- Левковец, Л. Adobe InDesign CS4 : базовый курс на примерах / Леонид Левковец. — Санкт-Петербург : БХВ-Петербург, 2009 (СПб. : Наука). — 543 с. : ил., табл.; 24 см
- Рассел, С. Искусственный интеллект : современный подход : [перевод с английского] / Стюарт Рассел, Питер Норвиг. — 4-е изд. — Москва : Диалектика ; Санкт-Петербург : Диалектика, 2021—. — 24 см.
- Сагикызы, А. Информационное общество: концептуальные модели и алгоритмы фреймирования опыта повседневности / А. Сагикызы, В. Ю. Дунаев, В. Д. Курганская // Вопросы философии. — 2026. — № 1. — С. 28-38.
- Сидняев, Н. И. Исследование мультипликативной последовательности псевдослучайных фреймов в базе знаний / Н. И. Сидняев, Е. Е. Синева // Научно-техническая информация. Серия 2: Информационные процессы и системы. — 2025. — № 2. — С. 1-9.
- Стренева, Н. В. Фрейм текстов-граффити: графика и форма представления [Текст] : монография / Н. В. Стренева ; Министерство образования и науки Российской Федерации, Федеральное государственное бюджетное образовательное учреждение высшего образования "Оренбургский государственный университет". — Оренбург : Университет, 2017. — 108 с. : ил., табл.; 21 см.
- Marvin Minsky. A Framework for Representing Knowledge, MIT-AI Laboratory Memo 306, июнь 1974.
- Daniel G. Bobrow, Terry Winograd. An Overview of KRL, A Knowledge Representation Language
- R. Bruce Roberts and Ira P. Goldstein. The FRL Primer, 1977
- R. Bruce Roberts and Ira P. Goldstein. The FRL Manual, 1977
- Brachman, R.; J. Schmolze (1985). “An overview of the KL-ONE Knowledge Representation System”. Cognitive Science. 9 (2): 171—216. DOI:10.1016/s0364-0213(85)80014-8.
- Fikes, R. E.; T. Kehler (1985). “The role of frame-based representation in knowledge representation and reasoning”. Communications of the ACM. 28 (9): 904—920. DOI:10.1145/4284.4285. S2CID 9868560.
- Peter Clark, Bruce Porter. KM - The Knowledge Machine 2.0: Users Manual, http://www.cs.utexas.edu/users/mfkb/RKF/km.html.
- Peter D. Karp, The Design Space of Frame Knowledge Representation Systems, Technical Note 520, Artificial Intelligence Center, SRI International, 1992