У меня — высшее образование по специальности «Информационные технологии», больше 20 лет опыта в разработке разнообразного софта, но даже для меня экспертные системы были чем-то вроде открытия.
Да, мы изучали основы в университете, но там не было практических примеров или задач из реального мира, поэтому в памяти все это осталось где-то на уровне высшей математики: «вроде полезно, но хрен его знает, где?»
Термин «искусственный интеллект» появился около 50 лет назад, причем придумала его тусовка математиков того времени. Он оказался одновременно и хорошим маркетинговым ходом («большие человекоподобные роботы»), и одновременно заложил бомбу под любые попытки реализовать подобные проекты в реальном мире, особенно на ранних этапах.
Все инициативы в этой сфере сталкивались с завышенными ожиданиями, именно «благодаря» слишком громкому названию. Настоящий «искусственный интеллект» все еще недоступен, а все примеры того, что мы видим, ограничены конкретными и достаточно узкими задачами.
Эта индустрия переживала несколько подъемов и спадов, но по-настоящему применять технологии искусственного интеллекта мы начали лишь с переходом от попыток создать «мыслящую машину» к переводу уже существующих знаний и опыта в электронную форму.
Первые попытки создать искусственный интеллект проваливались из-за того, что его создатели пытались пойти по пути создания универсальных «решателей задач». Ожидалось, что они могли бы в будущем самостоятельно дорасти до уровня мышления человека. Но на выходе получался экспоненциальный рост вычислительной сложности, да и модели на выходе все равно оставались слишком узкими и нестабильными.
Прорыв случился именно тогда, когда вместо создания умных алгоритмов начали оцифровывать уже существующие знания и опыт. То есть вместо «универсального решателя задач» фокус сместился на решение конкретных задач с использованием знаний и опыта доступных экспертов.
Самый известный пример — Рей Далио. Когда он говорит о своей внутренней системе принятия инвестиционных решений, мы легко можем увидеть там экспертную систему. Причем он пытается нанимать лучших из лучших экспертов отнюдь не для того, чтобы использовать их экспертизу в реальном времени. Вся экспертиза нанятых людей постепенно оцифровывается, и на выходе накопленный массив опыта сотен экспертов дает ощутимое конкурентное преимущество для его инвестиционного фонда.
Основное отличие экспертных систем от обычного программирования — в четком разделении знаний и кода.
Когда программист пишет программу, он как бы фиксирует свои знания в коде: последовательность вызова процедур, условия, циклы, методы обработки данных. В итоге мы получаем «кашу» из сугубо технических деталей и того, что мы могли бы описать словами как «знания» или «опыт». В типичной программе до 99% кода — именно технические детали реализации, к слову.
Экспертные системы строятся совсем по-другому: основной упор идет на накопление знаний в разнообразной форме во внешних базах данных, а алгоритмы их обработки остаются достаточно простыми и фиксированными. При этом нам не нужно переписывать программу каждый раз, когда мы вносим новые знания, либо обнаруживаем ошибку в предыдущих знаниях.
Эта концепция «разделения знаний и кода» отличается от «разделения данных и кода» в программировании, поскольку программист работает исключительно с внешними данными, все равно перенося знания в код. Последовательность обработки данных, форматы ввода и вывода, интерфейсы — знания, как ни крути.
Инженер знаний — тот самый человек, который оцифровывает доступную экспертизу, переводя ее в электронную форму. Его работа сильно отличается от работы обычного программиста: он больше занимается поиском, получением, оцифровкой, накоплением и управлением знаниями и экспертизой, нежели кодингом.
На практике вообще нет проблем с техническими аспектами реализации алгоритмов экспертных систем. Они, как правило, «деревянные», поскольку самая концептуально сложная часть остается всегда вне кода. Но вот именно получение и накопление знаний выходит на первый план.
К слову, мы можем вообще обойтись без экспертов в случаях, когда у нас есть достаточно большие объемы данных. Это — то, чем занимаются специалисты по BigData: они выделяют знания из данных, по сути. Нейронные сети тоже находят свое применение как инструменты разработки и оптимизации экспертных систем.
Казалось бы, что на текущий момент именно получение и накопление знаний является самой сложной проблемой в этой области.
Но, на практике, именно практическая применимость технологий является основным вызовом: мало выделить и оцифровать знания, нужно еще и найти им применение. И, самое главное, внедрить до конца, до результатов в реальном мире. Чтобы знания не просто «были», но использовались максимально эффективно.
Это и есть основное направление моей работы в последнее время.
Них*я не понял, но очень интересно.
А есть возможность разобрать конкретную модель экспертной системы? От идеи и сбора данных, до использования на практике.
Пока что я под это подстраиваю только ранжирование поисковиков. Но действительно ли идея создать экспертную систему без bigData реализуема? И миллионных бюджетов. И выйдет ли такая система на окупаемость по временным затратам относительно профицита?
Есть много разных типов экспертных систем (на правилах, деревья решений, нечеткая логика, case-based reasoning, и так далее).
Разберем простейший тип экспертной системы — rule-based (основанные на правилах).
Есть правила вида «если УСЛОВИЕ, то ДЕЙСТВИЕ».
Допустим, у нас есть правила:
Соответственно, ее можно гонять как в прямом, так и в обратном направлении:
В отличие от обычного программирования, тут можно делать цепочку правил, добавлять нечеткость условий и действий.
Самый популярный пример экспертной системы, которую мы даже не замечаем — кондиционеры. У них там применяется нечеткая логика вида «если холодно — убавить обороты вентилятора, если тепло — добавить обороты вентилятора». И «холодно», и «тепло», и «убавить», и «прибавить» тут нечеткие параметры, там есть функция зависимости от температуры и реальном напряжении на моторе.
Сами по себе экспертные системы — очень бюджетный вариант входа в искусственный интеллект. Как видишь, сложного там ничего нет с технической стороны. Основное тут — доступ к экспертизе, которую можно получить либо от доступных экспертов, либо анализом данных.
Вопрос окупаемости тут больше в вопросе: «где именно это барахло применять, чтобы окупалось». Экспертные системы — всего лишь одна из технологий. Микроскопом можно и гвозди забивать, понятное дело.
Стоит начать с небольших экспериментов и смотреть на результаты, как и везде, собственно.
У Макса боязнь, что его обложили конкуренты, так что примеров, кроме светофора, ждать бессмысленно.
Более сложные примеры потребовали бы более сложного объяснения, которые не факт, что понятны были бы человеку без технического образования.
Если бы боялся конкурентов — не публиковал бы информацию о технологиях :)
Я, на самом деле, конкурентов люблю и даже временами деньги с них какие-то имею с уже не особо актуальных продуктов. Ну и источник ценной информации, они позволяют не изобретать велосипедов.
Году в 2014-2015 был удивлен работой Акинатора (программа задает вопросы и отгадывает персонажа по ответам). По сути, это простейший вариант экспертной системы, которая разбирается в персонажах. И подумал, а почему бы не сделать подобную штуку для какой-то коммерческой ниши. То есть сделать «помощника» для покупок в каком-то узком сегменте. Про монетизацию особо не думал. Был план привлекать трафик засчет вирусности сервиса и заниматься лидогенерацией.
Начал копать тему, познакомился с такими понятиями как
Экспертные системы так или иначе крутятся вокруг всего этого.
Запилил пилотный онлайн сервис (умею в программирование) в B2C сфере. Действительно, самое сложное — это «наполнение информационной системы знаниями».
Помимо стандартных граблей с откладыванием фидбэка, стало понятно, что проблема масс-маркета в том, что покупателям не нужна рациональность. Была гипотеза, что люди хотят оптимального выбора в покупках. Но на практике оказывается, что это самообман.
В моей голове была картина мира, что у покупателей возникает желание купить, потом они выбирают продукт и только потом покупают. На практике такой сценарий проявления осознанности в покупках есть, но он характерен для определенного небольшого сегмента покупателей, которые, обычно, самые проблемные.
Более частый сценарий:
1 У человека возникает эмоция (увидел красивый визуальный образ, услышал от знакомого рекомендацию, увидел в работе какую-то штуку)
2 Рационализация покупки (поиск подтверждения, что нужно купить)
3. Покупка
4. Оправдание покупки (убеждение себя в правильности выбора и самого факта покупки).
Большинство сами не знают, чего хотят, зачем покупают.
Как мне кажется, работа в сторону порождения эмоций по отношению к продукту и эксплуатация cognitive biases в рекламе (контенте) дает больше выхлопа, чем предоставление онлайн помощника-эксперта в выборе.. Пипл хавает… К сожалению.
После экспериментов стало понятно, что реальные экспертные системы с их излишней сложность в B2C особо не нужны. Люди ведутся на обычные квизы с простейшей логикой, который выклянчивают телефон.
Точность экспертной системы порождает сложность, но люди не хотят вникать, тратить время, отвечать на вопросы, разбираться в нюансах.
Получается, что сервис с сухой рациональностью менее интересен, чем эмоционально заряженный контент. Конкретно в моем случае. Не абсолютизирую, что во всех нишах так.
Как я понимаю, экспертные системы — это больше для узких ниш и для внутреннего использования в крупных компаниях. Есть кейсы про нефтяные вышки, горнодобывающую промышленность, металлургические производства, медицину (clinical decision support system). Там и big data, и AI, и KMS.
ЗЫ. Знаю кейс, как люди пытались сделать ЭС по ремонту телевизоров в начале 2000-х у себя в сервисном центре. Т.е. помощник для начинающих ремонтников, которые по симптомам подсказывает куда смотреть в первую очередь и что проверять.
Более полугода ушло на сбор, систематизацию и создание системы. Проект заглох. Слишком много нюансов, брендов, схем, разрастание базы правил.
Профессиональные техники сами знают как диагностировать, что смотреть. А начинающие тонут в вопросах от информационной системы, им надоедает, в итоге они спрашивают у опытных.
После анализа ситуации владельцы компании перекинули усилия на разработку программы обучения новых техников. Курс молодого бойца, так сказать. Как дальше развивалась ситуация — не знаю.
Т.е. вопрос стоит не только в сборе информации и переводе ее в «правила», но и в удобном формате взаимодействия с системой (HCI: human-computer interaction). «Вопрос — ответ» в некоторых случаях утомляет. А обработка естественного языка тянет за собой другие сложноразрешимые проблемы.
Спасибо за подробный ответ!
Да, основной вопрос в экспертных системах — где именно их использовать, чтобы они давали результат. Внедрение тут — важнее разработки.
Соответственно, экспертные системы «наружу» мне кажутся малоперспективными. А вот внутри — самое то. И, как ты правильно заметил, не всегда есть смысл и во внутренних системах, поскольку когда нет дефицита живых экспертов, проще работать именно с ними.
Ну и цену ошибки тоже стоит учитывать: понятное дело, что в ремонте телевизоров ценность системы ограничена 5-10 минутами рядового сотрудника. Но вот если бы эта же система принимала решения по поводу открытия новых точек, тогда был бы реальный финансовый смысл её разрабатывать.
Если посмотреть на известные примеры успешных реализаций экспертных систем, везде можно увидеть либо значительную экономию, либо значительное снижение рисков.
Вдогонку к предыдущему ответу, по поводу экспертной системы по ремонту телевизоров: мне кажется, они просто выбрали не совсем подходящий тип системы для этого: вместо системы на правилах, лучше было бы выбрать cbr (case-based reasoning), тогда бы можно было бы её наполнять и использовать даже без полного набора правил. Ну и проблема с расширением элементной базы тоже сама собой бы исчезла.