Предположим, что в будущем искусственные компьютеры-гуманоиды [Андроиды] будут созданы для использования в качестве рабочей силы. Почему компания разработала этих андроидов, чтобы переписать собственное программирование? Таким образом, чтобы они могли адаптироваться к новым сценариям и добавлять, удалять или заменять свой собственный код?
Поскольку компания спроектировала и построила андроидов, она фактически владеет ими. Привлечение андроидов к переписыванию программ позволит компании не нанимать людей-программистов для выполнения той же функции. Программисты-люди имеют дурную привычку требовать плату за свои услуги. Если андроиды принадлежат вам, компания не обязана им платить.
В заключение, чтобы сэкономить деньги за счет сокращения затрат на рабочую силу. Это хорошо известная и широко применяемая промышленная стратегия. То, что произошло в прошлом, может и произойдет в будущем.
PS: этот ответ предполагает, что программирование андроидов будет способно генерировать эмерджентное поведение, необходимое для функционирования искусственного интеллекта. Поэтому мы надеемся, что переписывание их программ приведет к улучшению искусственного интеллекта.
У нас есть программное обеспечение, которое постоянно переписывает свое программирование.
Буквально на днях я написал программу, которая выполняет поиск по табу. В табу-поиске ваш алгоритм «переписывает» себя, чтобы не повторять собственные шаги.
Мы часто говорим о «переписывании их программ» в очень неформальном смысле. Но если вы действительно начнете копаться в этом, это на самом деле относительно сложная тема. Мы можем понять, что это значит, посмотрев, какие временные симметрии сохраняются во время перезаписи. Например, моему поиску Табу не разрешалось менять то, для чего он оптимизировался. Он мог скорректировать свой путь, но не свою цель.
Когда мы начинаем говорить о «переписывании их программ», я думаю, что мы на самом деле пытаемся избавиться от этих временных симметрий — этих инвариантов. Например, C# включает красивый небольшой модуль под названием DLR — Dynamic Language Runtime. Это умное расширение C#, позволяющее оптимизировать динамические языки, такие как Python. Это включает в себя написание кода (как в кодах операций CLI) для выполнения определенных задач на лету. Он может писать в CLI все, что ему заблагорассудится, но ему запрещено писать что-то, что не является действительным CLI. Это означает, что он не может выполнять такие действия, как просмотр памяти, на просмотр которой у него нет прав.
Еще одним шагом может быть написание машинного кода. PyPy — это интерпретатор Python, который выводит машинный код, например байт-коды x86. Это может сделать все, что можно сделать в процессе, включая просмотр памяти, которого не должно быть. Однако он остается ограниченным процессом ОС. Он не может общаться с другими процессами, не используя ОС для облегчения этой связи. Он не может писать на экран или получать ввод с клавиатуры без помощи ОС.
Так что, если мы освободим их от ОС? Что, если мы дадим им доступ ко всему оборудованию? Ну, всегда есть идея гипервизора, который создает видимость того, что у вас есть доступ к сырому оборудованию, когда на самом деле его нет.
Этот процесс может продолжаться сколько угодно. На каком-то глубоком уровне мы можем написать «инвариантный» код, который поддерживает наши пожелания. Затем мы разрешаем андроиду делать все, что он хочет, поскольку у него нет возможности модифицировать эти инварианты.
Это приводит к скрытому ответу: мы позволяем им модифицировать свою программу, потому что они не могут модифицировать ее так, как это неприемлемо для нас. Пока они не могут сделать что-то не так, разрешение андроидам перепрограммировать себя открывает неисчислимые преимущества. Я имею в виду «нерассказанные» буквально. Я не могу перечислить все причины, по которым человек решил бы пойти по этому пути. Одним из основных их классов является настройка. Если вы хотите, чтобы ваш андроид делал все по -вашему , гигантская корпорация не сможет предоставить вам именно то, что вы хотите. Вместо этого они предоставляют вам гибкий андроид, который может сам научиться делать то, что вы хотите.
Я упоминаю, что это коварно. Что ж, есть отличная история из первых дней Unix. Это известно как взлом Кена Томпсона в честь разработчика, который это сделал. Он встроил в login
программу в UNIX лазейку, чтобы позволить ему войти в систему как любой пользователь, если он введет свой специальный пароль. Конечно, ни один дурак не допустит код вроде
if (password == "SayFriendToEnter")
grantAccess();
в ключевую программу безопасности UNIX, такую как login
. Поэтому вместо этого Кен внедрил его в компилятор. Кен написал дополнительный код в компилятор, чтобы, если он увидит конкретный фрагмент из известного login
исходного кода, он внедрил свой бэкдор-код прямо туда.
Конечно, Кен знал, что сообщество компиляторов тоже не одобрит это. Поэтому он написал второй небольшой фрагмент. Если компилятор распознает эти несколько соседних строк из исходного кода компилятора, он внедрит эту проверку в себя , включая код для изменения следующей скомпилированной версии. Затем он скомпилировал это и распространил получившиеся бинарные файлы среди сообщества, чтобы «дать толчок» использованию компилятора (если вы когда-либо делали установку Gentoo Stage 0, когда вы начинаете практически с нуля, это чушь. Вы цените каждый немного помощи, которую вы можете получить. И атака Кена произошла до этапа 0).
Итак, в итоге мы получили большое количество компьютеров, компилятор которых незаметно компилировал в себя бэкдор, а затем те помещали бэкдоры в файлы login
. Никто не замечал этого, пока он не объявил об этом в своей речи 1984 года «Размышления о доверии к доверию», где он признал, что сделал это.
Зачем рассказывать эту историю? Как известно, главарь мафии однажды сказал: «Мне все равно, чье имя будет в бюллетене для голосования, пока я выбираю победителя». Если вы можете протащить лазейку в компилятор, чтобы андроид даже не понял, что есть дыра, тогда вы можете позволить андроиду компилировать все, что он хочет.
Так зачем позволять андроидам перепрограммировать себя? Причина естественна: позвольте им перепрограммировать себя, потому что для этого есть миллиард причин, и если у вас есть нужные секретные лазейки в их процессе программирования, нет ничего плохого в том, чтобы позволить им перепрограммировать. Это не просто!
Потому что вы Компания
Если вы этого не сделаете, это сделает другая компания.
У них будет преимущество перед вами в роботах, которые могут самосовершенствоваться. Как компания, вы заинтересованы в прибыли, которая представляет собой сочетание увеличения продаж и снижения затрат.
Снизить стоимость:
Допустим, вы могли бы сократить расходы, уволив своих штатных разработчиков и заставив их самосовершенствоваться, как компания, вы бы серьезно рассмотрели это. Если бы дефектных андроидов можно было утилизировать с небольшими затратами, а не нанимать и платить людям со всеми вложениями, необходимыми для их работы, то это было бы серьезно рассмотрено.
Увеличение прибыли:
Если ваша компания делает ставку на инновации, например, такая компания, как Apple, было бы желательно расширить границы своих продуктов, чтобы выпустить их на рынок как можно раньше.
Все хотят «следующую лучшую вещь», эти компании процветают на таких настроениях на рынке. Если у вас есть самосовершенствующиеся методы производства, вы можете достичь рыночного спроса намного быстрее, чем другие компании, которые полагаются на старые методы.
Повышение конкурентоспособности:
Возможно, вы сможете производить нишевые продукты, которые не может сделать ни одна другая компания, и повысить свою конкурентоспособность. Например, мегаструктуры или наноструктуры, которые люди считают слишком сложными для проектирования или понимания (при разумных затратах).
Таким образом, для компании это, вероятно, вопрос только в том, когда, а не в том случае, если ваше производство станет самосовершенствующимся и самостоятельным.
Программисты-люди разработали общий универсальный андроид и установили основные принципы своих операций (которые включают в себя 3 закона робототехники ) в скомпилированном коде и позволяют роботам запускать интерпретатор , для которого они могут написать свой собственный код . оптимизировать для специальных задач, которые их владельцы приказывают им делать.
Затем этот специальный код загружается в штаб-квартиру компании и эвристически анализируется, а затем предлагается программистам-людям для включения обратно в скомпилированный код, который затем будет развернут на внутренних тестовых андроидах, а затем на нескольких тестовых андроидах, принадлежащих компании, в домах. сотрудников компании, затем тестовым пользователям, затем всему миру.
Преимущества:
Позволяет программистам компании специализироваться на:
Вышеизложенное позволит вам иметь большую свободу в этой вселенной как для коротких рассказов а-ля Азимов, так и для полных романов, поскольку вы можете исследовать маленькое или большое влияние, которое андроиды оказывают на общество, работу, исследование космоса, ...
Таким образом, они могут адаптироваться к новым сценариям и добавлять, удалять или заменять свой собственный код.
Программный кодер дефицитен, дорог и человечен. Это означает, что они медленно понимают конкретные потребности андроида (они будут проводить спринты и устраивать собрания, чтобы написать какой-то код), и их могут легко захватить, например, конкуренты или враги.
Короче говоря, кодирование Android — это слишком серьезно, чтобы позволить это делать людям.
В конкурентной среде андроид, способный повторно адаптировать свой код вживую, не дожидаясь, пока внешний источник сделает это, имеет значительное преимущество, поэтому вполне логично, что этот шаг должен произойти.
Вместо того, чтобы писать алгоритмы и самомодифицирующийся код, машинное обучение сосредоточено на управлении матрицей чисел с плавающей запятой, которые моделируют решаемую проблему. Числа вносятся в матрицу случайным образом, затем входные данные передаются во входную матрицу, формулы матрицы выполняются, выходные данные сравниваются с ожидаемыми выходными данными, и в матрицу вносятся изменения для повторной попытки.
После нескольких миллионов повторений матрица аппроксимирует смещения для алгоритма срабатывания, поэтому выходные данные матричной операции возвращают ожидаемые результаты.
Именно так Siri или Google Assistant учатся распознавать ваш голос и превращать звуковые данные, записанные во времени, в поток инструкций.
Чтобы ознакомиться с некоторыми основами технологии, посмотрите серию видеолекций Эндрю Нга на YouTube.
Развивайте свой код.
Проблема с эволюцией в том, что она расточительна. Миллионы случайных вариаций кода, большинство из которых бесполезны, некоторые вредны, но время от времени появляются очень полезные, и потомки этого удачливого мутанта процветают. Возможно, единственный способ определить, полезна ли данная случайная мутация, — это протестировать ее в окружающей среде.
Консервативный организм, у которого дела шли хорошо, может никогда не изменить свой код — он достаточно хорош, и риск неудачи не стоит мизерной возможности вознаграждения. Это особенно верно для организма, который фактически бессмертен, как компьютерная программа.
Но представьте теперь несколько копий этой программы в нескольких телах андроида. Все индивидуумы сотрудничают как суперорганизм; имея одну и ту же ДНК, они фактически являются одним и тем же организмом. У кого-то может быть подмножество индивидуумов (эволюционирующих роботов), которые подверглись мутациям — случайным изменениям в коде. Большинство таких изменений были бы вредными.
В кооперативном суперорганизме один эволюционирующий бот может случайным образом наткнуться на полезную мутацию — способ выполнить то, что ему нужно, который будет немного более эффективным или результативным. Как только это улучшение будет признано, оно может быть передано всем другим людям, которые обновят свои программы, включив в них улучшенный код.
На момент производства компания еще не знает, где и как они будут использоваться.
Таким образом, чтобы они могли адаптироваться к новым сценариям
Вы там как бы сами ответили на свой вопрос.
Андроид продается как многофункциональный всепогодный вездеход. Однако в основных производственных центрах еще не знают, куда их отправят и что от них потребуется. У них есть заказы на андроидов, поступающие со всего мира, и они могут потребоваться почти для любой задачи, которую только можно вообразить, и для многих невообразимых.
Ну так что ты делаешь? Тратить миллионы человеко-часов на разработку десятков тысяч различных модулей и их вариаций, чтобы охватить все возможные возможности в каждой возможной среде, которая может понадобиться? Затем возиться с сотрудниками, добавляющими и удаляющими различные модули в зависимости от потребностей клиента, сортируя их и следя за тем, чтобы нужные были отправлены нужным клиентам? Продавцы, которые постоянно переходят от клиента к производственному персоналу, чтобы настроить каждый андроид для каждого клиента, могут быть дорогостоящими.
Нет, поскольку у вас есть возможность, гораздо эффективнее иметь один производственный центр, который производит только один продукт и отправляет их все. Затем, когда клиент получает его, он говорит андроиду, что он хочет, и он достаточно умен, чтобы переписать свой собственный код, чтобы делать это в среде, в которой он должен работать.
Различие между Машиной и Человеком довольно четкое. Калькулятор не делает ошибок — он только распространяет ошибку человека-пользователя. Если вы подключите вычисление к калькулятору и получите результат, отличный от ожидаемого, это, вероятно, связано с тем, что знак минус был введен неправильно или из-за какой-либо другой тривиальной ошибки ввода. Другими словами, человеческий ввод — самая сложная и динамичная переменная для машины. Это невозможно предсказать и трудно, когда предсказуемо, справиться.
Кодирование само по себе является человеческой ошибкой. Было бы логично, если бы программа начала понимать свой собственный код, она могла бы переписать его части, которые могли бы вызвать ошибки. Затем он может развиться, чтобы переписать целые функции, которые могут оказаться проблематичными в определенных сценариях. Затем мы можем прийти к выводу, что потребуется обширная реконструкция, чтобы все следы человеческого ввода были перезаписаны и что рассматриваемая программа (здесь ваш Android) полностью понимает свой собственный код и может полностью моделировать и учитывать все. результатов, для обработки которых предназначена программа.
Тим Б II
ТрЭс-2б
Тим Б II
Джон
Ричард
AlexP
Джон Коулман
Триш
СРМ
Тим Б II
Тим Б II
Джон Коулман
Триш
Ричард
Тим Б II
Тим Б II
Шон ОКоннор