Почему Android могут быть спроектированы таким образом, чтобы переписывать их программы?

Предположим, что в будущем искусственные компьютеры-гуманоиды [Андроиды] будут созданы для использования в качестве рабочей силы. Почему компания разработала этих андроидов, чтобы переписать собственное программирование? Таким образом, чтобы они могли адаптироваться к новым сценариям и добавлять, удалять или заменять свой собственный код?

Вашим андроидам не нужно переписывать свои программы, чтобы приспособиться к новым сценариям; эмерджентное поведение в настоящее время проявляется в пространстве искусственного интеллекта в результате хранения (и распознавания закономерностей) огромных объемов данных. Это происходит сейчас и приводит к появлению некоторых очень интересных моделей поведения и адаптаций без изменения единой строки кода.
@TimBII Не могли бы вы объяснить немного больше? Я не совсем уверен, что именно это означает, поскольку я не очень хорошо разбираюсь в коде программирования.
Конечно. Компьютеры детерминированы, что означает, что они всегда делают точно (и только) то, что вы им говорите. Они не могут перепрограммировать себя, но вы можете заставить их программы делать разные вещи, если они собирают разные данные. При достаточной сложности мы видим появление паттернов поведения, которых мы не ожидали, когда впервые пишем программу, поскольку данные сохраняются и обрабатываются на все более и более высоких уровнях сложности. Следуя этой модели, очень простые программы могут привести к очень сложным результатам, но теоретически все, что они делают, можно предсказать заранее, включая само переписывание.
Чтобы они могли учиться, андроид, который не может учиться, не так уж и полезен. Основным преимуществом ИИ является способность к обучению, и для андроида они будут взаимодействовать со многими людьми и их странным поведением, если они не смогут понять, в чем смысл их создания.
Хочешь Скайнет ? Потому что именно так вы получаете Скайнет.
Если кверент не потратит время на объяснение того, что он имеет в виду под «программированием» , которое якобы переписано, этот вопрос попадает в категорию «даже не неправильно». Я понимаю, что кверент ничего не знает о компьютерном программировании; но они хотят написать об этом. Вот предложение: рассмотрите человека; каков человеческий аналог «программирования», о котором идет речь? Код ДНК в наших клетках? Принципы этики и справедливости, привитые нашим образованием? Интуитивное понимание наивной физики? Знание языка? Наши воспоминания и опыт?
@TimBII Даже сегодня код может быть самомодифицирующимся и недетерминированным образом (например, в ответ на случайный ввод данных с датчиков, связанных с внешним миром). Что-то настолько простое, как генератор случайных чисел, заполнение которого зависит от внешнего источника энтропии, сделает невозможным предсказание заранее.
В дополнение к Tim B II: в настоящее время жесткие диски изготавливаются способами, которые, хотя и практически идентичны, требуют чипа, который программируется в конце производства для отражения небольших недостатков отдельных жестких дисков. Ни один из этих чипов не является идентичным. Машина, которая устанавливает эти чипы, генерирует полное программирование на основе показаний, которые она получает, отправляя тестовые команды в незапрограммированный привод. После программирования все жесткие диски ведут себя одинаково для кверента, использующего их, но технически все они ведут себя по-разному внутри, поскольку все они следуют индивидуальным, конкретным программам.
@richard Это также то, как вы получаете Gaia или другую глобальную систему управления ресурсами, которая позволяет нам заботиться об окружающей среде и не вымирать. Скайнет — это результат, если мы поступим неправильно.
@JohnColeman, так что вы говорите, что код меняет свое поведение благодаря вводу данных. Это не то же самое, что самомодифицирующийся код
@Триш, с какой целью? Если вы говорите о шифровании, то оно все еще детерминировано, просто его трудно воспроизвести. В противном случае вы только что создали жесткий диск, который случайным образом удаляет ошибки в ваших данных, и это не то же самое, что самоизменение каким-либо полезным способом.
@TimBII Нет - код изменяет сам код. Код — это в конечном счете просто данные. Эти данные могут быть изменены во время выполнения программы. Например, функции могут быть созданы или уничтожены. Можно вызывать вновь определенные функции. Создаваемые функции могут сами создавать другие функции. Программа вполне может изменять себя, а не просто изменять свое поведение в ответ на внешние выходные данные. Программа, работающая в памяти, не обязательно должна совпадать с программой, которая была загружена изначально.
@TimBII Нет, это не шифрование, это чип, который содержит только некоторые значения настройки, которые позволяют приводу вообще работать . Обычно это 8-контактная микросхема ПЗУ. Этот чип запрограммирован на заводе. Ищите «обмен HDD ROM», чтобы узнать больше.
@SRM - это всегда Скайнет. Это или Колосс.
@JohnColeman При всем уважении, это не точно. Компьютеры детерминированы. Вот и все. Вы можете заставить их вести себя, казалось бы, недетерминированным образом, рандомизируя входные данные, как вы описываете, но если возможно заранее знать эти входные данные и программу, вы можете точно предсказать, что будет делать компьютер. Трудность в том, что вы описываете, заключается в том, чтобы знать входные данные заранее, и почему этот вид программирования приводит к эмерджентным моделям поведения, но даже если компьютер перезаписывает код, он все равно ведет себя в соответствии с установленной программой.
@Trish, поэтому я провел поиск, но речь идет только о замене ПЗУ на печатных платах. Опять же, если вы можете записывать данные на жесткий диск и каждый раз правильно извлекать их, то система является детерминированной, даже если она уникальна в используемом алгоритме. В конечном счете, это единственная ценность жесткого диска, поэтому я изо всех сил пытаюсь понять, какую возможную ценность может иметь агент рандомизации на жестком диске.
@TimBII Как только вы добавите в микс любую аналоговую электронику, вы можете (фактически, определенно будете) иметь недетерминированное поведение. Все, что нужно, это один конвертер D2A и один конвертер A2D. Не так уж сложно представить ИИ с некоторыми случайными аналоговыми числами, который генерирует код, проверяет его на компилируемость и способность постоянно изменяться и, таким образом, мутировать. Мы говорим об андроидах здесь.

