CSharp AI Introduzione
From Aino Wiki
Data la natura di questa guida il cui scopo è dare rapidamente i concetti necessari, si danno per scontato degli assunti. E' tutto precario in quanto la revisione è un'attività continua man mano che apprendo il senso ed uso della AI.
Fonti:
Contents
Introduzione
L'intelligenza artificiale generativa è un tipo di intelligenza artificiale in grado di creare contenuti originali, ad esempio linguaggio naturale, immagini, audio e codice.
Tutta l'intelligenza artificiale generativa si basa su modelli. Questi modelli vengono sottoposti a training con grandi set di dati sotto forma di contenuto, ad esempio linguaggio naturale, immagini, audio e codice. I modelli di intelligenza artificiale generativi usano i modelli identificati nei dati di training per produrre contenuti nuovi e statisticamente simili.
Nell'ambito dell'informatica l'apprendimento automatico o ML, machine learning, è una variante alla programmazione tradizionale nella quale in una macchina si predispone l'abilità di apprendere qualcosa dai dati in maniera autonoma, senza istruzioni esplicite.
Un elenco incompleto dei campi di applicazione dell'AI .Net sono:
- Language processing: creazione di agenti virtuali o chatbot che dialogano usando i tuoi dati e generando contenuti ed immagini.
- Computer vision: identificano oggetti contenuti in altri oggetti o video.
- Audio generation: usa sintetizzatori vocali per l'interazione con l'utente.
- Classificazione: etichetta la severity da associare ai guasti segnalati da utenti;
- Task automation: per eseguire automaticamente i passi successivi di un workflow completo.
AI e ML
Da tutorial Microsoft Luis Quintanilla
. Ci sono i seguenti livelli, anche se sembrano uguali:- AI. Agenti che automatizzano attività tipicamente eseguite manualmente dagli esseri umani. Es. filtro anti-spam per le e-mail.
- ML. Sistemi che utilizzano algoritmi e dati per creare (dedurre) modelli.
- Deep Learining. Tecnica di ML che utilizza algoritmi noti come reti neurali.
- Generative AI. Utilizzo di algoritmi di Deep Learning per generare nuovi contenuti (testi, immagini, audio). Usati in modelli come GPT e ChatGPT. Utilizza algoritmi tipicamente conosciuti come trnsformers.
Dal punto di vista teorico tutto è racchiuso sotto l'AI ma scendendo di livello c'è una maggiore specializzazione.
Come sviluppare
Come implementare AI e ML in applicazioni .NET
Aggiungere l'AI e ML alle applicazioni con C# migliora significativamente le funzionalità ma occorre innanzitutto capire il proprio caso d'uso per guidare la scelta.
Capire il caso d'uso
- Predittive Analytics: per le tendenze previsionali (forecasting trends) e le decisioni guidate dall'analisi di dati (data-driven decisions).
- NLP, Natural Language Processing: per chatbots, text analisys e sentiment analisys.
- Computer Vision: per image e video processiong, riconoscimento facciale ed individuazione di oggetti.
- Recommendation Engines: per suggerimenti personalizzati agli utenti.
Scegliere Framework e Librerie
Come partenza .Net offre i seguenti tools per integrare AI e ML:
- ML.NET: un framework nativo per .NET ideale per task delle ML per ambiti comuni come: classificazione, regressione, clustering, rilevamento di anomalie.
- ONNX Runtime: consente di pre-addestrare modelli per altre piattaforme come TensorFlow e PyTorch nelle applicazioni .NET.
- TensorFlow.NET e PyTorch.NET: per l'apprendimento profondo e le reti neurali ed usare .NET in maggiore profondità.
Preparare i dati
- Data collection: raccogliere dati da varie sorgenti come database, APIs o files.
- Data Cleaning: pulire i dati gestendo valori mancanti, rimuovere duplicati e gestire i valori anomali.
- Data Splitting: suddividere i dati tra addestramento ed insiemi di dati di test. Tipicamente il 70/80% dei dati è usato per l'addestramento ed il 20/30% per il testing.
Machine Learning
Microsoft ha sviluppato un framework open-source per il "machine learning" chiamato ML.NET per creare dei modelli custom di machine learning. ML.NET è una libreria gratuita per i linguaggi C# e F#.
Con ML.NET, i programmatori C# possono utilizzare il machine learning per sviluppare applicazioni su dispositivi mobili e desktop, nonché applicazioni IoT (Internet of Things).
Inoltre, ML.NET offre agli utenti l'accesso a TensorFlow, lo stesso popolare framework di machine learning utilizzato dai programmatori Python. TensorFlow è una libreria open source per l'apprendimento automatico che fornisce moduli sperimentati ed ottimizzati utili nella realizzazione di algoritmi per compiti percettivi e comprensione del linguaggio.
Costruire ed addestrare il modello
Con ML.NET si posson costruire e testare modelli direttamente nelle applicazioni .NET.
- Selezionare un modello: scegliere un algoritmo in funzione del proprio caso d'uso. ML.NET supporta vari algoritmo come linear regression, decision tree e clustering.
- Addestrare il modello: utilizzare il idati di addestramento appropriati. Questo comporta l'alimentazione dell'algoritmo con i dati allo scopo di farlo apprendere.
- Valutare il modello: testare il modello con opportuni dati di test per valutare accuratezza e performance. ML.NET fornisce delle metriche per accuratezza, precisione per misurare e valutare e rendere consistente il proprio modello.
Per una elaborazione real-time e attivazione del modello si può anche usare Node.js nelle applicazioni AI.
Integrare AI e ML in applicazioni
Dopo l'addestramento del modello esso va integrato nell'aplicazione .NET, quindi:
- Caricare il modello: usare ML.NET o ONNX Runtime per coaricare il modello addestrato nell'applicazione.
- Effettuare predizione: utilize il modello per eseguire predizioni o generare informazioni basate su nuovi dati.
Deploiare e monitorare: rilasciare il proprio applicativo .NET nell'ambiente desiderato(es. sul cloud, on-premises), monitoare continuamente le performance per assicurare la soddisfazione delle attese.
Framework e librerie per AI\ML in C#
1 ML.NET
ML.NET è un framework open source per il machine learning, specificamente progettato per gli sviluppatori .NET, consente di aggiungere Machine Learning alle applicazioni .NET, in scenari online o offline.
Permette di creare, addestrare e distribuire modelli di machine learning utilizzando C#.
Alcuni punti chiave:
- Facilità d'uso: ML.NET è progettato per essere facile da usare per gli sviluppatori .NET, integrandosi perfettamente con altri strumenti e librerie .NET.
- Versatilità: supporta diverse attività di machine learning come classificazione, regressione, clustering e rilevamento di anomalie.
- Personalizzazione: è possibile creare modelli personalizzati o utilizzare modelli pre-addestrati, fornendo flessibilità per diverse esigenze progettuali.
Integrazione: ML.NET si integra perfettamente con Visual Studio, semplificando lo sviluppo e il debug di applicazioni di machine learning.
2 ONNX Runtime
ONNX Runtime è un motore di scoring (valutazione) multipiattaforma ad alte prestazioni per modelli ONNX (Open Neural Network Exchange). Consente di eseguire modelli pre-addestrati da diversi framework di machine learning nelle applicazioni .NET. I punti chiave includono:
- Interoperabilità: ONNX Runtime consente di utilizzare modelli addestrati in framework come PyTorch, TensorFlow e Scikit-Learn.
- Prestazioni: è ottimizzato per le prestazioni, garantendo l'efficienza dei modelli.
- Flessibilità: è possibile distribuire modelli ONNX su diverse piattaforme, tra cui Windows, Linux e macOS.
- Supporto: ONNX Runtime viene costantemente aggiornato per supportare i modelli e le funzionalità ONNX più recenti.
3 TensorFlow.NET
TensorFlow.NET porta la potenza di TensorFlow, una libreria open source leader per il deep learning, nell'ecosistema .NET. Permette agli sviluppatori .NET di creare, addestrare e distribuire modelli di deep learning. Ecco i punti salienti:
- Deep Learning: TensorFlow.NET è perfetto per lo sviluppo di reti neurali e altri modelli di deep learning.
- API estesa: fornisce un'API completa che rispecchia l'API Python di TensorFlow, rendendola familiare a coloro che hanno già lavorato con TensorFlow.
- Flessibilità: supporta diverse attività di machine learning, tra cui il riconoscimento delle immagini, l'elaborazione del linguaggio naturale e altro ancora.
- Community: TensorFlow.NET è supportato da una solida community, che offre risorse e supporto agli sviluppatori.
4 PyTorch.NET
PyTorch.NET fornisce binding .NET per PyTorch, un altro framework leader nel deep learning. Permette agli sviluppatori .NET di utilizzare le funzionalità di PyTorch direttamente nelle proprie applicazioni. Tra i punti chiave:
- Grafici computazionali dinamici: PyTorch.NET supporta grafici computazionali dinamici, ideali per dati di input complessi e variabili.
- Ricerca e sviluppo: ampiamente utilizzato nella ricerca grazie alla sua flessibilità e facilità d'uso.
- Integrazione: si integra perfettamente con le applicazioni .NET, consentendo lo sviluppo di modelli complessi di machine learning.
- Supporto e risorse: PyTorch.NET beneficia dell'ampia documentazione e del supporto della community disponibili per PyTorch.
Materiale
- ! App di intelligenza artificiale per sviluppatori .NET
- Cos'è ML.NET e come funziona Microsoft
- ML.NET step by step [1]
- Iniziare con ML.NET Guida Microsoft
Mappa e Link
Visual Studio | MS SQL | Dizionario
Parole chiave:
