image

В наше время пресс-релизы технокомпаний мало чем нас удивляют. Детали инноваций либо утекают на несколько месяцев раньше или оказываются мало впечатляющими. Но недавно мы столкнулись с несколькими настоящими сюрпризами. За несколько месяцев до выпуска Switch, Nintendo решила, что будущее консолей – это их прошлое, и объявила о NES Classic. А победа гугловской AlphaGo над чемпионом среди людей обескуражила экспертов, считавших, что такие результаты можно было получить не ранее, чем через десять лет.

Декабрьский анонс розничного магазина Amazon Go, в котором можно просто набрать продукты с полок и выйти, может сравниться с шоком от новости про AlphaGo. Метод «забрал и ушёл» уже некоторое время слыл «будущим розничных продаж» и находился «всего через несколько лет» от нашего времени. Я более десяти лет работал в отделе исследований робототехники в Калтехе, Стэнфорде и Беркли, а сейчас я заведую стартапом, изготавливающим охранные камеры для использования вне помещений. Компьютерное зрение составляло большую часть моей работы. Но всего за несколько месяцев до анонса я уверенно рассказывал кому-то, что на реализацию системы «взял и ушёл» потребуется ещё несколько лет. И я не один так думал – всего за два месяца до этого у Planet Money был эпизод на эту тему.

Так что, когда Amazon внезапно удивил нас всех, создав такую штуку, первый вопрос был очевидным: как это будет работать? В промо-ролике бросаются громкими словами типа компьютерное зрение, глубинное обучение и синтез датчиков. Но что всё это значит и как реально объединить все эти вещи?

Начну с раскрытия интриги: на самом деле я этого не знаю. Я не принимал участия в разработке проекта, и компания не рассказывала о том, как это работает. Но, учитывая мой опыт и работу в области компьютерного зрения, я могу сделать несколько подкреплённых знаниями догадок. По своей сути Amazon Go выглядит таким же продуктом развития ИИ, компьютерного зрения и автоматического принятия решений, как и AlphaGo, и внезапные прорывы в области робомобилей. Произошедшие за последние пять лет прорывы в статистике и параллельных вычислениях создали новую веху в области машинного интеллекта.

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



Корзина покупок


Чтобы лучше понять принципы работы экосистемы Amazon Go, необходимо обрисовать задачу. В случае продуктового магазина Amazon должна ответить на один вопрос: что уносит с собой посетитель, выходя из магазина? Иначе говоря, что у него в корзине покупок?

По сути, способов ответить на вопрос всего два. Amazon нужно либо заглянуть в корзину, когда пользователь уходит, либо отслеживать, что именно попадает в эту корзину. Первый способ мы называем очередью в кассу, и именно так работает большинство современных магазинов (проверить всё, что пользователь уносит с собой). Другой подход я называют счётом в баре. Как бармен отслеживает все заказы клиента, так и бизнес может узнать, что находится в корзине покупок, отслеживая, что именно попадает в корзину или покидает её. В идеале вы будете точно знать, что там, и вам не придётся заставлять пользователей демонстрировать их покупки.

Конечно же, Amazon Go – не обычный продуктовый магазин. Он должен не только узнать, что находится в каждой конкретной корзине, но и понять, с кого списывать за неё деньги. Чтобы взимать плату в мире без кассиров, нужно идентифицировать пользователя.

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

Нейроны


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

До сих пор алгоритмы зрения работали через нахождение заметных свойств изображения и сбора их в объекты. Из изображения можно было извлечь линии, углы и грани. Четыре линии и четыре угла в определённой комбинации дают вам квадрат (или прямоугольник). Те же принципы можно использовать для идентификации и отслеживания более сложных объектов, используя для этого более сложные свойства и наборы. Усложнение алгоритмов зрения зависит от усложнения свойств и техник, используемых для распознавания определённых наборов свойств объектов.

Долгое время самый интересный прогресс компьютерного зрения и машинного обучения зависел от изобретения исследователями всё более сложных свойств. Вместо линий и углов пришли вейвлеты и гауссово размытие, и свойства с эзотерическими названиями типа SIFT и SURF. Какое-то время лучшее свойство для определения человека на изображении носило название HOG. Но довольно быстро стало понятно, что дотошное создание свойств вручную быстро упирается в потолок своих возможностей.

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

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

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

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

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

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

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



Вычислительная кооперация


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

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

К счастью, для создания видящих сетей можно немного смухлевать – у нас есть потрясающие примеры нейросетей, оптимизированных для зрения, прямо у нас в головах. Нейробиологии десятилетиями размечали визуальную кору млекопитающих, что и послужило вдохновением. Так родилась свёрточная нейронная сеть (СНС). За последние несколько лет она стала одним из самых популярных и мощных инструментов в области компьютерного зрения.

Свёртка – удивительная математическая концепция, простое объяснение которой выходит за рамки моих возможностей. Один из красочных, но с технической точки зрения абсолютно неправильных, способов представить себе её – это взять одну математическую функцию и подвигать её по другой, наблюдая за результатом.

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

СНС стали откровением в области компьютерного зрения. Они чрезвычайно полезны для обобщённого распознавания объектов: вы тренируете СНС на распознавание не конкретного автомобиля или человека, но автомобилей или людей вообще. Они даже сделали неактуальным один из известных комиксов XKCD.

image

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

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

