Скотт Александер
«Сортировка по спорности»
Scott Alexander
«Sort By Controversial» (2018)
Спасибо, что разрешили опубликовать мою историю в вашем блоге. Мейнстримные СМИ — дерьмо, да и всё равно никто не поверит.
Всё началось в сентябре 2017. Я работал в маленьком стартапе по онлайн-рекламе. Видели рекламу в Фейсбуке и Твиттере? Мы консультировали компании, как им получить максимум кликов. Этот стартап — не буду его называть — собирался добавить глубокое обучение, потому что инвесторы заваливают деньгами всё, где есть слова «глубокое обучение». Обучаем сеть предсказывать, сколько лайков получит что-нибудь на Реддите. Затем спрашиваем, сколько лайков получит другая реклама. Затем берём ту рекламу, которая получит больше всего лайков. Этот парень[1] (не я) объяснит лучше. Почему Реддит? Потому что лайки и дислайки проще, чем всякие разные реакции на Фейсбуке, а ещё сабреддиты позволяют таргетировать рекламу по демографическим группам, плюс существует архив из 1,7 миллиардов комментов[2] с Реддита, который можно скачать для обучения. Мы обучили нейросеть предсказывать количество лайков по заголовку поста на Реддите.
Любая предиктивная сеть может служить и генеративной сетью. Если вы обучите нейросеть распознавать собак, вы можете запустить её в обратную сторону и генерировать изображения собак. Если вы обучите сеть предсказывать лайки на Реддите, вы можете запустить её в обратную сторону и генерировать высоколайковые заголовки. Мы с этим поэкспериментировали, и получилось очень смешно. Не помню точную фразу, но для /r/politics это было нечто вроде: «Дональд Трамп больше не президент. Все трансгендеры — президент». Для r/technology — что-то про Илона Маска, спасающего сетевую нейтральность. Можно также генерировать заголовки с максимальным числом дислайков, но это скучно: получится что-то вроде спама о таблетках для увеличения пениса.
На Реддите есть возможность сортировать посты по спорности. Алгоритм можете посмотреть здесь[3], но в двух словах: умножаем общее количество голосов (лайки + дислайки) на баланс (отношение лайков к дислайкам или наборот, смотря что меньше), и тем самым высвечиваем посты, которые провоцируют разногласия. Спорность хорошо продаёт, поэтому мы обучили нашу сеть предсказывать и это. Проект поручили новенькой индианке с длинным именем, которую мы звали Шири, и она не смогла заставить его работать, так что наш босс Брэд послал на помощь меня. Шири протестировала сеть на большом архиве из 1,7 миллиардов комментов, и сеть сгенерировала ряд спорно звучащих гипотетических сценариев политики США. Пока всё было неплохо.
Японцы тестировали своё биологическое оружие на китайских пленниках. Институт Таскиги заражал сифилисом афроамериканцев. Мы были, может, гуманнее, а может, глупее, потому что мы испытали Резак Шири на себе. У нас был приватный внутренний сабреддит для обсуждения дел компании, потому что Брэд хотел, чтобы мы все хорошо освоили эту платформу. Проблема Шири была в том, что она протестировала нейросеть на нашем сабреддите, и она просто выдавала тривиально истинные или тривиально ложные фразы. Никакой спорности, никакого места для дискуссий. Фраза, которой мы тогда занялись, касалась одной версии дизайна нашего кода. Обойдусь без подробностей, но вообразите, что вы собрали все в мире плохие и неправильные решения, запрограммировали максимально уродливо, и затем преподнесли конечному юзеру, выставив средний палец. Резак Шири выдал в качестве максимально спорного то утверждение, что дизайн нашего продукта должен быть вот таким. Минут десять мы обсуждали, где конкретно баг, а потом Шири сказала, что не понимает, почему программа генерирует очевидно истинные утверждения.
Шири не очень хорошо знала английский, так что я решил, что это проблема коммуникации. Я поправил её. Программа выдавала очевидно ложные утверждения. Шири упёрлась. Я всё ещё думал, что она что-то путает. Я объяснил ей смысл английских слов «истинный» и «ложный». Кажется, она обиделась. Я попросил подтвердить. Вправду ли она считает, что это чудовищное программное решение, этот план скомбинировать все плохие техники дизайна и исключить возможность когда-либо исправить ошибку — правильный способ построить нашу программную базу? Шири сказала «да». Хуже того, она удивилась, что я так не считаю. Она была уверена, что мы уже делаем примерно то же самое (на самом деле нет). Она считала, что отойти от этого плана означало бы полностью всё переписать и значительно ухудшить код.
В этот момент я усомнился, что я в здравом уме, так что мы зашли в соседний кабинет к Блейку и Дэвиду. Это были старшие кодеры нашей компании, и обычно они служили голосом разума. Они разговаривали о своей собственной проблеме, но я прервал их и показал режущую фразу. Блейк ответил разумно: «Зачем ты мне суёшь этот дебильный мусор?» Но Дэвид удивился, как и Шири, и начал доказывать, что идея вполне здравая. Мы четверо начали яростно спорить. Я всё ещё думал, что Шири и Дэвид просто не поняли вопроса, хотя Дэвид был англоязычным, а вопрос — кристально ясным. Тем временем Дэвид всё сильнее выходил из себя и протестовал, что он всё понял, а Блейк и я — просто дерьмовые программисты, не понимающие базовых архитектурных решений. Он настаивал, как и Шири, что режущая фраза — это план, который уже выполняется, и что любая попытка отойти от него поломает всё. Дошло до того, что мы решили пойти к Брэду и всё выяснить.