блог штоле

Жизнь и смерть, и пафос

Тест Тьюринга и арифметический сумматор

Shtole Shtole

«Стандартная интерпретация этого теста звучит следующим образом: «Человек взаимодействует с одним компьютером и одним человеком. На основании ответов на вопросы он должен определить, с кем он разговаривает: с человеком или компьютерной программой. Задача компьютерной программы — ввести человека в заблуждение, заставив сделать неверный выбор».

Все участники теста не видят друг друга.»

— Большая Советская Википедия


«тест тьюринга пройти»

— google.com


Представьте себе, что по протоколу, аналогичному тесту Тьюринга, вам надо определить, находится ли за занавеской... Нет, не искусственный интеллект, а всего лишь арифметический сумматор. У сумматора два входа (одинаковой размерности) и один выход, чья размерность вдвое больше. Настоящий сумматор ведёт себя следующим образом: если подать ему на входы два целых положительных числа, с выхода через некоторое время можно будет считать сумму. Скажем, подав 2 и 3 вы получите 5, подав 6 и 4 — 10... you've got the idea. Но не все сумматоры, заказанные на AliExpress, одинаково полезны. Некоторые не соответствуют высоким требованиям. Чтобы избежать предвзятости, ваш персональный поставщик Фень Юань из «МиСяо Инк» настаивает, чтобы тестирование велось вслепую, а каждый сумматор — поставленный как «МиСяо», так и конкурентами — был посажен в китайскую каморку чёрный ящик, из которого наружу торчит только интерфейс на проводках. Отсюда и тьюрингоподобный протокол. Как вы подойдёте к этой задаче?

Ну, первое, что приходит в голову, это фраза «покрыть тестами», так? Составляем табличку:

000
235
4610
7815
...и ничего не получаем. Хитрые поставщики наладились воровать у вас заготовленные тестировочные таблицы. Да и вообще — прохождение столь коротких тестов мало что говорит о соответствии прибора требованиям. (Сюда же относятся разные арифметические хитрости: например, нечётной сумма может быть только тогда, когда нечётно лишь одно слагаемое).

Сколько же вообще вариантов суммирования нужно, чтобы заключить, что сумматор — хороший, годный? Наверно, придётся делать полный перебор? Скажем, взять три заведомо работоспособных сумматора, поставить их в параллель, как в «Челленджере» (пока два из них дают одинаковый результат, продолжаем полёт тестирование), и перебирать оба входа от 0 до -1 (-1, как известно, означает «наибольшее положительное целое, которое можно подать на вход неизвестной размерности», обычно из-за кратности байту это 0xff...ff).

Но тут Фень Юань присылает несколько обновлений продуктовой линейки и эксперимент становится по-настоящему интересным.

Итак, знакомьтесь: первая модель, InfiniSum™. Её фишка в том, что она складывает числа бесконечного размера. Как это устроено? Ну, очевидно, интерфейс требует небольшого усложнения. Наружу выведен ещё один вход (думайте о нём как о функции DoubleBuffer(), которую можно вызвать — так или иначе, у вас ведь всё равно уже была функция DoSum(), которую вы вызывали в знак того, что формирование входов завершено). Подавая на этот вход сигнал (вызывая DoubleBuffer()), вы заказываете удвоение размера обоих слагаемых (изначально 32-битных) и суммы (изначально 64-битной — избыточность запаса обусловлена внутренней архитектурой). Слагаемые теперь передаются как поток байт только для чтения (это значит, что вам нужно реализовать обработку сигналов от сумматора, думайте об этом, как о написании ещё одной функции TryReadNext() — у вас ведь так или иначе уже есть написанная вами функция OnSumReady()). Разумеется, оперирование такими большими (бесконечно большими!) числами может потребовать дополнительных ресурсов.

http://files.rsdn.org/139866/Stovewalter.jpg

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

Что теперь насчёт тестирования? Полный перебор займёт бесконечно много времени. Более того, если организовывать его как описано выше, он будет стоить три бесконечности и в три раза ухудшит экологию всей Вселенной (пока речь шла об одной Ланиакее, мы закрывали на это глаза, считая это местечковой проблемой, но Вселенная — дело иное). И я подчёркиваю: речь идёт о вполне реальном приборе, который, поразмыслив как следует, можем сконструировать и вы, и я.

