- Cos'è l'apprendimento automatico ?
- Cosa fa il codice di machine learning ?
- Quando diciamo che la macchina impara, modifica il codice di se stessa o modifica la cronologia (database) che conterrà l'esperienza del codice per un dato insieme di input?
Risposte:
Cos'è l'apprendimento automatico?
Essenzialmente, è un metodo per insegnare ai computer a fare e migliorare previsioni o comportamenti basati su alcuni dati. Cosa sono questi "dati"? Bene, dipende interamente dal problema. Potrebbe trattarsi delle letture dei sensori di un robot mentre impara a camminare o dell'output corretto di un programma per determinati input.
Un altro modo di pensare all'apprendimento automatico è che si tratta di "riconoscimento di schemi", l'atto di insegnare a un programma a reagire o riconoscere schemi.
Cosa fa il codice di machine learning?
Dipende dal tipo di machine learning di cui parli. L'apprendimento automatico è un campo enorme , con centinaia di algoritmi diversi per risolvere una miriade di problemi diversi - vedere Wikipedia per ulteriori informazioni; in particolare, guarda sotto Tipi di algoritmi .
Quando diciamo che la macchina impara, modifica il codice di se stessa o modifica la cronologia (Data Base) che conterrà l'esperienza del codice per un dato insieme di input?
Ancora una volta, dipende .
Un esempio di codice che viene effettivamente modificato è la programmazione genetica , in cui essenzialmente si evolve un programma per completare un'attività (ovviamente, il programma non modifica se stesso, ma modifica un altro programma per computer).
Le reti neurali , d'altra parte, modificano i loro parametri automaticamente in risposta agli stimoli preparati e alla risposta attesa. Ciò consente loro di produrre molti comportamenti (in teoria, possono produrre qualsiasi comportamento perché possono approssimare qualsiasi funzione con una precisione arbitraria, dato un tempo sufficiente).
Devo notare che il tuo uso del termine "database" implica che gli algoritmi di apprendimento automatico funzionano "ricordando" informazioni, eventi o esperienze. Questo non è necessariamente (o anche spesso!) Il caso.
Le reti neurali, che ho già menzionato, mantengono solo lo "stato" corrente dell'approssimazione, che viene aggiornato man mano che avviene l'apprendimento. Piuttosto che ricordare cosa è successo e come reagire, le reti neurali costruiscono una sorta di "modello" del loro "mondo". Il modello dice loro come reagire a determinati input, anche se gli input sono qualcosa che non ha mai visto prima.
Quest'ultima capacità, la capacità di reagire a input mai visti prima, è uno dei principi fondamentali di molti algoritmi di apprendimento automatico. Immagina di provare a insegnare al conducente di un computer a navigare sulle autostrade nel traffico. Usando la metafora del tuo "database", dovresti insegnare al computer esattamente cosa fare in milioni di possibili situazioni. Un algoritmo di apprendimento automatico efficace sarebbe (si spera!) In grado di apprendere somiglianze tra stati diversi e reagire in modo simile.
Le somiglianze tra gli stati possono essere qualsiasi cosa - anche cose che potremmo pensare come "banali" possono davvero far saltare in aria un computer! Ad esempio, supponiamo che il conducente del computer abbia imparato che quando un'auto davanti a lui ha rallentato, ha dovuto rallentare a. Per un essere umano, sostituire l'auto con una motocicletta non cambia nulla: riconosciamo che anche la motocicletta è un veicolo. Per un algoritmo di apprendimento automatico, questo può effettivamente essere sorprendentemente difficile! Un database dovrebbe memorizzare le informazioni separatamente sul caso in cui un'auto è davanti e dove una motocicletta è davanti. Un algoritmo di apprendimento automatico, d'altra parte, "apprenderebbe" dall'esempio dell'auto e sarebbe in grado di generalizzare automaticamente all'esempio della motocicletta.
L'apprendimento automatico è un campo dell'informatica, della teoria della probabilità e della teoria dell'ottimizzazione che consente di risolvere compiti complessi per i quali un approccio logico / procedurale non sarebbe possibile o fattibile.
Esistono diverse categorie di machine learning, incluse (ma non limitate a):
Apprendimento supervisionato
Nell'apprendimento supervisionato, hai una funzione davvero complessa (mappatura) dagli input agli output, hai molti esempi di coppie di input / output, ma non sai quale sia quella funzione complicata. Un algoritmo di apprendimento supervisionato consente, dato un ampio set di dati di coppie input / output, di prevedere il valore di output per un nuovo valore di input che potresti non aver visto prima. Il metodo di base è suddividere il set di dati in un set di addestramento e un set di test. Hai un modello con una funzione di errore associata che cerchi di ridurre al minimo nel set di addestramento, quindi ti assicuri che la tua soluzione funzioni sul set di test. Dopo aver ripetuto l'operazione con diversi algoritmi e / o parametri di apprendimento automatico fino a quando il modello non si comporta abbastanza bene sul set di test, puoi provare a utilizzare il risultato su nuovi input. Notare che in questo caso il programma non cambia, cambia solo il modello (dati). Sebbene si possa, in teoria, produrre un programma diverso, ma ciò non viene fatto nella pratica, per quanto ne so. Un esempio di apprendimento supervisionato potrebbe essere il sistema di riconoscimento delle cifre utilizzato dall'ufficio postale, dove mappa i pixel sulle etichette nel set 0 ... 9, utilizzando un ampio set di immagini di cifre che sono state etichettate a mano come 0 ... 9.
Insegnamento rafforzativo
Nell'apprendimento per rinforzo, il programma è responsabile del prendere decisioni e riceve periodicamente una sorta di premio / utilità per le sue azioni. Tuttavia, a differenza del caso dell'apprendimento supervisionato, i risultati non sono immediati; l'algoritmo potrebbe prescrivere un'ampia sequenza di azioni e ricevere feedback solo alla fine. Nell'apprendimento per rinforzo, l'obiettivo è costruire un buon modello in modo tale che l'algoritmo generi la sequenza di decisioni che portano alla massima utilità / ricompensa a lungo termine. Un buon esempio di apprendimento per rinforzo è insegnare a un robot come navigare assegnando una penalità negativa ogni volta che il suo sensore di urto rileva di aver urtato un oggetto. Se codificato correttamente, è possibile che il robot possa eventualmente correlare i dati del sensore del telemetro con i dati del sensore del paraurti e le direzioni che invia alle ruote,
Ulteriori informazioni
Se sei interessato a saperne di più, ti consiglio vivamente di leggere Pattern Recognition and Machine Learning di Christopher M. Bishop o seguire un corso di machine learning. Potresti anche essere interessato a leggere, gratuitamente, gli appunti di CIS 520: Machine Learning at Penn .
L'apprendimento automatico è una disciplina scientifica che si occupa della progettazione e dello sviluppo di algoritmi che consentono ai computer di evolvere comportamenti basati su dati empirici, come dati di sensori o database. Leggi di più su Wikipedia
Il codice di apprendimento automatico registra "fatti" o approssimazioni in una sorta di memoria e con gli algoritmi calcola diverse probabilità.
Il codice stesso non verrà modificato quando una macchina apprende, solo il database di ciò che "conosce".
L'apprendimento automatico è semplicemente un termine generico per definire una varietà di algoritmi di apprendimento che producono un quasi apprendimento da esempi (senza etichetta / etichettati). L'effettiva accuratezza / errore è interamente determinato dalla qualità dei dati di addestramento / test forniti al tuo algoritmo di apprendimento. Questo può essere misurato utilizzando un tasso di convergenza. Il motivo per cui fornisci esempi è perché desideri che l'algoritmo di apprendimento di tua scelta sia in grado di generalizzare in modo informativo tramite guida. Gli algoritmi possono essere classificati in due aree principali di apprendimento supervisionato (classificazione) e tecniche di apprendimento non supervisionato (clustering). È estremamente importante che tu prenda una decisione informata su come intendi separare i tuoi set di dati di formazione e test, nonché la qualità che fornisci al tuo algoritmo di apprendimento. Quando fornisci set di dati, vuoi anche essere consapevole di cose come l'adattamento eccessivo e il mantenimento di un senso di pregiudizio sano nei tuoi esempi. L'algoritmo quindi impara fondamentalmente a scrivere sulla base della generalizzazione che ottiene dai dati che gli hai fornito sia per l'addestramento che per i test in corso provi a far sì che il tuo algoritmo di apprendimento produca nuovi esempi sulla base della tua formazione mirata. Nel clustering c'è pochissima guida informativa che l'algoritmo cerca fondamentalmente di produrre attraverso misure di modelli tra i dati per costruire insiemi correlati di cluster, ad esempio kmeans / knearest neighbour. L'algoritmo quindi impara fondamentalmente a scrivere sulla base della generalizzazione che ottiene dai dati che gli hai fornito sia per l'addestramento che per i test in corso provi a far sì che il tuo algoritmo di apprendimento produca nuovi esempi sulla base della tua formazione mirata. Nel clustering c'è pochissima guida informativa che l'algoritmo cerca fondamentalmente di produrre attraverso misure di modelli tra i dati per costruire insiemi correlati di cluster, ad esempio kmeans / knearest neighbour. L'algoritmo quindi impara fondamentalmente a scrivere sulla base della generalizzazione che ottiene dai dati che gli hai fornito sia per l'addestramento che per i test in corso provi a far sì che il tuo algoritmo di apprendimento produca nuovi esempi sulla base della tua formazione mirata. Nel clustering c'è pochissima guida informativa che l'algoritmo cerca fondamentalmente di produrre attraverso misure di modelli tra i dati per costruire insiemi correlati di cluster, ad esempio kmeans / knearest neighbour.
alcuni buoni libri: Introduction to ML (Nilsson / Stanford), Gaussian Process for ML, Introduction to ML (Alpaydin), Information Theory Inference and Learning Algorithms (libro molto utile), Machine Learning (Mitchell), Pattern Recognition e Machine Learning (standard Libro di corso ML a Edimburgo e vari Unis ma lettura relativamente pesante con la matematica), Data Mining e Apprendimento automatico pratico con Weka (lavora attraverso la teoria usando weka e pratica in Java)
Apprendimento per rinforzo c'è un libro online gratuito che puoi leggere: http://www.cs.ualberta.ca/~sutton/book/ebook/the-book.html
IR, IE, Consigli e Text / Data / Web Mining in generale utilizzano molti principi di Machine Learning. Puoi persino applicare qui tecniche di ottimizzazione metaeuristica / globale per automatizzare ulteriormente i tuoi processi di apprendimento. Ad esempio, applica una tecnica evolutiva come GA (algoritmo genetico) per ottimizzare il tuo approccio basato sulla rete neurale (che può utilizzare alcuni algoritmi di apprendimento). Puoi affrontarlo puramente sotto forma di un approccio probablistico di apprendimento automatico, ad esempio l'apprendimento bayesiano. La maggior parte di questi algoritmi hanno tutti un uso molto intenso delle statistiche. I concetti di convergenza e generalizzazione sono importanti per molti di questi algoritmi di apprendimento.
L'apprendimento automatico è lo studio della scienza informatica per creare algoritmi in grado di classificare informazioni che non hanno visto prima, apprendendo modelli dalla formazione su informazioni simili. Ci sono tutti i tipi di "studenti" in questo senso. Reti neurali, reti bayesiane, alberi decisionali, algoritmi di k-clustering, modelli di markov nascosti e macchine a vettori di supporto sono esempi.
In base allo studente, ognuno impara in modi diversi. Alcuni studenti producono quadri comprensibili dall'uomo (es. Alberi decisionali), e alcuni sono generalmente imperscrutabili (es. Reti neurali).
Gli studenti sono tutti essenzialmente guidati dai dati, il che significa che salvano il loro stato come dati da riutilizzare in seguito. Non si auto-modificano in quanto tali, almeno in generale.
Penso che una delle definizioni più interessanti di machine learning che abbia letto provenga da questo libro di Tom Mitchell. Facile da ricordare e intuitivo.
Si dice che un programma per computer impari dall'esperienza E rispetto a una classe di compiti T e alla misura della prestazione P, se la sua prestazione nei compiti in T, misurata da P, migliora con l'esperienza E
A computer program is said to learn in the context of performing a task if its performance with respect to some measure improves with experience.
Spudoratamente strappato da Wikipedia: l'apprendimento automatico è una disciplina scientifica che si occupa della progettazione e dello sviluppo di algoritmi che consentono ai computer di evolvere comportamenti basati su dati empirici, come dati di sensori o database.
Molto semplicemente, il codice di machine learning esegue un'attività di machine learning. Questo può essere un numero di cose, dall'interpretazione dei dati dei sensori a un algoritmo genetico.
Direi che dipende. No, modificare il codice non è normale, ma non è al di fuori del regno delle possibilità. Inoltre, non direi che l'apprendimento automatico modifica sempre una cronologia. A volte non abbiamo una storia su cui costruire. A volte vogliamo semplicemente reagire all'ambiente, ma in realtà non imparare dalle nostre esperienze passate.
Fondamentalmente, l'apprendimento automatico è una disciplina molto aperta che contiene molti metodi e algoritmi che rendono impossibile che ci sia 1 risposta alla tua terza domanda.
L'apprendimento automatico è un termine che viene preso dal mondo reale di una persona e applicato a qualcosa che non può effettivamente imparare: una macchina.
Per aggiungere alle altre risposte, l'apprendimento automatico non cambierà (di solito) il codice, ma potrebbe cambiare il suo percorso di esecuzione e la decisione in base ai dati precedenti o ai nuovi dati raccolti e quindi l'effetto "apprendimento".
ci sono molti modi per "insegnare" a una macchina: dai pesi a molti parametri di un algoritmo, e poi fai in modo che la macchina lo risolva per molti casi, ogni volta che le dai un feedback sulla risposta e la macchina regola i pesi secondo quanto era vicina la risposta della macchina alla tua risposta o in base al punteggio che hai dato alla risposta, o in base ad alcuni algoritmi di test dei risultati.
Questo è un modo di imparare e ce ne sono molti altri ...