Искусственный интеллект в тестировании программного обеспечения

Введение

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

Системы на основе искусственного интеллекта против «обычных» приложений

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

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

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

Помните: самая важная из проверяемых функциональных возможностей - это способность учиться.

При этом в системах ИИ роль аналитика по качеству становится более стратегической и аналитической.

Когда рассматривать внедрение ИИ?

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

Некоторые примеры:

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

Когда (и где) следует начинать QA?

Различные этапы цикла разработки системы на основе ИИ (и роль качества в каждом из них)

Давайте начнем с довольно спорного заявления, которое позволит нам сделать наши первые шаги в мире тестирования ИИ: чтобы начать участвовать в мире искусственного интеллекта, с точки зрения QA, вам необязательно требуется глубокое понимание математики или алгебраических основ моделей машинного обучения.

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

Чтобы определить роль инженеров по качеству и ожидаемые результаты на разных этапах разработки реализации ИИ, мы можем определить следующие этапы:

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

Ставить цели

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

Сбор данных

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

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

Что мы можем внести на этом этапе с точки зрения контроля качества? То же, что и в «традиционном» проекте, когда мы вместе с бизнес-аналитиками определяем объем тестирования, набор тестовых примеров и источник данных (и его характеристики). Всегда есть какой-то сценарий, в который мы можем внести свой вклад. «А что, если…» - одно из наших любимых предложений как опытных качественных аналитиков… и этот простой вопрос может изменить ход проекта.

Подготовка данных

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

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

Это связано с тем, что, как и во всех процессах ETL, мы должны учитывать возможность того, что одни и те же типы данных поступают из разных источников. Вернемся к примеру с пользователями потоковой платформы. Возможно, поле, которое относится к «пользователю», поступает из разных разработок и платформ и не имеет ярлыка «стандартизованный», например, пользователь игровой консоли может быть отправлен как «user_id» и «user» со смарт-телевизора и «customer_id» с мобильного телефона. Исключить из набора данных все значения, выходящие за пределы среднего, проанализировать те особенности, которые не являются репрезентативными для выборки, найти пустые или «нулевые» значения, проверить формат полей, их тип, какой диапазон значений ожидается … Всегда помните, что наша модель основана на данных. Независимо от того, насколько хорошо она запрограммирована, если данные, которые мы ей передаем, неверны, модель потерпит неудачу в достижении своей цели, и мы не можем винить его.

Выбор алгоритма

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

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

Некоторые из наиболее важных алгоритмов контролируемого обучения:

  • Линейная регрессия
  • Нелинейная регрессия
  • Обобщенные линейные модели
  • Деревья решений
  • Нейронные сети

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

Модель обучения

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

Обучение модели - это основная и наиболее важная задача, которую выполняет специалист по данным. Понимание того, как это выполняется, важно для аналитика по качеству, отвечающего за его тестирование.

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

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

Оценить модель

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

Делать предсказания

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

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

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

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

Типы машинного обучения

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

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

  • Контролируемое обучение
  • Обучение без учителя
  • Обучение с подкреплением.

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

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

Контролируемое обучение

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

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

С другой стороны, обучение с подкреплением - это подполе машинного обучения, где «агент» учится выбирать действие из всех доступных возможностей в конкретной среде, чтобы со временем максимизировать «вознаграждение» (давайте представим собаку, которая учится чтобы вернуть нам палку, потому что он знает, что мы дадим ему немного еды в награду за его действие)

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

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

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

  • Аэропорт вылета
  • Аэропорт назначения
  • Погодные условия
  • Авиакомпания
  • Расстояние между аэропортами
  • Дата отбытия

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

Оценка эффективности модели классификации машинного обучения

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

Внешние КПЭ

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

  • Операционные расходы, связанные с задержкой рейсов (сборы аэропорта)
  • Показатели удовлетворенности клиентов
  • Доступные места для перенесенных рейсов
  • Общий доход
  • Затраты на оплату труда, операционные расходы

Ключевые показатели эффективности внутренней модели

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

Матрица путаницы

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

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

В нашем примере четыре варианта:

  1. Рейсы, которые были отложены, и модель классифицировала их как отложенные. Это был бы настоящий позитив или TP.
  2. Рейсы, которые не были задержаны, и модель классифицирует их как неотложные. Это был бы истинный минус или TN.
  3. Рейсы, которые были задержаны, и модель классифицировала их как неотложные. Это будет ложноотрицательный результат или FN.
  4. Рейсы, которые не задерживались, модель классифицировала как задержанные. Это ложное срабатывание или FP.

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

Метрики, которые мы можем получить из матрицы путаницы

Ожидаемые результаты или бизнес-цели связаны как с внешними, так и с внутренними KPI. Например, достижение определенного процента «Точности» может определять одобрение качества. Ниже приведены наиболее распространенные метрики, которые мы можем получить из нашей модели, и краткое описание каждой из них:

Точность

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

Точность = TP + TN / (TP + TN + FP + FN)

В нашем примере этот показатель отвечает на вопрос: сколько рейсов система правильно классифицировала (как истинно положительные, так и истинно отрицательные) из всех рейсов?

Точность

Точность - это соотношение между истинными и ВСЕМИ положительными сторонами.

Этот показатель отвечает на вопрос «какая доля положительных идентификаций была на самом деле правильной?»,

Точность = TP / TP + FP

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

Отзывать

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

Отзыв = TP / (TP + FN)

Оценка F1

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

Оценка F1 = 2x (точность + отзыв) / точность + отзыв

Вывод

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

Стратегия качества начинается с определения сценариев, классификации входных переменных, проверки данных и окончательной оценки модели.

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

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