Ладно, что насчёт следующей модели? BFCoin SuperSum™ не шутит с бесконечностями. Это вполне, хе-хе, конечный автомат. В смысле ресурсов: материи и энергии (примерно соответствующих компьютеру ENIAC). Время расчёта тоже конечно. Для чего может пригодиться этот прибор? Для того же, для чего и видеокарты в деле добывания морально устаревшей криптовалюты. Крипта нового поколения — Brain Fuck Coin — основана на суммировании ОЧЕНЬ БОЛЬШИХ (но безусловно, конечных!) целых. Не буду вдаваться здесь в детали, известные каждому майнеру BFCoin'а, просто повторю ещё раз: имея возможность сложить два числа размера BF, можно стать богаче на 100 миллионов условных единиц (что в 100 раз больше, чем стоит BFCoin SuperSum). Нюанс в том, что вычисление займёт 10 лет. И — какая досада! — майнинг не масштабируется. Сложив меньшие числа, вы не станете богаче ни на 1 Fuckoshi.

Речь идёт об аппарате, который производит очень полезную работу. Жаль, что его тестирование эквивалентно использованию. Что вам остаётся? Допустим, вы согласны подождать 10 лет. Но заплатить придётся вперёд. Брать или не брать? Проблемка!

Ладно, теперь рассмотрим совсем простой девайс: NanoSum™. Он оперирует входами размером 2 бита. Это значит, что он складывает два числа, каждое из которых может быть 0, 1, 2 или 3. (Сумма, таким образом, может быть от 0 до 6). Вы с радостью пишете 100% покрытие тестами (составляете табличку на 8 вариантов) и для верности прогоняете тест 2 раза. (Он не выявляет ошибок). Берёте партию в миллион единиц, по контракту, обязывающему поставить вам аппараты, до молекулы идентичные оттестированному образцу?

Я б на вашем месте не спешил с выводами. Инсайдеры доносят, что под видом сумматора вам впаривают бракованный генератор случайных чисел. (Он имеет тенденцию на одну миллионную чаще выкидывать некоторые числа и не годится для серьёзных применений). Что же произошло? Вам просто повезло с вероятностью, отличающейся от 1/16 не более, чем в 6 знаке. Это примерно 6.25%. Не особенно вероятное событие, но 2.3125 раза вероятнее, чем выиграть в рулетку на номер. Можно увеличить число прогонов теста, пока вероятность не станет достаточно большой (так или иначе, всё в мире носит вероятностный характер). Эврика?

Увы. Коварство поставщиков не знает границ: теперь выясняется, что они, дабы обеспечить себе будущие продажи и впарить гарантийный ремонт, добавляют инкрементный счётчик вычислений, который с миллионного (миллиардного, триллионного...) раза привносит в ответ рандомные сбои, частота которых растёт вместе со значением счётчика. (Прежде, чем смеяться, вспомните, как был устроен такой прибор — принтер, пока их ещё изготавливали и продавали). Что дальше? К сожалению, эта проблема (если верить инсайдерам — а кто их знает, верить им или нет, даже Зорге поверили не сразу, о чём потом очень жалели) распространяется не только на модель Nano, но и на всю линейку.

Надеюсь, мне удалось показать, что с протоколом Тьюринга что-то очень сильно не так. Он не может помочь нам понять, является ли испытуемый всего-навсего арифметическим сумматором — ни строго, ни даже в практически полезном приближении. Что тогда говорить о таком сложном устройстве, как ИИ?

А теперь давайте представим, что в очередной сумматор вы наугад ввели 7 и 8 и, получив 16, решили не выбрасывать его немедленно на помойку, а глянуть, что внутри. Внутри вы видите Ардуину, запрограммированную на сложение двух чисел. Однако! Почему же ответ был не 15? В непонятках вы ложитесь спать. Наутро вы читаете в новостях о новой частице-рекордсмене, вызвавшей вчера небывалый ливень вторичных частиц. (Если вы не знали, сотрудник IBM установил, что космические лучи — одна из основных причин компьютерных сбоев). Есть ли у вас сомнения, что это именно сумматор, не смотря на то, что он провалил тест? (Разумное объяснение чему у вас имеется).

Понятно, да? Вы избавились от дурацкого требования сажать испытуемого в чёрный ящик, и это разом решило все проблемы, даже те, о которых вы не подозревали (и не могли подозревать!) заранее. Теперь давайте вернёмся ко всем предыдущим случаям. Увидев схему устройства для долгого счёта или для суммирования сколь угодно большой длины, неужели вы её не распознаете? Это должны быть устройства с очень простым принципом действия.

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

Гугл и прочие, конечно, неплохо зарабатывают на своих свёртках и тому подобном, но пока кто-то очень умный не возьмётся за Теорию Мышления, их сервис перевода не осилит художественный перевод даже одного абзаца текста. Извините.

http://files.rsdn.org/139866/AI_giving_the_finger.jpg