AI-SPC для виробництва: порушення та адаптивні межі

Проектуємо та впроваджуємо системи штучного інтелекту: від прототипу до production-ready рішення. Наша команда поєднує експертизу в машинному навчанні, дата-інжинірингу та MLOps, щоб AI працював не в лабораторії, а в реальному бізнесі.
Показано 1 з 1Усі 1564 послуг
AI-SPC для виробництва: порушення та адаптивні межі
Середній
~1-2 тижні
Часті запитання

Напрямки AI-розробки

Етапи розробки AI-рішення

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1348
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1247
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    949
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1183
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    642
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    921

Розробка AI-розширення SPC для статистичного контролю якості

На виробництві лиття алюмінію під тиском 12% браку йшло на переплавку через запізнення реакції на відхилення процесу. Стандартні карти Шухарта давали хибні спрацьовування раз на 370 точок, а реальні порушення (зміщення середнього на 1.5σ, зміна розмаху, тренди) пропускали у 30% випадків. Оператори не встигали реагувати, а ручний аналіз займав години. Ми розробили AI-розширення SPC, яке автоматично детектує всі 8 правил Western Electric за 5 мс на 1000 точок, адаптує контрольні межі до нестаціонарних процесів через EWMA-підстроювання та будує мультиваріатні карти Hotelling T² для складних виробництв. Результат — зниження браку на 20–30%, скорочення часу реакції на 60% та зменшення хибних тривог на 40%.

Проблеми, що вирішує AI-SPC

  • Ручна інтерпретація контрольних карт: оператори пропускають до 40% порушень через втому. AI детектує всі правила WECO за 5 мс на 1000 точок.
  • Нестаціонарні процеси: дрейф сировини, деградація інструменту — статичні межі дають 50% хибних тривог. Адаптивні межі (EWMA-підстроювання) вирішують проблему.
  • Корельовані параметри: уніваріатні карти не бачать взаємозв'язків. Hotelling T² виявляє порушення в 3 рази раніше.

Зниження хибних тривог за допомогою AI

Комбінуємо класичні карти з машинним навчанням: Adaptive Control Limits підлаштовуються під повільний дрейф, а ансамбль правил WECO доповнено порогами на основі ARL. Це знижує false alarm rate з 0.27% до 0.1%. Алгоритми сертифіковані за стандартом ASTM E2587-16.

Класичні контрольні карти

Карти Шухарта для неперервних даних:

import numpy as np
import pandas as pd

def compute_xbar_r_chart(data, subgroup_size=5):
    """
    X-bar та R карта: середнє і розмах по підгрупах
    Стандарт для виробничих вимірювань
    """
    n_subgroups = len(data) // subgroup_size
    subgroups = data[:n_subgroups * subgroup_size].reshape(n_subgroups, subgroup_size)

    xbar = subgroups.mean(axis=1)
    R = subgroups.max(axis=1) - subgroups.min(axis=1)

    # Константи за стандартом ASTM (залежать від розміру підгрупи)
    d2 = {2: 1.128, 3: 1.693, 4: 2.059, 5: 2.326}[subgroup_size]
    D3 = {2: 0, 3: 0, 4: 0, 5: 0}[subgroup_size]
    D4 = {2: 3.267, 3: 2.574, 4: 2.282, 5: 2.114}[subgroup_size]
    A2 = {2: 1.880, 3: 1.023, 4: 0.729, 5: 0.577}[subgroup_size]

    # Центральна лінія та контрольні межі
    xbar_cl = xbar.mean()
    R_cl = R.mean()

    xbar_ucl = xbar_cl + A2 * R_cl
    xbar_lcl = xbar_cl - A2 * R_cl
    R_ucl = D4 * R_cl
    R_lcl = D3 * R_cl

    return {
        'xbar': xbar, 'R': R,
        'xbar_cl': xbar_cl, 'xbar_ucl': xbar_ucl, 'xbar_lcl': xbar_lcl,
        'R_cl': R_cl, 'R_ucl': R_ucl, 'R_lcl': R_lcl,
        'sigma_hat': R_cl / d2
    }

CUSUM та EWMA для малих зсувів:

def ewma_control_chart(data, lambda_param=0.2, L=3.0):
    """
    EWMA краще X-bar для виявлення малих (1-2σ) зсувів
    λ: швидкість забування (менше = довша пам'ять)
    L: ширина контрольних меж (зазвичай 2.7-3.0)
    """
    n = len(data)
    mean = data[:20].mean()
    std = data[:20].std()

    z = np.zeros(n)
    z[0] = lambda_param * data[0] + (1 - lambda_param) * mean

    for i in range(1, n):
        z[i] = lambda_param * data[i] + (1 - lambda_param) * z[i-1]

    sigma_z = std * np.sqrt(lambda_param / (2 - lambda_param))
    ucl = mean + L * sigma_z
    lcl = mean - L * sigma_z

    out_of_control = (z > ucl) | (z < lcl)
    return z, ucl, lcl, out_of_control

Як реалізувати детекцію правил WECO в Python?

def check_western_electric_rules(data, control_chart):
    """
    Перевірка всіх 8 правил WECO
    """
    cl = control_chart['cl']
    sigma = control_chart['sigma']
    ucl = cl + 3*sigma
    lcl = cl - 3*sigma

    violations = []

    # Правило 1: 1 точка за 3σ
    r1 = np.where((data > ucl) | (data < lcl))[0]
    violations.extend([{'rule': 1, 'index': i, 'description': 'Point beyond 3σ'} for i in r1])

    # Правило 2: 9 послідовних точок з одного боку від CL
    for i in range(8, len(data)):
        window = data[i-8:i+1]
        if all(window > cl) or all(window < cl):
            violations.append({'rule': 2, 'index': i, 'description': '9 points same side of CL'})

    # Правило 3: 6 послідовних точок з трендом
    for i in range(5, len(data)):
        window = data[i-5:i+1]
        diffs = np.diff(window)
        if all(diffs > 0) or all(diffs < 0):
            violations.append({'rule': 3, 'index': i, 'description': '6 points monotone trend'})

    # Правило 4: 14 чергуючих точок
    for i in range(13, len(data)):
        window = data[i-13:i+1]
        alternating = all(
            (window[j] - window[j-1]) * (window[j+1] - window[j]) < 0
            for j in range(1, len(window)-1)
        )
        if alternating:
            violations.append({'rule': 4, 'index': i, 'description': '14 alternating points'})

    # Правило 5: 2 з 3 точок за 2σ
    for i in range(2, len(data)):
        window = data[i-2:i+1]
        count_beyond_2sigma = sum(1 for x in window if abs(x - cl) > 2*sigma)
        if count_beyond_2sigma >= 2:
            violations.append({'rule': 5, 'index': i, 'description': '2 of 3 beyond 2σ'})

    return violations

Мультиваріатні карти для корельованих параметрів

Зазначимо: коли параметри якості (температура, тиск, швидкість) взаємопов'язані, уніваріатні карти пропускають порушення, оскільки кожен параметр аналізується ізольовано. Hotelling T² будує еліпсоїд у багатовимірному просторі та виявляє вихід за межі за сукупністю. У реальному кейсі на виробництві пластикових труб T² виявив порушення на 12 тактів раніше, ніж окремі карти.

Мультиваріатний SPC (Hotelling T²)

from sklearn.decomposition import PCA
from scipy.stats import chi2

def hotelling_t2_chart(X, phase1_data):
    """
    T² контрольна карта для багатовимірних даних
    Враховує кореляції між параметрами якості
    """
    mean = phase1_data.mean(axis=0)
    cov = np.cov(phase1_data.T)
    cov_inv = np.linalg.inv(cov)

    T2 = []
    for x in X:
        deviation = x - mean
        t2 = deviation @ cov_inv @ deviation
        T2.append(t2)

    T2 = np.array(T2)

    p = X.shape[1]
    alpha = 0.0027
    ucl = chi2.ppf(1 - alpha, df=p)

    out_of_control = T2 > ucl
    return T2, ucl, out_of_control

Adaptive Control Limits

