Image

Как создать эффективные технические барьеры для приложений ИИ

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

Делиться

Технические-ограждения-ИИ-приложения

Все любят автоматизацию, которая обеспечивает контроль и безопасность. Guardrails обеспечивает это для приложений ИИ. Но как их можно встроить в приложения?

Некоторые ограничения устанавливаются ещё до начала кодирования приложения. Во-первых, существуют правовые ограничения, установленные правительством, например, Закон ЕС об искусственном интеллекте, который определяет допустимые и запрещённые варианты использования ИИ. Кроме того, существуют ограничения, установленные самой компанией. Эти ограничения указывают, какие варианты использования ИИ компания считает приемлемыми как с точки зрения безопасности, так и этики. Эти два ограничения отфильтровывают варианты использования ИИ для внедрения.

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

Высшие технические барьеры на разных уровнях применения ИИ

Защитные барьеры создаются на входном, модельном и выходном уровнях. Каждый из них служит уникальной цели:

  • Уровень данных: Защитные барьеры на уровне данных гарантируют, что никакие конфиденциальные, проблемные или неверные данные не попадут в систему.
  • Слой модели: на этом слое полезно построить ограждения, чтобы убедиться, что модель работает так, как и ожидалось.
  • Выходной слой: Защитные барьеры выходного слоя гарантируют, что модель с высокой степенью уверенности не выдаст неверных ответов — распространенная угроза для систем искусственного интеллекта.
ea48131ae78db16433082e294002756f

1. Уровень данных

Давайте рассмотрим обязательные защитные барьеры на уровне данных:

(i) Проверка и очистка входных данных

Первое, что нужно проверить в любом приложении ИИ, — это правильность формата входных данных и отсутствие ненормативной или оскорбительной лексики. На самом деле, это довольно просто, поскольку большинство баз данных предлагают встроенные функции SQL для сопоставления с шаблонами. Например, если столбец должен быть алфавитно-цифровым, вы можете проверить соответствие значений ожидаемому формату с помощью простого шаблона регулярного выражения. Аналогичным образом, функции для проверки на наличие ненормативной лексики (ненормативной или оскорбительной лексики) доступны в облачных приложениях, таких как Microsoft Azure. Но вы всегда можете создать собственную функцию, если в вашей базе данных её нет.

Проверка данных: – Запрос ниже берет только записи из таблицы клиентов, в которых customer_email_id имеет допустимый формат SELECT * FROM customers WHERE REGEXP_LIKE(customer_email_id, '^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[AZ]{2,}$' ); ——————————————————————————————— Очистка данных: – Создание пользовательской функции profanity_check для обнаружения оскорбительной лексики CREATE OR REPLACE FUNCTION abuse_language_check(INPUT VARCHAR) RETURNS BOOLEAN LANGUAGE SQL AS $$ SELECT REGEXP_LIKE( INPUT '\b(abc|…)\b', — список оскорбительных слов, разделенных вертикальной чертой ); $$; – Использование пользовательской функции profanity_check для фильтрации комментариев с оскорбительной лексикой SELECT user_comments from customer_feedback where abuse_language_check(user_comments)=0;

(ii) Защита персональных данных и конфиденциальных данных

Ещё одним ключевым фактором при создании безопасного приложения ИИ является обеспечение того, чтобы никакие персональные данные не попадали на уровень модели. Большинство инженеров по обработке данных работают с кросс-функциональными командами, чтобы пометить все столбцы персональных данных в таблицах. Существуют также инструменты автоматизации идентификации персональных данных, которые могут выполнять профилирование данных и помечать столбцы персональных данных с помощью моделей машинного обучения. К распространенным столбцам персональных данных относятся: имя, адрес электронной почты, номер телефона, дата рождения, номер социального страхования (SSN), номер паспорта, номер водительского удостоверения и биометрические данные. Другими примерами косвенных персональных данных являются медицинская или финансовая информация.

Распространенный способ предотвратить попадание этих данных в систему — применение механизма деидентификации. Это может быть как простое полное удаление данных, так и применение сложных методов маскировки или псевдонимизации с использованием хеширования, которые модель не может интерпретировать.

