Table of Contents

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

T

The numeric type used for calculations (e.g., float, double).

TInput

The model input type.

TOutput

The 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

CompetenceBasedOptions

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

DifficultyEstimatorType?

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

CurriculumEarlyStoppingOptions

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

double?

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

double?

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

CurriculumScheduleType

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

SelfPacedOptions

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; }

Property Value

CurriculumVerbosity