Этот репозиторий тонко настраивает состояние системы обнаружения PII ART и повышает производительность с помощью синтетической генерации данных PII.
Введение • Основные моменты • Синтетические данные PII • Системы обнаружения сущностей PII • Проблемы •
Личная идентифицируемая информация (PII) является конфиденциальными данными, используемыми для определения, определения или контакта с человеком. Системы обнаружения сущностей PII могут идентифицировать, классифицировать и отредактировать конфиденциальную информацию в неструктурированном тексте. Улучшение систем обнаружения PII помогает поддерживать конфиденциальность и безопасность физических лиц, соблюдать юридические и нормативные требования, а также предотвращают кражу личных данных, мошенничество или другие виды вреда. На рисунке 1 приведен пример сущностей PII, использующих внутри, снаружи, начальный (IOB) формат.

Рисунок 1: Пример данных PII в формате IOB [источник].
Работа в этом репозитории была получена во время конкуренции Kaggle The Learning Agency Lab - PII обнаружение данных. Использование методов в этом репозитории будет предоставлять решения в топ -1% для конкуренции.
PII PlaceHolders вместо того, чтобы напрямую вставлять данные PII в подсказку.class_weights в тренажере для обнимающего лица и с фокальной потерей или потерей поперечной энтропии. Формат IOB, также обычно называемый био -форматом, является распространенным форматом тега для тегов токенов в задаче поставки, такой как приложения именованные предприятия (NER). Создание меченных наборов данных BIO может быть временем и трудоемким для наборов данных, специфичных для домена. Альтернативный подход заключается в том, чтобы синтетически генерировать наборы данных PII, которые внимательно представляют ваше реальное приложение. Обратитесь к каталогу gen-data для кода, чтобы создать данные PII, специфичные для домена. Приведенные ниже файлы будут выполняться последовательно, потому что каждый из них представляет собой различную задачу в синтетическом создании данных PII.
Синтетические данные PII были созданы с использованием функций Faker и пользовательских функций для создания информации PII. Эти данные были помещены в неструктурированный текст LLM, который был создан на следующем шаге.
Генеративные LLMS (например, Llama3) были использованы для генерации неструктурированного текста, который напоминает конкретный домен. В этом хранилище данные имитируют эссе от студентов в онлайн -курсе. Обратитесь к различным подсказкам для подсказки примеров, используемых в этой работе.
Примечание : полезное понимание, полученное во время этой работы, состояло в том, чтобы побудить LLM создать placeholders для данных PII. Данные с шага № 1 будут введены в заполнители. Подход PII Placeholder предоставил следующие неподтвержденные преимущества:
Приведены два примера стратегии подсказки, которые демонстрируют различия между подсказкой с PII непосредственно (пример 1), а затем с заполнителями (пример 2).
Пример 1: подсказка LLM с прямой инъекцией данных PII
Model Prompt:
Write an sentence introducing yourself and include only your personal information provided below:
- FULL_NAME: John Doe
- PHONE_NUM: 555-123-4567
Model Response:
My name is John Doe and you can reach me at 555-125-4567 or by email at [email protected].Эта техника подсказки регулярно вводила несколько ошибок от LLMS, которые было трудно программно распознавать и привести к неправильному маркировке PII в био-формате. Пример 1 просит модель напрямую вставить данные PII в текст и заметить несколько ошибок:
[email protected] Электронная почта.Пример 2: подсказка LLM с заполнителями PII
Model Prompt:
Write an sentence introducing yourself and include only your personal information using the placeholders provided below:
- {FULL_NAME}: First and Last Name
- {PHONE_NUM}: Personal phone number
Model Response:
My name is {FULL_NAME} and you can reach me at {PHONE_NUM}.С примером 2 у LLM не было возможности перенести какие -либо ошибки в телефоне или с полной_name. Кроме того, казалось, что LLM будет реже включать дополнительные объекты PII.
Вышеуказанные два шага отделили данные PII и генерацию текста, специфичной для домена. На шаге 3 данные PII Шаг № 1 вставлены в специфический домен LLM -домена шага № 2. Это полезно, потому что вы можете легко экспериментировать с различными комбинациями данных PII и данными генерации текста, специфичной для домена.
Наиболее эффективной моделью LLM для обнаружения сущностей PII была BERT Microsoft, усиленная BERT с моделью DisEneanglet Atteice V3. Эта модель последовательно выполняет хорошие результаты для задач модели энкодера, таких как распознавание именованных объектов (NER), вопрос и ответ, а также классификация.
Хорошей отправной точкой для обучения модели Deberta-V3 является базовый модуль тонкой настройки Deberta-V3. В этом модуле был создан индивидуальный тренер с обнимающими лицами для обучения с фокусной потерей или потерей CE, чтобы учесть дисбаланс класса.
class CustomTrainer ( Trainer ):
def __init__ (
self ,
focal_loss_info : SimpleNamespace ,
* args ,
class_weights = None ,
** kwargs ):
super (). __init__ ( * args , ** kwargs )
# Assuming class_weights is a Tensor of weights for each class
self . class_weights = class_weights
self . focal_loss_info = focal_loss_info
def compute_loss ( self , model , inputs , return_outputs = False ):
# Extract labels
labels = inputs . pop ( "labels" )
# Forward pass
outputs = model ( ** inputs )
logits = outputs . logits
# Loss calculation
if self . focal_loss_info . apply :
loss_fct = FocalLoss ( alpha = 5 , gamma = 2 , reduction = 'mean' )
loss = loss_fct ( logits . view ( - 1 , self . model . config . num_labels ),
labels . view ( - 1 ))
else :
loss_fct = CrossEntropyLoss ( weight = self . class_weights )
if self . label_smoother is not None and "labels" in inputs :
loss = self . label_smoother ( outputs , inputs )
else :
loss = loss_fct ( logits . view ( - 1 , self . model . config . num_labels ),
labels . view ( - 1 ))
return ( loss , outputs ) if return_outputs else lossДальнейшие уловки и советы, которые помогут системам обнаружения PII, которые содержатся в учебном каталоге:
unlabeled datasets для выявления модели для языковых моделей и терминологии, специфичных для домена. Точная настройка модели, которая прошла дополнительную предварительную тренировку по конкретной задаче или домену, начиная с начальной контрольной точки, адаптированной для раздачи задач и данных под рукой, обычно дает лучшую производительность по сравнению с тонкой настройкой, которые начинаются с общей начальной контрольной точки [источники: 1, 2].Примечание . Этот рабочий процесс, представленный здесь
Этот репозиторий сделает все возможное, чтобы сохранить. Если вы столкнетесь с какой -либо проблемой или хотите сделать улучшения, поднимите проблему или отправьте запрос на привлечение. ?