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

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

К сожалению, интеллектуальные системы могут быть заведомо ненадежными.

В Abnormal Security мы разрабатываем интеллектуальные системы для распознавания кибератак. Наши системы обрабатывают огромные объемы необработанных данных для выявления вредоносного поведения, и наши клиенты полагаются на нашу защиту в любое время, каждый день, несмотря ни на что. Одна из наших основных ценностей — #customer-obsession, и мы очень серьезно относимся к этому обязательству. Поэтому мы глубоко инвестируем в создание устойчивых интеллектуальных систем. Это требует тщательной проверки данных, глубокого понимания поведения системы и снижения рисков за счет тщательного проектирования.

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

Задача №1 — Противники

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

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

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

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

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

Задача № 2 — несоответствие офлайн/онлайн

Каждой команде инженеров интеллектуальных систем необходимо справляться с несоответствием данных между онлайн-данными и автономными данными.

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

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

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

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

Задача № 3 — петли обратной связи

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

Некоторые классические примеры этой ситуации включают в себя:

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

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

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

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

Задача № 4 — перебои в работе

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

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

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

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

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

Наконец, в Abnormal мы придерживаемся очень высоких стандартов в отношении моделей машинного обучения. Вместо того, чтобы использовать только чистые данные для обучения и оценки наших моделей, мы заставляем наши модели машинного обучения работать с зашумленными, отсутствующими или поврежденными данными в процессе обучения. Майк Тайсон однажды сказал: «У каждого есть план, пока он не получит по морде». Эта мантра актуальна и для машинного обучения. Модель, которая всегда видит только чистые данные во время обучения, потерпит неудачу, когда данные, которые она видит в производственной среде, будут повреждены. Позволяя нашим моделям машинного обучения получать «удары по лицу» в процессе обучения, мы можем лучше вооружить их, чтобы справляться с неожиданными трудностями.

Задача 5 – Рост

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

Эти эффекты могут привести к большим и внезапным изменениям в распределении данных, с которыми ваша интеллектуальная система должна будет справиться. Для этого ему нужно будет как можно быстрее адаптироваться к новым пользовательским данным.

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

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

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

Первоначально опубликовано на OpenDataScience.com

Читайте другие статьи по науке о данных на OpenDataScience.com, включая учебные пособия и руководства от начального до продвинутого уровня! Подпишитесь на нашу еженедельную рассылку здесь и получайте последние новости каждый четверг. Вы также можете пройти обучение по науке о данных по запросу, где бы вы ни находились, с нашей платформой Ai+ Training. Подпишитесь также на нашу быстрорастущую публикацию на Medium, ODSC Journal, и узнайте, как стать писателем.