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

5 ключевых улучшений для разработки алгоритмов реального мира:

  1. Примите шум
  2. Сегмент перед анализом
  3. Рассчитывайте уверенность везде
  4. Научите пользователя
  5. Дизайн для вашего варианта использования

«Алгоритмы исследования» никогда не работают в реальном мире

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

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

Разработчики обычно начинают с теоретического мышления и набора данных, которые были записаны университетами или «хорошо воспитанными» сотрудниками во время ранней разработки. Это означает, что при его последующем использовании в ходе бета-тестирования возникают совсем другие проблемы, не учтенные в архитектуре алгоритмов.

Некоторые болезненные сбои алгоритмов за последние несколько лет:

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

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

1. Примите шум

Используйте ВСЕ, что вы записываете… включая плохой материал.

Визуальное отслеживание… всего окружения

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

Люди бродят по Интернету с выключенным светом, гуляют, лежат на кровати, смотрят телевизор и т. д. — и алгоритм все еще должен работать.

Мозговые волны, частота сердечных сокращений, движение и весь шум

В EmSense (примечание: первый стартап, где я был техническим директором, приобретенный Nielsen), когда мы начали разрабатывать нашу интегрированную ЭЭГ, акселерометр, пульсометр, ЭМГ и т. д. для видеоигр, алгоритмы отлично работали, когда люди сидели неподвижно, но если они вообще двигались, или даже если кто-то в другом конце комнаты двигался, мы получали помехи. Причина заключалась в том, что наши усилители имели разрешение 35 нановольт, поэтому буквально взмах рукой на расстоянии 5 футов изменяет напряжение датчиков ЭЭГ на чьей-то голове. Что касается акселерометра, откидывание назад в кресле или движение поезда также влияет на качество. С пульс-волом, двигаясь, отрегулируйте датчик на голове, который отделен от кровотока.

Один из самых интересных уроков был связан с морганием и движением. Вначале мы поставили цель удалить все зашумленные данные, чтобы иметь чистую трассу ЭЭГ для анализа. Благодаря тестированию первых 100 человек мы узнали, что во многих случаях шум был в равной степени предсказательным с содержанием мозговых волн, потому что он был напрямую связан с реакцией на видеоигру.

Конечным результатом стало то, что мы создали продукт, который используют EA, Bioware, THQ, Activision и многие другие ведущие компании для прогнозирования производительности своих видеоигр на рынке и оптимизации опыта для удовлетворения ожиданий людей.

Чтобы предсказать вовлеченность видеоигр, в дополнение к сложным интегрированным параметрам действительно работали очень простые показатели, подобные этой:

  • Как часто кто-то моргал? Они двигали головой? (Чем реже, тем активнее)
  • Была ли дельта от частоты сердечных сокращений в покое? (Событие, вызывающее адреналин, увеличивает частоту сердечных сокращений)

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

2. Сегмент перед анализом

Машинное обучение кажется волшебным инструментом, но если его использовать неправильно (обычно оно используется неправильно), неправильные данные анализируются и обучаются для создания плохого предсказателя реального мира.

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

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

Понимать поведение людей и их мир

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

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

  • Ложные показания людей, идущих в туннели, и обновление GPS с большими прыжками, которые выглядели как автомобильные поездки, создавали «события», которые казались важными, но на самом деле их нужно было удалить.
  • В некоторые дни у людей были хорошие данные о фитбите, но когда телефон (GPS) оставался в офисе, или целые дни отсутствовали данные фитбита, когда данные GPS существовали. Это заставит нас оценить этот день как 0 дней.
  • Некоторые офисные здания достаточно велики, чтобы быть университетским городком, поэтому может показаться, что кто-то снаружи совершает 12 прогулок, даже если он находится внутри, переходя от собрания к собранию в день.
  • Низкорослые люди на пробежке могут выглядеть как более высокие на прогулке.
  • Часть команды разработчиков находилась в Украине, и GPS значительно менее точен, чем в Сан-Франциско, что приводит к почти неразборчивым необработанным данным. Требовалось совсем другое сглаживание и кластеризация.
  • Автобусы в пробке могут выглядеть как стационарные или идущие, основываясь только на GPS.
  • В течение одной минуты времени может произойти несколько событий, которые противоречат друг другу: вы садитесь в автобус, выходите за дверь, держите при себе мобильный телефон в течение 30 секунд этого времени.
  • Кроме того, учитывая очень маленькую батарею смартфона, невозможно постоянно оставлять включенным GPS с высоким разрешением, иначе батарея разрядится за 3–4 часа, поэтому пришлось реализовать набор хаков для определения местоположения, чтобы снизить энергопотребление системы. 10x.

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

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

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

