# 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 pipelineQuesto eseguirร automaticamente tutti i passaggi:
- Preparazione dei dati (intent builder)
- Training FastText
- Training Intent Classifier
Step Manuali
1. Preparazione Dati
bash
python -m pipeline.intent_builderQuesto 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_textParametri di training:
dim=300: Dimensione embeddingsepoch=20: Numero epochelr=0.1: Learning rateminCount=3: Frequenza minima parolawordNgrams=2: N-grammi
Output: models/fasttext_model.bin
3. Training Intent Classifier
bash
python -m intellective.train_intent_classifierParametri:
embed_dim=300: Dimensione embeddings (deve matchare FastText)hidden_dim=256: Dimensione stato nascosto GRUdropout_prob=0.3: Dropout rateepochs=50: Numero massimo epochelr=0.001: Learning ratepatience=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_lossDefault:
intent_weight=1.0ner_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