Files
aitbc/apps/zk-circuits/ml_training_verification.circom
AITBC System b033923756 chore: normalize file permissions across repository
- Remove executable permissions from configuration files (.editorconfig, .env.example, .gitignore)
- Remove executable permissions from documentation files (README.md, LICENSE, SECURITY.md)
- Remove executable permissions from web assets (HTML, CSS, JS files)
- Remove executable permissions from data files (JSON, SQL, YAML, requirements.txt)
- Remove executable permissions from source code files across all apps
- Add executable permissions to Python
2026-03-08 11:26:18 +01:00

49 lines
1.5 KiB
Plaintext

pragma circom 2.0.0;
include "node_modules/circomlib/circuits/poseidon.circom";
/*
* Simplified ML Training Verification Circuit
*
* Basic proof of gradient descent training without complex hashing
*/
template SimpleTrainingVerification(PARAM_COUNT, EPOCHS) {
signal input initial_parameters[PARAM_COUNT];
signal input learning_rate;
signal output final_parameters[PARAM_COUNT];
signal output training_complete;
// Input validation constraints
// Learning rate should be positive and reasonable (0 < lr < 1)
learning_rate * (1 - learning_rate) === learning_rate; // Ensures 0 < lr < 1
// Simulate simple training epochs
signal current_parameters[EPOCHS + 1][PARAM_COUNT];
// Initialize with initial parameters
for (var i = 0; i < PARAM_COUNT; i++) {
current_parameters[0][i] <== initial_parameters[i];
}
// Simple training: gradient descent simulation
for (var e = 0; e < EPOCHS; e++) {
for (var i = 0; i < PARAM_COUNT; i++) {
// Simplified gradient descent: param = param - learning_rate * gradient_constant
// Using constant gradient of 0.1 for demonstration
current_parameters[e + 1][i] <== current_parameters[e][i] - learning_rate * 1;
}
}
// Output final parameters
for (var i = 0; i < PARAM_COUNT; i++) {
final_parameters[i] <== current_parameters[EPOCHS][i];
}
// Training completion constraint
training_complete <== 1;
}
component main = SimpleTrainingVerification(4, 3);