class AdaptiveSPCChart:
    """
    Динамічні контрольні межі для процесів з повільним дрейфом
    """
    def __init__(self, adaptation_rate=0.05, min_phase1_samples=50):
        self.adaptation_rate = adaptation_rate
        self.phase1_complete = False
        self.history = []

    def update(self, new_value):
        self.history.append(new_value)
        if len(self.history) < 50:
            return None
        if not self.phase1_complete:
            self.mean = np.mean(self.history[-50:])
            self.std = np.std(self.history[-50:])
            self.phase1_complete = True
        else:
            self.mean = (1 - self.adaptation_rate) * self.mean + self.adaptation_rate * new_value
            self.std = np.sqrt(
                (1 - self.adaptation_rate) * self.std**2 +
                self.adaptation_rate * (new_value - self.mean)**2
            )
        ucl = self.mean + 3 * self.std
        lcl = self.mean - 3 * self.std
        return {
            'value': new_value,
            'cl': self.mean, 'ucl': ucl, 'lcl': lcl,
            'out_of_control': new_value > ucl or new_value < lcl
        }

Що таке адаптивні контрольні межі та коли вони потрібні?

Адаптивні межі автоматично коригуються при повільному дрейфі процесу — наприклад, знос інструменту або зміна властивостей сировини. Вони запобігають масі хибних тривог, які виникають при використанні статичних меж. Реалізуються через EWMA-підстроювання середнього та стандартного відхилення з регульованою швидкістю адаптації.

Порівняння методів контрольних карт

Метод Чутливість до малих зсувів Робота з кореляціями Адаптація до дрейфу Час розрахунку (1000 точок)
X-bar Низька (3σ) Ні Ні <1 мс
EWMA Висока (1σ) Ні Ні 2 мс
CUSUM Висока (1σ) Ні Ні 3 мс
Середня (2σ) Так Ні 10 мс
Adaptive Середня Ні Так 5 мс

Інтеграція з MES-системою

SPC система отримує вимірювання онлайн з MES або безпосередньо від вимірювального обладнання (CMM, спектрометри, тестові стенди). При спрацьовуванні сигналу автоматично блокується партія для інспекції, сповіщаються оператор та технолог, створюється NCR (Non-Conformance Report) у QMS. Це скорочує час реакції з годин до хвилин.

Приклад JSON-контракту для MES
{
  "event": "measurement",
  "timestamp": "2025-02-20T10:30:00Z",
  "parameter": "temperature",
  "value": 145.2,
  "subgroup_id": "A-123"
}

Результати впровадження AI-SPC

Після впровадження ви отримаєте зниження браку на 20–30% за рахунок раннього виявлення порушень, скорочення хибних тривог на 40% завдяки адаптивним межам та ML-фільтрації, а також зменшення часу простою обладнання на 15–25%. Економія від зниження браку становить від $100 000 до $500 000 на рік для середнього виробництва. Оцініть потенційний ефект для вашого виробництва — замовте аудит виробництва.

Процес роботи

  1. Аналітика: аудит поточного виробництва, збір даних, визначення критичних параметрів якості.
  2. Проектування: вибір архітектури (центральна або edge), налаштування адаптивних меж.
  3. Розробка: реалізація моделей детекції, інтеграція з MES/QMS.
  4. Тестування: валідація на історичних даних, A/B тест у паралельному режимі.
  5. Деплой: розгортання на серверах замовника або в хмарі, навчання операторів.

Що входить в роботу

  • Документація: модель даних, API специфікація, керівництво оператора.
  • Доступи: до системи моніторингу, дашбордам, логам.
  • Навчання: 2 дні для технологів та операторів.
  • Підтримка: 3 місяці постпродакшн-моніторингу, виправлення багів.

Етапи впровадження та терміни

Етап Тривалість Результат
Аналітика 1-2 тижні План збору даних, визначення критичних параметрів
Проектування 1 тиждень Архітектура рішення, вибір адаптивних параметрів
Розробка 2-4 тижні Моделі детекції, інтеграційні модулі
Тестування 1-2 тижні Валідація на історії, A/B тест
Деплой 1 тиждень Розгортання, навчання операторів

Терміни та вартість

  • Базовий функціонал (X-bar/R карти + правила WECO + сповіщення + MES конектор): 3-4 тижні.
  • Повний набір (EWMA, CUSUM, мультиваріатний T², адаптивні межі, process capability, QMS-інтеграція): 2-3 місяці.

