Вы можете не поверить, но для того, чтобы разобраться в технологии познания, нам понадобятся достаточно средние навыки и довольно скромные представления об окружающем нас предметном (и непредметном) мире.
Следующая глава займется подробной доработкой этого вопроса.
Глава 1. Эврика!
Многие из вас играли когда-то в одну занимательную игру. Существует множество ее вариаций, но в виде одной из них она называлась «Отгадай животное». Смысл заключался в том, что один из игроков загадывает некий предмет (или животное, или понятие), а второй – пытается его угадать, задавая простые вопросы, на которые можно дать ответ «Да» или «Нет».
Помнится в далеком детстве я сталкивался в одной популярной книге по программированию с примером такой игры, в виде простой программы на паскале и бейсике.* (1. Очков В. Ф., Хмелюк В. А., От микрокалькулятора к персональному компьютеру, М.: Изд-во МЭИ, 1990).
Каждый новый объект там хранился в бинарном «дереве» ответов, «поворачивая» на каждой ветке ответного алгоритма «влево» на ответ «Да» или «вправо» на ответ «Нет». Здесь я процитирую авторов книги:
«В этой игре человек задумывает животное (предмет, явление), которое компьютер должен отгадать, задавая альтернативные вопросы, разбивающие множество выдумок человека на две части. Машина как бы взбирается на двоичное дерево, ветви которого (альтернативные вопросы при ответе человека (да-нет) раздваиваются. На ветвях «висят» ответы на вопросы.
Программа самообучающаяся, т.е., машина сама «выращивает» дерево вопросов и ответов, которое хранится в двух литерных массивах В (вопросы) и О (ответы) и в одном числовом Р (логические переходы, ведущие к ответу).» (с. 165)
Игра на самом деле занимательная, но имеет ряд недочетов: бинарное дерево не идеально для построения требуемого классификатора, подобного тому, что находится от природы у нас в мозге.
Тем не менее, мысль об игре в животные не давала мне покоя долгое время, и я часто возвращался к ней спустя многие годы. И в один замечательный день, (если быть точнее, ночь) все элементы этой головоломки встали на свои места.
Вспомните, как вы начинаете игру в качестве угадывающего?
Чаще всего, вашими первыми вопросами будет вроде «Это живое»? «Это животное»? «Это человек»? и другие, очень общие вопросы. То есть, интуитивно, мы отсекаем от невероятно большого количества объектов материального мира ее значительную часть, для того, чтобы сократить поиски. В результате планомерного отсечения лишнего, наступает момент, когда число определяемых объектов сужается до класса, содержащего всего несколько предметов, и заканчивается на верном варианте.
Приведу пример. Мы начинаем в качестве угадывающего.
– Это живое?
– Нет
– Это можно взять в руки?
– Да
– Этим мы пользуемся каждый день?
– Да
– Это предмет гигиены?
– Нет
– Это предмет одежды?
– Нет
– Это твердое?
– Да
– Это элемент компьютера?
– Нет
– Это тяжелое?
– Нет
– Это телефон?
– Да
Конечно, задуманный объект был не очень сложным, поэтому мы отгадали его всего за 9 попыток. И конечно, отгадывающий хитрил, действуя на основе интуиции, переключаясь на самые популярные группы объектов. Но попробуйте сами, и вы откроете самое интересное, – то, что практически любой объект, или предмет, или понятие из реального мира можно отгадать, задав от 10 до 22 вопросов. Это правило действует так или иначе, в зависимости от степени разветвленности объектных классов, с которыми мы имеем дело.
И я задумался вот над чем. А если мы сохраним каким-то образом в компьютере при описании каждого предмета реального мира его «геном», «генетический код», хранящий информацию обо всех предыдущих классах, о каждой переходной ветке на этом дереве бытия?