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

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

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

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

Он также предназначен для использования в качестве заметки для себя, напоминания :)

Главный руководящий принцип

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

Это в некоторой степени связано с замечанием Патрика Маккензи Не называйте себя программистом и другими советами по карьере.

Инженеров нанимают для создания ценности для бизнеса, а не для программирования.

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

Все последующее разъясняет этот принцип или позволяет нам следовать ему.

Контур

Часть I

  • Размышляя о проблеме
  • Думая о данных
  • Думая о решении

Часть II

  • Беспорядок и неопределенность проектов искусственного интеллекта
  • Большая картина
  • Человеческое обучение

Часть III: полезные ресурсы

1) Размышляя о проблеме

Руководящий принцип: знайте свою проблему

Знайте контекст

Чтобы по-настоящему понять проблему, нам нужно понять контекст проблемы. Это значит задавать вопросы и находить ответы на такие вопросы, как:

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

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

Роберт Чанг затрагивает это в статье Улучшение машинного обучения, говоря о том, что определение проблемы сложно и не всегда очевидно:

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

Знайте ожидания и управляйте ими

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

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

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

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

2) Думая о данных

Руководящий принцип: знайте и уважайте свои данные

Знайте технические аспекты

Где данные? Какие есть данные? Качество? На что похожа инфраструктура данных?

Где в иерархии потребностей ИИ находится инфраструктура данных?

Знание этого помогает, среди прочего, об осуществимости проекта (достаточно ли у нас данных? Достаточно ли качественных данных?), О том, какие действия следует предпринять (следует ли нам искать необходимые data или консолидировать источники данных?), одновременно поддерживая обсуждение проблемы.

Знайте нетехнические аспекты

Речь идет о таких вопросах: Как создаются данные? Кто отвечает за данные?

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

Соблюдайте данные

Мусор на входе, мусор на выходе - клише, но это правда. Успех проекта ИИ зависит от того, какие данные мы используем. Поэтому очень важно уважать данные. Что это обозначает? Это означает признание того, что мы будем тратить много времени на размышления, очистку и подготовку данных. А также другие операционные аспекты, такие как документирование данных.

3) Обдумывание решения

Руководящий принцип: будьте открытыми и гибкими

Знайте, что означает решение проблемы

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

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

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

Подумайте, нужен ли искусственный интеллект

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

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

Подумайте, как решить эту проблему вручную

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

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

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

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

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

Включите экспертизу домена

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

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

Баланс стандартных и специальных инструментов

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

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

Расставьте приоритеты в потенциальных подходах

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

По сути, войдите в Инженерный цикл машинного обучения как можно быстрее.

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

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

Продолжение следует в части II.

(Примечание: адаптировано из выступления на GDG DevFest 2018).