anky2002 commited on
Commit
4d66672
verified
1 Parent(s): 6ac5014

Upload bayesian_engine.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. bayesian_engine.py +15 -1
bayesian_engine.py CHANGED
@@ -76,13 +76,26 @@ def sigmoid(x: float) -> float:
76
  return ez / (1.0 + ez)
77
 
78
 
79
- def compute_likelihood(score: float, confidence: float, reliability: float) -> Tuple[float, float]:
 
 
 
80
  """
81
  Compute P(evidence | Fake) and P(evidence | Real) for one agent.
82
 
83
  From paper Eq. 1:
84
  P(e_i | Fake, r_i, c_i) = r_i 路 sigmoid(s_i 路 c_i) + (1 - r_i) 路 0.5
 
 
 
85
  """
 
 
 
 
 
 
 
86
  l_fake = reliability * sigmoid(score * confidence * 5.0) + (1 - reliability) * 0.5
87
  l_real = reliability * sigmoid(-score * confidence * 5.0) + (1 - reliability) * 0.5
88
  return l_fake, l_real
@@ -213,6 +226,7 @@ def bayesian_synthesis(agent_results: List[AgentEvidence]) -> ForensicVerdict:
213
  evidence.violation_score,
214
  evidence.confidence,
215
  effective_reliability,
 
216
  )
217
 
218
  likelihoods.append((l_fake, l_real))
 
76
  return ez / (1.0 + ez)
77
 
78
 
79
+ VLM_AGENT_NAMES = {"Semantic Consistency Agent", "Text & Typography Agent"}
80
+
81
+ def compute_likelihood(score: float, confidence: float, reliability: float,
82
+ is_vlm_agent: bool = False) -> Tuple[float, float]:
83
  """
84
  Compute P(evidence | Fake) and P(evidence | Real) for one agent.
85
 
86
  From paper Eq. 1:
87
  P(e_i | Fake, r_i, c_i) = r_i 路 sigmoid(s_i 路 c_i) + (1 - r_i) 路 0.5
88
+
89
+ For VLM agents: applies additional confidence compression because
90
+ VLMs systematically overstate confidence (see review feedback).
91
  """
92
+ if is_vlm_agent:
93
+ # Temperature-scale VLM confidence to prevent Eq.1 corruption
94
+ # This compresses extreme VLM confidence values toward 0.5
95
+ if 0 < confidence < 1:
96
+ logit = np.log(confidence / (1 - confidence))
97
+ confidence = float(sigmoid(logit / 2.0)) # 蟿=2.0
98
+
99
  l_fake = reliability * sigmoid(score * confidence * 5.0) + (1 - reliability) * 0.5
100
  l_real = reliability * sigmoid(-score * confidence * 5.0) + (1 - reliability) * 0.5
101
  return l_fake, l_real
 
226
  evidence.violation_score,
227
  evidence.confidence,
228
  effective_reliability,
229
+ is_vlm_agent=evidence.agent_name in VLM_AGENT_NAMES,
230
  )
231
 
232
  likelihoods.append((l_fake, l_real))