Штучний інтелект та програмування BAS / 1С
За останній рік штучний інтелект та програмування набирає популярності і немає сфери, в якій його не намагалися б задіяти. У тому числі і у сфері BAS / 1С.
І знову почали порушуватися теми про те, що незабаром ІІ захопить світ, відбере у людства професії тощо.
Так, фреймворки (програмні рішення, що полегшують роботу систем) для роботи з ІІ стали доступними. Працювати з ними легко та приємно. І швидко. Але … Давайте розбиратися.
Як це часто буває, коли ІІ набрав популярності і люди розібралися, що він може, а що штучному інтелекту не під силу, що розвинене, що не розвинене, загальна одержимість стала спадати. Технології штучного інтелекту стали продуманішими і у ІТ сфері їх почали застосовувати продуманіше.
Штучний інтелект – це не робот технології, які максимально близько намагаються зімітувати дії людського мозку.
Штучний інтелект. Класифікація
Міжнародна класифікація ШІ велика (див. нижче).
Machine Learning (машинне навчання). Включає Deep Learning (глибоке навчання) і Predictive analytic (Предиктивна / передбачувана аналітика).
Machine Learning – це і є та сама нейромережа з безліччю шарів. Deep Learning – це ще більш глибоке поняття – кожен шар виконує свою окрему функцію і навіть проектуються кожен під це. Так, наприклад, один шар розпізнає зображення, інший – голос тощо.
До Machine Learning належить не тільки нейромережа, але також дерева (і ліси) рішень, градієнтний бустинг, векторна модель, логістична та лінійна регресії, метод найменших квадратів. Machine Learning може побудувати дерева рішень у BAS / 1С.
Natural Language Processing (NLP) – обробка процесів природної мови Яскравий тому приклад – усім відомі Сірі, Аліса, Гугл асистент.
Коли ви звертаєтеся до цього виду ІІ, перед першим спілкуванням він налаштовується на ту мову, яку ви йому задаєте, а при наступному спілкуванні NLP реагує на ваші команди (включає каву-машину, музику або світло, відповідає на запитання. Коли ви заводите розмову з NLP, тут підключається дія Deep Learning, нейромережа повністю імітує міркування людей і може видати неординарні та цікаві відповіді.
Speech – аудіотехнології та мова.
Vision – робота з комп’ютерним зором
Robotic Process Automation (RPA) – автоматизація дій користувача за допомогою роботизації. Цей вид ІІ використовує машинний зір та передиктивну аналітику.
Robotics – роботизація у її класичному розумінні.
Chatbots (чатботы) – вид ИИ, который использует предиктивную аналитику и NLP.
Expert systems (экспертные системы) – вид ИИ с деревьями решений.
Нейронні мережі
Отже, Машинне Навчання – це не штучний інтелект. Це дві різні області. Класична лінійна регресія, наприклад, це ІІ, а машинне навчання.
Штучний інтелект – це не нейронна мережа.
Нейронна мережа – це та область, яка аналізує ваші уподобання в інтернеті (ваші покупки, завантажену музику чи фільми, характер постів чи реклами в соц.мережах тощо) і на підставі цього пропонує вам подібний товар чи контент. Програмні бібліотеки CatBoost, XGBoost – також відносяться до нейронних мереж.
Інструменти для штучного інтелекту
На зображенні (див. нижче) ви можете побачити найбільш популярні в інтернеті фреймворки, щоб працювати з ШІ.
Фахівці в галузі досліджень штучного інтелекту виділяють Keras, TensorFlow та Scikit-learn.
Scikit-learn найвідоміший і найпростіший фреймворк для тих, хто хоче навчитися працювати з Python. Однією з класичних процесів у ньому вважається навчити перцептрон (модель сприйняття інформації). У результаті кілька рядків коду в Python і 80-90% ваших завдань вирішено.
Для тих, хто серйозніше підходить до питання і хоче працювати із зображеннями, написати програму для розпізнавання символів, краще вибрати TensorFlow. Причому сам по собі він важкий для роботи і його рекомендують об’єднувати з Keras, щоб спростити роботу, зробити її приємнішою і легшою.
Для тих, хто працює з NET Framework (дотнет) підійде Accord.NET. Хоча це далеко не нова платформа, але вона допоможе вирішити вам чимало завдань.
Комп’ютерний зір
Комп’ютерний зір (Computer Vision) – це нейронні мережі і машинне навчання. Це технологія, яка на кшталт фільтрації фотошопу, перетворює зображення на чорно-біле, згладжує його, виділяє контури і може виявити предмет по контурам.
Технологія комп’ютерного зору перетворює зображення в такий спосіб, що програміст працює із ним, як із бінарним. Людська особа – це досить стандартний об’єкт із погляду комп’ютерного зору. Тому що людське обличчя має певні частини тіла, розташовані у всіх в тому самому порядку (брови, очі, ніс, рот). І виділити його з-поміж інших зображень – для комп’ютерного зору – просто. А ось знайти друк у документі – вже не таке просте завдання та готового рішення тут для Computer Vision немає.
Комп’ютерний зір активно застосовується в RPA (автоматизація дій користувача за допомогою роботизації), особливо в оптичному розпізнаванні символів.
Бібліотекою функцій та алгоритмів комп’ютерного зору є OpenCV. Він чудово справляється із завданнями з виділення на зображеннях якихось конкретних об’єктів. Але з класифікацією тексту вже будуть проблеми.
Застосування комп’ютерного зору в BAS / 1С
Найпростіше застосування – код на .NET та Emgu CV, через який підключений OpenCV – source.MatchTemplate. Потім обертаємо COM Об’єкт і підключаємо до BAS / 1С.
Якщо ви працюєте на Linux, COMОб’єкт можна обернути в програму, яка писатиме код у файл, а ви з 1С зможете його читати. Не найзручніший варіант, але все ж таки.
Або трохи покращити ситуацію – скрипт з фреймворком обернути в exe-додаток. При запуску програми 1С спочатку виконуватиметься аналіз запущений сервіс чи ні. Якщо не запущено – він запускається. Далі щодо нього відбувається звернення. При цьому у ваш скрипт повинен бути вбудований SimpleHTTPServer, який здійснює виклики та слухає потрібний порт (наприклад, https://github.com/comol/OneCWebFramework). Тобто із BAS / 1С ви розгортаєте ще один мікросервіс, до якого звертається сервер BAS / 1С.
Этим решаются две задачи:
- розгортання відбувається швидко і просто, тому що це все в рамках додатка BAS / 1С;
- швидкість роботи висока, тому що сервіс працює за протоколом HTTP і при падінні BAS / 1С його знову піднімає.
Час займе лише перший виклик під час ініціалізації, доки не напрацюється пул з’єднань до сервісів HTTP. А далі все швидко працюватиме.
Підходить для Python, NodeJS та .NET. Для запакування Python-скриптів у exe-файли є AutoPyToExe. У NodeJS для пакування в exe є Pkg. .NET за промовчанням компілюється в exe.
Ось як це виглядає в BAS / 1С – при виконанні скрипта робот відкриває вікно провідника і кликає на картинку.
Оптичне розпізнавання символів (OCR)
Зараз з’явилося багато рішень для оптичного розпізнавання символів. Більшість із них використовують для роботи бібліотеку Tesseract OCR від Google. Для цього сканується якнайбільше тексту, щоб програма навчилася.
Міжнародна компанія з розробки рішень у галузі інтелектуальної обробки документів Abbyy додала до OCR такі навички, як знання мови, орфографії та фонетики. Їх платформа Abbyy FlexiCapture – для інтелектуальної обробки інформації зі сканів, фото, електронних листів та документів – одна з найкращих та легко інтегрується з BAS / 1С.
Програма Tesseract – безкоштовна програма для розпізнавання текстів, за допомогою якої ви можете за годину зробити свою розпізнавальну програму. Вона не розпізнає не все, наприклад, не ідентифікує всю первинку при внесенні до BAS / 1С, але головне, що значно спрощує документообіг. Зможе розпізнати паспорти в документах, реквізити тощо, а також класифікувати цю інформацію.
Також в оптичному розпізнаванні символів можна використовувати пакет програм MATLAB (входить до нього OCR Training Engine). Для цього додаєте зображення символів, де 1 зображення – це 1 символ, і після натискання кнопки у вас тренується OCR. Потім вона генерується в код .NET-бібліотечки, яку можна підключати до BAS / 1С.
Підсумуємо ще раз: комп’ютерний зір – це не нейронні мережі, а набір фільтрів, які ми можемо застосувати до зображення та отримати ще якісніше зображення.
Глибоке навчання (Deep Learning)
Глибоке навчання відрізняється від машинного тим, що в ньому кожен фільтр для комп’ютерного зору є одним шаром нейромережі.
Наприклад, один із шарів нейромережі робить малюнок чорно-білим. Цей шар має певний набір параметрів, за якими зв’язки між нейронами фільтрують чорно-біле зображення. Наступний фільтр (другий шар), наприклад, йде детектування об’єктів, наступний – фільтр узагальнення. І так ви нашаруєте фільтри, аж до розпізнавання окремих зображень (або поки не отримаєте ту деталізацію, яка вам потрібна).
Навчати кожен шар нейронної мережі необхідно свідомо. Коли ви навчаєте шар робити чорно-білі зображення, в даному випадку ви підлаштовуєтеся не під те, що зображено, а саме під те, що все зображення стало чорно-білим і такої якості, щоб наступний шар зміг розпізнати та виділяти об’єкти.
І кожен шар розробляється виходячи з того завдання, яке він виконуватиме.
Ось що вважається усвідомленими верствами в глибокому навчанні. Це можна назвати проектування мереж глибокого навчання.
NLP – робота з природною мовою.
Нагадаємо, Natural Language Processing (NLP) – обробка процесів природної мови Для роботи з NLP достатньо 2-3 бібліотеки. Можна пошукати доступні бібліотеки на Python зі стандартним word2vec, прості та зручні. На основі яких можна зробити чат-бота, заснованого на ІІ, безкоштовного та навчального вами для роботи в системі консультування.
Інструменти
- Найпоширенішийінструмент зараз із безліччю бібліотек – Python. Наприклад, із 1С до HTTP-сервісів Python можна звернутися через BaseHTTPRequestHandler або SimpleHTTPServer. Просто, зручно, швидко.
- R – складніший інструмент, задля класичних розробників.
- MATLAB – інструмент із візуальним конструктором. Особливо зручно для тих, хто не любить писати код. MATLAB відрізняється від Python відсутністю можливостей TensorFlow. Але в ньому зручніше і швидше виконувати базові функції. У MATLAB можна навчити модель регресії (regression learner) та класифікації даних (classification learner), що дозволить вирішити безліч функцій, зокрема AutoML (автоматизоване машинне навчання).
- Сервіс Machine Learning Microsoft Azure. Відмінний варіант для тих, хто хоче спростити собі роботу по максимуму і лінується робити самостійно. У ньому потрібно пройти реєстрацію. Безкоштовний до певного обсягу, потім потрібно буде оплачувати можливість працювати з ним. Простий та по закінченні роботи в ньому можна в закладці Web Service згенерувати веб-сервіс, який буде відкритий та доступний за посиланням. Потім у цю модель кидається HTTP-запит і сервіс сам видаватиме результат.
- Amazon – альтернатива Azure, де навіть більше функцій.
Аналіз даних та прогнозування
Якщо у вас є бажання зробити в BAS / 1С прогнозну модель, яка робила б навчання або рекомендувала товари до купівлі, то в програмі BAS / 1С є механізм «Аналіз даних та прогнозування».
Це мережі всередині самої платформи (а не нейронні мережі BAS / 1С), які написані на C++. І є дерево рішень. Це проста та зручна модель прогнозу, яка швидко працює та навчається.
Ви просто відкриваєте там ІТС та дивіться приклади. Запит за даними передається у модель аналізу. Модель аналізу представлена у вигляді колонок. Пишете «АналізДаних.Виконати» та отримуєте модель, яку зберігаєте у сховищі значень.
Якщо у вас проста класифікація, цього цілком достатньо.
До того ж у BAS / 1С є:
- передиктивна аналітика
- кластерний аналіз
- пошук послідовностей
- побудова ланцюжків подій
Все це в робочому стані та з інструментарієм.
Штучний інтелект в BAS / 1С
Штучний інтелект в BAS / 1С застосовується дуже активно. Хоча це не всім відомо. Тому що проблема не в тому, що немає технологій чи знань, а в тому, що не всі застосовують знання та технологію у потрібних кейсах.
- В 1С ERP ШІ може прогнозувати закупівлі
- У 1С ITIL ШІ класифікує звернення. Робить це правильно та дуже успішно. Ще й пишеться за 10-20 хвилин.
- 1С Документообіг має оптичне розпізнавання символів (OCR) і розпізнає зображення та PDF.
- 1С Fresh – в ній оптичне розпізнавання символів розпізнає текст, а також створює документи на його основі та автоматично заповнює їх значеннями.
- 1С Товари – система, здатна керувати асортиментом та рекомендувати клієнтам товар. Створено систему з використанням градієнтного бустингу.
Навчання нейромережі в BAS / 1С
Т.к. BAS / 1С є інтерпретований мову, то ній можливе навчання нейромережі, але займатися в BAS / 1С побудовою архітектури – марнування часу. Як і писати вручну перцептрони. Наприклад, 1С Товари – доопрацьований сервіс, тому що спочатку замислювався як аналізатор даних.
Так, BAS / 1С – це чудовий універсальний фреймворк, але для вирішення спеціальних завдань його потрібно інтегрувати з чимось.
Використання штучного інтелекту в BAS / 1С
- OCR (оптичне розпізнавання символів) – класика BAS / 1С – це розпізнавання первинки. Найбільш оптимальне рішення – Abbyy FlexiCapture. Просто в користування та легко синхронізується з BAS / 1С.
- Автоматичне рознесення операцій із рахунків бухгалтерського обліку, аналітика. Причому це можна зробити лише за допомогою вбудованих сервісів BAS / 1С, без сторонніх. Якщо бухгалтер поставив аналітику, на ній в BAS / 1С можна навчити статистичну модель і далі підставляти цю аналітику.
- Аналітика витрат проектів. Тут принцип впливу описаної вище аналітики. Якщо хтось із співробітників постійно виконує одну й ту саму дію, цьому можна навчити модель. І це не якась дрімуча складна дія, а цілком прості операції.
- Класифікація первинної документації. Те, що програма може розпізнати документ – чудово, але ще треба, щоб оператор його перевірив. І тоді виходить, що розпізнавання документа не полегшує роботу оператора. А от коли програма документ разом з його реквізитами класифікує, визначаючи, що документ є накладною чи рахунком-фактурою, з певним номером та підрозділом – ось це по-справжньому круто! Тут же можна автоматично рознести первинку в ту аналітику, яку потрібно.
- Чат-боти для обробки звернень клієнтів. Для чат-бота можна скористатися платформою DialogFlow.
- Роботизація дій користувача. Відмінна альтернатива ручній роботі оператора в 15 системах та відкриттю одного і того ж Excel-файлу по 100 разів. Все просто та стабільно.
- Скоринг – оцінка кредитоспроможності. Якщо вам потрібно в CRM оцінити контрагента, угоду, лід, якщо потрібно підвищити пріоритет тикету в залежності від того, чий він і не прописувати вручну «пріоритет 1, якщо тикет від директора», ви можете навчити цим діям нейронну мережу. Потім, на підставі подальших дій, вона аналізуватиме пріоритети та проставлятиме їх автоматично. Для вирішення цього завдання використовуються дерева розв’язків.
- Рекомендації товарів. Для цієї функції використовується градієнтний бустинг (CatBoost, XGBoost – швидкі у роботі).
- Прогнозування. Наприклад, прогнозування кількості товару, бюджету, руху грошей. Тільки для цього рішення у вас у 1С має успішно функціонувати бюджетування.
- Транспортна логістика – пошук найбільш оптимального маршруту. Для цієї функції використовується такий засіб штучного інтелекту як генетичні алгоритми.
- Розпізнавання автомобільних номерів (у наш час це дуже поширена опція).
Набирає популярності і дуже вдалим рішенням – роботизація процесів, тобто. заміна людини (його дій) роботами. У роботизації активно використовується штучний інтелект для автоматизації. Поки що лише на рівні комп’ютерного зору. Але як показала практика, навіть роботи здатні на творчі процеси, які могли б посоперничати з людською уявою.
Та й чому б не автоматизувати те, що можна автоматизувати? Ручна рутина краде у людей дорогоцінний ресурс – час. Час, який можна використовувати на щось важливіше – той самий маркетинг чи спілкування з клієнтом, розширення асортименту тощо.
Штучний інтелект для розробників
Як можна використовувати штучний інтелект розробникам розповімо з прикладу сервісу codota – сервісу, де код генерується автоматично (завдяки машинному навчанню структурою програмного коду). Тобто навчили штучний інтелект автопідстановці.
У 1С теж є функція автопідстановки та працює вона до кінця слова. А тепер уявіть, що ви використовуватимете в BAS / 1С код цілими блоками, включаючи бібліотеку стандартних підсистем. Вам варто лише написати запит, а програма сама формулює підстановку параметрів, обробку результатів та інше, що прописано у шаблоні. І автопідстановка відразу все пропонує для здійснення операції.
Тим більше що BAS / 1С має і єдину базу кодів, і єдині правила кодів. Що навіть полегшує введення автопідстановки.
Підведемо підсумок
Штучний інтелект – друг і помічник, але не чарівна паличка, яка може зробити за вас ВСЕ глобально.
Саме в BAS / 1С недоцільно копати до архітектури нейронних мереж, складати для 1С глибоке навчання (Deep Learning) і навчати моделі. Хоча б тому, що готових моделей вже безліч і вони прості у використанні.
Можна, звичайно, використовувати і дерева рішень в BAS / 1С, але набагато простіше написати короткий код Python і обернути їх в HTTP-сервіс.
Поширені питання
– Чи впорається штучний інтелект з функціями системного адміністратора, який обслуговуватиме Систему управління базами даних у BAS / 1С, контролюватиме процеси, виконуватиме доналаштування?
Теоретично, можливо, але дуже складно. Є простіші готові рішення. Наприклад, існує автоматичний моніторинг проблем продуктивності в BAS / 1С – вони аналізують журнал реєстрації, відстежує повідомлення про те, що система десь глючить або дає збій, і сама робить із цих ситуацій висновки.
– Роботизація і надалі розвиватиметься?
Сучасні технології такі, що швидше за все розробники ІТ систем перемикатимуться на розробку роботів. І їх ставатиме більше.
– Де найвдаліше застосовується штучний інтелект?
У використанні роботів, у статистиці, в авторазносці платежів, у рекомендації товарів (сервіс 1С Товари тому підтвердження) – в нього вивантажуються роздрібні продажі і сервіс дає рекомендації чим ще можна поповнити магазин, який товар видалити, якого придбати більше.
У бюджетуванні залежить від того, наскільки давно воно використовується, тому що в бюджетуванні є творчий елемент, тому не так просто навчити йому модель.