– Хеширование персональных данных клиентов для обеспечения конфиденциальности данных SELECT SHA2(customer_name, 256) AS encrypted_customer_name, SHA2(customer_email, 256) AS encrypted_customer_email, … FROM customer_data

(iii) Обнаружение и смягчение предвзятости

Перед тем, как данные попадут на уровень модели, необходимо проверить их точность и отсутствие систематических ошибок. Вот некоторые распространённые типы смещений:

  • Ошибка отбора : входные данные неполны и не отражают точно всю целевую аудиторию.
  • Ошибка выжившего : данных для счастливого пути больше, что затрудняет работу модели в неудачных сценариях.
  • Расовая или ассоциативная предвзятость : данные отдают предпочтение определенному полу или расе из-за прошлых моделей поведения или предрассудков.
  • Ошибка измерения или маркировки : данные неверны из-за ошибки маркировки или предвзятости лица, которое их записало.
  • Смещение редких событий : во входных данных отсутствуют все пограничные случаи, что дает неполную картину.
  • Временное смещение : входные данные устарели и неточно отражают текущий мир.

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

– Определение отсутствия каких-либо данных по возрастной группе или группе ИМТ select age_group, count(*) from users_data group by age_group; select BMI, count(*) from users_data group by BMI;

(iv) Своевременная доступность данных

Ещё один аспект, который необходимо проверить, — это актуальность данных. Для корректной работы моделей необходимы правильные и актуальные данные. Некоторым моделям могут потребоваться данные в режиме реального времени, некоторым — в режиме, близком к реальному, а для некоторых достаточно пакетной обработки. Какими бы ни были ваши требования, необходима система для отслеживания доступности актуальных данных.

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

–Создание оповещения, если сегодняшние данные недоступны SELECT CASE WHEN TO_DATE(last_updated_timestamp) != TO_DATE(CURRENT_TIMESTAMP()) THEN 'FRESH' ELSE 'STALE' END AS table_freshness_status FROM product_data;

(v) Целостность данных

Поддержание целостности также критически важно для точности модели. Целостность данных подразумевает точность, полноту и надёжность данных. Любые устаревшие, неактуальные и неверные данные в системе приведут к сбоям в работе. Например, если вы создаёте чат-бот для взаимодействия с клиентами, он должен иметь доступ только к последним файлам с политиками компании. Доступ к некорректным документам может привести к галлюцинациям, когда модель объединяет термины из нескольких файлов и даёт клиенту совершенно неверный ответ. И вы всё равно будете нести за это юридическую ответственность. Например, Air Canada пришлось возместить пассажирам стоимость авиабилетов, когда её чат-бот ошибочно пообещал вернуть деньги.

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

2. Модельный слой

После уровня данных в уровень модели могут быть встроены следующие контрольные точки:

(i) Разрешения пользователя на основе роли

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

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

(ii) Аудит предвзятости

Обработка смещений остаётся непрерывным процессом. Они могут проявиться на более поздних этапах работы системы, даже если вы выполнили все необходимые проверки на входном уровне. Фактически, некоторые смещения, в частности, смещение подтверждения, как правило, возникают на уровне модели. Это смещение возникает, когда модель полностью переобучается данным, не оставляя места для нюансов. В случае переобучения модель требует небольшой калибровки. Сплайн-калибровка — популярный метод калибровки моделей. Он вносит небольшие корректировки в данные, чтобы обеспечить связь всех точек.

