Class CurriculumLearningOptions<T, TInput, TOutput>
- Namespace
- AiDotNet.Configuration
- Assembly
- AiDotNet.dll
Configuration options for Curriculum Learning through the AiDotNet facade.
public class CurriculumLearningOptions<T, TInput, TOutput>
Type Parameters
TThe numeric type used for calculations (e.g., float, double).
TInputThe model input type.
TOutputThe model output type.
- Inheritance
-
CurriculumLearningOptions<T, TInput, TOutput>
- Inherited Members
Remarks
This options class is designed for use with AiModelBuilder.
It follows the AiDotNet facade pattern: users provide minimal configuration, and the library supplies
industry-standard defaults internally.
For Beginners: Curriculum Learning trains models by presenting samples in order of difficulty, starting with easy examples and gradually introducing harder ones. This often leads to faster convergence and better final performance compared to random training order.
Key Concepts:
- Difficulty Estimation: How the system determines which samples are easy vs hard
- Scheduling: How quickly to progress from easy to hard samples
- Phases: Discrete curriculum stages with increasing difficulty
Properties
BatchSize
Gets or sets the batch size for training.
public int? BatchSize { get; set; }
Property Value
- int?
Remarks
If null, uses the batch size from main training settings or defaults to 32.
CompetenceBased
Gets or sets competence-based learning options.
public CompetenceBasedOptions? CompetenceBased { get; set; }
Property Value
Remarks
Only used when ScheduleType is CompetenceBased.
If null, sensible defaults are used.
DifficultyEstimator
Gets or sets the difficulty estimator type that determines sample difficulty.
public DifficultyEstimatorType? DifficultyEstimator { get; set; }
Property Value
Remarks
If null, the library auto-selects based on task type and available information.
DifficultyRecalculationFrequency
Gets or sets how often to recalculate difficulties (in epochs).
public int? DifficultyRecalculationFrequency { get; set; }
Property Value
- int?
Remarks
Only used when RecalculateDifficulties is true.
If null, defaults to every 10 epochs.
EarlyStopping
Gets or sets early stopping options for curriculum learning.
public CurriculumEarlyStoppingOptions? EarlyStopping { get; set; }
Property Value
Remarks
If null, early stopping is enabled with default patience of 10 epochs.
FinalDataFraction
Gets or sets the final fraction of data to use (typically 1.0 for all samples).
public double? FinalDataFraction { get; set; }
Property Value
Remarks
If null, defaults to 1.0 (all samples included by end of training).
Should be between InitialDataFraction and 1.0.
InitialDataFraction
Gets or sets the initial fraction of data to use (easiest samples).
public double? InitialDataFraction { get; set; }
Property Value
Remarks
If null, defaults to 0.2 (20% of easiest samples).
Should be between 0.0 and 1.0.
NormalizeDifficulties
Gets or sets whether to normalize difficulty scores to [0, 1].
public bool? NormalizeDifficulties { get; set; }
Property Value
- bool?
Remarks
If null, defaults to true.
NumPhases
Gets or sets the number of curriculum phases.
public int? NumPhases { get; set; }
Property Value
- int?
Remarks
If null, defaults to 5 phases which works well for most scenarios.
More phases = finer-grained difficulty progression.
RandomSeed
Gets or sets a random seed for reproducibility.
public int? RandomSeed { get; set; }
Property Value
- int?
Remarks
If null, training is non-deterministic.
RecalculateDifficulties
Gets or sets whether to recalculate sample difficulties during training.
public bool? RecalculateDifficulties { get; set; }
Property Value
- bool?
Remarks
If null, defaults to false (difficulties are computed once at the start).
Setting to true enables dynamic curriculum that adapts as the model learns.
ScheduleType
Gets or sets the curriculum schedule type that controls progression from easy to hard samples.
public CurriculumScheduleType ScheduleType { get; set; }
Property Value
Remarks
Default is Linear which provides smooth progression.
Available Strategies:
- Linear: Steady progression (recommended for most cases)
- Exponential: Slower start, faster finish
- Step: Discrete jumps between difficulty levels
- SelfPaced: Model determines its own pace based on current loss
- CompetenceBased: Advances when model demonstrates mastery
- Polynomial: Polynomial curve progression
- Cosine: Cosine annealing progression
SelfPaced
Gets or sets self-paced learning options.
public SelfPacedOptions? SelfPaced { get; set; }
Property Value
Remarks
Only used when ScheduleType is SelfPaced.
If null, sensible defaults are used.
ShuffleWithinPhase
Gets or sets whether to shuffle samples within each curriculum phase.
public bool? ShuffleWithinPhase { get; set; }
Property Value
- bool?
Remarks
If null, defaults to true for better generalization.
TotalEpochs
Gets or sets the total number of training epochs.
public int? TotalEpochs { get; set; }
Property Value
- int?
Remarks
If null, uses the epochs configured in the main training settings.
UseDifficultyWeighting
Gets or sets whether to weight sample contributions by difficulty.
public bool? UseDifficultyWeighting { get; set; }
Property Value
- bool?
Remarks
If null, defaults to false.
When enabled, harder samples contribute more to the loss.
Verbosity
Gets or sets the verbosity level for logging.
public CurriculumVerbosity Verbosity { get; set; }