Risultati Ricerca Intelligenza Artificiale Italia
239 risultati trovati per "python"
- Guida completa per diventare Prompt Engineer: competenze e percorsi formativi
Un prompt generico come: "Scrivi un codice Python per creare una pagina di login." potrebbe funzionare Un prompt engineer , invece, lo affinerebbe così: "Agisci come uno sviluppatore Python esperto e guida Statistica, visualizzazione dati, ML Pandas, NumPy, R, Python Prompt Engineer Crea e perfeziona prompt Padroneggia Python Una solida conoscenza di Python è essenziale per diventare prompt engineer. Passaggi per apprendere Python per il prompt engineering: Studia la sintassi del linguaggio.
- Gli Algoritmi di Deep Learning o Apprendimento profondo più diffusi e usati nel 2023
Ecco l'elenco dei 10 algoritmi di deep learning più popolari: Reti neurali convoluzionali (CNN) Reti di memoria a lungo termine (LSTM) Reti neurali ricorrenti (RNN) Reti generative avversarie (GAN) Reti con funzioni a base radiale (RBFN) Perceptron multistrato (MLP) Mappe autoorganizzanti (SOM) Reti di credenze profonde (DBN) Macchine Boltzmann con restrizioni (RBM) Autoencoder Gli algoritmi di deep learning funzionano con quasi tutti i tipi di dati e richiedono grandi quantità di potenza di calcolo e informazioni per risolvere problemi complicati. Ora, approfondiamo i 10 migliori algoritmi di deep learning. 1. Reti neurali convoluzionali (CNN) Le CNN , note anche come ConvNet, sono costituite da più livelli e sono utilizzate principalmente per l'elaborazione delle immagini e il rilevamento di oggetti. Yann LeCun ha sviluppato la prima CNN nel 1988 quando si chiamava LeNet. È stato utilizzato per riconoscere caratteri come codici postali e cifre. Le CNN sono ampiamente utilizzate per identificare immagini satellitari, elaborare immagini mediche, prevedere serie temporali e rilevare anomalie. Come funzionano le CNN? Le CNN hanno più livelli che elaborano ed estraggono caratteristiche dai dati: Livello di convoluzione La CNN ha un livello di convoluzione che dispone di diversi filtri per eseguire l'operazione di convoluzione. Unità lineare rettificata (ReLU) Le CNN hanno un livello ReLU per eseguire operazioni sugli elementi. L'output è una mappa delle caratteristiche rettificata. Strato di raggruppamento La mappa delle caratteristiche rettificata viene quindi alimentata in un livello di pooling. Il pooling è un'operazione di downsampling che riduce le dimensioni della mappa delle caratteristiche. Il livello di pool quindi converte gli array bidimensionali risultanti dalla mappa delle caratteristiche del pool in un singolo vettore lungo, continuo e lineare appiattendolo. Livello completamente connesso Un livello completamente connesso si forma quando la matrice appiattita dal livello di pool viene alimentata come input, che classifica e identifica le immagini. Di seguito è riportato un esempio di un'immagine elaborata tramite CNN. 2. Reti di memoria a lungo termine (LSTM) Gli LSTM sono un tipo di rete neurale ricorrente (RNN) in grado di apprendere e memorizzare le dipendenze a lungo termine. Richiamare le informazioni passate per lunghi periodi è il comportamento predefinito. Gli LSTM conservano le informazioni nel tempo. Sono utili nella previsione di serie temporali perché ricordano gli input precedenti. Gli LSTM hanno una struttura a catena in cui quattro strati interagenti comunicano in un modo unico. Oltre alle previsioni di serie temporali, gli LSTM vengono generalmente utilizzati per il riconoscimento vocale, la composizione musicale e lo sviluppo farmaceutico. Come funzionano gli LSTM? In primo luogo, dimenticano parti irrilevanti dello stato precedente Successivamente, aggiornano selettivamente i valori dello stato della cella Infine, l'output di alcune parti dello stato della cella Di seguito è riportato un diagramma di come funzionano gli LSTM: 3. Reti neurali ricorrenti (RNN) Gli RNN hanno connessioni che formano cicli diretti, che consentono alle uscite dell'LSTM di essere alimentate come ingressi alla fase corrente. L'uscita dell'LSTM diventa un ingresso alla fase corrente e può memorizzare ingressi precedenti grazie alla sua memoria interna. Gli RNN sono comunemente usati per sottotitoli di immagini, analisi di serie temporali, elaborazione del linguaggio naturale, riconoscimento della scrittura a mano e traduzione automatica. Un RNN spiegato assomiglia a questo: Come funzionano gli RNN? L'uscita all'istante t-1 alimenta l'ingresso all'istante t. Allo stesso modo, l'uscita al tempo t alimenta l'ingresso al tempo t+1. Gli RNN possono elaborare input di qualsiasi lunghezza. Il calcolo tiene conto delle informazioni storiche e la dimensione del modello non aumenta con la dimensione dell'input. Ecco un esempio di come funziona la funzione di completamento automatico di Google: 4. Reti generative avversarie (GAN) I GAN sono algoritmi di deep learning generativo che creano nuove istanze di dati che assomigliano ai dati di training. GAN ha due componenti: un generatore, che impara a generare dati falsi, e un discriminatore, che apprende da tali informazioni false. L'utilizzo di GAN è aumentato nel corso del tempo. Possono essere utilizzati per migliorare le immagini astronomiche e simulare lenti gravitazionali per la ricerca sulla materia oscura. Gli sviluppatori di videogiochi utilizzano i GAN per migliorare le trame 2D a bassa risoluzione nei vecchi videogiochi ricreandole in 4K o risoluzioni superiori tramite l'addestramento delle immagini. I GAN aiutano a generare immagini realistiche e personaggi dei cartoni animati, creare fotografie di volti umani e renderizzare oggetti 3D. Come funzionano i GAN? Il discriminatore impara a distinguere tra i dati falsi del generatore e i dati di esempio reali. Durante l'addestramento iniziale, il generatore produce dati falsi e il discriminatore impara rapidamente a dire che sono falsi. Il GAN invia i risultati al generatore e al discriminatore per aggiornare il modello. Di seguito è riportato un diagramma di come funzionano i GAN: 5. Reti di funzioni a base radiale (RBFN) Gli RBFN sono tipi speciali di reti neurali feedforward che utilizzano funzioni a base radiale come funzioni di attivazione. Hanno un livello di input, un livello nascosto e un livello di output e sono principalmente utilizzati per la classificazione, la regressione e la previsione delle serie temporali. Come funzionano gli RBFN? Gli RBFN eseguono la classificazione misurando la somiglianza dell'input con gli esempi del training set. Gli RBFN hanno un vettore di input che alimenta il livello di input. Hanno uno strato di neuroni RBF. La funzione trova la somma ponderata degli input e il livello di output ha un nodo per categoria o classe di dati. I neuroni nello strato nascosto contengono le funzioni di trasferimento gaussiane, che hanno uscite inversamente proporzionali alla distanza dal centro del neurone. L'output della rete è una combinazione lineare delle funzioni a base radiale dell'input e dei parametri del neurone. Guarda questo esempio di RBFN: 6. Perceptron multistrato (MLP) Gli MLP sono un luogo eccellente per iniziare a conoscere la tecnologia di deep learning. Gli MLP appartengono alla classe delle reti neurali feedforward con più strati di percettroni che hanno funzioni di attivazione. Gli MLP sono costituiti da un livello di input e un livello di output completamente connessi. Hanno lo stesso numero di livelli di input e output ma possono avere più livelli nascosti e possono essere utilizzati per creare software di riconoscimento vocale, riconoscimento di immagini e traduzione automatica. Come funzionano gli MLP? Gli MLP inviano i dati al livello di input della rete. Gli strati di neuroni si collegano in un grafico in modo che il segnale passi in una direzione. Gli MLP calcolano l'input con i pesi che esistono tra il livello di input e i livelli nascosti. Gli MLP utilizzano funzioni di attivazione per determinare quali nodi attivare. Le funzioni di attivazione includono ReLU, funzioni sigmoid e tanh. Gli MLP addestrano il modello a comprendere la correlazione e apprendono le dipendenze tra le variabili indipendenti e target da un set di dati di addestramento. Di seguito è riportato un esempio di MLP. Il diagramma calcola pesi e bias e applica funzioni di attivazione adatte per classificare le immagini di cani e gatti. 7. Mappe autoorganizzanti (SOM) Il professor Teuvo Kohonen ha inventato i SOM, che consentono alla visualizzazione dei dati di ridurre le dimensioni dei dati attraverso reti neurali artificiali auto-organizzanti. La visualizzazione dei dati tenta di risolvere il problema che gli esseri umani non possono visualizzare facilmente i dati ad alta dimensione. I SOM sono creati per aiutare gli utenti a comprendere queste informazioni ad alta dimensionalità. Come funzionano i SOM? I SOM inizializzano i pesi per ogni nodo e scelgono un vettore a caso dai dati di addestramento. I SOM esaminano ogni nodo per trovare quali pesi sono il vettore di input più probabile. Il nodo vincente è chiamato Best Matching Unit (BMU). I SOM scoprono il quartiere della BMU e la quantità di vicini diminuisce nel tempo. I SOM assegnano un peso vincente al vettore campione. Più un nodo è vicino a una BMU, più il suo peso cambia.. Più il vicino è lontano dal BMU, meno impara. I SOM ripetono il passaggio due per N iterazioni. Di seguito, vedere un diagramma di un vettore di input di diversi colori. Questi dati vengono inviati a un SOM, che quindi converte i dati in valori RGB 2D. Infine, separa e classifica i diversi colori. 8. Deep Belief Networks (DBN) I DBN sono modelli generativi costituiti da più livelli di variabili stocastiche e latenti. Le variabili latenti hanno valori binari e sono spesso chiamate unità nascoste. I DBN sono una pila di macchine Boltzmann con connessioni tra gli strati e ogni strato RBM comunica con entrambi i livelli precedenti e successivi. Le Deep Belief Networks (DBN) vengono utilizzate per il riconoscimento di immagini, il riconoscimento video e i dati di acquisizione del movimento. Come funzionano i DBN? Gli algoritmi di apprendimento avidi addestrano i DBN. L'algoritmo di apprendimento greedy utilizza un approccio strato per strato per l'apprendimento dei pesi generativi dall'alto verso il basso. I DBN eseguono le fasi del campionamento di Gibbs sui primi due livelli nascosti. Questa fase estrae un campione dall'RBM definito dai due strati nascosti superiori. I DBN prelevano un campione dalle unità visibili utilizzando un singolo passaggio di campionamento ancestrale attraverso il resto del modello. I DBN apprendono che i valori delle variabili latenti in ogni livello possono essere dedotti da un singolo passaggio dal basso verso l'alto. 9. Macchine Boltzmann con restrizioni (RBM) Sviluppati da Geoffrey Hinton, gli RBM sono reti neurali stocastiche che possono apprendere da una distribuzione di probabilità su un insieme di input. Questo algoritmo di deep learning viene utilizzato per la riduzione della dimensionalità, la classificazione, la regressione, il filtraggio collaborativo, l'apprendimento delle funzionalità e la modellazione degli argomenti. Gli RBM costituiscono gli elementi costitutivi dei DBN. Gli RBM sono costituiti da due strati: Unità visibili Unità nascoste Ogni unità visibile è collegata a tutte le unità nascoste. Gli RBM hanno un'unità di polarizzazione collegata a tutte le unità visibili e alle unità nascoste e non hanno nodi di output. Come funzionano gli RBM? Gli RBM hanno due fasi: passaggio in avanti e passaggio all'indietro. Gli RBM accettano gli input e li traducono in una serie di numeri che codificano gli input nel passaggio in avanti. Gli RBM combinano ogni input con un peso individuale e un bias complessivo. L'algoritmo passa l'output al livello nascosto. Nel passaggio all'indietro, gli RBM prendono quel set di numeri e li traducono per formare gli input ricostruiti. Gli RBM combinano ogni attivazione con il peso individuale e la distorsione complessiva e trasmettono l'output allo strato visibile per la ricostruzione. Al livello visibile, l'RBM confronta la ricostruzione con l'input originale per analizzare la qualità del risultato. 10. Autoencoder Gli autoencoder sono un tipo specifico di rete neurale feedforward in cui l'input e l'output sono identici. Geoffrey Hinton ha progettato autoencoder negli anni '80 per risolvere problemi di apprendimento senza supervisione. Sono reti neurali addestrate che replicano i dati dal livello di input al livello di output. Gli autoencoder vengono utilizzati per scopi quali la scoperta farmaceutica, la previsione della popolarità e l'elaborazione delle immagini. Come funzionano gli autoencoder? Un autoencoder è costituito da tre componenti principali: l'encoder, il codice e il decoder. Gli autoencoder sono strutturati per ricevere un input e trasformarlo in una rappresentazione diversa. Quindi tentano di ricostruire l'input originale nel modo più accurato possibile. Quando l'immagine di una cifra non è chiaramente visibile, viene alimentata da una rete neurale di codifica automatica. Gli autoencoder prima codificano l'immagine, quindi riducono la dimensione dell'input in una rappresentazione più piccola. Infine, l'autoencoder decodifica l'immagine per generare l'immagine ricostruita. Conclusione Il deep learning si è evoluto negli ultimi cinque anni e gli algoritmi di deep learning sono diventati molto popolari in molti settori. Se hai domande su un algoritmo di deep learning dopo aver letto questo articolo, scrivi nella sezione commenti e il team di esperti ti risponderà presto.
- Cosa sono i Big data
in informatica, statistica o un campo correlato e sono esperti in linguaggi di programmazione come Python
- Come creare una semplice intelligenza artificiale
Analisi esplorativa dati con Python. quale è meglio per creare modelli di deep learning Reti Neurali con python tutorial completo 5. Ci sono molti linguaggi là fuori, come il classico C++ e linguaggi più moderni come python e R. Perchè Python per l'AI PyScript, come usare Python nel browser! LA FINE di JavaScript 6. Da poco puoi anche usare python direttamente nelle pagine HTML con PyScript PyScript, come usare Python
- Ciclo di vita del Machine Learning e delle Intelligenze artificiali
25 righe di codice Tutorial di Regressione Logistica per l'apprendimento automatico Scikit Learn e Python Tutorial Per Creare Modelli di Intelligenza Artificiale Tutorial Pratico Tensorflow , TensorBoard e Python Principianti e non Spiegazione della più semplice rete neurale per principianti PyScript, come usare Python in Python con Keras Step-By-Step Come costruire modelli predittivi sanitari utilizzando PyHealth? Implementare le reti neurali ricorrenti (RNN) con Python e Keras Deep learnign e python : Object Recognition
- OpenAI o3-mini: Prestazioni, Come Accederci e Confronto con i Competitor
. 🔹 Step 3: Installare il Pacchetto OpenAI Python SDK Per interagire con l’API di OpenAI da Python , comando nel terminale o nell’ambiente di sviluppo: pip install openai 📌 Nota: Assicurati di avere Python iniziare a interagire con o3-mini. 👨💻 Esempio di codice per impostare la chiave API in un ambiente Python Example 3: Input: l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9] Output: [8,9,9,9,0,0,0,1] Write the solution in Python Invia una richiesta a o3-mini per generare una soluzione in Python.
- Scegliere l'algoritmo di clustering giusto per i tuoi dati
Esempio Python: Come scegliere l'algoritmo di clustering giusto 3.
- Crea un Chatbot sui tuoi Dati CSV con LangChain e OpenAI: Una Guida Completa
Streamlit: Un framework Python per creare applicazioni web interattive con facilità. LangChain: Una libreria Python che semplifica l'integrazione di modelli di linguaggio di grandi dimensioni Questa potente libreria Python ci consentirà di integrare facilmente il modello di linguaggio di OpenAI langchain openai faiss-cpu tiktoken Una volta installate le librerie, importiamole nel nostro script Python Per eseguire il chatbot, segui questi semplici passaggi: Salva il codice in un file Python: Assicurati
- Come creare un API per un modello di machine learning in 5 minuti
Flask è un micro framework web scritto in Python. Cosa sono le API? ) in un'API in Python. Venendo a Flask, è un framework di sviluppo di servizi Web in Python. Flask è il preferito dagli sviluppatori Python per molte ragioni. Per esempio: python request.py -> <Response[200]> “[1.]"
- Come creare una rete neurale con java
In questo post affronteremo l'Intelligenza Artificiale a piccoli passi e proveremo a costruire una rete neurale molto semplice in Java. COS'È UNA RETE NEURALE? Una rete neurale è una rappresentazione software di come funziona il cervello. Sfortunatamente, non sappiamo ancora come funzioni esattamente il cervello, ma conosciamo un po' la biologia alla base di questo processo: il cervello umano è costituito da 100 miliardi di cellule chiamate neuroni, collegate tra loro da sinapsi. Se un numero sufficiente di sinapsi si collega a un neurone si attiverà. Questo processo è noto come "pensare". Proviamo quindi a modellare il processo di cui sopra utilizzando un esempio molto semplice che ha 3 input (sinapsi) e si traduce in un singolo output (1 neurone di attivazione). Creare una semplice rete neurale con java Addestreremo la nostra rete neurale nell' immagine sopra per risolvere il seguente problema. Riesci a capire lo schema e indovinare quale dovrebbe essere il valore del nuovo input? 0 o 1? La risposta è in realtà molto semplicemente il valore della colonna più a sinistra, cioè 1! Quindi, ora che abbiamo il modello di un cervello umano, cercheremo di far apprendere alla nostra rete neurale quale schema è dato al set di addestramento. Per prima cosa assegneremo a ciascun input un numero casuale per produrre un output. La formula per calcolare l'uscita è data come segue: ∑ weioghtio.ionptutio = weioght1.ionptut1 + weioght2.ionptut2 + weioght3.ionptut3 A quanto pare vorremmo normalizzare questo valore di output su qualcosa tra 0 e 1 in modo che la previsione abbia senso. Dopo la normalizzazione confrontiamo l'output con l'output atteso dei nostri input. Questo ci dà l'errore, o quanto è lontana la nostra previsione. Possiamo quindi utilizzare questo errore per regolare leggermente i pesi della nostra rete neurale e tentare nuovamente la fortuna sullo stesso input. Questo può essere riassunto nella seguente immagine: Ripetiamo questo processo di addestramento per tutti gli input 10.000 volte per raggiungere una rete neurale adeguatamente addestrata. Possiamo quindi utilizzare questa rete neurale per fare previsioni su nuovi input! Prima di passare all'implementazione, tuttavia, dobbiamo ancora chiarire come abbiamo ottenuto la normalizzazione e l'adeguamento del peso in base all'errore (noto anche come back-propagation). Normalizzare i dati per la rete neurale con java In una rete neurale di ispirazione biologica, l'output di un neurone è solitamente un'astrazione che rappresenta la velocità di attivazione del potenziale d'azione nella cellula. Nella sua forma più semplice, questo è un valore binario, cioè o il neurone si sta attivando o meno. Da qui la necessità di normalizzazione di questo valore di uscita. Per ottenere questa normalizzazione applichiamo quella che è nota come funzione di attivazione all'output del neurone. Se prendiamo l'esempio di una funzione passo Heaviside davvero semplice che assegna uno 0 a qualsiasi valore negativo e un 1 a qualsiasi valore positivo, allora sarebbe necessario un gran numero di neuroni per raggiungere la granularità richiesta di regolare lentamente i pesi per raggiungere un consenso accettabile del set di formazione. Come vedremo nella prossima sezione sulla retropropagazione, questo concetto di aggiustamento lento dei pesi può essere rappresentato matematicamente come la pendenza della funzione di attivazione. In termini biologici, può essere considerato come l'aumento della velocità di accensione che si verifica all'aumentare della corrente di ingresso. Se dovessimo utilizzare una funzione lineare invece della funzione di Heaviside, scopriremmo che la rete risultante avrebbe una convergenza instabile perché gli input dei neuroni lungo i percorsi preferiti tenderebbero ad aumentare senza limiti, poiché una funzione lineare non è normalizzabile. Tutti i problemi sopra menzionati possono essere gestiti utilizzando una funzione di attivazione sigmoidea normalizzabile. Un modello realistico rimane a zero fino a quando non viene ricevuta la corrente di ingresso, a quel punto la frequenza di attivazione aumenta rapidamente all'inizio, ma si avvicina gradualmente a un asintoto con una frequenza di attivazione del 100%. Matematicamente, questo è simile a: Se tracciata su un grafico, la funzione Sigmoid disegna una curva a forma di S: Pertanto, diventa ora la formula finale per l'output di un neurone : Ci sono altre funzioni di normalizzazione che possiamo usare, ma il sigmoide ha il vantaggio di essere abbastanza semplice e di avere anche una semplice derivata che sarà utile quando osserveremo la propagazione posteriore di seguito. Back Propagation per la rete neurale con java Durante il ciclo di allenamento, abbiamo regolato i pesi in base all'errore. Per fare ciò, possiamo utilizzare la formula "Derivata ponderata per l'errore". UNdjtuStment = error.ionptut.SiogmoiodCturveGrundioent(otutptut) Il motivo per cui utilizziamo questa formula è che in primo luogo, vogliamo rendere la regolazione proporzionale alla dimensione dell'errore. In secondo luogo, moltiplichiamo per l'input, che è uno 0 o un 1. Se l'input è 0, il peso non viene regolato. Infine, moltiplichiamo per il gradiente della curva Sigmoide (o la derivata). Il motivo per cui utilizziamo il gradiente è perché stiamo cercando di ridurre al minimo la perdita. In particolare, lo facciamo con un metodo di discesa del gradiente . Fondamentalmente significa che dal nostro punto corrente nello spazio dei parametri (determinato dall'insieme completo dei pesi correnti), vogliamo andare in una direzione che diminuirà la funzione di perdita. Visualizza in piedi su una collina e cammina lungo la direzione in cui il pendio è più ripido. Il metodo di discesa del gradiente applicato alla nostra rete neurale è illustrato come segue: Se l'output del neurone è un grande numero positivo o negativo, significa che il neurone era abbastanza sicuro in un modo o nell'altro. Dal grafico sigmoideo, possiamo vedere che in grandi numeri la curva sigmoidea ha un gradiente poco profondo. Pertanto, se il neurone è sicuro che il peso esistente sia corretto, non vuole regolarlo molto e moltiplicandolo per il gradiente della curva sigmoidea si ottiene questo. La derivata della funzione sigmoidea è data dalla seguente formula SiogmoiodCturveGrundioent(otutptut)= otutptut.(1−otutptut) Sostituendo questo di nuovo nella formula di regolazione ci dà UNdjtuStment=error.ionptut.otutptut.(1−otutptut) Codice Java per la rete neurale Un punto importante ma sottile che è stato tralasciato quando si spiega la matematica di cui sopra è che per ogni iterazione di addestramento, le operazioni matematiche vengono eseguite contemporaneamente sull'intero set di addestramento. Pertanto, utilizzeremo le matrici per memorizzare l'insieme dei vettori di input, i pesi e gli output attesi. Inizieremo con la classe NeuronLayer che è solo un "punto di accesso" per i pesi nella nostra implementazione della rete neurale. Gli forniamo il numero di input per neurone e il numero di neuroni che può utilizzare per costruire una tabella dei pesi. Nel nostro esempio attuale, questo è semplicemente l'ultimo neurone di output che ha i 3 neuroni di input. public class NeuronLayer { public final Function activationFunction, activationFunctionDerivative; double[][] weights; public NeuronLayer(int numberOfNeurons, int numberOfInputsPerNeuron) { weights = new double[numberOfInputsPerNeuron][numberOfNeurons]; for (int i = 0; i < numberOfInputsPerNeuron; ++i) { for (int j = 0; j < numberOfNeurons; ++j) { weights[i][j] = (2 * Math.random()) - 1; // shift the range from 0-1 to -1 to 1 } } activationFunction = NNMath::sigmoid; activationFunctionDerivative = NNMath::sigmoidDerivative; } public void adjustWeights(double[][] adjustment) { this.weights = NNMath.matrixAdd(weights, adjustment); } } La nostra classe di rete neurale è dove si svolgono tutte le azioni. Prende come costruttore NeuronLayere ha 2 funzioni principali: think: calcola le uscite di un dato set di ingressi train: esegue i tempi del ciclo di allenamento numberOfTrainingIterations(solitamente un numero elevato come 10.000). Si noti che l'allenamento stesso implica il calcolo dell'output e quindi la regolazione dei pesi di conseguenza public class NeuralNetSimple { private final NeuronLayer layer1; private double[][] outputLayer1; public NeuralNetSimple(NeuronLayer layer1) { this.layer1 = layer1; } public void think(double[][] inputs) { outputLayer1 = apply(matrixMultiply(inputs, layer1.weights), layer1.activationFunction); } public void train(double[][] inputs, double[][] outputs, int numberOfTrainingIterations) { for (int i = 0; i < numberOfTrainingIterations; ++i) {// pass the training set through the network think(inputs);// adjust weights by error * input * output * (1 - output) double[][] errorLayer1 = matrixSubtract(outputs, outputLayer1); double[][] deltaLayer1 = scalarMultiply(errorLayer1, apply(outputLayer1, layer1.activationFunctionDerivative)); double[][] adjustmentLayer1 = matrixMultiply(matrixTranspose(inputs), deltaLayer1); // adjust the weights this.layer1.adjustWeights(adjustmentLayer1); } } public double[][] getOutput() { return outputLayer1; } } Infine abbiamo il nostro metodo principale in cui impostiamo i nostri dati di allenamento, alleniamo la nostra rete e le chiediamo di fare previsioni sui dati di test public class LearnFirstColumnSimple { public static void main(String args[]) { // create hidden layer that has 1 neuron and 3 inputs NeuronLayer layer1 = new NeuronLayer(1, 3); NeuralNetSimple net = new NeuralNetSimple(layer1); // train the net double[][] inputs = new double[][]{{0, 0, 1},{1, 1, 1},{1, 0, 1},{0, 1, 1}}; double[][] outputs = new double[][]{{0},{1},{1},{0}}; System.out.println("Training the neural net..."); net.train(inputs, outputs, 10000); System.out.println("Finished training"); System.out.println("Layer 1 weights"); System.out.println(layer1); // calculate the predictions on unknown data// 1, 0, 0 predict(new double[][], net);// 0, 1, 0 predict(new double[][], net);// 1, 1, 0 predict(new double[][], net); } public static void predict(double[][] testInput, NeuralNetSimple net) { net.think(testInput); // then System.out.println("Prediction on data "+ testInput[0][0] + " "+ testInput[0][1] + " "+ testInput[0][2] + " -> "+ net.getOutput()[0][0] + ", expected -> " + testInput[0][0]); } } Eseguendo il nostro esempio sopra, vediamo che la nostra rete ha fatto un buon lavoro nel prevedere quando l'input più a sinistra è 1 ma non sembra che riesca a ottenere lo 0 giusto! Questo perché il secondo e il terzo peso di input dovevano essere entrambi più vicini a 0. Training the neural net... Finished training Layer 1 weights [[9.672988220005456 ] [-0.2089781536334558 ] [-4.628957430141331 ] ] Prediction on data 1.0 0.0 0.0 -> 0.9999370425325528, expected -> 1.0 Prediction on data 0.0 1.0 0.0 -> 0.4479447696095623, expected -> 0.0 Prediction on data 1.0 1.0 0.0 -> 0.9999224112145153, expected -> 1.0 Nel prossimo post vedremo se l'aggiunta di un altro livello alla nostra rete neurale può aiutare a migliorare le previsioni ;)
- Cos'è un modello di Machine Learning o Apprendimento Automatico?
Una Guida Semplice e Completa per passare da Excel a Python Feature Engineering e Feature Selection in Python con Keras Step-By-Step Come costruire modelli predittivi sanitari utilizzando PyHealth? Implementare le reti neurali ricorrenti (RNN) con Python e Keras Deep learnign e python : Object Recognition esplorativa dati con Python. Analisi esplorativa dei dati (EDA) Come implementare l'algoritmo Perceptron da zero in Python
- Come Distribuire un Modello di Machine Learning usando Flask
un modello di machine learning utilizzando Flask, un potente framework web leggero e flessibile per Python Flask è un micro-framework web scritto in Python, progettato per essere leggero, flessibile e facile integrazione: Flask è progettato per lavorare senza soluzione di continuità con librerie scientifiche Python Un'altra caratteristica chiave di Flask è la sua facile integrazione con le librerie scientifiche di Python semplicemente chiamare r.json() per ottenere il risultato della previsione come un valore numerico Python
- Medicina e intelligenza artificiale - Un caso d’uso a scopo didattico Previsione dei Melanomi con l'IA
Quindi, il software necessario, in python viene reso disponibile nel programma “classificatore”, per interattiva utilizzata per creare e condividere documenti computazionali per l'analisi utilizzando Python La base operativa di python, utilizzata in questo caso, per lo sviluppo degli algoritmi di deeplearning sviluppata Keras che è una interfaccia per l'apprendimento automatico e le reti neurali, scritta in Python libreria Matplotlib molto efficacie per la creazione di grafici per il linguaggio di programmazione Python
- Come valutare algoritmi di Machine Learning o Apprendimento Automatico
25 righe di codice Tutorial di Regressione Logistica per l'apprendimento automatico Scikit Learn e Python Tutorial Per Creare Modelli di Intelligenza Artificiale Tutorial Pratico Tensorflow , TensorBoard e Python Principianti e non Spiegazione della più semplice rete neurale per principianti PyScript, come usare Python in Python con Keras Step-By-Step Come costruire modelli predittivi sanitari utilizzando PyHealth? Implementare le reti neurali ricorrenti (RNN) con Python e Keras Deep learnign e python : Object Recognition
- Falsi miti sul machine learning
Non esiste un modo giusto per entrare nell'apprendimento automatico. Impariamo tutti in modi leggermente diversi e abbiamo obiettivi diversi di ciò che vogliamo fare con o per l'apprendimento automatico. Un obiettivo comune è diventare rapidamente produttivi con l'apprendimento automatico. Se questo è il tuo obiettivo, questo post mette in evidenza cinque errori comuni che i programmatori commettono sulla strada per diventare rapidamente professionisti produttivi di machine learning. 1. Il machine learning è cosi potente da sembrare Magia L'apprendimento automatico è solo un altro insieme di tecniche che puoi utilizzare per creare soluzioni a problemi complessi. Poiché è un campo in piena espansione, l'apprendimento automatico viene generalmente comunicato in pubblicazioni accademiche e libri di testo per studenti post-laurea. Questo gli dà l'aspetto che è elitario e impenetrabile. È necessario un cambiamento di mentalità per essere efficaci nell'apprendimento automatico, dalla tecnologia al processo, dalla precisione all'"abbastanza buono", ma lo stesso si potrebbe dire per altri metodi complessi che i programmatori sono interessati ad adottare. 2. Non iniziare scrivendo codice Iniziare con l'apprendimento automatico scrivendo il codice può rendere le cose difficili perché significa che stai risolvendo almeno due problemi anziché uno: come funziona una tecnica in modo da poterla implementare e come applicare la tecnica a un determinato problema. È molto più semplice lavorare su un problema alla volta e sfruttare l'apprendimento automatico, gli ambienti statistici e le librerie di algoritmi per imparare ad applicare una tecnica a un problema. Ciò consente di controllare e mettere a punto una varietà di algoritmi in tempi relativamente brevi e di mettere a punto uno o due che sembrano promettenti piuttosto che investire grandi quantità di tempo nell'interpretazione di documenti di ricerca ambigui contenenti descrizioni di algoritmi. L'implementazione di un algoritmo può essere trattata come un progetto separato da completare in un secondo momento, ad esempio per un esercizio di apprendimento o se il sistema prototipo deve essere messo in funzione. Impara una cosa alla volta, ti consiglio di iniziare con un framework di apprendimento automatico basato su GUI, che tu sia un programmatore o meno. 3. Fare le cose manualmente Un processo circonda l'apprendimento automatico applicato, inclusa la definizione dei problemi, la preparazione dei dati e la presentazione dei risultati, tra le altre attività. Questi processi, insieme al test e alla messa a punto degli algoritmi, possono e devono essere automatizzati. L'automazione è una parte importante dello sviluppo di software moderno per build, test e distribuzione. C'è un grande vantaggio nella preparazione dei dati di script, nel test e nell'ottimizzazione degli algoritmi e nella preparazione dei risultati al fine di ottenere i vantaggi del rigore e della velocità di miglioramento. Ricorda e riutilizza le lezioni apprese nello sviluppo di software professionale. L'impossibilità di iniziare con l'automazione (come Makefiles o un sistema di build simile) è probabilmente dovuto al fatto che molti programmatori arrivano all'apprendimento automatico da libri e corsi che si concentrano meno sulla natura applicata del campo. In effetti, portare l'automazione nell'apprendimento automatico applicato è un'enorme opportunità per i programmatori . 4. Reinventare soluzioni a problemi comuni Centinaia e migliaia di persone hanno probabilmente implementato l'algoritmo che stai implementando prima di te o hanno risolto un tipo di problema simile al problema che stai risolvendo, sfruttando le loro lezioni apprese. Esiste una vasta gamma di conoscenze sulla risoluzione dell'apprendimento automatico applicato. Certo, gran parte di esso potrebbe essere legato a libri e pubblicazioni di ricerca, ma puoi accedervi. Fai i compiti e cerca su Google, Google Libri, Google Scholar e contatta la community di machine learning. Se stai implementando un algoritmo: Devi implementarlo? È possibile riutilizzare un'implementazione di un algoritmo open source esistente in una libreria o in uno strumento? Devi implementare da zero? Puoi rivedere il codice, imparare da o trasferire un'implementazione open source esistente? Devi interpretare la descrizione canonica dell'algoritmo? Ci sono descrizioni di algoritmi in altri libri, articoli, tesi o post di blog che puoi rivedere e da cui puoi imparare? Se stai affrontando un problema: Devi testare tutti gli algoritmi sul problema? Puoi sfruttare studi su questo o simili casi di problema dello stesso tipo generale che suggeriscono algoritmi e classi di algoritmi che funzionano bene? Devi raccogliere i tuoi dati? I loro set di dati o API pubblicamente disponibili che puoi utilizzare direttamente o come proxy per il tuo problema per apprendere rapidamente quali metodi potrebbero funzionare bene? Devi ottimizzare i parametri dell'algoritmo? Sono le euristiche che puoi utilizzare per configurare l'algoritmo presentato in articoli o studi sull'algoritmo? Quale sarebbe la tua strategia in caso di problemi con una libreria di programmazione o un tipo specifico di struttura dati? Usa le stesse tattiche nel campo dell'apprendimento automatico. Contatta la comunità e chiedi risorse che potresti essere in grado di sfruttare per accelerare l'apprendimento e il progresso del tuo progetto. Prendi in considerazione forum e siti di domande e risposte per iniziare e contatta accademici e specialisti come passaggio successivo. 5. Non serve davvero la matematica Non è necessaria la teoria matematica per iniziare, ma la matematica è una parte importante dell'apprendimento automatico. La ragione di ciò è che fornisce forse il modo più efficiente e inequivocabile per descrivere i problemi ei comportamenti dei sistemi. Ignorare i trattamenti matematici degli algoritmi può portare a problemi come avere una comprensione limitata di un metodo o adottare un'interpretazione limitata di un algoritmo. Ad esempio, molti algoritmi di apprendimento automatico hanno un'ottimizzazione al centro che viene aggiornata in modo incrementale. Conoscere la natura dell'ottimizzazione da risolvere (è la funzione convessa) consente di utilizzare algoritmi di ottimizzazione efficienti che sfruttano questa conoscenza. Interiorizzare il trattamento matematico degli algoritmi è lento e viene fornito con padronanza. Soprattutto se stai implementando algoritmi avanzati da zero, inclusi gli algoritmi di ottimizzazione interni, prenditi il tempo necessario per imparare l'algoritmo dal punto di vista matematico. Riepilogo In questo post hai appreso di 5 errori comuni che i programmatori commettono quando iniziano l'apprendimento automatico. Le cinque lezioni sono: Non mettere l'apprendimento automatico su un piedistallo Non scrivere codice di apprendimento automatico per iniziare Non fare le cose manualmente Non reinventare soluzioni a problemi comuni Non ignorare la matematica Condividi l'articolo per supportarci, oppure se pensi di conoscere un altro mito scrivilo nei commenti.














