이 저장소는 ART PII Detection System의 상태를 미세 조정하고 합성 PII 데이터 생성으로 성능을 향상시킵니다.
소개 • 하이라이트 • 합성 PII 데이터 • PII 엔티티 탐지 시스템 • 문제 •
개인 식별 정보 (PII)는 개인을 식별, 찾기 또는 연락하는 데 사용되는 민감한 데이터입니다. PII 엔티티 감지 시스템은 구조화되지 않은 텍스트로 민감한 정보를 식별, 분류 및 편집 할 수 있습니다. PII 탐지 시스템을 개선하면 개인의 개인 정보 및 보안을 유지하고 법적 및 규제 요구 사항을 준수하며 신원 도용, 사기 또는 기타 유형의 피해를 방지합니다. 그림 1은 내부, 외부, 시작 (IOB) 형식을 사용하는 예제 PII 엔티티를 제공합니다.

그림 1 : IOB 형식의 PII 데이터의 예 [출처].
이 저장소의 작업은 Kaggle Competition The Learning Agency Lab -PII Data Detection에서 파생되었습니다. 이 저장소에서 기술을 사용하면 경쟁에서 상위 1%의 솔루션을 제공합니다.
PII PlaceHolders 사용하여 PII 데이터를 직접 프롬프트에 넣는 대신 최상의 기술을 촉구합니다.class_weights 매개 변수를 조정하고 초점 손실 또는 교차 엔트로피 손실로 해결됩니다. 일반적으로 바이오 형식이라고도하는 IOB 형식은 명명 된 엔티티 인식 (NER) 애플리케이션과 같은 청킹 작업에서 토큰 태그를 태깅하기위한 일반적인 태그 형식입니다. 라벨이 붙은 바이오 데이터 세트를 작성하는 것은 도메인 별 데이터 세트의 시간과 노동 집약적 일 수 있습니다. 대안적인 접근법은 실제 응용 프로그램을 밀접하게 나타내는 PII 데이터 세트를 합성 적으로 생성하는 것입니다. 도메인 특정 pii 데이터를 생성하려면 코드의 gen-data 디렉토리를 참조하십시오. 아래 파일은 합성 PII 데이터 생성에서 각각 다른 작업을 나타 내기 때문에 순차적으로 실행됩니다.
합성 PII 데이터는 Faker 및 Custom Functions를 사용하여 PII 정보를 작성하여 작성되었습니다. 이 데이터는 다음 단계에서 생성 된 LLM 생성되지 않은 구조화되지 않은 텍스트에 배치되었습니다.
생성 LLM (예 : LLAMA3)은 도메인 별 텍스트와 유사한 구조화되지 않은 텍스트를 생성하는 데 사용되었습니다. 이 저장소에서 데이터는 온라인 과정에서 학생들의 에세이를 모방합니다. 이 작업에 사용 된 예제를 제기하려면 다양한 프롬프트를 참조하십시오.
통지 :이 작업 중에 배운 유용한 통찰력은 LLM이 PII 데이터에 대한 placeholders 만들도록 자극하는 것이 었습니다. 1 단계 #1의 데이터는 자리 표시 자에 주입됩니다. PII 자리 표시 자 접근 방식은 다음과 같은 일화적인 이점을 제공했습니다.
프롬프트 전략의 두 가지 예는 PII와 직접 프롬프트 (예제 1)와 자리 표시 자 (예제 2)의 차이를 보여주는 두 가지 예가 제공됩니다.
예 1 : 직접 PII 데이터 주입으로 LLM 프롬프트
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].이 프롬프트 기술은 PII를 프로그래밍 방식으로 인식하고 바이오 형식의 PII를 잘못 표지하기가 어려운 LLM의 몇 가지 실수를 일상적으로 도입했습니다. 예 1은 모델에 PII 데이터를 텍스트에 직접 삽입하고 몇 가지 오류를 알리도록 요청합니다.
[email protected] 이메일과 같은 추가 pii를 주입합니다.예 2 : PII 자리 소지자와 함께 LLM 프롬프트
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 데이터는 단계 #2의 LLM 도메인 별 생성 텍스트에 삽입됩니다. 이것은 PII 데이터와 도메인 특정 텍스트 생성 데이터의 다양한 조합을 쉽게 실험 할 수 있기 때문에 유용합니다.
PII 엔티티 감지를위한 최고의 성능 LLM 모델은 해방 된주의 V3 모델을 갖춘 Microsoft의 디코딩 강화 버트였습니다. 이 모델은 명명 된 엔티티 인식 (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].참고 : 여기에 제시된이 워크 플로우는 LLM뿐만 아니라 많은 포옹 얼굴 딥 러닝 응용 프로그램에 적합 할 수 있습니다.
이 저장소는 유지하기 위해 최선을 다할 것입니다. 문제에 직면하거나 개선하려면 문제를 제기하거나 풀 요청을 제출하십시오. ?