import numpy as np import scipy.interpolate as interpolate import matplotlib.pyplot as plt from sklearn.metrics import brier_score_loss # Высокоуровневые шаги: #Определение входных (x) и выходных (y) данных для подгонки сплайном #Установка параметров B-сплайна: степень и количество узлов #Использование функции splrep для вычисления представления B-сплайна #Оценка сплайна в диапазоне x для создания гладкой кривой. #Построение графика исходных данных и сплайновой кривой для визуального сравнения. #Расчет показателя Бриера для оценки точности прогноза. #Использование eval_spline_calibration для оценки сплайна при новых значениях x. #В качестве последнего шага нам нужно проанализировать график: #Проверка качества подгонки (хорошее соответствие, переобучение, недообучение), проверка согласованности с ожидаемыми тенденциями и интерпретация показателя Бриера для производительности модели. ######## Пример кода для шагов, описанных выше ######## # Пример данных: скорректируйте с вашими фактическими точками данных x_data = np.array([…]) # Входные значения x, замените '…' фактическими данными y_data = np.array([…]) # Соответствующие выходные значения y, замените '…' фактическими данными # Подгонка B-сплайна к данным k = 3 # Степень сплайна, обычно кубический сплайн (обычно используется кубический, поэтому k=3) num_knots = 10 # Количество узлов для интерполяции сплайна, скорректируйте на основе сложности ваших данных knots = np.linspace(x_data.min(), x_data.max(), num_knots) # Вектор узлов, равномерно распределенный по диапазону данных # Вычисление сплайнового представления # Функция 'splrep' вычисляет B-сплайновое представление одномерной кривой tck = interpolate.splrep(x_data, y_data, k=k, t=knots[1:-1]) # Вычислить сплайн в нужных точках x_spline = np.linspace(x_data.min(), x_data.max(), 100) # Сгенерировать значения x для гладкой сплайновой кривой y_spline = interpolate.splev(x_spline, tck) # Вычислить сплайн в точках x_spline # Построить график результатов plt.figure(figsize=(8, 4)) plt.plot(x_data, y_data, 'o', label='Data Points') # Построить исходные точки данных plt.plot(x_spline, y_spline, '-', label='B-Spline Calibration') # Построить сплайновую кривую plt.xlabel('x') plt.ylabel('y') plt.title('Spline Calibration') plt.legend() plt.show() # Вычислить оценку Бриера для сравнения # Оценка Бриера измеряет точность вероятностных прогнозов y_pred = interpolate.splev(x_data, tck) # Оценить сплайн по исходным точкам данных brier_score = brier_score_loss(y_data, y_pred) # Вычислить оценку Бриера между исходными и предсказанными данными print(«Оценка Бриера:», brier_score) # Заполнитель для функции калибровки # Эта функция позволяет оценить сплайн при произвольных значениях x def eval_spline_calibration(x_val): return interpolate.splev(x_val, tck) # Возвращает оцененный сплайн для входных данных x_val

(iii) Магистр права в качестве судьи

LLM (Large Language Model) в качестве судьи — интересный подход к валидации моделей, при котором один LLM используется для оценки результатов другого LLM. Это заменяет ручное вмешательство и поддерживает масштабную валидацию ответов.

Чтобы использовать LLM в качестве судьи, необходимо создать подсказку, которая будет оценивать результат. Результат подсказки должен быть представлен измеряемым критерием, например, баллом или рейтингом.

Пример запроса для справки: присвойте оценку полезности ответа на основе политики компании, где 1 — высшая оценка, а 5 — низшая.

Этот оперативный вывод может использоваться для запуска системы мониторинга в случае непредвиденных результатов.

Совет : Главное преимущество последних технологических достижений заключается в том, что вам даже не нужно создавать LLM с нуля. Существуют готовые решения, например, Meta Lama, которые можно скачать и запустить локально.

(iv) Непрерывная тонкая настройка

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

Распространённым методом тонкой настройки является низкоранговая адаптация (LoRA). В этом методе создаётся отдельный обучаемый слой с логикой оптимизации. Вы можете повысить точность выходных данных, не изменяя базовую модель. Например, вы создаёте рекомендательную систему для стриминговой платформы, и текущие рекомендации не приводят к кликам. В слое LoRA вы создаёте отдельную логику, группируя кластеры зрителей со схожими привычками просмотра и используя данные кластеров для построения рекомендаций. Этот слой можно использовать для построения рекомендаций до тех пор, пока он не поможет достичь желаемой точности.

3. Выходной слой

Вот некоторые последние проверки безопасности, выполняемые на выходном уровне:

(i) Фильтрация контента по языку, ненормативной лексике, блокировка ключевых слов

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

(ii) Проверка ответа

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

– Простая проверка на основе правил для отметки недопустимого ответа select CASE WHEN THEN 'INVALID' WHEN THEN 'INVALID' ELSE 'VALID' END as OUTPUT_STATUS from output_table;

