Дэвид Дойч - Начало бесконечности. Объяснения, которые меняют мир
- Название:Начало бесконечности. Объяснения, которые меняют мир
- Автор:
- Жанр:
- Издательство:Array Литагент «Альпина»
- Год:2014
- Город:Москва
- ISBN:978-5-9614-3541-2
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Дэвид Дойч - Начало бесконечности. Объяснения, которые меняют мир краткое содержание
Начало бесконечности. Объяснения, которые меняют мир - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
Программа должна будет распознавать такие ситуации, когда, например, робот вот-вот потеряет равновесие или наталкивается на препятствие, вычислять соответствующее действие и выполнять его. Это самая сложная часть исследовательского проекта. Как узнать, когда лучше обойти препятствие слева, а когда – справа, когда перепрыгнуть через него, а когда отпихнуть его в сторону, или пройти прямо по нему, или шагнуть шире, чтобы не наступить на него, или решить, что его преодолеть нельзя и повернуть назад? И как именно в каждом из таких случаев нужно осуществить все эти действия по отсылке бесчисленного количества сигналов в моторы и механизмы в соответствии с обратной связью, полученной от органов чувств?
Разумеется, вы разобьете задачу на подзадачи. Поворот на один заданный угол похож на поворот на любой другой. Поэтому можно написать подпрограмму для поворота, которая возьмет на себя весь континуум возможных случаев. Готовую подпрограмму можно будет просто вызывать из остальных частей программы при необходимости поворота, и в этих частях знания о том, что именно требуется для поворота, будут излишними. Задав и решив столько таких подзадач, сколько возможно, вы создадите код или язык , весьма хорошо приспособленный для формулирования движений робота при ходьбе. Каждый вызов одной из подпрограмм – это такая формулировка или команда на данном языке.
До этого момента большая часть того, что вы сделали, относится к «вдохновению»: она требовала творческого мышления. Настало время попотеть. Автоматизировав все, что вы знаете, как автоматизировать, вы столкнетесь с единственной возможностью для достижения дополнительной функциональности: обратиться к методу проб и ошибок. Однако теперь у вас есть преимущество в виде языка, который был вами адаптирован для передачи роботу инструкций по ходьбе. Поэтому можно начать с программы, простой на этом языке, но очень сложной в плане элементарных команд компьютера и означающей, например, «Идти вперед; при столкновении с препятствием остановиться». Затем можно запустить эту программу и посмотреть, что будет делать робот. (Или проверить ее на компьютерной модели робота.) Если робот споткнется и упадет или произойдет еще что-то нежелательное, программу можно модифицировать – все на том же уже созданном вами языке высокого уровня, – устраняя недостатки по мере их выявления. Вдохновения для такого метода нужно меньше, а вот попотеть придется.
Но есть и альтернативный подход: можно переложить вторую фазу на компьютер, но с использованием так называемого эволюционного алгоритма . С помощью одной и той же компьютерной модели запускается множество пробных версий, в каждой из которых самая первая программа случайным образом немного меняется. Эволюционный алгоритм подвергает каждого смоделированного робота набору тестов, задуманных вами: сколько он может пройти, не упав; насколько хорошо он преодолевает препятствия и пересеченную местность и так далее. В конце каждого прогона остается программа, показавшая наилучшие результаты, а остальные отбрасываются. Затем создается множество вариантов этой выбранной программы, и процесс повторяется. После тысяч итераций такого «эволюционного» процесса может оказаться, что робот согласно установленным вами критериям ходит достаточно хорошо. Теперь можно писать диссертацию. И вы не только сможете утверждать, что сконструированный вами робот ходит с требуемой степенью ловкости, но и что вы на компьютере реализовали эволюцию .
Такая процедура с успехом осуществлялась уже много раз. Это полезная методика. И, безусловно, она представляет собой «эволюцию» в смысле чередования вариации и отбора. Но эволюция ли это в более важном смысле создания знаний путем вариации и отбора? Когда-нибудь мы достигнем и этого, но я сомневаюсь в том, что на данный момент это уже достигнуто, по той же причине, по которой я сомневаюсь в том, что чатботы обладают интеллектом, пусть и небольшим. Просто потому, что их способностям есть гораздо более очевидное объяснение, а именно творческое мышление программиста.
Исключение возможности того, что в случае «искусственной эволюции» знание было создано программистом, логически эквивалентно проверке, является ли программа искусственным интеллектом, только это задача сложнее, потому что объем знаний, якобы создаваемых в ходе «эволюции», гораздо меньше. Даже если вы сами и есть программист, то не можете судить, вы создали этот относительно небольшой объем знаний или нет. С одной стороны, те знания, которые вы заложили в язык за многие месяцы разработки, будут иметь определенную сферу применимости, потому что в них закодированы некоторые общие истины о законах геометрии, механики и так далее. С другой стороны, вы разрабатывали язык, постоянно учитывая, для выражения какого рода способностей он в итоге будет использоваться.
Идея с тестом Тьюринга наводит на мысль о том, что, если заложить в программу «Элиза» достаточно шаблонов стандартных ответов, она сможет автоматически создавать знания; искусственная эволюция наводит на мысль о том, что при наличии вариации и отбора эволюция (адаптаций) станет происходить автоматически. Но ни то, ни другое не обязательно верно. В обоих случаях есть другая возможность, что во время работы программы вообще не будет создаваться знаний, а появляться они будут только во время разработки ее программистом.
Кажется, в таких проектах неизменно происходит одно: если по достижении запланированной цели «эволюционная» программа продолжает работать, то дальнейших улучшений уже не происходит. Именно так должно было быть, если все знания, заложенные в удачно сконструированном роботе, на самом деле получены от программиста. Но такая критика неубедительна: в ходе биологической эволюции также часто достигаются «локальные максимумы приспособленности». Кроме того, уже достигнув своей загадочной формы универсальности, она как будто замерла лет так на миллиард, прежде чем создать более или менее значительные новые знания. Но все же достижение результатов, которые вполне могут быть обусловлены чем-то еще, не есть доказательство эволюции.
Поэтому я сомневаюсь, что в ходе какой-либо «искусственной эволюции» когда-либо создавались знания. Того же взгляда и по тем же причинам я придерживаюсь относительно немного иного типа «искусственной эволюции», при которой в виртуальной среде развиваются смоделированные организмы, а также когда друг с другом стравливаются различные виртуальные виды.
Чтобы проверить это утверждение, я бы хотел увидеть эксперимент немного другого вида: уберем из проекта аспиранта. Вместо робота, сконструированного так, чтобы он мог развивать свои способности к ходьбе, возьмем робота, который уже применяется в какой-нибудь реальной ситуации и может ходить. Далее, мы не будем создавать специальный язык подпрограмм для выражения гипотез о том, как ходить, а заменим существующую программу в существующем микропроцессоре случайными числами . В качестве мутаций возьмем ошибки того типа, которые все равно случаются в таких процессорах (хотя при моделировании можно задавать частоту, с которой мы позволим им случаться). Все это делается, чтобы исключить возможность того, что в конструкцию системы вводятся человеческие знания и привносимые ими новые возможности будут восприниматься как результат эволюции. Затем, как обычно, начнем моделирование этой мутирующей системы – столько раз, сколько угодно. Если робот в конце концов пойдет лучше, чем было изначально, то я ошибся. Если он продолжит совершенствовать свой навык и после этого, то я ошибся очень сильно.
Читать дальшеИнтервал:
Закладка: