Сравнивая человека с роботом (или автоматом) мы при этом подразумеваем, что поведение такого человека описывается слепым алгоритмом: человек механистически выполняет набор действий, не ставя перед собой вопросы «зачем эти действия выполняются?» и «почему ожидается, что эти действия приведут к ожидаемому результату?».
Почти все программы ведут себя подобным механистическим образом. Но ведь есть и другой подход.
Алгоритмы можно поделить на две большие группы: целестремительные и слепые алгоритмы.
— Целестремительный алгоритм имеет явную цель, которую старается достичь.
— Слепой алгоритм себе явно цель не ставит, но в результате применения алгоритма цель всё равно достигается.
Самонаводящаяся ракета обладает целестремительным алгоритмом: ставится конечная цель — поразить мишень, которая и достигается, робот-пылесос использует слепой алгоритм по обходу комнаты (делается ряд прямолинейных и случайных движений), который в несложных случаях достигает цели — обход всего помещения.
Большая часть ПО сейчас строится на слепых алгоритм, человек же достаточно активно применяет целестремительные алгоритмы.
Целестремительный алгоритм в своей основе имеет управляющий контур с обратной связью:
1. собирается текущее состояние окружающего мира,
2. на основе текущего состояния и ранее поставленной цели вычисляется рассогласование,
3. выбирается и выполняется действие, для которого ожидается, что оно лучше всего уменьшит рассогласование.
Слепые алгоритмы такого управляющего контура не имеют, а строятся на выполнении исходно заданной последовательности шагов.
Обе группы имеют свои плюсы и минусы:
1. слепые алгоритмы
"+": более экономичны, обеспечивают максимальную производительность.
"-": перестают достигать цели даже при небольшом изменении внешних условий.
2. Целестремительный алгоритм
"-": высокозатратные из-за необходимости сбора данных об окружающей среде и их анализе
"+": достигают цели на широком диапазоне меняющихся внешних условий
Реальные сложные алгоритмы имеют элементы и того, и другого.
Например, куры не могут решить задачу «достать зерно из-за сетки, если для этого сетку надо обойти влево или вправо», а собаки или крысы с этой задачей справляются много легче, также справляется и часть более умных видов птиц.
И те, и другие при этом используют целестремительный алгоритм, но куры для расчета рассогласования используют слепой критерий: расстояние до еды по прямой (который лишь в условиях отсутствия препятствий обеспечивает достижения целей), более развитые животные в этом плане гибче, и используют более сложный алгоритм: целестремительный поисковый рефлексивный алгоритм.
В целестремительном рефлексивном алгоритме появляется 4-ый пункт:
1. собирается текущее состояние окружающего мира,
2. на основе текущего состояния и ранее поставленной цели вычисляется рассогласование,
3. выбирается и выполняется действие, для которого ожидается, что оно лучше всего уменьшит рассогласование.
4. мониторинг результатов выполнения действия, сравнение результата с ожидаемым эффектом; принятие решения об эффективности выполняемых действий и поиск причины для случая, если действие не возымело эффекта.
Например, делая шаг, ожидаем что передвинемся в пространстве, но по факту перемещения не произошло. Из такой ситуации делается вывод, что нас что-то держит, а значит просто повторять действие «делать шаг» далее бессмысленно.
Целестремительный рефлексивный алгоритм можно представить как композицию двух целестремительный алгоритмов:
— основной целестремительный алгоритм — направленный на достижение цели,
— дополнительный целестремительный алгоритм — отслеживающий, что каждый выполненный шаг приводит к тому, что ожидалось.
Другими словами к основному целестремительному алгоритму добавляется рефлексия по способу достижения цели. Подобных рефлексий можно добавлять бесконечно много, например:
— рефлексия по адекватности сбора текущего состояния мира
— рефлексия по адекватности описания текущего состояния мира
— рефлексия по адекватности описания цели
— рефлексия по адекватности постановки цели
— рефлексия по адекватности декомпозиции целей на подцели
— рефлексия по оценке достижимости цели
— рефлексия по адекватности рефлексии…
и т.д.
Если к целестремительному алгоритму добавлять и добавлять рефлексии, то на определенном этапе такой алгоритм превращается в сознание. На текущий момент сложно сказать на каком этапе это происходит, и какие рефлексии необходимы для появления сознания, но уже точно можно утверждать, что программы, имеющие элементы сознания, должны строиться на целестремительных алгоритмах, а не на слепых алгоритмах.
Почти все программы ведут себя подобным механистическим образом. Но ведь есть и другой подход.
Алгоритмы можно поделить на две большие группы: целестремительные и слепые алгоритмы.
— Целестремительный алгоритм имеет явную цель, которую старается достичь.
— Слепой алгоритм себе явно цель не ставит, но в результате применения алгоритма цель всё равно достигается.
Самонаводящаяся ракета обладает целестремительным алгоритмом: ставится конечная цель — поразить мишень, которая и достигается, робот-пылесос использует слепой алгоритм по обходу комнаты (делается ряд прямолинейных и случайных движений), который в несложных случаях достигает цели — обход всего помещения.
Большая часть ПО сейчас строится на слепых алгоритм, человек же достаточно активно применяет целестремительные алгоритмы.
Целестремительный алгоритм в своей основе имеет управляющий контур с обратной связью:
1. собирается текущее состояние окружающего мира,
2. на основе текущего состояния и ранее поставленной цели вычисляется рассогласование,
3. выбирается и выполняется действие, для которого ожидается, что оно лучше всего уменьшит рассогласование.
Слепые алгоритмы такого управляющего контура не имеют, а строятся на выполнении исходно заданной последовательности шагов.
Обе группы имеют свои плюсы и минусы:
1. слепые алгоритмы
"+": более экономичны, обеспечивают максимальную производительность.
"-": перестают достигать цели даже при небольшом изменении внешних условий.
2. Целестремительный алгоритм
"-": высокозатратные из-за необходимости сбора данных об окружающей среде и их анализе
"+": достигают цели на широком диапазоне меняющихся внешних условий
Реальные сложные алгоритмы имеют элементы и того, и другого.
Например, куры не могут решить задачу «достать зерно из-за сетки, если для этого сетку надо обойти влево или вправо», а собаки или крысы с этой задачей справляются много легче, также справляется и часть более умных видов птиц.
И те, и другие при этом используют целестремительный алгоритм, но куры для расчета рассогласования используют слепой критерий: расстояние до еды по прямой (который лишь в условиях отсутствия препятствий обеспечивает достижения целей), более развитые животные в этом плане гибче, и используют более сложный алгоритм: целестремительный поисковый рефлексивный алгоритм.
В целестремительном рефлексивном алгоритме появляется 4-ый пункт:
1. собирается текущее состояние окружающего мира,
2. на основе текущего состояния и ранее поставленной цели вычисляется рассогласование,
3. выбирается и выполняется действие, для которого ожидается, что оно лучше всего уменьшит рассогласование.
4. мониторинг результатов выполнения действия, сравнение результата с ожидаемым эффектом; принятие решения об эффективности выполняемых действий и поиск причины для случая, если действие не возымело эффекта.
Например, делая шаг, ожидаем что передвинемся в пространстве, но по факту перемещения не произошло. Из такой ситуации делается вывод, что нас что-то держит, а значит просто повторять действие «делать шаг» далее бессмысленно.
Целестремительный рефлексивный алгоритм можно представить как композицию двух целестремительный алгоритмов:
— основной целестремительный алгоритм — направленный на достижение цели,
— дополнительный целестремительный алгоритм — отслеживающий, что каждый выполненный шаг приводит к тому, что ожидалось.
Другими словами к основному целестремительному алгоритму добавляется рефлексия по способу достижения цели. Подобных рефлексий можно добавлять бесконечно много, например:
— рефлексия по адекватности сбора текущего состояния мира
— рефлексия по адекватности описания текущего состояния мира
— рефлексия по адекватности описания цели
— рефлексия по адекватности постановки цели
— рефлексия по адекватности декомпозиции целей на подцели
— рефлексия по оценке достижимости цели
— рефлексия по адекватности рефлексии…
и т.д.
Если к целестремительному алгоритму добавлять и добавлять рефлексии, то на определенном этапе такой алгоритм превращается в сознание. На текущий момент сложно сказать на каком этапе это происходит, и какие рефлексии необходимы для появления сознания, но уже точно можно утверждать, что программы, имеющие элементы сознания, должны строиться на целестремительных алгоритмах, а не на слепых алгоритмах.