Здесь и возникает очень деликатная проблема: если цель нельзя представить во всех деталях, то нужно прибегнуть к эвристике, и тогда компьютер должен быть снабжен алгоритмом эвристической природы. Трудность тут принципиальная. Допустим, мы заявляли: "Компьютер должен обучаться на собственном опыте, как учатся люди". Обучаться чему? Мы не знаем ответа, мы просто считаем, что компьютер через некоторое время должен найти методом проб и ошибок такой курс действий, который даст лучший результат управления. Но мы должны сказать, какой результат лучше и какой хуже, а компьютер должен определить лучшую, чем уже известна, стратегию, лучшую систему управления. Конечно, он может это сделать, поскольку его алгоритм (то, что запрограммировано) эвристический, по определению. Немного измените решение, которое Вы ранее использовали, — подсказывает алгоритм, — и сравните результат с предыдущим. Если этот алгоритм обеспечивает большую прибыль или удешевляет производство, или чем-то иным устраивает нас, то принимайте его. Так и продолжайте, пока не достигнете такого положения, при котором любой вариант даст худший результат, чем раньше. Тогда придерживайтесь этой стратегии до тех пор, пока ситуация не изменится, после чего Вы сможете вновь искать лучшую стратегию, рассмотрев ее новые варианты.
В этом простом, бесхитростном примере, который и ребенку понятен, и заключается секрет этого, по существу биологического, процесса. Мы прорвались через барьер, который был создан консервативным мнением 2000 лет тому назад между живыми и механическими системами управления. В этом суть барьера между алгоритмическими и эвристическими моделями управления. Если воздержаться от мистически-сентиментального подхода к природе ("неправда ли, как она умна!"), то станет видно, что природа всего лишь использует свои алгоритмы, чтобы подчеркнуть эвристическое начало. Генетический материал является алгоритмическим: молекулы ДНК — хранители сложного определенного кода. Так потомство строится по заданным "чертежам". Но в этом коде записаны вариации и мутации, и поэтому потомки располагают рядом возможных чертежей. Тогда, говоря другим языком — языком экологии, выносится приговор относительно "преимуществ" данного потомка. Вариант, достойный сохранения, выживает, при этом вариации и мутации, которые определяют его преимущества, закрепляются, а мутации, обусловливающие недостатки, истребляются. Генетическая эвристика работает в направлении к неизвестной цели — созданию форм жизни, способных выживать в обстоятельствах, которые слишком сложны для анализа, используя приемы, для оптимизации которых еще не создан компьютер.
Существует несколько важных постулатов относительно эвристических методов управления. Их стоит тщательно рассмотреть и оценить. Поэтому с риском испортить их краткостью, я сформулировал 13 следующих постулатов для тщательного их усвоения.
1. Эвристика ведет нас к цели, которую мы не в состоянии ясно выразить и, возможно, узнать, сумев ее достигнуть. Алгоритм (типа "чтобы достичь высшей точки, попытайтесь сделать по одному шагу во всех направлениях и передвиньтесь к следующей более высокой точке") определяет эвристическое условие выработки правильной стратегии. А суть стратегии такова: "лучшее — подниматься из данного места, пока есть куда, затем переместиться выше". Но такой маршрут нельзя выработать заранее.
2. Если мы обеспечим компьютер эвристическим алгоритмом и подождем, пока он выработает стратегию, то обнаружим, что компьютер создал стратегию, превышающую наше понимание. Такое вполне возможно, поскольку компьютер осуществляет свои пробные шаги значительно быстрее, систематичнее и точнее, чем можем мы с Вами, без остановки на развлечения и отдых и не забывает результатов. Это похоже на человека, постоянно играющего в шахматы и запоминающего все, чему он научился в каждой партии. Можно предполагать, что он обыграет такого любителя, как мы с Вами.
3. Но если так, то пришло время признать смысл, в силу которого человек изобрел машину, "более умную", чем он сам. Такая мысль неприятна, даже, тревожна и кажется самоудовлетворенному человеку несерьезной на том основании, что "мы указали машине, что ей делать". Но поразмышляйте над этим. Если машина вырабатывает стратегию, лучшую, чем можем сообразить мы, и если мы не можем понять, почему она лучше, хотя и признаем это, то слабым утешением служит то, что мы научили ее эвристическим трюкам с помощью алгоритма. Учитель Эйнштейна в начальной школе был точно в таком же положении. (Над последними двумя фразами стоит поразмыслить.)
4. Утверждение, что "компьютер может делать только то, что мы ему приказали", верно, но весьма обманчиво. Этим предполагается, что мы должны оставаться слабоумными рабами наших изобретений. Верно, мы приказали компьютерам учиться, предоставляя им тренировочный алгоритм, но они учатся быстрее, эффективнее нас и должны превзойти наши возможности в создании эвристического управления.
5. Заявление, что результат деятельности компьютера настолько хорош, насколько хорош ввод, суммирован в поговорке garbage in , garbage out — мусор на входе — мусор на выходе, и справедливо для алгоритмов, определяющих алгоритм, но не для алгоритмов, определяющих эвристику. Дело в том, что легче указать (алгоритмически) компьютеру поставить под сомнение (эвристически) результат его работы — проверить логичность результата. Покажем, как это делается. Если одна линия на входе вводит данные, которые не корректируются со всеми остальными введенными в систему, то, вероятнее всего, это скорее случайный сбой — шум, чем информация. Тогда эвристика может начать ослаблять влияние таких данных, действуя по стратегии управления входными данными. Если, например, на входе путается 0,9, то подозрительная часть такого ввода будет сверена со всеми другими данными на входе, в результате контроль улучшится, поскольку будет испытана подстановка 0,8 и т.д., пока весь этот "неверный" ввод не будет исключен совершенно. Обратите внимание: мы не обязаны понимать, как это делается, поскольку у человека слабая интуиция систематической корреляции, — мы можем вполне уверенно считать, что введение этой неверной цифры очень важно. А система исключила ввод этих данных как ложную информацию вполне самостоятельно.
6. Механизм, который мы используем в таком случае, представляет собой давно известный сервомеханизм, о котором говорилось раньше. Здесь цепь обратной связи корректирует ошибку с помощью сравнения действительного положения с идеальным. Эта разница измерима, но не в смысле выходных данных, преобразованных с помощью функции преобразования, а в смысле способности системы в целом улучшить результат ее деятельности, измеряемый на другом языке. Это язык, на котором мы указываем на необходимость увеличить или уменьшить значение результата, чего замкнутая система сама не может знать. Например, если результатом измерения системы является уровень прибыли, а система включает эвристический элемент, который допускает колебания прибыли, и она обучена тому, как ее уменьшить или увеличить, то, значит, ей необходимо "сказать", что большая прибыль лучше, а меньшая хуже. Сама по себе она может научиться лишь узнавать, какие жизненные события увеличивают прибыль, а какие ее уменьшают.
7. Кроме того, обратная связь сервомеханизма осуществляется не по заранее заданной функции преобразования. Она осуществляется благодаря организации черного ящика, в котором содержится функция преобразования. Иными словами, она экспериментирует соединениями в анастомотик ретикулуме. Возникает эффективная структура, которая уменьшает возможное разнообразие состояний системы.
8. Хотя пп. 6 и 7 позволяют лучше понять роль сервомеханизма, но они не меняют математических зависимостей, определяющих его устойчивость. Поэтому сохраняет силу вывод (см. гл. 2), что обратная связь становится главным фактором работы системы. Все зависит от критерия на другом языке (см. выше п. 6), позволяющем системе решить, чему ей учиться, а чему нет.