ที่เก็บข้อมูลปรับแต่งระบบตรวจจับ ART PII และเพิ่มประสิทธิภาพด้วยการสร้างข้อมูล PII แบบสังเคราะห์
บทนำ•ไฮไลท์•ข้อมูล PII สังเคราะห์•ระบบตรวจจับเอนทิตี PII •ปัญหา•
ข้อมูลส่วนบุคคล (PII) เป็นข้อมูลที่ละเอียดอ่อนที่ใช้ในการระบุค้นหาหรือติดต่อบุคคล ระบบตรวจจับเอนทิตี PII สามารถระบุจัดหมวดหมู่และข้อมูลที่ละเอียดอ่อนในข้อความที่ไม่มีโครงสร้าง การปรับปรุงระบบตรวจจับ PII ช่วยรักษาความเป็นส่วนตัวและความปลอดภัยของบุคคลปฏิบัติตามข้อกำหนดทางกฎหมายและกฎระเบียบและป้องกันการขโมยข้อมูลประจำตัวการฉ้อโกงหรืออันตรายประเภทอื่น ๆ รูปที่ 1 แสดงตัวอย่างเอนทิตี PII โดยใช้รูปแบบภายใน, ภายนอก, เริ่มต้น (IOB) รูปแบบ

รูปที่ 1: ตัวอย่างข้อมูล PII ในรูปแบบ IOB [แหล่งที่มา]
งานในที่เก็บนี้ได้มาในระหว่างการแข่งขัน Kaggle การตรวจจับข้อมูลเอเจนซี่การเรียนรู้ - PII การใช้เทคนิคในที่เก็บนี้จะให้บริการโซลูชั่นใน 1% สูงสุดสำหรับการแข่งขัน
PII PlaceHolders แทนที่จะใส่ข้อมูล PII ลงในพรอมต์โดยตรงclass_weights ในผู้ฝึกสอนใบหน้ากอดและด้วยการสูญเสียโฟกัสหรือการสูญเสียเอนโทรปีข้าม รูปแบบ IOB หรือที่เรียกว่ารูปแบบทางชีวภาพเป็นรูปแบบการติดแท็กทั่วไปสำหรับโทเค็นแท็กในงาน chunking เช่นแอปพลิเคชันการจดจำเอนทิตี (NER) ที่มีชื่อ การสร้างชุดข้อมูลชีวภาพที่มีป้ายกำกับอาจเป็นเวลาและแรงงานที่เข้มข้นสำหรับชุดข้อมูลเฉพาะของโดเมน อีกทางเลือกหนึ่งคือการสร้างชุดข้อมูล PII แบบสังเคราะห์ซึ่งเป็นตัวแทนของแอปพลิเคชันในชีวิตจริงของคุณอย่างใกล้ชิด อ้างถึงไดเรกทอรี gen-data สำหรับรหัสเพื่อสร้างข้อมูล PII เฉพาะโดเมน ไฟล์ด้านล่างจะถูกดำเนินการตามลำดับเนื่องจากแต่ละรายการเป็นตัวแทนที่แตกต่างกันในการสร้างข้อมูล PII สังเคราะห์
ข้อมูล PII แบบสังเคราะห์ถูกสร้างขึ้นโดยใช้ฟังก์ชั่น Faker และ Custom เพื่อสร้างข้อมูล PII ข้อมูลนี้ถูกวางลงใน LLM สร้างข้อความที่ไม่มีโครงสร้างที่สร้างขึ้นในขั้นตอนต่อไป
Generative LLMS (เช่น LLAMA3) ถูกนำมาใช้เพื่อสร้างข้อความที่ไม่มีโครงสร้างซึ่งคล้ายกับข้อความเฉพาะโดเมน ในที่เก็บข้อมูลนี้เรียงความการเลียนแบบข้อมูลจากนักเรียนในหลักสูตรออนไลน์ อ้างถึงพรอมต์ต่าง ๆ สำหรับตัวอย่างการแจ้งเตือนที่ใช้ในงานนี้
ข้อสังเกต : ข้อมูลเชิงลึกที่เป็นประโยชน์ที่ได้เรียนรู้ระหว่างงานนี้คือการแจ้งให้ LLM สร้าง placeholders สำหรับข้อมูล PII ข้อมูลจากขั้นตอนที่ #1 จะถูกฉีดเข้าไปในตัวยึดตำแหน่ง วิธีการ PII POCELEDER ให้ผลประโยชน์เล็ก ๆ น้อย ๆ ดังต่อไปนี้:
มีสองตัวอย่างของกลยุทธ์การแจ้งเตือนซึ่งแสดงให้เห็นถึงความแตกต่างระหว่างการแจ้งเตือนด้วย 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].เทคนิคการแจ้งเตือนนี้แนะนำข้อผิดพลาดสองสามข้อจาก LLM ที่ยากต่อการจดจำโปรแกรมและนำไปสู่การติดฉลาก 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 ไม่มีโอกาสถ่ายโอนข้อผิดพลาดใด ๆ ใน phone_num หรือกับ full_name นอกจากนี้ดูเหมือนว่า LLM จะไม่รวมเอนทิตี PII พิเศษ
สองขั้นตอนข้างต้นแยกข้อมูล PII และการสร้างข้อความเฉพาะโดเมน ในขั้นตอนที่ #3 ข้อมูลขั้นตอน #1 PII จะถูกแทรกลงในข้อความที่สร้างขึ้นเฉพาะโดเมน LLM ของขั้นตอนที่ #2 สิ่งนี้มีประโยชน์เพราะคุณสามารถทดลองกับชุดข้อมูล PII ที่แตกต่างกันและข้อมูลการสร้างข้อความเฉพาะโดเมน
แบบจำลอง LLM ที่มีประสิทธิภาพดีที่สุดสำหรับการตรวจจับเอนทิตี PII คือเบิร์ตที่เพิ่มการถอดรหัสของ Microsoft พร้อมกับรุ่น V3 ที่ไม่สนใจ โมเดลนี้ทำงานได้ดีอย่างต่อเนื่องสำหรับงานโมเดลตัวเข้ารหัสเช่นการจดจำเอนทิตีที่มีชื่อ (NER) คำถามและคำตอบและการจำแนกประเภท
จุดเริ่มต้นที่ดีสำหรับการฝึกอบรมโมเดล Deberta-V3 คือกับโมดูลการปรับจูนเดอร์ตา-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]หมายเหตุ : เวิร์กโฟลว์นี้ที่นำเสนอที่นี่สามารถปรับให้เข้ากับแอปพลิเคชันการเรียนรู้ที่ลึกล้ำจำนวนมากไม่ใช่แค่ LLM
ที่เก็บนี้จะพยายามอย่างเต็มที่ที่จะได้รับการดูแลรักษา หากคุณประสบปัญหาใด ๆ หรือต้องการทำการปรับปรุงโปรดเพิ่มปัญหาหรือส่งคำขอดึง -