Страница 2 из 4 Это выражение классифицирует каждый пример как положительный, поэтому требует уточнения. Такую операцию можно выполнить, каждый раз вводя по одному литералу в левую часть выражения. Ниже перечислены три возможных дополнения. (Обратите внимание на то, что здесь предполагается, будто выражение, определяющее предикат Parent, уже является частью фоновых знаний.) Первое из этих трех выражений неправильно классифицирует все 12 положительных примеров как отрицательные и поэтому может быть проигнорировано. Второе и третье выражения согласуются со всеми положительными примерами, но второе является неправильным применительно к большей части отрицательных примеров (этих примеров вдвое больше, чем в первом случае, поскольку в них допускается произвольная подстановка данных и о матерях, и об отцах). Поэтому предпочтительным является третье выражение. Теперь необходимо дополнительно уточнить это выражение, чтобы исключить те случаи, в которых χ является отцом некоторого z, но z не является родителем у. Добавление единственного литерала Parent (z, у) позволяет получить следующее выражение, которое правильно классифицирует все примеры: Программа Foil способна найти и выбрать этот литерал, решая тем самым задачу обучения. Вообще говоря, программе Foil обычно приходится выполнять поиск среди многих неподходящих выражений, прежде чем она сможет найти правильное решение. Этот пример может служить очень простой иллюстрацией того, как действует программа Foil. Набросок общего алгоритма этой программы приведен в листинге 19.4. По существу, алгоритм повторно составляет выражение, вводя в него один литерал за другим до тех пор, пока это выражение не начинает согласовываться с некоторым подмножеством положительных примеров и при этом не согласуется ни с одним отрицательным примером. Затем положительные примеры, охваченные данным выражением, удаляются из обучающего множества и процесс продолжается до тех пор, пока не остается ни одного положительного примера. Двумя основными процедурами, требующими пояснения, являются New-Literals, которая создает все возможные новые литералы для добавления к выражению, и Choose-Li teral, которая выбирает литерал для добавления.
|