Вспомним идею Эдисона о том, что прогресс требует сменяющих друг друга фаз «вдохновения» и «работы в поте лица», а также то, что благодаря компьютерам и другим технологиям появляется всё больше возможностей автоматизации для второй фазы. Этот приятный результат ввёл в заблуждение тех, кто слишком уверен в достижении искусственной эволюции (и искусственного интеллекта). Допустим, например, что вы аспирант со специализацией в области робототехники и хотите сконструировать робота, который будет ходить на двух ногах лучше предыдущих. Первая стадия решения этой задачи должна включать в себя вдохновение, другими словами, творческое мышление, направленное на улучшение попыток предыдущих исследователей. Вы будете отталкиваться от них, от известных решений других задач, которые, по вашим предположениям, могут иметь отношение к данной, и от строения ходящих животных. Всё это составляет существующие знания, которые вы будете варьировать и комбинировать по-новому, а затем критиковать и снова варьировать. В итоге вы создадите техническую конструкцию нового робота: ноги с рычагами, шарнирами, тяговыми тросами и моторами; тело с блоком питания; органы чувств, через которые робот будет получать обратную связь и тем самым сможет правильно управлять конечностями; а также компьютер, который будет осуществлять управление. В этой конструкции вами для ходьбы будет наилучшим возможным способом адаптировано всё, кроме программы в компьютере.

Программа должна будет распознавать такие ситуации, когда, например, робот вот-вот потеряет равновесие или наталкивается на препятствие, вычислять соответствующее действие и выполнять его. Это самая сложная часть исследовательского проекта. Как узнать, когда лучше обойти препятствие слева, а когда — справа, когда перепрыгнуть через него, а когда отпихнуть его в сторону, или пройти прямо по нему, или шагнуть шире, чтобы не наступить на него, или решить, что его преодолеть нельзя и повернуть назад? И как именно в каждом из таких случаев нужно осуществить все эти действия по отсылке бесчисленного количества сигналов в моторы и механизмы в соответствии с обратной связью, полученной от органов чувств?

Разумеется, вы разобьёте задачу на подзадачи. Поворот на один заданный угол похож на поворот на любой другой. Поэтому можно написать подпрограмму для поворота, которая возьмёт на себя весь континуум возможных случаев. Готовую подпрограмму можно будет просто вызывать из остальных частей программы при необходимости поворота, и в этих частях знания о том, что именно требуется для поворота, будут излишними. Задав и решив столько таких подзадач, сколько возможно, вы создадите код или язык, весьма хорошо приспособленный для формулирования движений робота при ходьбе. Каждый вызов одной из подпрограмм — это такая формулировка или команда на данном языке.

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

Но есть и альтернативный подход: можно переложить вторую фазу на компьютер, но с использованием так называемого эволюционного алгоритма. С помощью одной и той же компьютерной модели запускается множество пробных версий, в каждой из которых самая первая программа случайным образом немного меняется. Эволюционный алгоритм подвергает каждого смоделированного робота набору тестов, задуманных вами: сколько он может пройти, не упав; насколько хорошо он преодолевает препятствия и пересечённую местность и так далее. В конце каждого прогона остаётся программа, показавшая наилучшие результаты, а остальные отбрасываются. Затем создаётся множество вариантов этой выбранной программы, и процесс повторяется. После тысяч итераций такого «эволюционного» процесса может оказаться, что робот согласно установленным вами критериям ходит достаточно хорошо. Теперь можно писать диссертацию. И вы не только сможете утверждать, что сконструированный вами робот ходит с требуемой степенью ловкости, но и что вы на компьютере реализовали эволюцию.

Перейти на страницу:

Похожие книги