Ответы (9)

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

В заключение, чтобы сэкономить деньги за счет сокращения затрат на рабочую силу. Это хорошо известная и широко применяемая промышленная стратегия. То, что произошло в прошлом, может и произойдет в будущем.

PS: этот ответ предполагает, что программирование андроидов будет способно генерировать эмерджентное поведение, необходимое для функционирования искусственного интеллекта. Поэтому мы надеемся, что переписывание их программ приведет к улучшению искусственного интеллекта.

Самоулучшающийся ИИ как упражнение в капитализме. К сожалению, это имеет смысл.
Я думаю, основываясь на текущей модели «как услуга», ответ находится где-то между ответом Фабби и этим — компания формирует самую универсальную базу данных для программирования/обучения Android, которую она сдает в аренду компаниям вместе с пакетом для определенное количество андроидов и сервис для них (Android as a Service (AaaS), если хотите). Компании по-прежнему платят меньше, чем найму обычного сотрудника за андроид, но им не нужно иметь в штате механиков или системных администраторов для их обслуживания.

У нас есть программное обеспечение, которое постоянно переписывает свое программирование.

Буквально на днях я написал программу, которая выполняет поиск по табу. В табу-поиске ваш алгоритм «переписывает» себя, чтобы не повторять собственные шаги.

Мы часто говорим о «переписывании их программ» в очень неформальном смысле. Но если вы действительно начнете копаться в этом, это на самом деле относительно сложная тема. Мы можем понять, что это значит, посмотрев, какие временные симметрии сохраняются во время перезаписи. Например, моему поиску Табу не разрешалось менять то, для чего он оптимизировался. Он мог скорректировать свой путь, но не свою цель.

Когда мы начинаем говорить о «переписывании их программ», я думаю, что мы на самом деле пытаемся избавиться от этих временных симметрий — этих инвариантов. Например, 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 закона робототехники ) в скомпилированном коде и позволяют роботам запускать интерпретатор , для которого они могут написать свой собственный код . оптимизировать для специальных задач, которые их владельцы приказывают им делать.

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

Преимущества:

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

    • Опасные операции по добыче полезных ископаемых на астероидах
    • Высокоточная хирургия головного мозга
    • Здание колонии
    • ...
  • Клиенты с большей вероятностью будут арендовать , чем сразу покупать , если обновления включены в арендованную модель.
  • Код более эффективен, чем огромные объемы обучающих данных (вот каково текущее состояние ИИ).

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

PS Судя по комментариям, вы плохо разбираетесь в программировании, сводите несколько раз программиста с ноутбуком в ресторан и дайте ему бесплатную еду и выпивку. (Я свободен! :D ;-))
Этот. А также обновить!
@Kii Изменил «QA» на «Постоянное улучшение» и добавил «посредством обновлений». Достаточно хорошо? Если нет, не стесняйтесь редактировать и уточнять больше. ;-)

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

Программный кодер дефицитен, дорог и человечен. Это означает, что они медленно понимают конкретные потребности андроида (они будут проводить спринты и устраивать собрания, чтобы написать какой-то код), и их могут легко захватить, например, конкуренты или враги.

Короче говоря, кодирование Android — это слишком серьезно, чтобы позволить это делать людям.

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

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

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

Именно так Siri или Google Assistant учатся распознавать ваш голос и превращать звуковые данные, записанные во времени, в поток инструкций.

Чтобы ознакомиться с некоторыми основами технологии, посмотрите серию видеолекций Эндрю Нга на YouTube.

Развивайте свой код.

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

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

Но представьте теперь несколько копий этой программы в нескольких телах андроида. Все индивидуумы сотрудничают как суперорганизм; имея одну и ту же ДНК, они фактически являются одним и тем же организмом. У кого-то может быть подмножество индивидуумов (эволюционирующих роботов), которые подверглись мутациям — случайным изменениям в коде. Большинство таких изменений были бы вредными.

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

На момент производства компания еще не знает, где и как они будут использоваться.

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

Вы там как бы сами ответили на свой вопрос.

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

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

Нет, поскольку у вас есть возможность, гораздо эффективнее иметь один производственный центр, который производит только один продукт и отправляет их все. Затем, когда клиент получает его, он говорит андроиду, что он хочет, и он достаточно умен, чтобы переписать свой собственный код, чтобы делать это в среде, в которой он должен работать.

Различие между Машиной и Человеком довольно четкое. Калькулятор не делает ошибок — он только распространяет ошибку человека-пользователя. Если вы подключите вычисление к калькулятору и получите результат, отличный от ожидаемого, это, вероятно, связано с тем, что знак минус был введен неправильно или из-за какой-либо другой тривиальной ошибки ввода. Другими словами, человеческий ввод — самая сложная и динамичная переменная для машины. Это невозможно предсказать и трудно, когда предсказуемо, справиться.

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