Недавние передовые разработки идут ещё дальше. Исследователи создали рекуррентную нейронную сеть (РНС), обладающую встроенной памятью. Вместо простой передачи соединений на следующий слой она использует внутренние связи для создания постоянной памяти. Если вы знакомы с цифровой логикой, то в качестве аналогии вы можете представить себе триггеры. А значит, можно тренировать сети с единственным визуальным слоем, «смотрящим» на изображение, и передающим в память всё увиденное, благодаря чему сеть может распознавать действия на видео.

И после этих разработок у вас внезапно появляются алгоритмы, способные распознавать людей, объекты и действия с чрезвычайно высокой точностью. Иначе говоря, можно тренировать алгоритмы на распознавание человека, знать, где на изображении находится товар из магазина, когда он передвинут, и распознавать, когда человек кладёт или берёт его с полки. Вам нужно только немного GPU. И как удобно то, что одна из крупнейших коллекций GPU, доступных по запросу, принадлежит Amazon – это их чрезвычайно мощный и прибыльный облачный сервис AWS.

Взломали ли мы тайну Amazon Go, скомбинировав дешёвые камеры с мозговыми алгоритмами и армией компьютеров? Не совсем, поскольку необходимо решить ещё одну проблему. Угол зрения камер ограничен – так каким же образом бизнес сможет покрыть ими всё пространство магазина? Что, если клиент стоит между камерой и полкой?

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

Пищевой синтез


Для этого вернёмся в 1960-е. Тогда инженеры НАСА столкнулись с большой проблемой – у них было множество различных навигационных инструментов, от гироскопов до отслеживания звёзд, и им необходимо было свести все измерения в одну наилучшую оценку местоположения космического корабля.

У Amazon Go была сходная проблема. Чтобы вся эта затея работала, необходимо комбинировать наблюдения с нескольких различных камер за различные периоды времени в одну связную информацию о корзине покупателя. Загвоздка в том, что мир – по сути своей место неопределённое, поэтому решение было в принятии этой неопределённости. Вместо того, чтобы пытаться определить всё с максимальной точностью, удачные модели используют вероятностный подход.

У НАСА это был алгоритм под названием "фильтр Калмана", используемый ими для принятия во внимание погрешностей каждого инструмента и комбинации измерений в наилучшую оценку из возможных. Фильтр Калмана основывается на формула Байеса.

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

Возвращаясь к примеру вина и соды: допустим, нейросеть сообщает, что клиент взял вино. Формула Байеса сообщает нам, что вероятность того, что он действительно взял его, равна вероятности того, что он возьмёт вино, помноженной на вероятность того, что камера правильно сообщает о факте взятия вина.

У Amazon есть два больших преимущества при использовании вероятностной схемы на основе формулы Байеса. Первое – компания может рассматривать априорные вероятности, поскольку ей известна история предыдущих покупок множества клиентов. Это значит, что если клиент Amazon Go каждый вторник покупает кофе и кекс, то ещё до того, как он направился к соответствующим полкам, магазин уже может поднять вероятность этих покупок. Это естественный способ использования огромного количества данным по пользователям, которое уже есть у компании.

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



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

Amazon могла придумать для этого случая сложную логику, из которой следовало бы, какой камере можно верить. Была ли расположена ближе и был ли лучше обзор у камеры, считающей, что клиент взял дорогую газировку? Блокировалась ли покупателем камера, увидевшая ковыряния в носу? Но вам нужна только вероятность. На основании количества ошибок каждой камеры, зависящего от её расположения и обзора, формула Байеса говорит нам, как именно скомбинировать все входные данные, чтобы понять, какова была вероятность того, что пользователь взял дешёвую газировку, дорогую, или не взял ничего.

На самом деле, поскольку вы перешли в чудесный мир вероятностей, формула Байеса позволяет вам комбинировать входные данные с совершенно разных типов датчиков.

Поэтому Amazon отправила запросы на патентование методов использования RFID-датчиков для автоматической оплаты покупок. Пассивные RFID-датчики размещаются на товарах, а затем считываются сканерами, расположенными в магазине. Эта технология – отличный кандидат на создание автоматического магазина, поскольку она дешёвая и распространённая уже сегодня. А поскольку она позволяет дистанционное сканирование, её можно использовать вместо кассира. Разместите сканер там, где ходят клиенты, и вы увидите, что у них в корзине, без необходимости доставать товары и предъявлять их кассиру. При просмотре промо-видео я заметил, что все товары были предварительно упакованы – консервы, пакеты чипсов и пластиковые контейнеры с едой. У таких товаров не только больше прибыль, они также позволяют разместить на каждом предмете метку.

Но у использования одних только RFID есть недостатки. Не получится отличить одного покупателя от другого. Вы видите, что магазин покидает набор из газировки, чипсов и сэндвичей, и понимаете, что это покупка, но кто это купил? Кроме того, RFID могут давать ошибки. Если мимо сканера пройдут два покупателя, вы сможете отсканировать покупки обоих, и не узнать, кто что заказал.

Вероятностные оценки на основе формулы Байеса помогают справляться с такими проблемами. Amazon может выдавать вероятности по местонахождению и возможным комбинациям покупок для сотен покупателей. Ситуация похожа на многомировую интерпретацию квантовой механики: каждый раз после некоего действия клиента магазин создаёт новый «мир» с этим действием и отслеживает его (обновляя вероятность этого мира по Байесу).

Вернёмся к камерам и примеру с газировкой: на основе RFID Amazon может использовать сканирование для подтверждения или опровержения работы камер, без необходимости разрабатывать какую-то особенную логику.

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

И Amazon с гордостью представляет… ваш ужин


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

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

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

Комментарии (0)