# Guida al Training

Questa guida spiega come addestrare i modelli di machine learning per Cognitor Assistant.

Pipeline Completa

Per eseguire l'intera pipeline di training:

bash
python -m pipeline

Questo eseguirร  automaticamente tutti i passaggi:

  1. Preparazione dei dati (intent builder)
  2. Training FastText
  3. Training Intent Classifier

Step Manuali

1. Preparazione Dati

bash
python -m pipeline.intent_builder

Questo step:

  • Legge gli intenti da knowledge/intents/
  • Estrae le annotazioni NER
  • Genera il dizionario intenti (data/intent_dict.json)
  • Crea i dati tokenizzati (data/tokenized_data.npy)

2. Training FastText

bash
python -m intellective.train_fast_text

Parametri di training:

  • dim=300: Dimensione embeddings
  • epoch=20: Numero epoche
  • lr=0.1: Learning rate
  • minCount=3: Frequenza minima parola
  • wordNgrams=2: N-grammi

Output: models/fasttext_model.bin

3. Training Intent Classifier

bash
python -m intellective.train_intent_classifier

Parametri:

  • embed_dim=300: Dimensione embeddings (deve matchare FastText)
  • hidden_dim=256: Dimensione stato nascosto GRU
  • dropout_prob=0.3: Dropout rate
  • epochs=50: Numero massimo epoche
  • lr=0.001: Learning rate
  • patience=10: Early stopping patience

Output: models/intent_model_fast.pth

Parametri Avanzati

FastText

python
ft_model = fasttext.train_unsupervised(
    'data/fast-text.txt',
    model='skipgram',
    dim=300,
    epoch=20,
    lr=0.1,
    minCount=3,
    wordNgrams=2,
    bucket=200000,
    minn=3,
    maxn=6
)

Intent Classifier

python
model = IntentClassifier(
    vocab_size=vocab_size,
    embed_dim=300,
    hidden_dim=256,
    output_dim=intents_number,
    dropout_prob=0.3,
    fasttext_model_path='models/fasttext_model.bin',
    freeze_embeddings=True  # Mantiene embeddings fissi
)

Configurazione Loss

Il training supporta due loss combinate:

python
loss = intent_weight * intent_loss + ner_weight * ner_loss

Default:

  • intent_weight=1.0
  • ner_weight=0.5

Early Stopping

Il training implementa early stopping con:

  • Monitoraggio della loss totale
  • Pazienza configurabile (default: 10 epoche)
  • Ripristino dei pesi migliori

Hardware Consigliati

  • GPU: NVIDIA con almeno 8GB VRAM
  • CPU: Multi-core per preprocessing
  • RAM: Almeno 16GB

Verifica Modello

Dopo il training, verifica le performance:

python
from agent.agent import Agent

agent = Agent()
agent.load_models()

# Test predizione
result = agent.predict("Ciao, come stai?")
print(f"Intent: {result['intent']}, Confidence: {result['confidence']}")

Risoluzione Problemi

Out of Memory

  • Riduci batch_size
  • Riduci hidden_dim
  • Usa gradient accumulation

Overfitting

  • Aumenta dropout_prob
  • Riduci epochs
  • Abilita freeze_embeddings

Bassa Accuracy

  • Aumenta esempi negli intenti
  • Bilanciare dataset
  • Prova diversi hidden_dim