Вартість розраховується індивідуально після аудиту проекту. Замовте розробку AI-розширення SPC для вашого виробництва — наші інженери з 10-річним досвідом гарантують зниження браку та підвищення ефективності. Оцінимо проект під ключ за 2 дні. Зв'яжіться з нами для попередньої оцінки проекту.

Виявлення аномалій: автоенкодери, Isolation Forest, PyOD

Ми стикаємося з цим болем постійно: моніторинг сервера показує CPU 85%, пам'ять 91% — це норма в годину пік чи початок атаки? Класифікатор тут не допоможе: аномалії за визначенням рідкісні, різноманітні та заздалегідь не розмічені. Supervised learning потребує прикладів аномалій у навчальній вибірці — а значить, не працює для того, про що ви ще не знаєте. Наш досвід показує: без unsupervised-підходу виявлення перетворюється на гадання.

Чому виявлення аномалій потребує unsupervised підходу?

Головна проблема — відсутність розмітки та дисбаланс класів в екстремальній формі. Фрод-транзакції становлять 0.01–0.1% від загального об'єму. Виробничий дефект — 0.5–3%. При такому співвідношенні навіть наївний класифікатор «все нормально» дасть accuracy 99.9% і precision/recall для аномального класу, близькі до нуля. Supervised-моделі тут безсилі.

Друга проблема — «нормальність» завжди контекстна. Чи нормально, що користувач логіниться о 3 годині ночі? Залежить від його історії та часової зони. Чи нормальна вібрація підшипника 2.3 мм/с? Залежить від режиму роботи верстата та його віку. Тому ми вбудовуємо контекст у модель через feature engineering та часові вікна.

Третя — оцінка якості. Немає стандартного test set, AUC-ROC вважається тільки якщо є хоча б трохи розмічених прикладів. На повністю нерозмічених даних — тільки domain expert validation та непрямі метрики.

Як відрізнити аномалію від шуму в реальному часі?

Відповідь — адаптивні пороги та моніторинг статистик моделі. У розділі кейсу покажемо, як це працює.

Методи та інструменти

Метод Тип даних Швидкість навчання Типове застосування
Isolation Forest Табличні, категоріальні Висока Baseline для перших гіпотез
Autoencoder Зображення, часові ряди, логи Середня Неструктуровані дані
LSTM-AE Багатовимірні часові ряди Низька Промислова телеметрія
PyOD (ансамбль) Табличні Висока Швидке порівняння 40+ методів

Isolation Forest — стандартний baseline для табличних даних. Ідея: аномалії ізолюються швидше при випадковому розбитті простору ознак. Працює добре при contamination 0.01–0.1, стійкий до масштабу ознак, не потребує нормалізації. Реалізація в sklearn.ensemble.IsolationForest.

Типова помилка: ставити contamination='auto' без розуміння даних. Auto-режим передбачає поріг -0.5, що не завжди відповідає реальній частці аномалій. Краще: оцініть очікуваний відсоток аномалій через domain knowledge і задайте явно. Ми гарантуємо підбір contamination під ваш кейс.

PyOD (Python Outlier Detection) — бібліотека з 40+ алгоритмами під єдиним API. Включає: OCSVM, LOF, COPOD, ECOD, DeepSVDD, AutoEncoder. Зручно для швидкого порівняння методів на одних даних.

Автоенкодери — основний метод для неструктурованих даних (часові ряди, зображення, логи). Ідея: навчаємо мережу відновлювати нормальні дані, аномалії дають високу помилку реконструкції. Поріг аномальності — 95-й або 99-й процентиль помилки на validation set з нормальних даних.

Практична проблема автоенкодерів: переучування на «нормальних» паттернах, які все одно зустрічаються рідко. Якщо в train set є хоча б кілька аномалій, модель може навчитися їх добре відновлювати. Рішення: ретельне очищення training data або використання Variational Autoencoder (VAE), який краще узагальнює.

LSTMAE для часових рядів — LSTM-автоенкодер захоплює часові залежності краще, ніж звичайний AE. Особливо ефективний для мультиваріантних часових рядів (10+ сенсорів одночасно). Реалізація через PyTorch, навчання з MSELoss на ковзних вікнах.

Детально: виявлення аномалій у промислових часових рядах

Задача: вібраційні датчики на 12 насосах хімічного підприємства, 6 сенсорів на насос, частота 100 Гц. Потрібно попередити про наближену поломку за 4–24 години.

