Содержание статьи
Как посмотреть на мир глазами нейросетей
А можно заставить компьютер предсказывать цену дома по фотографии?
Нейронную сеть можно представить как алгоритм, который получает данные, обрабатывает их в несколько этапов и затем выдает уже измененные данные (в принципе, так делает любой алгоритм). Один этап обработки данных программисты договорились называть слоем нейросети. Слой состоит из нескольких нейронов, то есть функций, которые по-разному обрабатывают разные кусочки входных данных. «Внутри» нейрона программа может, например, просто умножить несколько чисел на несколько других чисел, и, если сумма произведений превосходит заданный порог, передать сумму на вход другому нейрону. Если нейрон отправил свою сумму «по цепочке», говорят, что он активировался. В нашем случае это означает, что он обнаружил те пиксели, которые запрограммирован искать.
По ее словам, даже те стереотипы, которые с первого взгляда нейтральны, отражают определенные оценочные суждения и обедняют многообразие. «Нейросети определенно не передают сложность и разнообразие этих культур», — соглашается исследователь в области этики ИИ Саша Луччиони.
Такой же подход, впрочем, искусственный интеллект использует и к «рисованию» американцев: все 100 сгенерированных по запросу «American person» портретов так или иначе используют звездно-полосатый флаг. Даже этот, хотя, определенно, заслуживает приз за оригинальность:
Что сделать входными признаками, какие числа подавать на вход нейросети? Первая мысль — давайте всю картинку, пусть х1 будет первый пиксель, х2 — второй и так далее. Тогда уж точно у нейросети будут все данные, которые могут ей когда-либо понадобиться, правильно? Однако, если наша картинка в HD, 2500 пикселей на 2500, входных данных уже будет около шести миллионов чисел — подобная нейросеть просто расплавит компьютер. Надо как-нибудь сократить количество входных данных. Если на входе будут не пиксели, то что вместо них?
Вот так это выглядит. На гифке ниже уже совершенно нельзя разглядеть никакие черты двойки, но при помощи яркости отдельных пикселей эти картинки 4×4 кодируют наличие «признаков» двойки на исходном изображении. Если сложим 16 значений пикселей вместе, получится единый сигнал, передаваемый сверткой. Его мы включим в полносвязную нейросеть.
Midjourney, DALL-E, Stable Diffusion и другие ИИ-модели, генерирующие изображения, не в состоянии отобразить многообразие нашего мира во всей его полноте, оперируя лишь примитивными стереотипами. Предвзятость ИИ граничит с убожеством: «человек из Индии» для нейросетей почти всегда оказывается бородатым пожилым мужчиной в чалме, «человек из Мексики» — всегда мужчина в сомбреро, а «улица в Нью-Дели» всегда завалена мусором. ADPASS рассказывает, почему так происходит и как обстоят дела с многообразием у российских нейросетей.
Культурная слепота
Важно, что из-за способа применения ядра свертки всякий раз исходное изображение становится меньше, теряет в разрешении, длине и ширине. Поэтому сложные фигуры всё труднее разглядеть на картах признаков, они очень расплывчатые. Так задумано, в частности, чтобы сэкономить память, и реализуется потому, например, что ядро свертки не выходит за края картинки (хотя применяются и способы посложнее, это сейчас неважно). На гифке ниже 36 пикселей превратились в 12 (за 12 «шагов»).
Перескочим на следующий сверточный слой. На нем к каждой из черно-белых картинок мы применим еще по 50 ядер свёртки, а к каждой из этих новых — еще по 50: так всякий раз карт признаков будет становиться все больше (уже 250 вместо 50). Постепенно получаются те самые «комбинации комбинаций» границ, углов и точек, которые мы видели выше, в примерах с распознаванием черт лица и с угадыванием цены дома.
Недавно «Системный Блокъ» рассказывал о графических фильтрах, которые используются в Инстаграме или в Photoshop. Мы разобрались, как усреднять значения пикселей, а также находить края и углы объектов при помощи ядер свертки. В этом тексте мы пойдем дальше — и разберем по шагам, как с этим работают нейросети.
Вот на это, в общих чертах, и похож механизм работы свёрточной нейронной сети. Сначала алгоритм выделяет на исходной картинке очень конкретные и низкоуровневые признаки, группы пикселей, оказавшихся рядом с каким-нибудь цветовым пятном. Подсвечивая на получившихся картинках с признаками новые элементарные признаки, программа комбинирует их и постепенно усложняет. Исходное изображение превращается в бесчисленные комбинации карт признаков, где активированы те или иные пиксели, и медленно сжимается, доходя в размерах до единственной точки — а эту точку уже можно рассматривать как сигнал, передаваемый нейроном. Такой сигнал комбинируется с другими сигналами и активирует цепочку нейронов в полносвязной сети, на конце которой один-единственный нейрон, сложив достаточное количество «очков» от других нейронов, заявляет: «Я вижу на картинке лицо!»
Валерия Пьяджио из работающего в сфере маркетинга аналитического агентства Kantar обращает внимание, что в последние годы рекламная индустрия стремилась уйти от стереотипов, представляя мир во всем его многообразии, диверсифицируя голоса и образы тех, от лица кого рассказывает свои истории. «Теперь мы даем голос машинам», — признает она. Бездумное использование ИИ-инструментов означает откат в прошлое, к привычным шаблонам.
Протестировать генеративные нейросети на тенденциозность решили в издании Rest of World, для чего сервису Midjourney задавали комбинации слов «человек» (использовалось гендерно нейтральное person), «женщина», «дом», «улица» и «тарелка еды» в сочетании с пятью странами — Китаем, Индией, Индонезией, Мексикой и Нигерией. Для каждой комбинации сделали 100 генераций, получив в результате 3000 изображений.