Dieses Repository-Feinstillt Ein hochmodernes PII-Erkennungssystem und verbessert die Leistung mit synthetischen PII-Datenerzeugung.
Einführung • Highlights • Synthetische PII -Daten • PII -Entitätserkennungssysteme • Probleme •
Persönliche identifizierbare Informationen (PII) sind sensible Daten, mit denen eine Person identifiziert, lokalisiert oder kontaktiert wird. PII -Entitätserkennungssysteme können sensible Informationen in unstrukturiertem Text identifizieren, kategorisieren und reduzieren. Durch die Verbesserung der PII -Erkennungssysteme können die Privatsphäre und Sicherheit von Personen aufrechterhalten, rechtliche und regulatorische Anforderungen erfüllen und Identitätsdiebstahl, Betrug oder andere Arten von Schäden verhindern. Abbildung 1 liefert ein Beispiel für PII -Entitäten innen, außen, beginnend (IOB) -Format.

Abbildung 1: Beispiel für PII -Daten im IOB -Format [Quelle].
Die Arbeiten in diesem Repository wurden während des Kaggle -Wettbewerbs der Lernagentur Labor -PII -Datenerkennung abgeleitet. Die Verwendung der Techniken in diesem Repository bietet Lösungen in den Top 1% für den Wettbewerb.
PII PlaceHolders anstatt PII -Daten direkt in eine Eingabeaufforderung zu setzen.class_weights im umarmenden Gesichtstrainer und mit einem Fokusverlust oder einem Kreuzentropieverlust angesprochen. Das IOB -Format, das auch allgemein als Bioformat bezeichnet wird, ist ein gemeinsames Tagging -Format zum Markieren von Token in einer Chunking -Aufgabe wie NER -Anträgen (benannte Entityerkennung). Das Erstellen beschrifteter Bio -Datensätze kann zeitlich und arbeitsintensiv für domänenspezifische Datensätze sein. Ein alternativer Ansatz besteht darin, synthetisch PII-Datensätze zu generieren, die Ihre reale Anwendung genau darstellen. Siehe das gen-data -Verzeichnis für Code zum Erstellen von domänenspezifischen PII-Daten. Die folgenden Dateien würden nacheinander ausgeführt, weil sie jeweils eine andere Aufgabe in der Erstellung synthetischer PII -Daten darstellen.
Synthetische PII -Daten wurden mit Faker- und benutzerdefinierten Funktionen erstellt, um PII -Informationen zu erstellen. Diese Daten wurden in LLM generierte unstrukturierte Text eingereicht, der im nächsten Schritt erstellt wurde.
Generative LLMs (EG, LLAMA3) wurden verwendet, um unstrukturiertem Text zu generieren, der domänenspezifischem Text ähnelt. In diesem Repository ahmt die Daten Aufsätze von Schülern in einem Online -Kurs nach. In den verschiedenen Eingabeaufforderungen finden Sie die in dieser Arbeit verwendeten Beispiele.
Hinweis : Eine hilfreiche Erkenntnis, die in dieser Arbeit gelernt wurde, bestand darin, die LLM zu veranlassen, placeholders für die PII -Daten zu erstellen. Die Daten aus Schritt 1 werden den Platzhaltern injiziert. Der PII -Platzhalteransatz lieferte die folgenden anekdotischen Vorteile:
Es werden zwei Beispiele für Strategien angegeben, die die Unterschiede zwischen der Aufforderung mit PII direkt (Beispiel 1) und dann mit Platzhaltern (Beispiel 2) demonstrieren.
Beispiel 1: LLM -Aufforderung mit direkter PII -Dateninjektion
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].Diese Anlauf-Technik führte routinemäßig einige Fehler aus den LLMs ein, die im Bioformat schwer zu erkennen und zu einer Fehlmarkierung von PII zu führen zu können. Beispiel 1 fordert das Modell auf, PII -Daten direkt in den Text einzufügen und die wenigen Fehler zu bemerken:
[email protected] gefragt werden, injizieren.Beispiel 2: LLM -Aufforderung bei PII -Platzhaltern
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}.Mit Beispiel 2 hatte die LLM nicht die Möglichkeit, Fehler im Telefon_num oder mit dem Full_Name zu transponieren. Außerdem schien es, als würde die LLM seltener zusätzliche PII -Entitäten einbeziehen.
Die beiden oben genannten Schritte entkoppelten PII -Daten und domänenspezifische Textgenerierung. In Schritt 3 wird die PII -Daten von Schritt 1 in Schritt 2 der LLM -Domäne von Schritt 2 eingefügt. Dies ist nützlich, da Sie leicht mit verschiedenen Kombinationen von PII -Daten und domänenspezifischen Textgenerierungsdaten experimentieren können.
Das LLM-Modell für die Erkennung von PII-Entität war das Decoding-verstärkte Bert von Microsoft mit entwirrtem Aufmerksamkeits-V3-Modell. Dieses Modell bietet konsequent gut für Encodermodellaufgaben wie die genannte Entitätserkennung (NER), Frage und Antwort sowie Klassifizierung.
Ein guter Ausgangspunkt für das Training eines DeBerta-V3-Modells ist das Basismodul von Deberta-V3. In diesem Modul wurde ein maßgeschneiderter Face -Trainer erstellt, um entweder mit Schwerpunkt oder CE -Verlust zu trainieren, um das Ungleichgewicht des Klassen -Ungleichgewichts zu berücksichtigen.
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 lossWeitere Tricks und Tipps zur Finanzierung von PII-Erkennungssystemen, die im Trainingsverzeichnis enthalten sind, sind:
unlabeled datasets verwenden, um ein Modell domänenspezifischen Sprachmustern und Terminologie auszusetzen. Feinabstimmung eines Modells, das zusätzliche Voraussetzungen für eine bestimmte Aufgabe oder Domäne unterzogen hat, beginnend mit einem anfänglichen Checkpoint, der auf die vorliegende Aufgabe und die Datenverteilung zugeschnitten ist, liefert normalerweise eine bessere Leistung im Vergleich zu Feinabstimmungsmodellen, die von einem generischen ersten Checkpoint [Quellen: 1, 2] beginnen.Hinweis : Dieser hier vorgestellte Workflow kann für viele umarmende Gesichtsanwendungen mit tiefen Lernen angepasst werden, nicht nur für LLMs.
Dieses Repository wird sein Bestes tun, um aufrechtzuerhalten. Wenn Sie sich mit Problemen befassen oder Verbesserungen vornehmen möchten, stellen Sie bitte ein Problem auf oder senden Sie eine Pull -Anfrage. ?