Class MedianFullModelAggregationStrategy<T, TInput, TOutput>
- Namespace
- AiDotNet.FederatedLearning.Aggregators
- Assembly
- AiDotNet.dll
Coordinate-wise median aggregation for IFullModel<T, TInput, TOutput>.
public sealed class MedianFullModelAggregationStrategy<T, TInput, TOutput> : RobustFullModelAggregationStrategyBase<T, TInput, TOutput>, IAggregationStrategy<IFullModel<T, TInput, TOutput>>
Type Parameters
TTInputTOutput
- Inheritance
-
AggregationStrategyBase<IFullModel<T, TInput, TOutput>, T>RobustFullModelAggregationStrategyBase<T, TInput, TOutput>MedianFullModelAggregationStrategy<T, TInput, TOutput>
- Implements
-
IAggregationStrategy<IFullModel<T, TInput, TOutput>>
- Inherited Members
Remarks
For Beginners: For each model parameter, this strategy takes the middle value across clients. This makes the aggregation resistant to outliers (e.g., a client sending extremely large values).
Methods
Aggregate(Dictionary<int, IFullModel<T, TInput, TOutput>>, Dictionary<int, double>)
Aggregates model updates from multiple clients into a single global model update.
public override IFullModel<T, TInput, TOutput> Aggregate(Dictionary<int, IFullModel<T, TInput, TOutput>> clientModels, Dictionary<int, double> clientWeights)
Parameters
clientModelsDictionary<int, IFullModel<T, TInput, TOutput>>Dictionary mapping client IDs to their trained models.
clientWeightsDictionary<int, double>Dictionary mapping client IDs to their aggregation weights (typically based on data size).
Returns
- IFullModel<T, TInput, TOutput>
The aggregated global model.
Remarks
This method combines model updates from clients using the strategy's specific algorithm.
For Beginners: Aggregation is like combining multiple rough drafts of a document into one polished version that incorporates the best parts of each.
The aggregation process typically:
- Takes model updates (weight changes) from each client
- Considers the weight or importance of each client (based on data size, accuracy, etc.)
- Combines these updates using the strategy's algorithm
- Returns a single aggregated model that represents the collective improvement
For example with weighted averaging (FedAvg):
- Client 1 (1000 samples): model update A
- Client 2 (500 samples): model update B
- Client 3 (1500 samples): model update C
- Aggregated update = (1000A + 500B + 1500*C) / 3000
GetStrategyName()
Gets the name of the aggregation strategy.
public override string GetStrategyName()
Returns
- string
A string describing the aggregation strategy (e.g., "FedAvg", "FedProx", "Krum").
Remarks
For Beginners: This helps identify which aggregation method is being used, useful for logging, debugging, and comparing different strategies.