Сегментируйте сигналы на высоком уровне, чтобы понять их контекст перед анализом

В частности, какие хаотические сигналы, такие как ЭЭГ или трехмерные карты глубины, понимание того, почему и как вы сегментируете объекты, действительно важно для создания стабильного результата. Часто выходной сигнал датчика может быть одинаковым в двух разных случаях из-за слабости датчика. Поэтому вам нужно иметь 3-е измерение, чтобы определить, как интерпретировать вывод.

Одним из примеров является понимание частотного содержания ЭЭГ. Одним из простейших показателей ЭЭГ является содержание альфа-волн (7–12 Гц). Это показатель когнитивной нагрузки (сколько кто-то думает), который легко вычислить с помощью преобразования Фурье, а также предсказать события в реальном мире.

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

3. Рассчитывайте «уверенность» везде

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

Что делать, если вы получили неполные данные?

Примером этого была демонстрация Game Developer Conference от Emotiv на их гарнитурах (кажется, это было в 2008 году). Они выкупили огромный зал и пригласили 100 человек. Когда демонстрация началась, она вроде как работала, но не совсем, а потом персонажи начали прыгать, и она перестала работать.

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

Отслеживайте уверенность от начала до конца

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

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

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

Распознавание речи требует уверенности

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

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

  • «Я пропустил некоторые слова, которые вы сказали, но была ли суть в том, что вы хотели бы, чтобы Uber отправили к дому Джона?»
  • «Я пропустил некоторые слова, которые вы сказали. Ты сказал, что хочешь заказать пиццу пепперони. Что было вторым, что ты сказал?

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

Примечание. Я видел, как количество раз, когда это происходит, значительно сократилось с тех пор, как вышла Alexa.

Вывод: Отслеживайте уверенность на всем пути

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

4. Научите пользователя

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

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

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

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

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

Красные рубашки могут испортить демонстрацию Playstation

Когда я проходил стажировку в Playstation вместе с Риком Марксом в 2001 году, мы разрабатывали демонстрационные версии и сценарии использования нового EyeToy. Камеры имели разрешение 640x480 RGB и не имели датчика глубины или каких-либо датчиков с высоким разрешением, которые у нас есть сейчас. Поэтому отслеживание объектов было серьезной проблемой. При определенном освещении красный объект может выглядеть серым или даже синим. Настоящие контроллеры, которые у нас были, представляли собой цветные шарики или световозвращающие полоски. Действительно элементарно по нынешним меркам.

Проблема в том, что произойдет, если кто-то войдет в комнату в рубашке или предмете, окрашенном примерно в тот же цвет, что и контроллер, который вы используете? А если изменить освещение?

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

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

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

Встройте это в свой опыт

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

5. Дизайн для вашего варианта использования

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

Отличным примером того, как кто-то делает это правильно, является Leap Motion. Они использовали простую стереопару камер и инфракрасные светодиоды (существуют более 20 лет), и вместо того, чтобы пытаться создать трехмерное изображение всей окружающей среды, они использовали светодиоды для освещения только рук человека и начали отфильтровав все остальное, что они могли. С самого начала они разрабатывали как аппаратное обеспечение, так и алгоритмы, чтобы делать одну вещь и делать это хорошо.

В прошлом в MIT Media Lab Robotic Life Group я использовал стереокамеры Point Grey, где мы проводили анализ взаимодействия на уровне комнаты, а также на уровне рук. Нам никогда не удавалось добиться такой высокой точности, как хотелось бы, потому что система была разработана для измерения всего, что находится в комнате, а затем нам приходилось сегментировать и фильтровать все элементы, которые нам не нужны. Это вызвало значительное сглаживание, шероховатости краев и гораздо более низкое разрешение данных.

Выбрав узкое решение проблемы и объединив алгоритмы и оборудование, Leap Motion смогла добиться более чем 100-кратной производительности и точности из гораздо более дешевой системы.

Прощальное размышление о больших данных и школах

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

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

Первоначально опубликовано на http://hansclee.blogspot.com 5 января 2017 г.