L'apprendimento automatico è bello, ma spesso non applicabile - questo sembra un caso in cui può e dovrebbe scrivere codice "ordinario".
Che cos'è ML?
L'apprendimento automatico è solo una statistica. Dopo aver "appreso" le relazioni di alcuni dati di allenamento (in realtà, adattando un modello statistico ai dati di allenamento), l'algoritmo ML può prevedere gli output per i nuovi input. Per l'apprendimento supervisionato, il set di allenamento contiene input e output noti ("etichette" in caso di problemi di classificazione). Per l'apprendimento non supervisionato, il set di allenamento non è etichettato e l'algoritmo deve dedurre relazioni, strettamente correlate ai problemi di clustering.
Limitazioni di ML
Le statistiche ML / computazionali possono essere incredibilmente interessanti, ma ci sono problemi notevoli:
-
Per ottenere un buon modello, è necessario un grande set di dati di allenamento . Ottenere questo set può essere costoso e difficile.
-
Garbage-in, garbage-out : se i dati di allenamento non sono corretti, il modello sarà danneggiato e genererà previsioni errate. Devi validare il modello per testarne la qualità. La convalida appropriata richiede una certa conoscenza statistica.
-
I modelli statistici contengono ipotesi specifiche . Se queste ipotesi non si adattano al tuo caso d'uso, il modello sarà cattivo. Come semplice esempio, prova a provare ad adattare un modello di regressione lineare su un set di dati periodici. L'ipotesi del modello di una relazione lineare non regge, quindi il modello sarà inutile.
-
Errore di generalizzazione: i modelli ML tentano di generalizzare dai dati di allenamento. Ciò implica l'indovinare, e le supposizioni possono andare storte. Ad esempio, se i tuoi dati di allenamento non sono un campione rappresentativo degli input che verranno osservati in seguito, potresti ottenere un modello di parte.
-
I pronostici saranno fuzzy e inesatti (hanno qualche varianza ). Puoi ridurlo con set di allenamento più grandi, ma molti problemi reali contengono rumore inevitabile. Quindi le uscite di un algoritmo ML devono essere interpretate attentamente.
es. il risultato di un algoritmo di classificazione delle immagini può essere comunicato in modo fuorviante come "l'immagine mostra un gatto", o più chiaramente come "l'immagine potrebbe mostrare un gatto (probabilità del 42%), tostapane (41%) o schermo del computer (39%) ”.
Allo stesso modo, per i problemi di regressione che forniscono un intervallo credibile potrebbe essere utile. C'è una differenza tra una previsione "oggi questo cliente spenderà $ 29,21" e "c'è una probabilità del 50% che il cliente spenda tra $ 19,39 e $ 64,22 oggi".
-
Interpretabilità : un modello addestrato di solito non ha un'interpretazione significativa. In casi semplici, un modello descrive le correlazioni tra le caratteristiche di input, che possono essere interpretate e visualizzate. Ma algoritmi basati sulla simulazione o modelli con variabili latenti sono notoriamente difficili da interpretare e mettere a punto. Generalmente non è possibile spiegare all'interno del dominio del problema perché è stata fatta una previsione specifica. Questo può avere implicazioni etiche e legali.
Quando usare ML
Per quali tipi di problemi le statistiche ML / di calcolo possono essere appropriate?
Ad esempio, se una soluzione esatta è irrealizzabile e una soluzione approssimativa è tollerabile. Il modello ML deve essere permesso di essere sbagliato. I tuoi requisiti ti dicono che torto il modello può essere. È quindi possibile provare a soddisfare le prestazioni di previsione necessarie, ad es. con set di allenamento migliori e più grandi, o con tecniche come boosting.
In particolare, le soluzioni approssimate sono tollerabili se sono semplicemente utilizzate per consigliare esperti umani o quando qualsiasi azione innescata dalla previsione è reversibile. Per esempio. l'utilizzo di ML per la classificazione della posta indesiderata tramite posta elettronica è abbastanza problematico perché posso contrassegnare manualmente le e-mail come spam / non spam se la categorizzazione è errata.
Che ne dici di quelle if-statement?
Per un motore di regole o altre logiche di core business, l'apprendimento automatico probabilmente non è una buona idea.
- Il modello ML può eseguire azioni indesiderate.
- Il modello ML potrebbe non riuscire a eseguire le azioni desiderate.
- Il modello ML è praticamente impossibile da eseguire il debug.
- La formazione necessaria per ottenere prestazioni soddisfacenti sarà molto più ampia di una suite di test completa.
Scrivere software può essere difficile e i requisiti possono essere complessi. L'apprendimento automatico a volte può soddisfare questi requisiti, ma non rimuoverà magicamente tale complessità.
- Nella migliore delle ipotesi, puoi approssimare una soluzione sufficientemente buona.
- Nel peggiore dei casi, stai ignorando completamente i tuoi requisiti.
ML è solo un set di strumenti matematici e nessuna sostituzione per la raccolta di requisiti, la scrittura di codice, l'esecuzione di test. Devi ancora fare ingegneria del software.