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

А вот как разработчики могут его интегрировать:

1. Выберите модель искусственного интеллекта

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

2. Реализовать модель в Angular

Реализовать модель ИИ в сервисе — хорошая идея. Таким образом, он может получить доступ к данным, хранящимся в базе данных или localStorage, для большей точности благодаря более длинной истории данных. Хорошо известная библиотека, которая поставляется с kmeans, — это tensorflow, разработанная Google, которая также существует для javascript: https://www.tensorflow.org/js. Вы также можете легко разработать kmeans самостоятельно. Этот неполный класс Typescript может использоваться в качестве ссылки для самостоятельной интеграции в службу Angular:

2.a) Модель поезда

Каждый раз, когда ваши входные значения отправляются, обучайте вашу модель (путем вызова функции обучения, представленной выше). Убедитесь, что вы повторяете процедуру достаточно часто (в коде: Ожидание/Максимизация), чтобы найти хорошее решение для вашей модели. Алгоритм ожидания-максимизации — интересная теоретическая концепция, лежащая в основе kmeans, которую стоит подробно изучить: http://bjlkeng.github.io/posts/the-expectation-maximization-algorithm/. На этапе ожидания мы назначаем каждую точку данных (набор входных данных формы) новому ближайшему среднему значению кластера. На этапе максимизации мы перемещаем кластеры так, чтобы они лежали в середине всех новых назначенных точек данных:

2.b) Прогнозировать значения

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

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

3. Интеграция угловых форм

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

Теперь в nearestIndex вы найдете значения, которые хотите предложить своей форме. Если вы используете ngModel, вы можете использовать двустороннюю привязку данных для установки значений:

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