Выбрать главу

Разумеется, при этом было отброшено огромное количество информации о размерах, положении и ориентации этих треугольников и т. п. Но именно в этом и заключается смысл создания описаний вместо использования необработанных данных! Это похоже на «воронку», которую мы обсуждали в главе XI.

Сеть понятий

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

«высоко» и «низко» противоположны.

«сверху» и «снизу» противоположны.

«высоко» и «сверху» схожи.

«низко» и «снизу» схожи.

«справа» и «слева» противоположны.

различие между «справа-слева» подобно различию между «высоко-низко».

«противоположно» и «схоже» противоположны.

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

Квадрат — это многоугольник.

Треугольник — это многоугольник.

Многоугольник — это замкнутая кривая.

Разница между треугольником и квадратом в том, что у первого 3 стороны, а у второго — 4.

4 схоже с 3.

Круг — это замкнутая кривая.

У замкнутой кривой есть внутренний и внешний районы. «Внутри» и «снаружи» противоположны.

Рис. 123. Небольшая часть сети понятий программы для решения задач Бонгарда. «Узлы» соединены между собой «связями», которые, в свою очередь, могут быть связаны. Принимая связи за глаголы, а соединенные ими узлы за подлежащие и дополнения, можно построить на основе этой диаграммы разные русские предложения.

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

Например, какая-нибудь из первых догадок может оказаться ошибочной, но при этом содержать зерно правильного ответа При первом взгляде на ЗБ #33 (рис. 124) можно подумать, что класс I содержит «колючие» фигуры, а класс II — «гладкие». Однако, если присмотреться, эта догадка оказывается неверной. Все же в ней есть ценная информация, и можно попытаться развить эту идею дальше, работая с теми понятиями сети, которые связаны с «колючим». Это понятие схоже с «острым», которое и оказывается отличительной чертой класса I. Таким образом, одна из основных функций сети понятий состоит в том, чтобы позволять модификацию ранних ошибочных идей и переход к вариациям, которые могут оказаться правильными.

Рис. 124 Задачи Бонгарда.

Переход и пробность

Понятие перехода между похожими предметами родственно понятию восприятия одного предмета как вариации другого. Мы уже видели прекрасный пример этого — «круг с тремя выемками», который на самом деле вовсе не круг! Наши понятия должны быть до определенной степени гибкими. Ничто не должно оставаться совершенно неизменным. С другой стороны, они также не должны быть настолько бесформенными, что в них пропадет всякое значение. Все дело в том, чтобы знать, когда одно понятие может перейти в другое.

Такой переход лежит в основе решений задач Бонгарда ##85 — 87 (рис. 125). ЗБ #85 довольно проста. Предположим, что наша программа в процессе  предварительной обработки данных узнает некий «отрезок». После этого ей легко посчитать отрезки и найти различие между классом I и классом II в ЗБ #85.

Теперь программа переходит к задаче #86. Ее основная методика состоит в том, чтобы опробовать все недавние идеи, оказавшиеся удачными. В реальном мире повторение сработавших ранее приемов часто увенчивается успехом, и Бонгард в своих задачах не стремится перехитрить этот тип эвристики—к счастью, он даже поощряет его. Таким образом, мы переходим к ЗБ #86, имея на вооружении две идеи («считать» и «отрезок»), слитые в одну: «считать отрезки». Но оказывается, что в ЗБ #86 вместо отрезков нужно считать последовательности линий. Последовательность линий здесь означает сцепление (одного или более) отрезков. Программа может догадаться об этом, например, благодаря тому, что ей известны оба понятия, «отрезок прямой» и «последовательность прямых», и что они расположены близко друг от друга в сети понятий. Другим, способом было бы изобретение понятия «последовательность прямых» — задача, мягко выражаясь, не из простых.

Далее следует ЗБ #87, в которой понятие «отрезок» обыгрывается по-иному. Когда один отрезок становится тремя? (См. рамку II-А.) Программа должна быть достаточно гибкой, чтобы переходить взад и вперед между различными описаниями данного фрагмента рисунка. Разумно сохранять в памяти старые описания, вместо того, чтобы их забывать и затем составлять снова, поскольку нет гарантии того, что новое описание окажется лучше прежнего. Таким образом, вместе с каждым старым описанием программа должна запоминать его сильные и слабые стороны. (Не правда ли, это начинает звучать довольно сложно?)

Рис. 125. Задачи Бонгарда ##85 — 87 (Из книги Бонгарда «Проблема узнавания»).

Мета-описания

Теперь мы подошли к другой жизненно важной части процесса узнавания; она имеет дело с уровнями абстракции и мета-описаниями. Для примера давайте вернемся к ЗБ #91 (рис. 121). Какой эталон можно здесь построить? С таким количеством вариантов трудно знать, откуда начинать. Но это уже само по себе является подсказкой! Это говорит нам, что различие между классами, скорее всего, существует на уровне, высшем чем уровень геометрических описаний. Это наблюдение подсказывает программе, что она может попытаться рассмотреть описания описаний — то есть мета-описания. Может быть, на этом втором уровне нам удастся обнаружить какие-либо общие черты, и, если повезет, найти достаточно сходства для того, чтобы создать эталон для мета-описаний. Таким образом, мы начинаем работу без эталона и создаем описания нескольких рамок; после того, как они закончены, мы описываем сами эти описания. Какие гнезда будут у нашего эталона для мета-описаний? Может быть, следующие:

использованные понятия: —

повторяющиеся понятия: —

названия гнезд: —

использованные фильтры: —

Существует множество других гнезд, которые могут быть использованы в мета-описаниях; это просто пример. Предположим теперь, что мы описали рамку I-Д в ЗБ #91. Ее «безэталонное» описание может выглядеть так:

горизонтальный отрезок.

вертикальный отрезок, находящийся на горизонтальном отрезке.

вертикальный отрезок, находящийся на горизонтальном отрезке.

вертикальный отрезок, находящийся на горизонтальном отрезке.

Разумеется, множество сведений было отброшено: то, что три вертикальных отрезка одинаковой длины, отстоят друг от друга на одно и то же расстояние и т. п. Но возможно и подобное описание. Мета-описание может выглядеть так:

использованные понятия: вертикальный-горизонтальный, отрезок, находящийся на

повторяющиеся понятия: 3 копии описания «вертикальный отрезок, находящийся на горизонтальном отрезке».

названия гнезд: —

использованные фильтры: —

Не все гнезда мета-описания должны быть заполнены: на этом уровне тоже возможно отбрасывание информации, как и на уровне «простого описания». Если бы мы теперь захотели составить описание и мета-описание любой другой рамки класса I, то гнездо «повторяющиеся описания» каждый раз содержало бы фразу «три копии ...» Детектор сходства заметил бы это и выбрал бы «тройничность» в качестве общей абстрактной черты рамок класса I. Таким же образом, путем мета-описаний может быть установлено, что «четверичность» — отличительная черта класса II.