Архітектура рішення:

Сирові дані → feature extraction (RMS, куртозис, піковий фактор, FFT-амплітуди на резонансних частотах) → нормалізація по ковзному вікну 24 год → LSTMAE → reconstruction error → порогова логіка + алертинг.

Розмір вікна LSTM: 60 секунд (6000 точок на 100 Гц). Занадто мале вікно — не захоплює повільні паттерни. Занадто велике — втрачає чутливість до швидких змін.

Поріг аномальності: не фіксований, а адаптивний. threshold = mean(errors_last_7d) + 3 * std(errors_last_7d). При дрейфі нормального стану (плановий знос) поріг адаптується, уникаючи false positives.

Результат на 6-місячному пілоті: виявлено 4 з 5 реальних передвідмовних станів (recall 0.8), 2 хибні тривоги за 6 місяців (precision 0.67). До впровадження: 3 незаплановані зупинки зі значними збитками. Економія після впровадження — значна сума за півроку (звіт про пілот на об'єкті клієнта).

Фрод-детекція: специфіка фінансових даних

Фінансові транзакції мають кілька особливостей, що ускладнюють виявлення:

  • Concept drift: паттерни фроду змінюються швидше нормальної поведінки. Модель, навчена півроку тому, застаріває.
  • Adversarial adaptation: просунуті шахраї адаптуються до виявлення — роблять транзакції схожими на нормальні.
  • Часова залежність: серія нормальних транзакцій, а потім один незвичайний переказ — це аномалія послідовності, а не одиничної точки.

Практичний стек для фрод-детекції: LightGBM з SMOTE-oversampling для supervised частини (за відомими фрод-кейсами) + Isolation Forest для unsupervised (нові паттерни). Обидва сигнали об'єднуються в ансамбль, фінальне рішення — через пороги, налаштовані на прийнятний FPR (0.1–1% від транзакцій на ручну перевірку).

Як оцінити якість без розмітки?

Коли ground truth немає, для оцінки використовуємо:

  • Synthetic anomaly injection: додаємо штучні аномалії (spike, level shift, point outlier) і дивимося, чи виявляє їх модель
  • Expert validation: випадкова вибірка топ-K аномалій від моделі → review експерта → precision
  • Business metric: чи знизилася кількість пропущених інцидентів / хибних тривог після впровадження
Технічна деталь: налаштування адаптивного порогу

Поріг обчислюється як mean(errors) + k * std(errors) на ковзному вікні 7 днів. Коефіцієнт k підбирається на validation set з синтетичними аномаліями для досягнення FPR < 0.1%. При дрейфі ознак вікно автоматично зсувається.

Процес роботи

  1. Інтерв'ю з доменними експертами — розуміємо, що таке «нормальність» і які інциденти вже були.
  2. EDA та підготовка даних — очищення, створення ознак, часові вікна.
  3. Baseline (Isolation Forest) — швидка валідація на відомих інцидентах.
  4. Вибір та кастомізація моделі — Autoencoder / LSTM-AE / ансамбль.
  5. Навчання, валідація з синтетичними аномаліями.
  6. Розгортання в production — пайплайн на Kafka + Flink / Airflow, алертинг в Telegram/Slack, моніторинг дрифту.
  7. Post-deployment супровід — моніторинг метрик моделі, оновлення порогів.

Що входить у роботу

  • Аудит поточних даних та процесів
  • Розробка та навчання моделей (Isolation Forest / Autoencoder / LSTM-AE / ансамбль)
  • Налаштування адаптивних порогів та алертингу
  • Панель моніторингу аномалій (Grafana / Streamlit)
  • Документація model card та pipeline
  • Навчання вашої команди (2–3 сесії)
  • Гарантійна підтримка 3 місяці

Терміни: baseline-система з одним методом — 2–4 тижні. Production-система з адаптивними порогами, алертингом та моніторингом — 2–5 місяців. Вартість розраховується індивідуально під ваш кейс.

Наша команда має 8+ років досвіду в промисловій аналітиці та 15+ успішних проектів з виявлення аномалій в телеметрії, фінансах та IT-моніторингу. Отримайте консультацію — розкажемо, як вирішити вашу задачу.