company_banner

Любовь, смерть и роботы: рассматриваем рассказы Азимова глазами разработчика



    В честь Дня программиста мы решили немного расслабиться и перечитать любимые рассказы Айзека Азимова. И тут нас ждало открытие: оказывается, писатель-фантаст более полувека назад достаточно точно описал многие реалии современной разработки. Как это возможно, спросите вы? Давайте разберёмся вместе. 

    Из множества рассказов знаменитого фантаста показательна серия о компании «Ю. С. Роботс» и её сотрудниках. Несколько историй повествуют о буднях испытателей Пауэлла и Донована – своего рода тестировщиков роботов, другие – о главном робопсихологе, докторе Кэлвин. Спектр проблем, с которыми они сталкиваются, широк и знаком многим современным их коллегам по сей день.

    Одна из таких распространённых проблем – неточно сформулированное в таске техзадание. У Азимова эта тема встречается не раз, и неудивительно – его роботы гораздо умнее и «человечнее», чем современные нам машины, и работающие с ними люди легко забывают, что робот мыслит иначе. В результате небрежная постановка задачи может обернуться бедой, как и случилось в рассказе «Хоровод».

    А начиналось всё, как казалось испытателям, вполне удачно. Чтобы привести в порядок заброшенную базу на Меркурии, всего-то и надо килограмм селена для починки фотоэлементов. И будет электроэнергия, а с ней – охлаждение базы, без которого на Меркурии никак не уцелеть. Селена же в округе полно, целые озёра… Только отправленный к ближайшему из них робот спятил и бегает кругами, хуже того – несёт пьяный бред, хотя роботы не пьют. В ходе вылазки наружу с риском прожариться герои выясняют, что робот наткнулся на опасные для себя условия по пути к озеру. Но ведь есть прямой приказ, в чём же дело?

    – Я сказал… Постой… Я сказал: «Спиди, нам нужен селен. Ты найдёшь его там-то и там-то. Пойди и принеси его». Вот и всё. Что же ещё я должен был сказать?
    – Ты не говорил, что это очень важно, срочно?
    – Зачем? Дело-то простое.

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

    – Я посылал его к другому селеновому озеру – на этот раз с приказом добыть селен во что бы то ни стало. Он принёс его через сорок две минуты и три секунды, – я засёк время.

    После Меркурия новое назначение кажется героям не таким опасным (на межпланетной станции, где происходит действие рассказа «Логика», куда прохладнее, всего «двести семьдесят три градуса ниже нуля»), но столкнуться им предстоит с проблемой, которая разработчикам может разве что привидеться в кошмарах. По крайней мере ни одна программа пока не заявила создателям, что столь несовершенные существа не могли её написать.

    Однако робот Кьюти, новая разработка для обслуживания преобразователя энергии, в причастность людей к своему созданию не поверил. Ну правда, как же могут эти слабые существа создать нечто более совершенное, чем они сами? Это нелогично. У него есть более правдоподобная версия:

    – Господин сначала создал людей – самый несложный вид, который легче всего производить. Постепенно он заменил их роботами. Это был шаг вперёд. Наконец, он создал меня, чтобы я занял место ещё оставшихся людей. Отныне Господину служу Я!

    Герои пытаются переубедить робота, апеллируя и к книгам, и к фактам (как им кажется), доказывающим существование Земли. Даже сборка нового робота в присутствии Кьюти не даёт результата – не убедили. Возможно, виной тому отсутствие у робота прошитых в позитронный мозг постулатов о его происхождении и целях. Эту архитектурную ошибку легко объяснить – вряд ли разработчики всерьёз ожидали, что робот усомнится в доводах людей. Но недоработка, не игравшая роли в предыдущих поколениях продукта, в новом привела к созданию другой цепочки постулатов в мозге машины: 

    – Не верит, – грустно согласился Пауэлл. – Это же рассуждающий робот, чёрт возьми! Он верит только в логику, и в этом-то всё дело…
    – В чём?
    – Строго логическим рассуждением можно доказать всё что угодно – смотря какие принять исходные постулаты. У нас они свои, а у Кьюти – свои.

    Однако, несмотря на то что робот воспринимает свою задачу через другие переменные, он полностью выполняет свои функции. Просто он делает это не потому, что ему это приказано людьми, а потому, что такова воля Господина.

    И люди оказываются перед классической дилеммой: стоит ли исправлять что-то, если оно работает? Вот и герои, подумав, пришли к выводу — не стоит:

    – Конечно, но дело-то не в этом. Нельзя же, чтобы он продолжал нести эту чепуху про Господина.
    – А почему бы и нет?
    – Потому что это неслыханно! Как можно доверить ему станцию, если он не верит в существование Земли?
    – Он справляется с работой?
    – Да, но…
    – Так пусть себе верит во что ему вздумается!

    Третий рассказ про испытателей – «Поймать кролика» – хорошо показывает, что бывает, когда продукт не проходил нагрузочное тестирование перед выходом. История описывает полевые испытания робота-рудокопа Дейва, причём новой конструкции – составного (один робот-командир управляет шестью другими роботами, как рука – пальцами). Но стоит роботу остаться без присмотра, как он перестаёт работать. Более того, пускается маршировать всей командой – весьма подозрительное занятие для рудокопа. 

    Лучше всего проблему испытателей описывает цитата из самого рассказа:

    – Правильно. Теперь слушай – тут вот какая логика! – Донован начал загибать волосатые пальцы. – Первое: новый робот прошёл все испытания в лаборатории. Второе: «Ю. С. Роботс» гарантировала, что он пройдёт и полевые испытания на астероиде. Третье: вышеупомянутых испытаний робот не выдерживает. Четвёртое: если он не пройдёт полевых испытаний, «Ю. С. Роботс» теряет десять миллионов наличными и примерно на сотню миллионов репутации. Пятое: если он не пройдёт испытаний и мы не сможем объяснить почему, очень может быть, что нам предстоит трогательное расставание с хорошей работой.

    Под угрозой потери хорошей работы тестировщик способен на многое – факт. Герои рассказа перебрали и отвергли множество вариантов проверки – от unit-тестирования на месте (можно было бы разобрать его на части и проверить по отдельности, но есть всего 10 дней и ещё неизвестно, даст ли это что-нибудь) до специального тестового окружения (которое есть, но на далёкой Земле и весит 10 тонн). Что остаётся? Имитировать условия, при которых появляется баг, и искать, искать причину. Такова, увы, доля многих тестировщиков современности. Правда, им повезло больше – в отличие от героев рассказа, нынешним специалистам хотя бы не приходится для этого умышленно взрывать шахту вместе с собой. Зато под завалом камней человек и думает куда эффективнее, и хорошо, что разработчики пока не взяли на вооружение этот приём.

    Подстроенная авария помогла не только вызвать баг, но и догадаться о его причине и даже экстремально – подрывом одного из «пальцев» робота – снизить нагрузку и устранить проблему:

    – Я и говорю. Команды, отдаваемые одновременно по шести каналам! В обычных условиях один или несколько «пальцев» выполняют несложную работу, которая не требует пристального наблюдения за ними. Ну, точно так же, как наши привычные движения при ходьбе. А в чрезвычайных обстоятельствах нужно немедленно и одновременно привести в действие всех шестерых. И вот тут что-то сдаёт. Остальное просто. Любое уменьшение требуемой от него инициативы, например появление человека, приводит его в себя. Я уничтожил одного из роботов, и Дейву пришлось командовать лишь пятью, инициатива уменьшилась, и он стал нормальным!

    Впрочем, не только испытателям-«тестировщикам» достаются сложные задачки в рассказах Азимова. В рассказе «Как потерялся робот» главному робопсихологу Сьюзен Кэлвин приходится искать не неисправность, а робота целиком. Нет, он не пропал бесследно – спрятался среди других таких же и притворился одним из них. Только из 63 роботов 62 говорят правду, а один лжёт, и это серьёзный баг.

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

    – Мы с вашим молодым мистером Блэком приготовили небольшой сюрприз. Видите ли, пространство между мной и роботами было залито не гамма-лучами, а инфракрасными. Обычным тепловым излучением, абсолютно безобидным. Нестор-10 знал это и ринулся вперёд. Он ожидал, что и остальные поступят так же под действием Первого закона. Только через какую-то долю секунды он вспомнил, что обычный НС-2 способен обнаружить наличие излучения, но не его характер. Что среди них только он один может определять длину волны благодаря обучению, которое он прошёл на Гипербаэе под руководством обыкновенных людей. Эта мысль не сразу пришла ему в голову, потому что была слишком унизительной для него. Обычные роботы знали, что пространство, отделявшее их от меня, гибельно для них, потому что мы им это сказали, и только Нестор-10 знал, что мы лгали. И на какое-то мгновение он забыл или просто не захотел вспомнить, что другие роботы могут знать меньше, чем люди… Комплекс превосходства погубил его.

    Поиском багов герои вынуждены заниматься и в рассказе «Риск». Проверке подлежит корабль с гипердвигателем, который на испытаниях почему-то не прыгнул. Для людей такие прыжки опасны, поэтому корабль пилотировал робот. Теперь же следует отправить кого-то на корабль, чтобы выяснить причину сбоя.

    В этом рассказе поднято несколько проблем программирования. Во-первых, тестирования – автоматизированного (в данном случае – силами робота) или ручного (учёного). Робот на первый взгляд кажется более подходящим вариантом – машина быстрее и надёжнее человека-специалиста. Но робопсихолог настаивает на проведении проверки человеком. Позже она разъясняет свою позицию так:

    – О том, что вы должны были понимать, почему роботу давать это задание нельзя. Вы же сами сказали: несовершенство робота приходится компенсировать изобретательностью и разумом человека. Именно так, молодой человек, именно так. Роботы лишены изобретательности. Их интеллект ограничен и может быть полностью просчитан. В этом, собственно, и состоит моя работа.

    Получив приказ, точный приказ, робот его выполняет. Если приказ неточен, он не в состоянии исправить ошибку сам. Вы ведь сами говорили об этом, вернувшись с корабля. Так как же посылать робота искать неисправность, если мы сами не знаем, в чем она состоит, а значит, и не можем дать ему точного приказа? «Найди неисправность» – такой приказ можно дать только человеку, но не роботу. Возможности человеческого мозга, пока по крайней мере, точному просчёту не поддаются.

    Отчасти эти принципы актуальны и сейчас – хотя автоматизированное тестирование применяется всё шире и обладает множеством преимуществ, в некоторых ситуациях по-прежнему ручное тестирование имеет смысл и позволяет выявлять проблемы, которые в силу их специфики сложно найти с помощью машин. В рассказе роботу невозможно подготовить полноценный сценарий поиска бага, поскольку нет понимания, что конкретно могло произойти на корабле, и неучтённые возможные проблемы он просто не заметит. А вот человек может сориентироваться уже на месте, исходя из увиденного и опираясь на свои умозаключения.

    Во-вторых, рассказ вновь поднимает вопрос корректного техзадания. Именно в нём крылась причина бага – алгоритм запуска двигателя роботу был прописан без учёта его отличий от человека. В результате, следуя неправильно сформулированной команде, он перестарался – и разломал пусковой механизм:

    – И если бы робот не был надёжнее человека, всё было бы в порядке. К сожалению, на «Ю. С. Роботс» считали своим долгом сделать робота надёжнее человека. Роботу было приказано крепко схватить рычаг, притянуть его к себе и держать. Крепко! Это слово было выделено, повторено, подчёркнуто. И робот выполнил приказ. Но вот незадача: робот раз в десять сильнее человека, в расчёте на которого был сконструирован рычаг.
    – Вы хотите сказать…
    – Я не хочу сказать, а говорю, что рычаг погнулся. Погнулся вполне достаточно для того, чтобы сместить спусковой механизм. И когда тепло рук робота сместило термоэлемент, контакта не произошло… 

    Подобных рассказов, отчасти кажущихся устаревшими, но во многом предвосхитивших события будущего, немало и у Азимова, и у других писателей. Жаль только, что таких высокоразвитых роботов у нас всё ещё нет, а проблемы и дедлайны всегда с нами, это великий фантаст подметил верно.
    ВТБ
    Компания

    Комментарии 19

      0
      При всей изрядной наивности этого цикла он затрагивает довольно глубокую тему: «люди могут сотворить исскуственный разум, но как собственно человечество будет обходиться с этим своим творением?»
        +9
        И тут нас ждало открытие: оказывается, писатель-фантаст более полувека назад достаточно точно описал многие реалии современной разработки.


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

        (Самый быстрый способ получения такого опыта — должность сержанта в армии :)

        Ты не говорил, что это очень важно, срочно?


        Именно по этой причине к приказу обычно добавляется короткая, но энергичная фраза :)

        Но стоит роботу остаться без присмотра, как он перестаёт работать


        Именно!

        Более того, пускается маршировать всей командой – весьма подозрительное занятие для рудокопа.


        Да, это самый эффективный способ занять людей тогда, когда им нечего делать.

        Я уничтожил одного из роботов, и Дейву пришлось командовать лишь пятью, инициатива уменьшилась, и он стал нормальным!


        Временное понижение в должности — мера очень эффективная.

        Так что эмоциональный приказ «уйди и не показывайся, чтобы я тебя больше не видел» даёт роботу лазейку


        Многие люди только этого и ждут :)

        И на какое-то мгновение он забыл или просто не захотел вспомнить, что другие роботы могут знать меньше, чем люди…


        … что другие люди могут знать меньше, чем их руководитель или ведущий специалист (или преподаватель)

        Если приказ неточен, он не в состоянии исправить ошибку сам


        «Если хочешь что-то сделать правильно — сделай это сам»

        А вот человек может сориентироваться уже на месте, исходя из увиденного и опираясь на свои умозаключения.


        Далеко не каждый. Свои собственные умозаключения могут дать неожиданный эффект
        Заголовок спойлера
        image


        он перестарался – и разломал пусковой механизм:

        Заголовок спойлера
        image


        Подобных рассказов, отчасти кажущихся устаревшими, но во многом предвосхитивших события будущего, немало и у Азимова, и у других писателей.


        Азимов тем и интересен, что писал о проблемах, близких и знакомых большинству людей.
        Что и говорить — классик.

          +4
          "… В результате робот зациклился на выборе, выполнить приказ или уцелеть..."
          Вообще-то в «Хороводе» робот не бесцельно бегал кругами, а по сужающейся спирали медленно приближался к цели по доле мм за круг. Ослушаться приказа он не мог, т.к. приказ (первый закон) сильнее самосохранения (третьего), выходом стало максимально увеличить срок выполнения самоубийственного приказа.
            0
            Законы гласят:

            1. Робот не может причинить вред человеку или своим бездействием допустить, чтобы человеку был причинён вред.
            2. Робот должен повиноваться всем приказам, которые даёт человек, кроме тех случаев, когда эти приказы противоречат Первому Закону.
            3. Робот должен заботиться о своей безопасности в той мере, в которой это не противоречит Первому или Второму Законам.

            Так что приказ это всего лишь второй закон. И здесь проявляется гений Азимова.
            Вряд ли кто то сформулирует это точнее, ну или правильнее будет сказать — так коротко, емко и точно.
              +3
              Первый закон совершенно не функционален в реальном мире. Если ему следовать дословно, каждый робот обязан непрерывно предотвращать любой вред любому человеку на Земле (во Вселенной), вплоть до комариных укусов.
              Это даже в исходной формулировке, где injure и harm означает только физический вред здоровью. А в приведенной русской версии ситуация ещё хуже.
                +3
                Аллен Роджер Макбрайд в своей трилогии сформировал новые законы:
                Новый Первый Закон роботехники гласит: «Робот не может причинить человеку вред». Как видите, мы убрали пункт о бездействии. Согласно этому закону людям не придется защищаться от роботов. Однако на то, что роботы будут защищать людей, рассчитывать не стоит. Людям, как в прежние времена, придется полагаться только на собственную инициативу и уверенность в себе. Им придется самим о себе заботиться. И, что очень важно, этот Закон ставит роботов в относительно более высокое положение по сравнению с людьми, чем раньше.

                Новый Второй Закон роботехники таков: «Робот должен сотрудничать с людьми, если это сотрудничество не противоречит Первому Закону». Роботы с Новыми Законами будут сотрудничать, а не подчиняться. Они больше не будут игрушками капризных людей. Вместо беспрекословного подчинения приказам новые роботы сперва осмыслят их и решат, стоит ли повиноваться. Заметьте однако, что сотрудничество по-прежнему осталось обязательным. Роботы должны стать партнерами людей, а не рабами. Люди должны нести ответственность за свои действия и не ждать, что будет исполнен любой, самый бессмысленный приказ. И не придется рассчитывать, что роботы согласятся разрушать самих себя или других роботов ради потехи какого-нибудь человека.

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

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


                    Это какой же уровень знаний и интеллекта должен быть у робота — для таких глобальных прогнозов :)
                      0
                      Почитайте книгу, очень интересное развитие сюжета.
                        0
                        Почитайте книгу, очень интересное развитие сюжета.


                        Книги я читал, и не один раз :)
                        Но вопрос по поводу сверхспособностей роботов остается открытым.
                          0

                          Особых сверхспособностей не надо. Если работ сможет просчитать, что его действия или бездействия принесут вред человечеству, то он изменит своё поведение.
                          Если в биолаборатории мутирует вирус, то робот может решить, что подорвать лабораторию с зараженными людьми лучше, чем позволить вирусу выбраться наружу.

                            0
                            Если работ сможет просчитать, что его действия или бездействия принесут вред человечеству, то он изменит своё поведение


                            См. «Конец Вечности» того же Азимова.
                            Там делали тщательнейшие расчеты, в результате — загнали человечество в тупик.
                        0
                        спойлер: этот умный робот управлял человечеством десятки тысяч лет, коверкая историю, а в результате, когда стал совсем маразматиком старым, пришел к выводу, что человеку не нужна индивидуальность и заменил всем мозги на коллективный разум муравейника)
                          0
                          этот умный робот управлял человечеством десятки тысяч лет


                          Это Айзек Азимов в 80х решил объединить все свои фантастические произведения в рамки одной вселенной.

                          Свести в одну кучу «Конец Вечности» и «Гальку в небе» было очень тяжело, но этот немыслимый коктейль ему вполне удался :)

                          При этом надо было куда-то пристроить роботов, о которых в первоначальной трилогии Основания не было ни одного слова.

                          И тут Азимов придумал твист с вечным и всезнающим роботом.
                          Потом подумал еще и добавил твист к твисту — с намеком на то, что и этот робот действует не сам по себе, а попал под контроль пришельцев из другой галактики :)
                    +2
                    Вы не любите кошек? Да вы просто не умеете их готовить!

                    Азимов создал мир роботов которым восхищается уже не одно поколение умеющее читать.
                    Вы не можете создать робота отвечающего трем законам робототехники? Вы просто не умеете их представить.
                    Когда начинаешь понимать ВЕЛИКОЕ, удивляешься как же раньше не мог увидеть эту простоту.
                    Мешают роботу функционировать комары тиранящие человека? Сделаем ниже разрешение зрения робота. Не видит комаров — продолжает функционировать нормально — три закона не нарушены.
                    Нарушим или допишем законы — необходимо будет решать другие проблемы, которые сейчас не видны. И сразу получим код из г… и палок. Так всегда бывает когда алгоритм не продуман досконально.

                      +1
                      На самом деле, в одной из книг немного дополняется формулировка первого закона.
                      спойлеры к одной из книг Азимова
                      Робот не может своим действием или бездействием причинить человеку вред, насколько ему известно(или как-то так)

                      Пример из той книги: одному роботу можно приказать отравить воду в стакане, а другому — подать ее человеку, и вуаля, убийство, совершенное исключительно роботами.
                        0
                        Пример из той книги: одному роботу можно приказать отравить воду в стакане, а другому — подать ее человеку, и вуаля, убийство, совершенное исключительно роботами.


                        Стакан и вода используются (или могут быть использованы) для питья человеком — стало быть, отравление воды само по себе является попыткой убийства.

                        Был случай (и не один) когда хозяин квартиры, уезжая в отпуск, добавлял отраву в бутылку с вином/водкой и ставил ее в шкаф.
                        Квартиру взломали и обокрали. Сделав свое дело, воры нашли бутылку и тут же, на месте ее распили.
                        Хозяин вернулся и обнаружил в квартире три трупа.

                        Получил полный срок за тройное убийство.
                      +1
                      Спасибо, конечно «второй» — описался)
                      Про законы, как раз, не хватает в статье.
                    +2

                    Помните о том, что для робота вы не человек, если говорите без солярианского акцента.

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                    Самое читаемое