trustformers_debug/simulation_tools/
adversarial_analysis.rs1use super::types::*;
7use chrono::{DateTime, Utc};
8use serde::{Deserialize, Serialize};
9use std::collections::HashMap;
10
11#[derive(Debug, Clone, Serialize, Deserialize)]
13pub struct AdversarialProbingResult {
14 pub timestamp: DateTime<Utc>,
16 pub base_input: HashMap<String, f64>,
18 pub adversarial_examples: HashMap<AdversarialMethod, Vec<AdversarialExample>>,
20 pub attack_success_analysis: AttackSuccessAnalysis,
22 pub robustness_assessment: AdversarialRobustnessAssessment,
24 pub defense_recommendations: Vec<DefenseRecommendation>,
26}
27
28#[derive(Debug, Clone, Serialize, Deserialize)]
30pub struct AdversarialExample {
31 pub id: String,
33 pub attack_method: AdversarialMethod,
35 pub original_input: HashMap<String, f64>,
37 pub adversarial_input: HashMap<String, f64>,
39 pub original_prediction: f64,
41 pub adversarial_prediction: f64,
43 pub perturbation: HashMap<String, f64>,
45 pub perturbation_norm: f64,
47 pub is_successful: bool,
49 pub confidence: f64,
51}
52
53#[derive(Debug, Clone, Serialize, Deserialize)]
55pub struct AttackSuccessAnalysis {
56 pub success_rate_by_method: HashMap<AdversarialMethod, f64>,
58 pub overall_success_rate: f64,
60 pub avg_perturbation_magnitude: f64,
62 pub most_effective_methods: Vec<AdversarialMethod>,
64 pub attack_difficulty: AttackDifficultyAnalysis,
66}
67
68#[derive(Debug, Clone, Serialize, Deserialize)]
70pub struct AttackDifficultyAnalysis {
71 pub easy_targets: Vec<String>,
73 pub hard_targets: Vec<String>,
75 pub perturbation_by_feature: HashMap<String, f64>,
77 pub complexity_assessment: ComplexityAssessment,
79}
80
81#[derive(Debug, Clone, Serialize, Deserialize)]
83pub struct ComplexityAssessment {
84 pub complexity_score: f64,
86 pub features_required: usize,
88 pub min_perturbation: f64,
90 pub sophistication_level: SophisticationLevel,
92}
93
94#[derive(Debug, Clone, Serialize, Deserialize)]
96pub struct AdversarialRobustnessAssessment {
97 pub robustness_score: f64,
99 pub robustness_by_attack: HashMap<AdversarialMethod, f64>,
101 pub vulnerability_hotspots: Vec<VulnerabilityHotspot>,
103 pub certified_robustness: CertifiedRobustnessAnalysis,
105}
106
107#[derive(Debug, Clone, Serialize, Deserialize)]
109pub struct VulnerabilityHotspot {
110 pub location: HashMap<String, f64>,
112 pub vulnerability_score: f64,
114 pub susceptible_attacks: Vec<AdversarialMethod>,
116 pub radius: f64,
118}
119
120#[derive(Debug, Clone, Serialize, Deserialize)]
122pub struct CertifiedRobustnessAnalysis {
123 pub certified_radius: f64,
125 pub certification_confidence: f64,
127 pub certification_method: String,
129 pub robustness_guarantees: Vec<RobustnessGuarantee>,
131}
132
133#[derive(Debug, Clone, Serialize, Deserialize)]
135pub struct RobustnessGuarantee {
136 pub guarantee_type: GuaranteeType,
138 pub strength: f64,
140 pub conditions: Vec<String>,
142 pub confidence: f64,
144}
145
146#[derive(Debug, Clone, Serialize, Deserialize)]
148pub struct DefenseRecommendation {
149 pub name: String,
151 pub description: String,
153 pub target_vulnerabilities: Vec<String>,
155 pub effectiveness: f64,
157 pub complexity: DefenseComplexity,
159 pub performance_impact: PerformanceImpact,
161}