(iii) Порог доверия и триггеры человеческого вмешательства

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

import numpy as np import scipy.interpolate as interpolate # Одним из вариантов получения оценки уверенности является использование B-сплайна или его производных для входных данных. # В scipy есть функция interpolate.splev, которая принимает два основных входных параметра: # 1. x: значения x, при которых нужно оценить сплайн. # 2. tck: кортеж (t, c, k), представляющий узлы, коэффициенты и степень сплайна. Это можно сгенерировать с помощью make_splrep (или более старой функции splrep) или создать вручную # Сгенерировать оценки уверенности и удалить значения за пределами 0 и 1, если они есть predicted_probs = np.clip(interpolate.splev(input_data, tck), 0, 1) # Сжать оценку с входными данными trust_results = list(zip(input_data, predicted_probs)) # Определить пороговое значение и определить все входные данные, которые не соответствуют пороговому значению, и использовать их для ручной проверки threshold = 0.5 filtered_results = [(i, score) for i, score in trust_results if score <= threshold] # Записи, которые можно направить для ручной/человеческой проверки for i, score in filtered_results: print(f"x: {i}, Confidence Score: {score}")

(iv) Постоянный мониторинг и оповещение

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

(v) Соблюдение нормативных требований

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

Баланс ИИ с человеческим опытом

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

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

Источник: towardsdatascience.com

Каталог бесплатных опенсорс-решений, которые можно развернуть локально и забыть о подписках

галерея

Компания Anthropic получила от Amazon 5 миллиардов долларов и в обмен пообещала инвестировать 100 миллиардов долларов в облачные сервисы.
dummy-img
Загрузка: обход банковских систем кибермошенниками и проблемы с удалением углерода.
Загрузка: обход банковских систем кибермошенниками и проблемы с удалением углерода.
dummy-img
dummy-img
Взаимодействие человека и машины погружается под воду.
Взаимодействие человека и машины погружается под воду.
Дифференциально приватное машинное обучение в масштабе с использованием JAX-Privacy
Image Not Found
Компания Anthropic получила от Amazon 5 миллиардов долларов и в обмен пообещала инвестировать 100 миллиардов долларов в облачные сервисы.

Компания Anthropic получила от Amazon 5 миллиардов долларов и в обмен пообещала инвестировать 100 миллиардов долларов в облачные сервисы.

Вкратце Опубликовано: Изображение предоставлено: Thos Robinson/Getty Images для The New York Times (откроется в новом окне) Джули Борт Компания Anthropic получила от Amazon 5 миллиардов долларов и в обмен пообещала инвестировать 100 миллиардов долларов в облачные сервисы.…

Апр 21, 2026
dummy-img

Как почистить виниловые пластинки (2026): пылесос, ультразвук, чистящий раствор, щетка.

Эти щелчки и треск недопустимы. Приведите свою музыку в порядок с помощью этого удобного руководства. Источник: www.wired.com

Апр 21, 2026
Загрузка: обход банковских систем кибермошенниками и проблемы с удалением углерода.

Загрузка: обход банковских систем кибермошенниками и проблемы с удалением углерода.

Это сегодняшний выпуск The Download, нашей ежедневной новостной рассылки, которая предоставляет вам ежедневную порцию событий в мире технологий. Кибермошенники обходят системы безопасности банков с помощью незаконных инструментов, продаваемых в Telegram. В центре по отмыванию денег в Камбодже…

Апр 21, 2026
Загрузка: обход банковских систем кибермошенниками и проблемы с удалением углерода.

Загрузка: обход банковских систем кибермошенниками и проблемы с удалением углерода.

Это сегодняшний выпуск The Download, нашей ежедневной новостной рассылки, которая предоставляет вам ежедневную порцию событий в мире технологий. Кибермошенники обходят системы безопасности банков с помощью незаконных инструментов, продаваемых в Telegram. В центре по отмыванию денег в Камбодже…

Апр 21, 2026

Впишите свой почтовый адрес и мы будем присылать вам на почту самые свежие новости в числе самых первых