Views
No views yet
| Policy | When it fires |
|---|---|
raw | Risk low, single modality, early in stream |
weak | Moderate risk, partial masking sufficient |
pseudo | Risk above 0.65, pseudonymization required |
redact | Threshold crossed via exposure accumulation |
adaptive_rewrite | Threshold crossed via cross-modal linkage |
adaptive_rewrite vs redact distinction is the key contribution. Both fire when risk crosses the threshold, but the cause matters. Cross-modal linkage means the same patient has appeared across two or more modalities and the records have been linked. That scenario calls for a full synthetic rewrite downstream via SynthRewrite-T5, not just redaction. Exposure accumulation, where risk built up within a single modality stream, calls for redact.1from inference import predict
2
3result = predict({
4 "risk": 0.72,
5 "risk_before": 0.43,
6 "effective_units": 9,
7 "units_factor": 0.362,
8 "recency_factor": 0.81,
9 "link_bonus": 0.20,
10 "degree": 2,
11 "confidence": 0.362,
12 "pseudonym_version": 1,
13 "triggered": True,
14 "cross_modal_matches": ["text"],
15 "modality": "asr",
16})
17
18print(result["policy"]) # adaptive_rewrite
19print(result["confidence"]) # float
20print(result["all_scores"]) # scores for all 5 policies1from huggingface_hub import hf_hub_download
2import torch
3import torch.nn as nn
4
5class PolicyNet(nn.Module):
6 def __init__(self):
7 super().__init__()
8 self.net = nn.Sequential(
9 nn.Linear(17, 64), nn.LayerNorm(64), nn.ReLU(), nn.Dropout(0.2),
10 nn.Linear(64, 128), nn.LayerNorm(128), nn.ReLU(), nn.Dropout(0.2),
11 nn.Linear(128, 64), nn.ReLU(),
12 nn.Linear(64, 5),
13 )
14 def forward(self, x):
15 return self.net(x)
16
17weights = hf_hub_download("vkatg/exposureguard-policynet", "pytorch_model.bin")
18model = PolicyNet()
19model.load_state_dict(torch.load(weights, map_location="cpu", weights_only=True))
20model.eval()| Feature | Description |
|---|---|
risk | Current cumulative risk score |
risk_before | Risk before this event |
delta_risk | risk minus risk_before |
eff_units_norm | effective_units / 50 |
units_factor | 1 - exp(-0.05 * effective_units) |
recency_factor | 0.5^(age_seconds / half_life) |
link_bonus | 0.0 / 0.20 / 0.30 for 1 / 2 / 3+ linked modalities |
degree_norm | distinct modality count / 5 |
confidence | same as units_factor |
pseudo_ver_norm | pseudonym version / 10 |
triggered | 1.0 if threshold crossed this event |
cm_count_norm | cross-modal match count / 5 |
mod_text ... mod_audio_proxy | modality one-hot (5 dims) |
Linear(17->64) -> LayerNorm -> ReLU -> Dropout(0.2)
Linear(64->128) -> LayerNorm -> ReLU -> Dropout(0.2)
Linear(128->64) -> ReLU
Linear(64->5)DCPG Risk Scorer
|
ExposureGuard-PolicyNet <- this model
|
+---+-------------------+
| |
adaptive_rewrite redact / pseudo / weak / raw
|
SynthRewrite-T51@software{exposureguard_policynet,
2 title = {ExposureGuard-PolicyNet: Stateful Privacy Policy Selection for Streaming Multimodal Clinical Data},
3 author = {Ganti, Venkata Krishna Azith Teja},
4 doi = {10.5281/zenodo.18865882},
5 url = {https://huggingface.co/vkatg/exposureguard-policynet},
6 note = {US Provisional Patent filed 2025-07-05}
7}