Risultati Ricerca Intelligenza Artificiale Italia
484 risultati trovati con una ricerca vuota
- Come diventare uno Sviluppatore di Intelligenza Artificiale?
L'intelligenza artificiale (AI) è un processo di programmazione di un sistema informatico, un robot o un altro oggetto per pensare come un essere umano intelligente. È lo studio di come il cervello umano pensa, impara o prende decisioni e lavora per risolvere i problemi. Questa ricerca genera sistemi software intelligenti. L'intelligenza artificiale mira a migliorare le funzioni del computer legate alla comprensione umana, come il ragionamento, l'apprendimento e la risoluzione dei problemi. Il ragionamento, la rappresentazione della conoscenza, l'apprendimento, l'elaborazione del linguaggio naturale, la realizzazione e la capacità di spostare e manipolare oggetti sono tutti obiettivi della ricerca sull'IA . Nel campo dell'intelligence generale, ci sono obiettivi a lungo termine. Tra gli approcci figurano metodologie statistiche, intelligenza computazionale e intelligenza artificiale di codifica classica. Utilizziamo una varietà di strumenti nella nostra ricerca sull'intelligenza artificiale su ricerca e ottimizzazione matematica, reti neurali artificiali e metodologie basate su statistiche, probabilità ed economia. Nei campi della scienza, della matematica, della psicologia, della linguistica, della filosofia e altri, l'informatica attrae l'IA. INDICE su Come diventare uno Sviluppatore di Intelligenza Artificiale Chi è uno sviluppatore di intelligenza artificiale? Descrizione del lavoro di sviluppatore AI Ruoli e responsabilità dello sviluppatore AI Tendenze salariali degli sviluppatori AI in India/Stati Uniti Basato su Società Basato sull'esperienza Basato sulle abilità Competenze richieste per essere uno sviluppatore di intelligenza artificiale Un giorno nella vita di uno sviluppatore di intelligenza artificiale Come diventare uno sviluppatore di intelligenza artificiale? Quali sono i vantaggi di essere uno sviluppatori IA? Domande frequenti Chi è uno sviluppatore di intelligenza artificiale? Gli ingegneri dell'intelligenza artificiale (Ingegneri dell'intelligenza artificiale) o gli sviluppatori dell'intelligenza artificiale lavorano con la tecnologia dell'intelligenza artificiale per risolvere i problemi. Esaminano sia i modelli software classici che quelli di machine learning. La richiesta di questi specialisti IT è notevole, grazie allo sviluppo dell'Intelligenza Artificiale e del Machine Learning in diverse aree del business IT. Gli sviluppatori di intelligenza artificiale (AI) creano il software e le app che un'azienda potrebbe utilizzare. Creano sistemi che si adattano alle esigenze dell'azienda sulla base delle informazioni raccolte e valutate. La descrizione del lavoro di uno sviluppatore di intelligenza artificiale è autoesplicativa: crea software e applicazioni di intelligenza artificiale che un'azienda potrebbe utilizzare. Creano sistemi che si adattano alle esigenze dell'azienda sulla base delle informazioni raccolte e valutate. Un esempio è l'IA che sceglie quali film e serie TV consigliarti dal tuo servizio di streaming preferito o quali cose consigliarti in base agli acquisti precedenti. Descrizione del lavoro da sviluppatore IA Costruire, testare e distribuire modelli di intelligenza artificiale e mantenere l'infrastruttura di intelligenza artificiale sottostante fanno tutti parte del lavoro di uno sviluppatore di intelligenza artificiale. Sono risolutori di problemi che possono passare avanti e indietro tra lo sviluppo di software tradizionale e le applicazioni di apprendimento automatico. È necessario avere una conoscenza di base del machine learning per comprendere meglio questa funzione. In una parola, l'apprendimento automatico è un modo relativamente nuovo per risolvere alcuni problemi storicamente difficili nell'informatica, come la creazione di un programma in grado di riconoscere correttamente la scrittura manoscritta. Lo sviluppatore di intelligenza artificiale deve : Capire il problema Il lavoro di uno sviluppatore di intelligenza artificiale implica una comprensione approfondita della sfida. L'intelligenza artificiale viene utilizzata principalmente per trovare soluzioni ai problemi. Di conseguenza, è fondamentale che uno sviluppatore di intelligenza artificiale comprenda il problema in questione per utilizzare l'IA per aiutare a trovare una soluzione. Ci sono diversi ostacoli che tutti i settori devono affrontare; l'intelligenza artificiale aiuta nella scoperta di una soluzione, che può verificarsi solo quando il problema è completamente compreso. Per dirla in altro modo, uno sviluppatore di intelligenza artificiale deve comprendere il problema aziendale, presentare gli ostacoli tecnologici e le aree di applicazione delle tecnologie di intelligenza artificiale . Lo sviluppatore di intelligenza artificiale deve : Trovare soluzioni Un aspetto chiave del profilo di uno sviluppatore di intelligenza artificiale è trovare una soluzione. Un singolo problema ora può avere più soluzioni. È responsabilità dello sviluppatore determinare la soluzione corretta o più appropriata per un determinato problema, poiché ciò aiuterà l'organizzazione a risolvere il problema nel modo più efficace possibile. Di conseguenza, è fondamentale per uno sviluppatore di intelligenza artificiale capire qual è il problema più essenziale o rilevante. Lo sviluppatore di intelligenza artificiale deve : Creare una soluzione tecnologica È necessario un ingegnere dell'intelligenza artificiale per creare i modelli di apprendimento automatico o le applicazioni prototipo necessari utilizzando approcci di intelligenza artificiale specifici , nonché per garantire che il problema e la soluzione siano compatibili. Man mano che le industrie su tutta la linea diventano digitali o fanno un uso sostanziale dell'intelligenza artificiale, emergono una serie di problemi tecnici e blocchi stradali. È fondamentale per uno sviluppatore di intelligenza artificiale creare soluzioni tecnologiche per rimuovere questi blocchi stradali e risolvere tali sfide al fine di rendere il processo più efficiente. Ruoli e responsabilità dello sviluppatore IA Le responsabilità di uno sviluppatore di IA possono includere quanto segue: Il software AI può essere utilizzato per risolvere una varietà di problemi aziendali. Progettazione , sviluppo, implementazione e monitoraggio del sistema di intelligenza artificiale . Spiegare la promessa e i limiti dei sistemi di IA ai project manager e alle parti interessate. Creare un'architettura per l'acquisizione e la trasformazione dei dati. Cerca una tecnologia di intelligenza artificiale innovativa da implementare all'interno dell'azienda. Quando si tratta dell'implementazione di sistemi di intelligenza artificiale, addestra i tuoi team. Tendenze salariali degli sviluppatori IA in India/Stati Uniti L'ingegneria dell'IA è attualmente uno dei percorsi professionali più gratificanti del pianeta. Per un po' di tempo, il mercato del lavoro basato sull'intelligenza artificiale si sta espandendo a un ritmo vertiginoso. In India, il reddito medio annuo per un ingegnere di intelligenza artificiale di livello base è di circa 8 lakh (756.472,00euro), molto più alto del salario medio di qualsiasi altro laureato in ingegneria. Il compenso di un ingegnere AI al più alto livello potrebbe arrivare fino a 50 lakh (4727950,00 euro). Anche se l'ingegneria dell'IA è ancora un nuovo percorso professionale, i primi utenti dell'IA con oltre 10 anni di esperienza nel settore possono guadagnare fino a un milione ogni anno. Negli Stati Uniti, la retribuzione media annua per un ingegnere di intelligenza artificiale è superiore a $ 110.000. sviluppatori IA Basato su Società In India, il reddito medio annuo per uno sviluppatore di software AI è di $ 5.989 all'anno. Il compenso iniziale per uno sviluppatore di intelligenza artificiale negli Stati Uniti varia da $ 88.213 a $ 105.482, con un reddito medio iniziale di $ 96.711. sviluppatori IA Basato sull'esperienza Puoi guadagnare circa Rs. 40-80 mila dollari se hai 2-4 anni di esperienza nell'IA. La fascia di stipendio medio per i professionisti con 4-8 anni di esperienza è di circa Rs. 60-130 mila dollari e quelli con più di dieci anni di esperienza possono guadagnare oltre un milione di dollari l'anno. sviluppatori IA Basato sulle abilità In India, il salario medio per gli specialisti dell'IA è di gran lunga superiore alla media nazionale; i professionisti con abilità di intelligenza artificiale e titoli di studio standard guadagnano molto di più rispetto alle loro controparti con qualifiche educative uguali (senza abilità di intelligenza artificiale). Competenze richieste per essere uno sviluppatore di intelligenza artificiale Quindi, hai le credenziali e l'esperienza. La seconda considerazione è se possiedi la personalità appropriata. Se hai il tempo e la personalità adatta, puoi facilmente acquisire le capacità necessarie per lavorare come ingegnere di intelligenza artificiale. Come sviluppatore di intelligenza artificiale, avrai bisogno delle seguenti competenze: sviluppatore di intelligenza artificiale : Algoritmi e matematica Lo sviluppo dell'IA, come la maggior parte della programmazione, è un esercizio matematico. Gli ingegneri dell'IA dovrebbero essere professionisti della risoluzione dei problemi a cui piace affrontare un puzzle logico. Dovrebbero anche comprendere gli algoritmi, incluso il modo in cui funzionano, come vengono creati e come potrebbero essere migliorati. Se hai il tipo di mente che risolve costantemente equazioni matematiche, questo è un ottimo lavoro per te. sviluppatore di intelligenza artificiale : Statistica e probabilità Le componenti principali dell'IA sono la probabilità e la statistica. Si tratta di individuare modelli e tendenze in modo da poter anticipare ciò che è richiesto e adeguarsi di conseguenza. Per far sì che i loro output di IA abbiano successo, gli sviluppatori di IA dovrebbero avere familiarità con una serie di strumenti statistici e teorie della probabilità. Conoscenza dei linguaggi di programmazione Ti senti mai come se stessi parlando in Java o Python? Poiché gli sviluppatori di intelligenza artificiale sono programmatori, è fondamentale essere fluenti in una varietà di linguaggi di programmazione . Python e R , così come Java, C++ e Scala sono tutti esempi. Questi linguaggi di programmazione ti aiuteranno a creare algoritmi più complicati ed efficienti. sviluppatore di intelligenza artificiale e Multitasking e abilità con una varietà di strumenti informatici Gli sviluppatori di IA collaborano con data scientist e analisti, che raccolgono informazioni da una serie di fonti. Ci sono semplicemente troppe informazioni nel mondo per fare affidamento solo su poche fonti. Di conseguenza, gli ingegneri dell'IA dovrebbero sentirsi a proprio agio nell'usare una varietà di strumenti informatici e metodi di raccolta dei dati, nonché nel multitasking e nella gestione di molte attività (o schermo, per così dire). Apprendimento rapido e flessibilità Come detto in precedenza, dovrai sfruttare una varietà di fonti per la raccolta e l'analisi dei dati, nonché una varietà di tecnologie per lo sviluppo dell'IA. Gli sviluppatori di IA dovrebbero essere in grado di passare da un progetto all'altro con facilità. Dovrebbero anche essere studenti veloci in grado di apprendere rapidamente nuovi sistemi quando vengono offerti. Un giorno nella vita di uno sviluppatore di intelligenza artificiale Gli ingegneri dell'IA supervisionano la creazione di nuove app e sistemi che utilizzano l'IA per aumentare la produttività, prendere decisioni migliori, risparmiare sulle spese e aumentare la redditività. Per essere uno specialista di intelligenza artificiale di successo, devi essere in grado di fare quanto segue: In ogni contesto prospettico, analizzare e collegare i principi dell'IA con il ragionamento e l'incertezza. Analisi e ricostruzione delle immagini mediante intelligenza artificiale e approcci di machine learning. Utilizzo dell'intelligenza artificiale e dell'apprendimento automatico per risolvere un'ampia gamma di problemi e scenari complicati. Creazione di soluzioni basate sull'intelligenza artificiale che imitano il comportamento umano per completare lavori o procedure difficili. Sviluppo di soluzioni che integrano le migliori pratiche dell'intelligenza artificiale con i principi dell'apprendimento automatico. Utilizzo dell'intelligenza artificiale e dell'apprendimento automatico per valutare e migliorare le prestazioni delle applicazioni. Poiché praticamente tutti coloro che lavorano nell'intelligenza artificiale o nell'apprendimento automatico dovranno svolgere questo tipo di responsabilità quasi quotidianamente, è fondamentale sviluppare una comprensione e abilità attorno a queste attività chiave. Come diventare uno sviluppatore di intelligenza artificiale? Per diventare uno sviluppatore di intelligenza artificiale, devi affinare le tue abilità per dare un vantaggio competitivo nel mercato del lavoro. Quando si tratta di questo, puoi cercare piattaforme che offrano gli stessi programmi che sono autodidatti e facili da usare. Quali sono i vantaggi di diventare sviluppatori AI? Le applicazioni di intelligenza artificiale offrono grandi vantaggi e hanno il potenziale per rivoluzionare qualsiasi settore. Ecco l'elenco: Riduzione dell'errore umano : il termine "errore umano" è stato utilizzato per descrivere il fatto che gli esseri umani commettono errori di tanto in tanto. I computer non commettono questi errori se sono programmati correttamente. L'intelligenza artificiale effettua scelte in base ai dati ottenuti in precedenza e a un set di algoritmi. Di conseguenza, gli errori sono ridotti e la prospettiva di ottenere una migliore precisione e accuratezza è aumentata. Rischi invece degli umani : questo è uno dei vantaggi più significativi dell'intelligenza artificiale. Sviluppando un robot AI in grado di svolgere compiti impegnativi, possiamo trascendere molti dei limiti rischiosi dell'umanità. Può essere utilizzato efficacemente in ogni tipo di disastro naturale o causato dall'uomo, che si tratti di andare su Marte, disinnescare una bomba, esplorare le regioni più profonde degli oceani, estrarre carbone e petrolio. Disponibile 24 ore su 24, 7 giorni su 7 : gli esseri umani sono creati in modo tale che hanno bisogno di prendersi una pausa per reintegrarsi e prepararsi per una nuova giornata di lavoro, e hanno persino giorni liberi settimanali per mantenere separate la loro vita professionale e familiare. Ma, a differenza degli esseri umani, possiamo usare l'IA per far funzionare le macchine 24 ore al giorno, sette giorni alla settimana senza interruzioni, e non si annoiano. Aiutare con le attività ripetitive : svolgeremo molte attività ripetitive nel nostro lavoro quotidiano, come scrivere e-mail di ringraziamento, ricontrollare i documenti per individuare eventuali difetti e così via. Possiamo utilizzare l'intelligenza artificiale per automatizzare in modo efficiente queste operazioni monotone e persino rimuovere i compiti "noiosi" dai programmi degli esseri umani, consentendo loro di essere più creativi. Assistenza digitale : alcune delle aziende più avanzate utilizzano assistenti digitali per comunicare con i propri clienti, riducendo la necessità di risorse umane. Molti siti Web utilizzano anche assistenti digitali per fornire le cose che gli utenti cercano. Possiamo discutere con loro di ciò che stiamo cercando. Alcuni chatbot sono creati in modo tale che è difficile dire se stiamo conversando con una macchina o con un essere umano. Decisioni più rapide: combinando l'IA con altre tecnologie, possiamo far sì che i computer prendano decisioni e svolgano attività più velocemente degli esseri umani. Mentre un essere umano prenderà in considerazione numerosi aspetti, sia emotivamente che pratici, prima di decidere, una macchina basata sull'intelligenza artificiale si concentrerà su ciò per cui è stata progettata e produrrà risultati più rapidamente. Applicazioni quotidiane: app come Siri di Apple, Cortana di Microsoft e OK Google di Google vengono utilizzate regolarmente nella nostra vita quotidiana, che si tratti di trovare un posto, fare un selfie, fare una telefonata o rispondere a un'e-mail. Nuove scoperte : l'IA è al centro di una serie di nuove invenzioni praticamente in ogni campo che aiuteranno gli esseri umani a risolvere i problemi più complessi. FAQ- su Come diventare uno sviluppatore di intelligenza artificiale Quanto è potente l'intelligenza artificiale? Diamo una rapida occhiata alla complicata storia dell'Intelligenza Artificiale, in particolare alla scienza delle reti neurali, per affrontare questa domanda. Quasi pochi decenni fa, è stato concepito il concetto di IA e le sue capacità apparentemente infinite. Si prevedeva che l'intelligenza artificiale (AI) sarebbe stata la prossima grande novità nel fornire soluzioni alle sfide esistenti. Quali sono i vantaggi dell'intelligenza artificiale? L'intelligenza artificiale (AI) ha una vasta gamma di vantaggi a causa dell'enorme ronzio che ha prodotto ai giorni nostri. Oltre alle grandi prospettive di lavoro precedentemente menzionate create dall'IA, presenta anche ulteriori vantaggi, come la capacità di completare lavori in loop o ripetitivi che gli esseri umani devono intraprendere senza il rischio di errori umani. Quali sono alcune delle applicazioni dell'IA? L'intelligenza artificiale ha una vasta gamma di applicazioni nel mondo naturale. Ciò include l'intero viaggio dall'inizio alla fine della giornata. Utilizzi le capacità di intelligenza artificiale del blocco facciale intelligente o di altre tecniche di intelligenza artificiale per impronte digitali per sbloccare il telefono quando inizi regolarmente la giornata con lo smartphone. Qual è il modo migliore per iniziare con l'IA? Bene! Quindi, a questo punto, probabilmente sei affascinato dalle numerose capacità dell'Intelligenza Artificiale e vuoi trovare un posto meraviglioso per iniziare con l'Intelligenza Artificiale. Conclusione su Come diventare uno sviluppatore di intelligenza artificiale In questo articolo, abbiamo affrontato la maggior parte delle preoccupazioni più frequenti sull'IA, tentando anche di fornire informazioni e soluzioni a lungo termine a una varietà di problemi di IA. Volevamo anche sfatare i miti comuni sull'IA ed evidenziare altri concetti di IA. Spero che dopo aver fatto riferimento a questa guida, tutti i lettori abbiano una comprensione completa di chi è uno sviluppatore di intelligenza artificiale e delle varie questioni relative all'IA. Comprendere i cambiamenti che si verificheranno nel futuro rivoluzionario del pianeta richiede di acquisire una vera percezione dell'IA. Per evitare ipotesi fuorvianti e altre idee sbagliate, è fondamentale comprendere le intricate complessità ed essere informati sull'argomento dell'intelligenza artificiale. Comprendere l'IA e cercare di garantirne il futuro è anche un'esperienza gratificante. È un nuovo campo con molte nuove possibilità e scoperte a venire.
- GATO l'intelligenza artificiale generale di Google
introduzione intelligenza artificiale generale di Google La simulazione dei processi dell'intelligenza umana da parte delle macchine, in particolare dei sistemi informatici, è nota come intelligenza artificiale. Sistemi esperti, elaborazione del linguaggio naturale, riconoscimento vocale, apprendimento automatico e visione artificiale sono esempi di applicazioni di intelligenza artificiale. Articoli consigliati prima della lettura : L'Intelligenza Artificiale Spiegata Semplice Etica e Intelligenza Artificiale. Ascoltiamo anche la visione di un'Intelligenza Artificiale. La differenza tra Intelligenza Artificiale Forte e Debole Falsi miti sul machine learning Per queste attività di cui sopra, utilizziamo diversi tipi di sistemi nell'IA. Ad esempio, nell'intelligenza artificiale, un modello basato sulla visione artificiale non è in grado di gestire le attività relative alla NLP e viceversa. Allo stesso modo, un modello addestrato per stimare i prezzi di appartamenti non riuscirà a classificare persone malate in base alle loro analisi. Ma hai mai pensato a un modello in grado di svolgere tutte queste attività senza ulteriori modifiche all'architettura del modello? O un singolo modello che può imitare il cervello umano eseguendo più compiti senza alcuna significativa influenza del mondo esterno?. Se è così sei sulla strada giusta e stai pensando all'Intelligenza Artificiale Generale (AGI) . La capacità di un agente intelligente di comprendere o apprendere qualsiasi lavoro intellettuale che una persona può essere conosciuta come Intelligenza Generale Artificiale. L'intelligenza artificiale (AI) è il concetto di creare una macchina in grado di pensare, agire e apprendere allo stesso modo delle persone. L'intelligenza generale artificiale (AGI) è l'intelligenza di una macchina in grado di svolgere qualsiasi compito cognitivo che un essere umano può fare. Un sistema con intelligenza artificiale generale sarebbe in grado di comprendere il mondo così come qualsiasi essere umano, oltre a imparare a svolgere un'ampia gamma di attività. È un obiettivo chiave di alcune ricerche sull'intelligenza artificiale al giorno d'oggi, nonché un argomento popolare negli studi di fantascienza e futuristi. La maggior parte della ricerca sull'intelligenza artificiale che si svolge oggi sta cercando di ottenere almeno il livello minimo di AGI nei prodotti finali. Recentemente Deepmind, una sussidiaria britannica di Alphabet di intelligenza artificiale, ha introdotto l'ultimo e più promettente modello AGI, che è GATO. Tantissimi data scientist in tutto il mondo affermano che GATO sia il primo AGI al mondo. In questo blog, cerchiamo di presentarti i dettagli interessanti di base del modello GATO. Intelligenza artificiale Generale L'utilizzo di un unico modello di sequenza neurale per tutte le attività presenta molti vantaggi. Elimina la necessità di creare modelli di politiche manuali per ciascuna area con adeguati pregiudizi induttivi. Poiché il modello di sequenza può utilizzare qualsiasi dato che può essere serializzato in una sequenza flat, migliora la quantità e la diversità dei dati di addestramento. Inoltre, anche all'avanguardia in termini di dati, calcolo e scala di modelli, le sue prestazioni continuano ad aumentare. Come ho accennato nella sezione introduttiva, questi tipi di architettura neurale che possono svolgere più attività sono noti come reti neurali multimodello e questi sistemi sono chiamati agenti di intelligenza generale artificiale. Oggi sono disponibili diverse architetture multimodali che mostrano un livello minimo di AGI in natura. Deepmind ha affermato qualche giorno fa di aver sviluppato un'IA generica in grado di svolgere qualsiasi attività. Google afferma di essere in grado di eseguire 600 lavori, il che è il più vicino a prestazioni a livello umano in una varietà di impostazioni. Deepmind ha istanziato Gato come un unico, grande modello di sequenza di trasformatori. Un altro punto importante è che ogni attività svolta da GATO utilizza gli stessi pesi. Gato può: generare didascalie per fotografie impilare blocchi con un vero braccio robotico superare gli umani nei giochi Atari navigare in paesaggi 3D simulat obbedire alle indicazioni e altro con un solo set di pesi. Set di dati di Gato l'Intelligenza artificiale Generale Gato viene addestrato utilizzando una varietà di set di dati, inclusa l'esperienza dell'agente in ambienti simulati e del mondo reale, nonché set di dati in linguaggio naturale e immagini. Le tabelle seguenti descrivono i set di dati utilizzati per l'addestramento GATO. I dati contenuti nel set di dati finale utilizzato per addestrare il modello GATO sono ampiamente diffusi in diversi domini, quelli sono Compiti di controllo simulati Gato è addestrato sui set di dati presi dalle attività basate sull'apprendimento di rinforzo Visione e linguaggio Gato è addestrato su MassiveText, un database di grandi corpora testuali in lingua inglese raccolti da una varietà di fonti tra cui pagine Web, libri, notizie e codice. Robotica – benchmark di stacking RGB (reale e sim) Gato viene addestrato sulle osservazioni registrate compiendo azioni fisiche nel mondo reale usando la robotica. GATO l'addestramento per l'Intelligenza artificiale Generale Durante l'addestramento, i dati di una varietà di lavori e modalità vengono serializzati in una sequenza piatta di token, raggruppati ed elaborati da una rete neurale del trasformatore che funziona allo stesso modo di un grande modello linguistico. La funzione di perdita viene applicata solo agli output di destinazione, come testo e determinate azioni, a causa del mascheramento. La fase di addestramento di GATO è descritta nella figura seguente. Il principale approccio progettuale di Gato consiste nell'esercitare il maggior numero possibile di dati rilevanti, come testo, immagini e viste, sia dati discreti che continui. Per abilitare l'addestramento nella natura multipla dei dati, GATO serializza tutti i dati in una sequenza piatta di token. Questo processo è chiamato tokenizzazione. Esistono diversi modi per eseguire la tokenizzazione. Alcuni metodi sono menzionati di seguito. Il testo viene codificato tramite il metodo SentencePiece Le immagini vengono inizialmente convertite in sequenze di ordine raster di patch non sovrapposte. I valori discreti sono condensati in sequenze intere in ordine di riga maggiore. I valori continui vengono prima convertiti in sequenze di valori a virgola mobile nell'ordine principale di riga e fanno il resto del processo Impiegano l'ordine di sequenza canonico dopo aver trasformato i dati in token. Token di testo nello stesso ordine del testo di input non elaborato Token per l'applicazione di patch alle immagini in ordine raster. Tensori in ordine di riga maggiore. Per chiave, le strutture nidificate sono disposte in ordine lessicografico. Gli episodi dell'agente come passaggi temporali in ordine di tempo L'idea è di organizzare tutto nella stessa struttura, con una certa sequenza in base al compito come si vede nell'immagine della fase di allenamento. Dopo la tokenizzazione e il sequenziamento, le operazioni seguenti verranno eseguite a seconda della natura dell'input I token di testo, le osservazioni con valori discreti o continui o le azioni per qualsiasi passaggio temporale sono incorporati in uno spazio di incorporamento vettoriale appreso utilizzando una tabella di ricerca. Per ottenere un vettore per patch, i token relativi alle patch dell'immagine per qualsiasi fase temporale vengono incorporati utilizzando un singolo blocco ResNet. I vettori di incorporamento sono generati da 1,2 miliardi di trasformatori. Gato utilizza un trasformatore solo per decodificatore di parametri da 1.2B a 24 strati con una dimensione di incorporamento di 2048 e una dimensione nascosta di feedforward post-attenzione di 8196. Il modello rimane un modello linguistico, prevedendo la parola successiva in base alla sequenza. Il modello viene fornito con tutti i valori continui, input propriocettivi, coppie articolari e così via come un insieme di sottoparole supplementari mappate in cima all'intervallo del vocabolario testuale in [32000, 33024]. GATO è uno dei metodi per convertire un problema RL in un problema di modellazione di sequenza condizionale. Modelli come GATO utilizzano una (grande) finestra di contesto per prevedere l'azione migliore successiva piuttosto che approssimare le funzioni del valore dello stato o apprendere una regola. Gato e l'Intelligenza artificiale Generale È addestrato in modo regressivo, il che significa che anticipa solo quale sarà il prossimo input. Ad esempio, se riceve un testo, tenterà di indovinare l'istruzione successiva. O un'azione che si verificherà nel caso dei giochi. Il modello riceve un'inclusione ed effettua una previsione basata su di essa, che viene quindi eseguita nell'ambiente simulato, e lo stato corrente viene tokenizzato e incorporato nuovamente e inviato nuovamente al modello per produrre un'altra previsione. Controlla l'immagine qui sotto per comprendere il processo di previsione di GATO. Possiamo vedere che ha anche un componente prompt fisso, che dice semplicemente al modello che tipo di risposta ci aspettiamo per questa raccolta di input, il che porta al comportamento multitasking del modello. Ciò significa che il modello riceve una sequenza di token registrata in precedenza di quell'attività specifica anziché un ID del tipo di attività, attivando così la finestra di contesto. Analisi delle prestazioni di Gato l'Intelligenza artificiale Generale Ora è il momento di mostrare il potere di GATO. Di seguito sono riportati alcuni dei risultati finali del GATO su varie attività Gato genera didascalia delle immagini Gato come agente di conversazione Quando osserviamo a fondo i risultati del GATO, possiamo capire che i risultati sono promettenti in una certa misura. Un singolo modello in grado di gestire più attività fino a un certo punto rappresenta un importante passo avanti nella comunità di ricerca sulla scienza dei dati anche se i risultati ottenuti non soddisfano il livello umano. E ovviamente, GATO è un modello potente, è ancora lontano da una percezione a livello umano. Non solo le curve di ridimensionamento del modello di GATO sono molto promettenti. Sebbene il loro modello più grande utilizzasse un decodificatore di parametri da 1,2 miliardi, che al giorno d'oggi è un minuscolo trasformatore. DALL-E ha un conteggio dei parametri di 12 miliardi, mentre GLIDE ha un conteggio dei parametri di 3,5 miliardi. Ad ogni modo, questo lavoro mostra come aggiungere attività RL a modelli di testo e immagine generalisti basati su Transformer (Hats off DeepMind ). Conclusione su Gato e l'Intelligenza artificiale Generale Al giorno d'oggi la maggior parte dei lavori di ricerca sull'Intelligenza Artificiale stanno cercando di ottenere l'Intelligenza Generale Artificiale . In questa prospettiva, GATO è un punto di svolta in questo dominio. Deepmind ha fatto molti sforzi per portare questa natura generalizzata nel suo comportamento. Gato è un modello solo decoder che utilizza 1,2 miliardi di parametri in termini di dimensioni. I modelli di sequenza di Transformer funzionano bene come policy multi-task multi-incarnazione in una varietà di impostazioni, inclusi testo, visione e robotica del mondo reale. Si mostrano anche promettenti nell'apprendere un compito fuori distribuzione. Invece di partire da zero, tali modelli potrebbero essere utilizzati come punto di partenza predefinito per apprendere nuovi comportamenti suggerendo o perfezionando in futuro. Anche se è in grado di svolgere più attività, la dimensione GATO è molto piccola quando la confrontiamo con altri modelli appena pubblicati in AI come GPT-3 e DALL-E. Di conseguenza, l'architettura multimodello GATO è scalabile in un'ampia gamma. In questo articolo abbiamo cercato di spiegare solo le proprietà di base del modello GATO. Per maggiori dettagli, controlla gentilmente il documento di base ufficiale qui . Ma alla fine della giornata, come vediamo nei risultati della valutazione di GATO, è certo che dovremmo ancora attendere l'arrivo di un nuovo modello che possa raggiungere il comportamento a livello umano in molti dei compiti. Speriamo di incontrare presto un nuovo vero modello AGI...! Vuoi mettere in pratica quello che hai letto ? Scarica Progetti già pronti Lavora con il nostro editor online senza dover installare librerie Usa i nostri set di Dati Oppure segui i tutorial correlati : Tutorial di Regressione Logistica per l'apprendimento automatico Riconoscimento facciale con Python, in meno di 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 Feature Engineering e Feature Selection per Principianti e non Spiegazione della più semplice rete neurale per principianti PyScript, come usare Python nel browser! Il tuo Primo Programma di Machine Learning con Python e Google Colab Il tuo primo Programma di Deep Learning in Python con Keras Step-By-Step Come costruire modelli predittivi sanitari utilizzando PyHealth? Esempio pratico Rilevamento Di Veicoli In Tempo Reale Come implementare l'algoritmo Perceptron da zero in Python Implementare le reti neurali ricorrenti (RNN) con Python e Keras Deep learnign e python : Object Recognition e Object Predict esempio Come salvare e caricare il tuo modello di deep learning
- Scegliere il miglior Algoritmo di Machine Learning per i tuoi dati
Se sapessi quale algoritmo o configurazione dell'algoritmo utilizzare, non avresti bisogno di utilizzare l'apprendimento automatico Non esiste il miglior algoritmo di apprendimento automatico o parametri dell'algoritmo. Vogliamo curarti da questo tipo di mentalità, vediamo spesso queste domande, anche quotidianamente: Qual è il miglior algoritmo di apprendimento automatico? Qual è la mappatura tra algoritmi e problemi di machine learning? Quali sono i parametri migliori per un algoritmo di apprendimento automatico? C'è uno schema per queste domande. In genere non conosci e non puoi conoscere le risposte a queste domande in anticipo. Devi scoprirlo attraverso uno studio accurato. Ci sono alcune tecniche generali per rispondere a queste domande, ma anche queste possono portarti fuori stratda se stai cercando di ottenere il massimo da un algoritmo o da un problema. In questo post, voglio incoraggiarti a liberarti da questa mentalità e ad adottare un approccio basato sui dati che cambierà il modo in cui ti avvicini all'apprendimento automatico. Miglior algoritmo di machine learning Alcuni algoritmi hanno più " potenza " di altri. Sono non parametrici o altamente flessibili e adattivi, o altamente autoregolanti o tutto quanto sopra. In genere questa potenza ha un costo per la difficoltà di implementazione, la necessità di set di dati molto grandi, la scalabilità limitata o un numero elevato di coefficienti che possono risultare in un adattamento eccessivo. Con set di dati più grandi, c'è stato un interesse per metodi più semplici che scalano e funzionano bene. Qual è l'algoritmo migliore, l'algoritmo che dovresti sempre provare e dedicare più tempo all'apprendimento? Potremmo buttare fuori alcuni nomi come molti "DataScientist GURU", ma la risposta più intelligente è " nessuno " e " tutti ". Nessun algoritmo di machine learning è migliore Non puoi sapere a priori quale algoritmo sarà più adatto al tuo problema. Leggi di nuovo la riga sopra. E pensaci un po sopra. Puoi applicare il tuo algoritmo preferito. Puoi applicare l'algoritmo consigliato in un libro o in un documento. Puoi applicare l'algoritmo che sta vincendo il maggior numero di competizioni Kaggle in questo momento. Questi sono pregiudizi. Sono scorciatoie nel pensare che fanno risparmiare tempo. Per definizione, i pregiudizi limiteranno le soluzioni che puoi ottenere, l'accuratezza che puoi ottenere e, in definitiva, l'impatto che puoi avere. Mappatura degli algoritmi di machine learning ai problemi Esistono classi generali di problemi , ad esempio problemi supervisionati come classificazione e regressione e problemi non supervisionati come apprendimento multiplo e raggruppamento. Esistono casi più specifici di questi problemi nei sottocampi dell'apprendimento automatico come Computer Vision, Natural Language Processing e Speech Processing. Possiamo anche andare dall'altra parte, più astratto e considerare tutti questi problemi come istanze di approssimazione di funzioni e ottimizzazione di funzioni. È possibile associare algoritmi a classi di problemi, ad esempio esistono algoritmi in grado di gestire problemi di regressione supervisionata e problemi di classificazione supervisionata ed entrambi i tipi di problemi. Puoi anche costruire cataloghi di algoritmi e ciò potrebbe essere utile per ispirarti su quali algoritmi provare. Puoi gareggiare con algoritmi su un problema e riportare i risultati. A volte questo è chiamato bake-off ed è popolare in alcuni atti di conferenze per la presentazione di nuovi algoritmi. Trasferibilità limitata dei risultati dell'algoritmo Un problema chiave con gli algoritmi è che non è possibile trasferire facilmente i risultati da un problema all'altro. Se ritieni che questa affermazione sia vera, leggere degli algoritmi su giornali e blog non ti informa su quale algoritmo provare per il tuo problema. Se l'algoritmo A uccide l'algoritmo B sul problema X , cosa ti dice sull'algoritmo A e B sul problema Y ? Devi lavorare per mettere in relazione i problemi X e Y . Hanno proprietà uguali o simili (attributi, distribuzioni di attributi, forma funzionale) che vengono sfruttate dagli algoritmi in studio? È un duro lavoro. Non abbiamo una comprensione approfondita di quando un algoritmo di apprendimento automatico funziona meglio di un altro. I migliori parametri dell'algoritmo Gli algoritmi di apprendimento automatico sono parametrizzati in modo da poter adattare il loro comportamento e i risultati al tuo problema. Il problema è che raramente viene spiegato il “ come ” manipolare gli iperparametri degli algoritmi di machine learning. Spesso è poco compreso, anche dagli stessi sviluppatori di algoritmi. Generalmente, gli algoritmi di machine learning con elementi stocastici sono sistemi complessi e come tali devono essere studiati. Il primo ordine: può essere descritto quale effetto ha il parametro sul sistema complesso. Nessun parametro algoritmo migliore I nuovi insiemi di configurazioni di algoritmi sono essenzialmente nuove istanze di algoritmi con cui puoi sfidare il tuo problema (sebbene relativamente vincolati o simili nei risultati che possono ottenere). Non puoi conoscere a priori i migliori parametri dell'algoritmo per il tuo problema . È possibile utilizzare i parametri utilizzati nel documento seminale. È possibile utilizzare i parametri in un libro. Puoi utilizzare i parametri elencati in un post di kaggle " come l'ho fatto ". Buone regole pratiche. Forse sì forse no. Approccio basato sui dati per scegliere il migliore algoritmo di machine learning Non abbiamo bisogno di cadere in un cumulo di disperazione. Diventiamo scienziati. Hai pregiudizi che possono abbreviare le decisioni per la selezione dell'algoritmo e la selezione dei parametri dell'algoritmo. Cambiamo mentalità Invece di scegliere il tuo algoritmo preferito, prova 10 o 20 algoritmi. Segnati quelli che mostrano segni di miglioramento in termini di prestazioni, robustezza, velocità o qualsiasi cosa ti interessi di più. Invece di selezionare i parametri comuni, cerca nella griglia decine, centinaia o migliaia di combinazioni di parametri. Diventa lo scienziato obiettivo, lasciati alle spalle aneddoti e studia l'intersezione di complessi sistemi di apprendimento e osservazioni di dati dal tuo dominio problematico. Approccio basato sui dati in azione Questo è un approccio potente che richiede meno conoscenze iniziali, ma molto più calcolo e sperimentazione di back-end. Pertanto, molto probabilmente ti verrà richiesto di lavorare con un campione più piccolo del tuo set di dati in modo da poter ottenere risultati rapidamente. Avrai bisogno di un'imbracatura di prova in cui puoi avere completa fiducia. Come puoi avere completa fiducia? Sviluppi fiducia selezionando le opzioni di test in un modo basato sui dati che ti dà la certezza oggettiva che la configurazione scelta è affidabile. Il tipo di metodo di stima (split, boosting, k-fold cross validation, ecc.) e la sua configurazione (dimensione di k, ecc.). Risultati rapidi e robusti Ottieni buoni risultati, velocemente. Se la foresta casuale è il tuo algoritmo preferito, potresti passare giorni o settimane cercando invano di ottenere il massimo dall'algoritmo sul tuo problema, che potrebbe non essere adatto al metodo in primo luogo. Con una metodologia basata sui dati, puoi scontare in anticipo i (relativi) scarsi risultati. Puoi fallire velocemente. Ed è il miglior modo per ottenere successo velocemente. Ci vuole disciplina per non ricadere su pregiudizi e algoritmi e configurazioni preferiti. È un duro lavoro per ottenere risultati buoni e robusti. Non ti preoccupi più se ti stai perdendo non usando l'algoritmo X o Y o la configurazione A o B ( paura della perdita ), li butti nel mix. Sfrutta l'automazione L'approccio basato sui dati è un problema di ricerca. Puoi sfruttare l'automazione. Puoi scrivere script riutilizzabili per cercare il cablaggio di test più affidabile per il tuo problema prima di iniziare. Niente più supposizioni ad hoc. Puoi scrivere uno script riutilizzabile per provare automaticamente 10, 20, 100 algoritmi in una varietà di librerie e implementazioni. Niente più algoritmi o librerie preferiti. La linea tra i diversi algoritmi è sparita. Una nuova configurazione dei parametri è un nuovo algoritmo. Puoi scrivere script riutilizzabili per grigliare o eseguire ricerche casuali in ogni algoritmo per campionarne veramente le capacità. Aggiungi l'ingegneria delle funzionalità in modo che ogni " vista " sui dati sia un nuovo problema per gli algoritmi da sfidare. Riepilogo sul migliore algoritmo di machine learning In questo post, abbiamo esaminato l'approccio e le best practice comuni per la scelta di un algoritmo e alla selezione dei parametri dell'algoritmo. Abbiamo considerato che questo approccio porta a limitazioni nel nostro pensiero. Desideriamo ardentemente i migliori algoritmi per uso generale e le migliori configurazioni di algoritmi, quando non esistono cose del genere. Non esiste il miglior algoritmo di apprendimento automatico per uso generale. Non ci sono migliori parametri dell'algoritmo di apprendimento automatico per uso generale. La trasferibilità della capacità di un algoritmo da un problema all'altro è discutibile. La soluzione è diventare lo scienziato e studiare algoritmi sui nostri problemi. Dobbiamo prendere un problema basato sui dati, per controllare gli algoritmi, per cercare i parametri dell'algoritmo di ricerca e per trovare rapidamente metodi che producano buoni risultati, in modo affidabile e veloce. Vuoi mettere in pratica quello che hai letto ? Scarica Progetti già pronti Lavora con il nostro editor online senza dover installare librerie Usa i nostri set di Dati Oppure segui i tutorial correlati : Tutorial di Regressione Logistica per l'apprendimento automatico Riconoscimento facciale con Python, in meno di 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 Feature Engineering e Feature Selection per Principianti e non Spiegazione della più semplice rete neurale per principianti PyScript, come usare Python nel browser! Il tuo Primo Programma di Machine Learning con Python e Google Colab Il tuo primo Programma di Deep Learning in Python con Keras Step-By-Step Come costruire modelli predittivi sanitari utilizzando PyHealth? Esempio pratico Rilevamento Di Veicoli In Tempo Reale Come implementare l'algoritmo Perceptron da zero in Python Implementare le reti neurali ricorrenti (RNN) con Python e Keras Deep learnign e python : Object Recognition e Object Predict esempio Come salvare e caricare il tuo modello di deep learning
- Come valutare algoritmi di Machine Learning o Apprendimento Automatico
Una volta definito il problema e preparato i dati , è necessario applicare algoritmi di apprendimento automatico ai dati per risolvere il problema. Puoi dedicare molto tempo alla scelta, all'esecuzione e all'ottimizzazione degli algoritmi. Vuoi assicurarti di utilizzare il tuo tempo in modo efficace per avvicinarti al tuo obiettivo. In questo post analizzerai un processo per testare rapidamente gli algoritmi e scoprire se c'è o meno una struttura nel tuo problema per gli algoritmi da apprendere e quali algoritmi sono efficaci. Test harness o in italiano Collaudare l'imbragatura L'imbracatura di prova sono i dati su cui allenerai e testerai un algoritmo e la misura delle prestazioni che utilizzerai per valutarne le prestazioni. È importante definire bene l'imbracatura del test in modo da poterti concentrare sulla valutazione di diversi algoritmi e pensare in profondità al problema. L'obiettivo del test harness è di essere in grado di testare in modo rapido e coerente gli algoritmi rispetto a una rappresentazione equa del problema da risolvere. Il risultato del test di più algoritmi rispetto all'imbracatura sarà una stima delle prestazioni di una varietà di algoritmi sul problema rispetto a una misura delle prestazioni scelta. Saprai quali algoritmi potrebbero valere la pena mettere a punto il problema e quali non dovrebbero essere considerati ulteriormente. I risultati ti daranno anche un'indicazione di quanto sia apprendibile il problema. Se una varietà di algoritmi di apprendimento diversi si comportano universalmente in modo scarso sul problema, potrebbe essere un'indicazione di una mancanza di struttura a disposizione degli algoritmi da apprendere. Ciò può essere dovuto al fatto che manca effettivamente una struttura apprendibile nei dati selezionati o potrebbe essere un'opportunità per provare diverse trasformazioni per esporre la struttura agli algoritmi di apprendimento. Misurazioni di prestazione La misura delle prestazioni è il modo in cui si desidera valutare una soluzione al problema. È la misurazione che farai delle previsioni fatte da un modello addestrato sul set di dati del test. Le misure delle prestazioni sono in genere specializzate per la classe di problemi con cui si lavora, ad esempio classificazione, regressione e raggruppamento. Molte misure standard delle prestazioni ti daranno un punteggio significativo per il tuo dominio problematico. Ad esempio, l'accuratezza della classificazione per la classificazione (correzione corretta totale divisa per le previsioni totali moltiplicate per 100 per trasformarla in percentuale). Potresti anche voler un'analisi più dettagliata delle prestazioni, ad esempio, potresti voler conoscere i falsi positivi su un problema di classificazione dello spam perché una buona email verrà contrassegnata come spam e non può essere letta. Ci sono molte misure di prestazioni standard tra cui scegliere. Raramente è necessario escogitare da soli una nuova misura delle prestazioni poiché generalmente è possibile trovarne o adattarne una che catturi al meglio i requisiti del problema da risolvere. Osserva i problemi simili che hai scoperto e le misure di performance utilizzate per vedere se è possibile adottarne una. Testare e addestrare set di dati Dai dati trasformati, dovrai selezionare un set di test e un set di allenamento. Un algoritmo verrà addestrato sul set di dati di addestramento e verrà valutato rispetto al set di test. Questo può essere semplice come selezionare una suddivisione casuale dei dati (66% per l'addestramento, 34% per i test) o può comportare metodi di campionamento più complicati. Un modello addestrato non è esposto al set di dati di test durante l'addestramento e qualsiasi previsione effettuata su tale set di dati è progettata per essere indicativa delle prestazioni del modello in generale. Pertanto, vuoi assicurarti che la selezione dei tuoi set di dati sia rappresentativa del problema che stai risolvendo. Convalida incrociata Un approccio più sofisticato rispetto all'utilizzo di un set di dati di test e training consiste nell'utilizzare l'intero set di dati trasformato per addestrare e testare un determinato algoritmo. Un metodo che potresti utilizzare nel tuo cablaggio di test per farlo è chiamato convalida incrociata. In primo luogo, consiste nel separare il set di dati in un numero di gruppi di istanze di dimensioni uguali (chiamati fold). Il modello viene quindi addestrato su tutte le pieghe tranne una che è stata tralasciata e il modello preparato viene testato su quella piega lasciata. Il processo viene ripetuto in modo che ogni piega abbia l'opportunità di essere esclusa e fungere da set di dati di test. Infine, le misure delle prestazioni vengono mediate in tutte le pieghe per stimare la capacità dell'algoritmo sul problema. Ad esempio, una convalida incrociata 3 volte comporterebbe la formazione e il test di un modello 3 volte: #1: Train on folds 1+2, test on fold 3 #2: Train on folds 1+3, test on fold 2 #3: Train on folds 2+3, test on fold 1 Il numero di fold può variare in base alle dimensioni del set di dati, ma i numeri comuni sono 3, 5, 7 e 10 pieghe. L'obiettivo è avere un buon equilibrio tra le dimensioni e la rappresentazione dei dati nel treno e nei set di test. Quando hai appena iniziato, mantieni una semplice suddivisione dei dati del treno e dei test (come 66%/34%) e passa alla convalida incrociata una volta che avrai più fiducia. Algoritmi di prova Quando si inizia con un problema e si è definito un cablaggio di test di cui si è soddisfatti, è il momento di controllare a campione una varietà di algoritmi di apprendimento automatico. Il controllo a campione è utile perché consente di vedere molto rapidamente se ci sono strutture apprendibili nei dati e stimare quali algoritmi potrebbero essere efficaci sul problema. Il controllo a campione ti aiuta anche a risolvere eventuali problemi nell'imbracatura di prova e ad assicurarti che la misura delle prestazioni scelta sia appropriata. Il miglior primo algoritmo per il controllo a campione è un random. Collega un generatore di numeri casuali per generare previsioni nell'intervallo appropriato. Questo dovrebbe essere il peggior "risultato dell'algoritmo" che si ottiene e sarà la misura con cui tutti i miglioramenti possono essere valutati. Seleziona 5-10 algoritmi standard appropriati per il tuo problema ed eseguili attraverso il tuo cablaggio di prova. Per algoritmi standard, intendo metodi popolari senza configurazioni speciali. Appropriato per il tuo problema significa che gli algoritmi possono gestire la regressione se hai un problema di regressione. Scegli i metodi dai raggruppamenti di algoritmi che abbiamo già esaminato. Mi piace includere un mix diversificato e avere 10-20 algoritmi diversi tratti da una vasta gamma di tipi di algoritmi. A seconda della libreria che sto utilizzando, posso controllare fino a oltre 50 metodi popolari per scovare rapidamente metodi promettenti. Se desideri eseguire molti metodi, potrebbe essere necessario rivedere la preparazione dei dati e ridurre le dimensioni del set di dati selezionato. Ciò potrebbe ridurre la tua fiducia nei risultati, quindi testa con varie dimensioni di set di dati. Potrebbe essere utile utilizzare un set di dati di dimensioni inferiori per il controllo a campione dell'algoritmo e un set di dati più completo per la messa a punto dell'algoritmo. Riepilogo su Come valutare algoritmi di Machine Learning In questo post hai appreso l'importanza di impostare un'imbracatura di test affidabile che implichi la selezione di set di dati di test e addestramento e una misura delle prestazioni significativa per il tuo problema. Hai anche appreso la strategia di controllare a campione una vasta gamma di algoritmi di apprendimento automatico sul tuo problema utilizzando il tuo cablaggio di prova. Hai scoperto che questa strategia può evidenziare rapidamente se esiste una struttura apprendibile nel tuo set di dati (e in caso contrario puoi rivisitare la preparazione dei dati) e quali algoritmi funzionano generalmente bene sul problema (che potrebbero essere candidati per ulteriori indagini e ottimizzazione). Vuoi mettere in pratica quello che hai letto ? Scarica Progetti già pronti Lavora con il nostro editor online senza dover installare librerie Usa i nostri set di Dati Oppure segui i tutorial correlati : Tutorial di Regressione Logistica per l'apprendimento automatico Riconoscimento facciale con Python, in meno di 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 Feature Engineering e Feature Selection per Principianti e non Spiegazione della più semplice rete neurale per principianti PyScript, come usare Python nel browser! Il tuo Primo Programma di Machine Learning con Python e Google Colab Il tuo primo Programma di Deep Learning in Python con Keras Step-By-Step Come costruire modelli predittivi sanitari utilizzando PyHealth? Esempio pratico Rilevamento Di Veicoli In Tempo Reale Come implementare l'algoritmo Perceptron da zero in Python Implementare le reti neurali ricorrenti (RNN) con Python e Keras Deep learnign e python : Object Recognition e Object Predict esempio Come salvare e caricare il tuo modello di deep learning
- Deep Learning Definizioni Chiave
Godendo di un'impennata nella ricerca e nell'industria, dovuta principalmente ai suoi incredibili successi in diverse aree, il deep learning è il processo di applicazione di tecnologie di reti neurali profonde, ovvero architetture di reti neurali con più livelli nascosti, per risolvere i problemi. Il deep learning è un processo che utilizza architetture di reti neurali profonde. Il deep learning ha accumulato un'impressionante collezione di risultati negli ultimi anni. Alla luce di ciò, è importante tenere a mente alcune cose, almeno secondo noi: Il deep learning non è è una soluzione adatta a ogni problema disponibile Non è il leggendario algoritmo master : il deep learning non sostituirà tutti gli altri algoritmi di apprendimento automatico e le tecniche di scienza dei dati o, per lo meno, non lo è ancora stato dimostrato È necessario moderare le aspettative : mentre recentemente sono stati fatti grandi passi avanti in tutti i tipi di problemi di classificazione, in particolare la visione artificiale e l'elaborazione del linguaggio naturale, così come l'apprendimento per rinforzo e altre aree, il deep learning contemporaneo non si adatta al lavoro su problemi molto complessi come "risolvere la pace nel mondo" Deep learning e intelligenza artificiale non sono sinonimi Il deep learning può fornire moltissimo alla scienza dei dati sotto forma di processi e strumenti aggiuntivi per aiutare a risolvere i problemi e, se osservato in questa luce, il deep learning è un'aggiunta molto preziosa al panorama della scienza dei dati Quindi, con questo, diamo un'occhiata ad una terminologia relativa all'apprendimento profondo, concentrandoci su definizioni concise e senza fronzoli. Deep Learning Definizioni Chiave 1. Apprendimento profondo Come definito sopra, il deep learning è il processo di applicazione delle tecnologie di rete neurale profonda per risolvere i problemi. Le reti neurali profonde sono reti neurali con un livello nascosto (vedi sotto). Il deep learning si riferisce a un processo che impiega architetture di reti neurali profonde, che sono particolari tipi di algoritmi di machine learning. Deep Learning Definizioni Chiave 2. Reti neurali artificiali L'architettura dell'apprendimento automatico è stata originariamente ispirata dal cervello biologico (in particolare il neurone) mediante il quale viene effettuato l'apprendimento profondo. In realtà, le sole reti neurali artificiali (ANN) (la varietà non profonda) esistono da molto tempo e storicamente sono state in grado di risolvere determinati tipi di problemi. Tuttavia, relativamente di recente, sono state ideate architetture di reti neurali che includevano livelli di neuroni nascosti (oltre ai livelli di input e output) e questo ulteriore livello di complessità è ciò che consente il deep learning e fornisce un insieme più potente di strumenti per la risoluzione dei problemi. Le RNA in realtà variano considerevolmente nelle loro architetture e quindi non esiste una definizione di rete neurale definitiva. Le 2 caratteristiche generalmente citate di tutte le reti neurali sono il possesso di insiemi di pesi adattivi e la capacità di approssimare le funzioni non lineari degli input ai neuroni. Deep Learning Definizioni Chiave 3. Neurone biologico Si parla spesso della connessione definitiva tra reti neurali biologiche e artificiali. Pubblicazioni popolari diffondono l'idea che le RNA siano in qualche modo una replica esatta di ciò che sta accadendo nel cervello umano (o altro biologico). Questo è chiaramente impreciso; nella migliore delle ipotesi, le prime reti neurali artificiali furono ispirate dalla biologia. La relazione astratta tra i 2 non è più definitiva del confronto astratto tracciato tra la composizione e la funzionalità degli atomi e il sistema solare. Detto questo, ci fa bene vedere come funzionano i neuroni biologici a un livello molto alto, se non altro per capire cosa ha ispirato la creazione di un neurone artificiale. I principali componenti del neurone biologico che ci interessano sono: Il nucleo contiene informazioni genetiche (es. DNA) Il corpo cellulare elabora le attivazioni di input e le converte in attivazioni di output I dendriti ricevono attivazioni da altri neuroni Gli assoni trasmettono attivazioni ad altri neuroni Le terminazioni degli assoni , insieme ai dendriti vicini, formano le sinapsi tra i neuroni Le sostanze chimiche chiamate neurotrasmettitori si diffondono quindi attraverso la fessura sinaptica tra una terminazione assonale e un dendrite vicino, costituendo una neurotrasmissione. L'operazione essenziale del neurone è che un'attivazione fluisca in un neurone attraverso un dendrite, venga elaborata e quindi ritrasmessa da un assone, attraverso le sue terminazioni assoniche, dove attraversa la fessura sinaptica e raggiunge un certo numero di dendriti dei neuroni riceventi , dove il processo viene ripetuto. Deep Learning Definizioni Chiave 4. Perceptron Un perceptron è un semplice classificatore binario lineare. I perceptron prendono input e pesi associati (che rappresentano l'importanza relativa dell'input) e li combinano per produrre un output, che viene quindi utilizzato per la classificazione. I perceptron esistono da molto tempo, con le prime implementazioni risalenti agli anni '50, la prima delle quali è stata coinvolta nelle prime implementazioni ANN. Deep Learning Definizioni Chiave 5. Perceptron multistrato Un perceptron multistrato (MLP) è l'implementazione di diversi strati di perceptron completamente adiacenti collegati, che formano una semplice rete neurale feedforward (vedi sotto). Questo perceptron multistrato ha l'ulteriore vantaggio di funzioni di attivazione non lineare, che i singoli perceptron non possiedono. Deep Learning Definizioni Chiave 6. Rete neurale feedforward Le reti neurali feedforward sono la forma più semplice di architettura di rete neurale, in cui le connessioni non sono cicliche. La rete neurale artificiale originale, le informazioni in una rete feedforward avanza in un'unica direzione dai nodi di input, attraverso qualsiasi livello nascosto, ai nodi di output; non sono presenti cicli. Le reti feedforward differiscono dalle architetture di rete successive e ricorrenti (vedi sotto), in cui le connessioni formano un ciclo diretto. Deep Learning Definizioni Chiave 7. Rete neurale ricorrente In contrasto con le reti neurali feedforward di cui sopra, le connessioni delle reti neurali ricorrenti formano un ciclo diretto. Questo flusso bidirezionale consente la rappresentazione dello stato temporale interno, che, a sua volta, consente l'elaborazione della sequenza e, in particolare, fornisce le capacità necessarie per riconoscere il parlato e la scrittura a mano. Deep Learning Definizioni Chiave 8. Funzione di attivazione Nelle reti neurali, la funzione di attivazione produce i limiti di decisione dell'output combinando gli input ponderati della rete. Le funzioni di attivazione vanno dall'identità (lineare) al sigmoide (logistico o passo morbido) all'iperbolico (tangente) e oltre. Per utilizzare la backpropagation (vedi sotto), la rete deve utilizzare funzioni di attivazione differenziabili. Deep Learning Definizioni Chiave 9. Backpropagation La migliore definizione elementare e concisa di backpropagation che abbia mai incontrato è: Si confrontano le previsioni della rete neurale con l'output desiderato e quindi si calcola il gradiente degli errori rispetto ai pesi della rete neurale. Questo ti dà una direzione nello spazio del peso del parametro in cui l'errore diventerebbe più piccolo. Deep Learning Definizioni Chiave 10. Funzione di costo Quando si addestra una rete neurale, è necessario valutare la correttezza dell'output della rete. Poiché conosciamo l'output corretto previsto dei dati di addestramento, è possibile confrontare l'output di addestramento. La funzione di costo misura la differenza tra i risultati effettivi e di formazione. Un costo pari a zero tra i risultati effettivi e quelli previsti significherebbe che la rete si è allenata come sarebbe possibile; questo sarebbe chiaramente l'ideale. Quindi, con quale meccanismo viene regolata la funzione di costo ? Deep Learning Definizioni Chiave 11. Discesa graduale La discesa del gradiente è un algoritmo di ottimizzazione utilizzato per trovare i minimi locali di funzioni. Sebbene non garantisca un minimo globale, la discesa del gradiente è particolarmente utile per funzioni difficili da risolvere analiticamente per soluzioni precise, come l'impostazione di derivate a zero e la risoluzione. Come accennato in precedenza, nel contesto delle reti neurali, la discesa stocastica del gradiente viene utilizzata per apportare modifiche informate ai parametri della rete con l'obiettivo di ridurre al minimo la funzione di costo, avvicinando così gli output effettivi della rete, in modo iterativo, agli output attesi durante il corso di formazione. Questa minimizzazione iterativa utilizza il calcolo, ovvero la differenziazione. Dopo una fase di addestramento, i pesi della rete ricevono aggiornamenti in base al gradiente della funzione di costo e ai pesi correnti della rete, in modo che i risultati della fase di addestramento successiva possano essere un po' più vicini alla correzione (misurata da una funzione di costo più piccola). La backpropagation (propagazione all'indietro degli errori) è il metodo utilizzato per distribuire questi aggiornamenti alla rete. Deep Learning Definizioni Chiave 12. Problema del gradiente di scomparsa La backpropagation utilizza la regola della catena per calcolare i gradienti (mediante differenziazione), in quanto gli strati verso il "fronte" (input) di una rete neurale a n strati avrebbero il loro piccolo numero aggiornato il valore del gradiente moltiplicato n volte prima che questo valore stabilito fosse usato come un aggiornare. Ciò significa che il gradiente diminuirebbe in modo esponenziale, un problema con valori maggiori di n e gli strati frontali richiederebbero sempre più tempo per allenarsi in modo efficace. Deep Learning Definizioni Chiave 13. Rete neurale convoluzionale Tipicamente associate alla visione artificiale e al riconoscimento delle immagini, le reti neurali convoluzionali (CNN) utilizzano il concetto matematico di convoluzione per imitare la rete di connettività neurale della corteccia visiva biologica. In primo luogo, la convoluzione può essere pensata come una finestra scorrevole sopra una rappresentazione a matrice di un'immagine (vedi sotto). Ciò consente di imitare liberamente la piastrellatura sovrapposta del campo visivo biologico. L'implementazione di questo concetto nell'architettura della rete neurale si traduce in raccolte di neuroni dedicati all'elaborazione di sezioni di immagini, almeno quando impiegati nella visione artificiale. Quando utilizzato in qualche altro dominio, come l'elaborazione del linguaggio naturale, può essere utilizzato lo stesso approccio, dato che l'input (parole, frasi, ecc.) Potrebbe essere organizzato in matrici ed elaborato in modo simile. Deep Learning Definizioni Chiave 14. Rete di memoria a lungo termine Una rete di memoria a lungo termine (LSTM) è una rete neurale ricorrente ottimizzata per apprendere e agire su dati relativi al tempo che possono avere periodi di tempo indefiniti o sconosciuti tra eventi rilevanti. La loro particolare architettura consente la persistenza, dando all'ANN una "memoria". Le recenti scoperte nel riconoscimento della grafia e nel riconoscimento vocale automatico hanno beneficiato delle reti LSTM. Questo è chiaramente solo un piccolo sottoinsieme della terminologia del deep learning e molti concetti aggiuntivi, da elementari a avanzati, attendono la tua esplorazione : Cosa é Un Neurone Artificiale E La Storia Del Perceptron, Deep Learning Che cosa è il Deep Learning (DL) Chi ha inventato il Deep Learning ? Vediamo in breve la storia del Deep Learning Come funziona il Deep Learning o Apprendimento Profondo ? Computer Vision e Deep Learning - Visione Artificiale e cosa centra il Deep Learning Funzioni di Attivazione nel deep learning la Guida Completa Gli Algoritmi di Deep Learning o Apprendimento profondo più diffusi e usati nel 2022 15 Applicazioni di Deep Learning che devi conoscere Le principali Librerie per il Deep Learning di Python Semplici progetti di Deep Learning e Computer Vision Con Esempi pratici in Python Come salvare e caricare il tuo modello di deep learning o apprendimento profondo PyTorch vs TensorFlow quale è meglio per creare modelli di deep learning Le Differenze tra Machine Learning (ML) e Deep Learning (DL) e Intelligenza Artificiale Il tuo primo Programma di Deep Learning in Python con Keras Step-By-Step Deep learnign e python : Object Recognition e Object Predict esempio pratico Reti Neurali con python tutorial completo Come implementare l'algoritmo Perceptron da zero in Python esempio pratico Riconoscimento facciale con Python, in meno di 25 righe di codice.
- Funzioni di Attivazione nel deep learning la Guida Completa
Iniziamo con una definizione di funzione di attivazione "Nelle reti neurali artificiali, ogni neurone forma una somma ponderata dei suoi input e trasmette il valore scalare risultante attraverso una funzione denominata funzione di attivazione". — Definizione da Wikipedia Suona un po' complicato? Non preoccuparti! Dopo aver letto questo articolo, avrai una migliore comprensione delle funzioni di attivazione. Negli esseri umani, il nostro cervello riceve input dal mondo esterno, esegue l'elaborazione sul neurone che riceve input e attiva la coda del neurone per generare le decisioni richieste. Allo stesso modo, nelle reti neurali, forniamo input come immagini, suoni, numeri, ecc., e l'elaborazione viene eseguita sul neurone artificiale, con un algoritmo che attiva lo strato di neurone finale corretto per generare risultati. Prerequisiti : Come funziona il Deep Learning o Apprendimento Profondo ? Spiegazione della più semplice rete neurale per principianti Come hackerare una rete neurale Cosa sono le reti neurali artificiali ANN? Cosa sono le reti neurali ricorrenti RNN? Cosa sono le reti neurali convoluzionali CNN? Perché abbiamo bisogno di funzioni di attivazione? Una funzione di attivazione determina se un neurone deve essere attivato o meno . Ciò implica che utilizzerà alcune semplici operazioni matematiche per determinare se l'input del neurone alla rete è rilevante o meno nel processo di previsione. La capacità di introdurre la non linearità in una rete neurale artificiale e generare output da una raccolta di valori di input alimentati a uno strato è lo scopo della funzione di attivazione. Tipi di funzioni di attivazione Le funzioni di attivazione possono essere suddivise in tre tipi: Funzione di attivazione lineare Funzione passo binario Funzioni di attivazione non lineare Funzione di attivazione lineare La funzione di attivazione lineare, spesso chiamata funzione di attivazione dell'identità , è proporzionale all'input. L'intervallo della funzione di attivazione lineare sarà (da -∞ a ∞). La funzione di attivazione lineare somma semplicemente il totale ponderato degli input e restituisce il risultato. Matematicamente, può essere rappresentato come: Pro e contro Non è un'attivazione binaria perché la funzione di attivazione lineare fornisce solo una serie di attivazioni. Possiamo sicuramente connettere alcuni neuroni insieme e, se ci sono più attivazioni, possiamo calcolare il massimo (o il massimo morbido) in base a quello. La derivata di questa funzione di attivazione è una costante. Vale a dire, il gradiente non è correlato alla x (input). Funzione di attivazione passo binario Un valore di soglia determina se un neurone deve essere attivato o meno in una funzione di attivazione a passi binari. La funzione di attivazione confronta il valore di ingresso con un valore di soglia. Se il valore di input è maggiore del valore di soglia, il neurone viene attivato. È disabilitato se il valore di input è inferiore al valore di soglia, il che significa che il suo output non viene inviato al livello successivo o nascosto. Matematicamente, la funzione di attivazione binaria può essere rappresentata come: Pro e contro Non può fornire output multivalore, ad esempio non può essere utilizzato per problemi di classificazione multiclasse. Il gradiente della funzione passo è zero, il che rende difficile la procedura di propagazione all'indietro. Funzioni di attivazione non lineare Le funzioni di attivazione non lineare sono le funzioni di attivazione più utilizzate. Semplificano l'adattamento di un modello di rete neurale artificiale a una varietà di dati e la differenziazione tra gli output. Le funzioni di attivazione non lineare consentono l'impilamento di più livelli di neuroni, poiché l'output sarebbe ora una combinazione non lineare di input passati attraverso più livelli. Qualsiasi output può essere rappresentato come output di calcolo funzionale in una rete neurale. Queste funzioni di attivazione sono principalmente suddivise in base alla loro portata e alle loro curve. Il resto di questo articolo delineerà le principali funzioni di attivazione non lineare utilizzate nelle reti neurali. 1. Sigmoide Sigmoid accetta un numero come input e restituisce un numero compreso tra 0 e 1. È semplice da usare e ha tutte le qualità desiderabili delle funzioni di attivazione: non linearità, differenziazione continua, monotonia e un intervallo di output impostato. Questo è utilizzato principalmente nei problemi di classificazione binaria. Questa funzione sigmoidea fornisce la probabilità dell'esistenza di una classe particolare. Matematicamente, può essere rappresentato come: Pro e contro È di natura non lineare. Anche le combinazioni di questa funzione non sono lineari e darà un'attivazione analogica, a differenza della funzione di attivazione a passi binari. Ha anche un gradiente uniforme ed è buono per un problema di tipo classificatore. L'uscita della funzione di attivazione sarà sempre nell'intervallo (0,1) rispetto a (-∞, ∞) della funzione di attivazione lineare. Di conseguenza, abbiamo definito un intervallo per le nostre attivazioni. La funzione Sigmoide dà origine a un problema di "gradienti evanescenti" e i Sigmoidi saturano e uccidono i gradienti. Il suo output non è centrato sullo zero e fa sì che gli aggiornamenti del gradiente vadano troppo lontano in direzioni diverse. Il valore di output è compreso tra zero e uno, quindi rende più difficile l'ottimizzazione. La rete si rifiuta di saperne di più o è estremamente lenta. 2.TanH (tangente iperbolica) TanH comprime un numero con valore reale nell'intervallo [-1, 1] . Non è lineare, ma è diverso da Sigmoid e il suo output è centrato sullo zero . Il vantaggio principale di ciò è che gli input negativi verranno mappati fortemente sugli input negativi e zero verranno mappati quasi a zero nel grafico di TanH. Matematicamente, la funzione TanH può essere rappresentata come: Pro e contro TanH ha anche il problema del gradiente di scomparsa, ma il gradiente è più forte per TanH rispetto al sigmoide (i derivati sono più ripidi). TanH è centrato sullo zero e i gradienti non devono spostarsi in una direzione specifica. 3.ReLU (Unità Lineare Rettificata) ReLU sta per Rectified Linear Unit ed è una delle funzioni di attivazione più comunemente utilizzate nelle applicazioni. È stato risolto il problema della sfumatura sfumata perché il valore massimo del gradiente della funzione ReLU è uno. Ha anche risolto il problema della saturazione del neurone, poiché la pendenza non è mai zero per la funzione ReLU. L'intervallo di ReLU è compreso tra 0 e infinito. Matematicamente, può essere rappresentato come: Pro e contro Poiché solo un certo numero di neuroni viene attivato, la funzione ReLU è molto più efficiente dal punto di vista computazionale rispetto alle funzioni sigmoide e TanH. ReLU accelera la convergenza della discesa del gradiente verso il minimo globale della funzione di perdita grazie alla sua proprietà lineare e non saturante. Uno dei suoi limiti è che dovrebbe essere utilizzato solo all'interno di livelli nascosti di un modello di rete neurale artificiale. Alcuni gradienti possono essere fragili durante l'allenamento. In altre parole, per le attivazioni nella regione (x<0) di ReLu, la pendenza sarà 0 per cui i pesi non verranno regolati durante la discesa. Ciò significa che quei neuroni che entrano in quello stato smetteranno di rispondere alle variazioni di input (semplicemente perché il gradiente è 0, non cambia nulla). Questo è chiamato problema ReLu morente . 4. ReLU che perde Leaky ReLU è una versione aggiornata della funzione di attivazione ReLU per risolvere il problema ReLU morente, poiché ha una piccola pendenza positiva nell'area negativa. Tuttavia, la coerenza del vantaggio tra le attività è attualmente ambigua. Matematicamente, può essere rappresentato come Pro e contro I vantaggi di Leaky ReLU sono gli stessi di ReLU, oltre al fatto che consente la backpropagation, anche per valori di input negativi. Apportando piccole modifiche ai valori di input negativi, il gradiente del lato sinistro del grafico risulta essere un valore reale (diverso da zero). Di conseguenza, non ci sarebbero più neuroni morti in quell'area. Le previsioni potrebbero non essere stabili per valori di input negativi. 5.ELU (Unità lineari esponenziali) ELU è anche una delle varianti di ReLU che risolve anche il problema ReLU morto. ELU, proprio come ReLU che perde, considera anche i valori negativi introducendo un nuovo parametro alfa e moltiplicandolo per un'altra equazione. ELU è leggermente più costoso dal punto di vista computazionale rispetto a ReLU che perde ed è molto simile a ReLU ad eccezione degli input negativi. Sono entrambi in forma di funzione identità per input positivi. Matematicamente, può essere rappresentato come: Pro e contro ELU è una forte alternativa a ReLU. Diversamente dalla ReLU, ELU può produrre uscite negative. Le operazioni esponenziali sono presenti in ELU, quindi aumenta il tempo di calcolo. Non avviene alcuna conoscenza del valore 'a' e il problema del gradiente di esplosione. 6. Softmax Una combinazione di molti sigmoidi viene definita funzione Softmax. Determina la probabilità relativa. Simile alla funzione di attivazione sigmoidea, la funzione Softmax restituisce la probabilità di ciascuna classe/etichetta. Nella classificazione multiclasse, la funzione di attivazione softmax è più comunemente utilizzata per l'ultimo livello della rete neurale. La funzione softmax fornisce la probabilità della classe corrente rispetto alle altre. Ciò significa che considera anche la possibilità di altre classi. Matematicamente, può essere rappresentato come: Pro e contro Imita l'unica etichetta codificata meglio dei valori assoluti. Perderemmo informazioni se usiamo valori assoluti (modulo), ma l'esponenziale si occupa di questo da solo. La funzione softmax dovrebbe essere utilizzata anche per la classificazione multi-etichetta e l'attività di regressione. 7. Swish Swish consente la propagazione di alcuni numeri di pesi negativi, mentre ReLU imposta tutti i pesi non positivi a zero. Questa è una proprietà cruciale che determina il successo delle funzioni di attivazione regolare non monotoniche, come quelle di Swish, in reti neurali progressivamente profonde. È una funzione di attivazione automatica creata dai ricercatori di Google. Matematicamente, può essere rappresentato come: Pro e contro Swish è una funzione di attivazione regolare che significa che non cambia improvvisamente direzione come fa ReLU vicino a x uguale a zero. Piuttosto, si piega dolcemente da 0 verso valori < 0 e poi di nuovo verso l'alto. I valori non positivi sono stati azzerati nella funzione di attivazione ReLU. I numeri negativi, d'altra parte, possono essere utili per rilevare i modelli nei dati. A causa della scarsità, i grandi numeri negativi vengono spazzati via, risultando in una situazione vantaggiosa per tutti. La funzione di attivazione del fruscio non essendo monotona migliora il termine dei dati di input e il peso da apprendere. Con il tempo, probabilmente sorgeranno problemi leggermente più costosi dal punto di vista computazionale e più problemi con l'algoritmo. Considerazioni importanti sulle funzioni di Attivazione Nella scelta della corretta funzione di attivazione, è necessario considerare i seguenti problemi e problematiche: Il gradiente di fuga è un problema comune riscontrato durante l'allenamento della rete neurale. Come una funzione di attivazione sigmoidea, alcune funzioni di attivazione hanno un piccolo intervallo di uscita (da 0 a 1). Quindi un enorme cambiamento nell'input della funzione di attivazione del sigmoide creerà una piccola modifica nell'output. Pertanto, anche la derivata diventa piccola. Queste funzioni di attivazione vengono utilizzate solo per reti poco profonde con solo pochi livelli. Quando queste funzioni di attivazione vengono applicate a una rete multistrato, il gradiente potrebbe diventare troppo piccolo per l'allenamento previsto. I gradienti esplosivi sono situazioni in cui si accumulano enormi gradienti errati durante l'allenamento, con conseguenti enormi aggiornamenti dei pesi del modello di rete neurale. Quando ci sono gradienti esplosivi, potrebbe formarsi una rete instabile e la formazione non può essere completata. A causa dell'esplosione dei gradienti, i valori dei pesi possono potenzialmente crescere fino al punto in cui traboccano, con conseguente perdita di valori di NaN . Note finali sulle funzioni di Attivazione Tutti i livelli nascosti utilizzano generalmente le stesse funzioni di attivazione. La funzione di attivazione ReLU deve essere utilizzata solo nel livello nascosto per ottenere risultati migliori. Le funzioni di attivazione Sigmoid e TanH non dovrebbero essere utilizzate negli strati nascosti a causa del gradiente di fuga, poiché rendono il modello più suscettibile ai problemi durante l'allenamento. La funzione Swish viene utilizzata nelle reti neurali artificiali con una profondità superiore a 40 strati. I problemi di regressione dovrebbero utilizzare funzioni di attivazione lineare I problemi di classificazione binaria dovrebbero utilizzare la funzione di attivazione sigmoidea I problemi di classificazione multiclasse possono utilizzare la funzione di attivazione softmax Architettura della rete neurale e loro funzioni di attivazione utilizzabili: Rete neurale convoluzionale (CNN): funzione di attivazione ReLU Recurrent Neural Network (RNN): funzioni di attivazione di TanH o sigmoide Vuoi mettere in pratica quello che hai letto ? Scarica Progetti già pronti Lavora con il nostro editor online senza dover installare librerie Usa i nostri set di Dati Oppure segui i tutorial correlati : Tutorial di Regressione Logistica per l'apprendimento automatico Riconoscimento facciale con Python, in meno di 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 Feature Engineering e Feature Selection per Principianti e non Spiegazione della più semplice rete neurale per principianti PyScript, come usare Python nel browser! Il tuo Primo Programma di Machine Learning con Python e Google Colab Il tuo primo Programma di Deep Learning in Python con Keras Step-By-Step Come costruire modelli predittivi sanitari utilizzando PyHealth? Esempio pratico Rilevamento Di Veicoli In Tempo Reale Come implementare l'algoritmo Perceptron da zero in Python Implementare le reti neurali ricorrenti (RNN) con Python e Keras Deep learnign e python : Object Recognition e Object Predict esempio Come salvare e caricare il tuo modello di deep learning
- Cosa fa un data scientist?
Questo articolo fornisce le risposte migliori, più dirette e chiare possibili a : "Cos'è la scienza dei dati?" e "Cosa fa un data scientist?" Non puoi proprio evitarlo, vero? È menzionato ovunque guardi. Il tuo feed LinkedIn, mercato del lavoro, feed di notizie, programmi di istruzione che cercano di attirare la tua attenzione (e la tua quota di iscrizione). Ma cos'è la scienza dei dati? Spesso è descritta in modo molto vago, lasciando molto a desiderare. Questa guida cercherà di evitare tutto questo e di fornirti le migliori risposte possibili, più dirette e chiare a "Cos'è la scienza dei dati?" e "Cosa fa un data scientist?". Allora, cosa fanno i data scientist? Per rispondere a questa domanda, ti guideremo attraverso i vari aspetti del lavoro nella scienza dei dati. Ruolo e responsabilità di un Data Scientist Il ruolo della scienza dei dati è utilizzare quantità insondabili di dati che ogni azienda raccoglie al giorno d'oggi e trasformarli in informazioni comprensibili e utili. Questa trasformazione dei dati in informazioni viene eseguita utilizzando tecniche come l'apprendimento automatico (ML), l'intelligenza artificiale (AI) e l'analisi statistica. Tutto ciò che viene fatto con lo scopo di risolvere i problemi del mondo reale. Il mondo reale di solito si traduce in problemi di affari. Ciò significa che le aziende utilizzano la scienza dei dati per prendere decisioni aziendali più valide e ottenere maggiori profitti. Ora che abbiamo teoricamente descritto il ruolo di un data scientist, è il momento di chiederci cosa significhi in pratica. Cosa fa un data scientist? il Data scientist: Identifica il problema aziendale Raccoglie dati Prepara i dati per l'analisi manipolandoli e pulendoli Immagazzina dati Analizza i dati per trovare tendenze e modelli Costruisce, addestra e convalida il modello Mantiene l'intero infrastruttura Titoli di lavoro di scienza dei dati Il titolo di lavoro più generale nella scienza dei dati che comprende tutte le competenze utilizzate nel campo della scienza dei dati è, beh, uno scienziato dei dati. Essere un data scientist include tutte le responsabilità sopra menzionate. Tuttavia, questo non è l'unico titolo di lavoro nella scienza dei dati. Esistono numerosi altri titoli di lavoro che dipendono dall'anzianità, dall'organizzazione aziendale, dalle dimensioni, ecc. Soprattutto, i titoli di lavoro dipendono dalla parte della scienza dei dati su cui si concentrano. Data Scientist e Data Providers Quando parliamo di fornitori di dati, parliamo di lavori incentrati su dati grezzi, infrastruttura dati, caricamento dati e database. I titoli di lavoro di scienza dei dati in questa categoria sono, ad esempio, modellatore di dati, ingegnere di dati, amministratore di database, architetto di dati e ingegnere del software. In un modo o nell'altro, tutti garantiscono che l'altra categoria di lavori nella scienza dei dati (utenti di dati) abbia accesso ininterrotto ai dati, il che costituisce la base su cui gli utenti possono costruire dati. Naturalmente, tutti quei lavori del fornitore di dati hanno scopi diversi tra loro. Modellatore di dati e Data scientist Ad esempio, un modellatore di dati crea modelli di database concettuali, logici e fisici ed è coinvolto nell'implementazione del database. Ingegnere dei dati Gli ingegneri dei dati sono più interessati all'infrastruttura dei dati, al suo sviluppo e alla manutenzione, inclusi il data warehousing e l'estrazione, la trasformazione e il caricamento dei dati (ETL/ELT). Dai un'occhiata al nostro post su Data Engineer vs Data Scientist che può spiegare cosa hanno in comune i data scientist e gli ingegneri dei dati e cosa no. Amministratore dei database Gli amministratori di database, data l'infrastruttura dei dati, garantiscono l'integrità e la sicurezza dei dati e del database. Ciò include la concessione e la revoca dell'accesso ai dati, il backup dei database, il ripristino dei dati, ecc. Ingegnere del software In cima all'infrastruttura di dati fornita dai titoli di lavoro di cui sopra siedono ingegneri del software. Progettano, sviluppano, testano e gestiscono software che funge da interfaccia per i dati che gli utenti utilizzeranno per sfruttare al meglio i dati sottostanti e l'infrastruttura dei dati. Architetto dei dati I data architect forniscono il quadro generale e coordinano tutti quei fornitori di dati. Il loro compito è comprendere i processi dell'azienda, in modo che possano pianificare, implementare e migliorare l'architettura dell'infrastruttura di gestione dei dati dell'azienda. Ciò significa fornire soluzioni su come i dati entrano nell'azienda in diversi punti di ingresso. In quale formato vengono inseriti i dati, quale software viene utilizzato per elaborarli (se presente) e come i dati vengono trasformati e caricati nel database o nei data warehouse. Come viene utilizzato dall'azienda fino al punto in cui i dati diventano l'output dell'azienda. Data Scientist e Data User Gli utenti dei dati utilizzano i dati disponibili e l'infrastruttura dei dati per fornire informazioni a chi poi agirà sulla base di questi dati ( ad esempio i manager ) . Sono il collegamento tra lavori piuttosto "ingegneristici" di fornitori di dati e decisori, che di solito sono meno tecnici. Gli utenti di dati all'interno della scienza dei dati, oltre ai data scientist, includono analisti di dati, statistici, sviluppatori di BI, analisti aziendali, analisti quantitativi, marketing, ingegneri dell'apprendimento automatico, ricercatori, ecc. Di nuovo, hanno tutti uno scopo diverso all'interno di un'azienda . Analista dati Ad esempio, gli analisti di dati si concentrano su report, analisi regolari e ad hoc. Usano i dati e li riassumono nel formato di reporting. Ciò offre agli utenti meno esperti la possibilità di utilizzare questi dati e comprendere vari aspetti dell'attività dell'azienda. Gli analisti di dati utilizzano principalmente dati storici. Statistico Gli statistici sono simili agli analisti di dati anche nel modo in cui analizzano i dati. Tuttavia, sono più interessati a predire il futuro e non tanto a spiegare il passato. Usano i dati per vedere cosa accadrà, non cosa è già successo. Per fare ciò, applicano metodi statistici ai dati, come test di ipotesi e probabilità. In questo modo, anche gli statistici sono simili ai data scientist. La differenza è che, a differenza dei data scientist, non costruiscono modelli e si concentrano solo sulla parte statistica della scienza dei dati. Sviluppatore BI Gli sviluppatori BI sono quelli che sviluppano (progettano, costruiscono e mantengono) dashboard negli strumenti BI con lo scopo di visualizzazione e reporting dei dati. Sono simili agli analisti di dati anche nel modo in cui creano report. Tuttavia, hanno anche alcune competenze ingegneristiche che usano per i dati ETL e creano l'interfaccia utente, come fanno rispettivamente gli ingegneri dei dati e gli ingegneri del software. Analista di affari Gli analisti aziendali si concentrano sul reporting, proprio come gli analisti di dati. Tuttavia, di solito si concentrano sulla reportistica interna, cosa che non è sempre il caso degli analisti di dati, per rilevare i punti deboli nei processi aziendali dell'azienda e migliorarli. Analista Quantitativo Gli analisti quantitativi sono, il più delle volte, data scientist focalizzati sui dati finanziari. Lo analizzeranno e costruiranno modelli relativi a vari mercati finanziari, come prestiti, azioni, obbligazioni, FX, ecc. Le loro analisi verranno utilizzate per decidere strategie di trading, investimenti fattibili e gestione del rischio. Marketing Gli scienziati del marketing sono, ancora una volta, scienziati dei dati che lavorano con un solo tipo di dati. In questo caso si tratta di dati di marketing. Come qualsiasi scienziato di dati, analizzeranno tali dati e cercheranno di trovare modelli e tendenze per spiegare e prevedere il comportamento dei clienti, il che aiuta a risolvere i problemi di marketing e vendita. Scienziato dell'apprendimento automatico Gli scienziati dell'apprendimento automatico sono una sorta di estensione dei data scientist. Mentre i data scientist sono più interessati alla parte teorica della creazione di modelli, gli ingegneri dei dati li mettono in pratica. Prendono modelli prototipo e li distribuiscono alla produzione. Ciò comporta l'ingegneria di software e algoritmi di intelligenza artificiale che faranno funzionare in pratica i modelli di apprendimento automatico. Ricercatore Mentre gli ingegneri dell'apprendimento automatico sono i professionisti in questa categoria di data scientist, i ricercatori sono i teorici. Il compito dei ricercatori è comprendere i principi di calcolo e le problematiche che ne derivano. Per risolvere questi problemi, migliorano o creano algoritmi e linguaggi di programmazione completamente nuovi. Percorso di carriera nella scienza dei dati Nell'immagine seguente, c'è un esempio di come potrebbe essere il tuo percorso professionale di data scientist . Ciò non significa che sia un viaggio a senso unico (non deve essere affatto un viaggio!) o che questi titoli di lavoro non possano essere intercambiabili e spostati tra loro in modi diversi. È solo una panoramica, dai un'occhiata e poi la seguiremo con alcune spiegazioni. L'educazione come punto di partenza PER I DATA SCIENIST La scienza dei dati si trova al crocevia di statistica, matematica e informatica. E anche altre discipline. Quindi avere un'istruzione almeno in questi campi è un buon punto di partenza. Tuttavia, non possiamo scrivere la guida che si applicherà a ogni candidato e annuncio di lavoro. La regola generale è: ottenere almeno una laurea per avere una buona posizione di partenza per competere nel mercato del lavoro della scienza dei dati. Quindi abbinalo all'esperienza lavorativa. Un buon equilibrio di entrambi è sempre una ricetta con cui non puoi sbagliare. Naturalmente, ottenere più istruzione e sempre più esperienza ti mette sempre in una posizione ancora migliore; nessuna sorpresa in questo. Diamo un'occhiata a quali sono i requisiti di istruzione/laurea: Laurea Triennale/Laurea Magistrale dottorato di ricerca o Master Bootcamp Laurea Triennale / Laurea Magistrale per Data Scientist Se vuoi costruire una carriera nella scienza dei dati, è una buona idea avere almeno una laurea. Avere una laurea o un master è utile per ottenere qualsiasi lavoro nella scienza dei dati, con questo livello di istruzione richiesto nella maggior parte degli annunci di lavoro. La tua laurea dovrebbe essere in campi quantitativi rilevanti come statistica, matematica, informatica, ingegneria, informatica, economia, programmazione, ecc., ovviamente, dipende dal titolo di lavoro e dal livello di anzianità. Inoltre, a seconda del lavoro, ci sono i vantaggi che potresti avere da una laurea in alcuni campi diversi. Forse studi umanistici, come filosofia, sociologia, psicologia. Possono essere utili (a volte anche necessari!) Se vuoi essere uno scienziato di marketing che cerca di capire e prevedere il comportamento umano. I ricercatori a volte possono lavorare su principi di calcolo che possono essere profondamente connessi con l'etica e il comportamento umano. A seconda della descrizione del lavoro e dell'anzianità, potrebbe anche essere utile se hai una laurea in finanza, economia o un titolo simile. Forse lavori con i dati finanziari e sei ai vertici della gerarchia, quindi, insieme alle tue capacità tecniche, anche avere un po' di leadership e conoscenza degli affari e l'istruzione è qualcosa che diventa importante. Mentre una laurea è abbastanza spesso un livello minimo di istruzione richiesto negli annunci di lavoro, a volte non è l'unico. Dottorati e Master per Data Scientist Avere un dottorato di ricerca non danneggerà le tue possibilità di ottenere nessuno dei lavori di cui sopra. Più istruzione è sempre meglio. Tuttavia, a volte questo livello non è solo bello da avere, ma è invece richiesto. Ad esempio, sarebbe una buona idea ottenere un dottorato di ricerca. se vuoi lavorare come ingegnere ML o qualsiasi altro lavoro ad alta intensità di matematica. Inoltre, i ricercatori devono essere forti nella teoria, nei principi e nella metodologia di ricerca dell'informatica. Ecco perché un dottorato di ricerca è spesso richiesto per questa posizione. Bootcamp per Data Scientist Sebbene l'istruzione formale sia spesso richiesta negli annunci di lavoro, ciò non significa che sia sempre necessaria. Se hai esperienza in alcuni aspetti della scienza dei dati ma non hai un'istruzione formale in questo campo, ciò non significa che non puoi lavorare come scienziato dei dati. In genere, maggiore è la posizione di alto livello, meno importante è la tua istruzione. Ciò che conta è ciò che hai fatto nei tuoi lavori precedenti, come lo hai fatto e quali abilità puoi apportare al nuovo lavoro. Hai bisogno di un lavoro per acquisire esperienza e rispolverare le tue capacità. E non trovi lavoro se non hai esperienza e non hai le competenze tecniche. Fortunatamente, c'è una soluzione a questo: campi di addestramento. Sono un buon punto di partenza per acquisire le competenze appropriate per la scienza dei dati. Non richiedono una laurea tecnica o un master. Questo è ottimo per chi non ha un'istruzione formale e vuole iniziare una carriera nella scienza dei dati. Sono adatti anche per le persone che si sono avvicinate alla scienza dei dati attraverso la pratica. In questo modo, possono ottenere un background più strutturato e teorico rispetto a ciò che già fanno nella pratica o migliorare le loro abilità già esistenti. Esperienza lavorativa come Data Scientist Parlando di esperienza lavorativa, è sempre la cosa più difficile iniziare a fare esperienza lavorativa. Una volta che inizi a lavorare e impari sul tuo lavoro, diventa più facile cambiare lavoro e ampliare il tuo campo di competenza. È importante costruire una solida base. Quando si inizia con la scienza dei dati, le persone generalmente iniziano come analisti di dati. Da quel momento in poi, possono scegliere di andare in due direzioni di cui abbiamo discusso in precedenza: lavorare come fornitore di dati o lavorare come utente di dati. Una cosa importante dell'immagine sopra è che mentre vai da sinistra a destra, l'anzianità delle posizioni aumenta e il tuo stipendio aumenta. Parleremo di stipendi tra un momento. Esaminiamo prima un esempio o due di come potrebbe essere la tua carriera. Diciamo che inizi come analista di dati. Dopo diversi anni di lavoro con i dati e ricerca di soluzioni alternative per quanto riguarda i database, conosci i principi del database, quindi decidi di passare a diventare un modellatore di dati o un amministratore di database. Lavorare in una di queste posizioni ti dà più esperienza e partecipi a diversi progetti riguardanti l'infrastruttura dei dati. Quindi vieni promosso e diventi un architetto di dati, ad esempio. O forse inizi come statistico. Dopo aver trascorso diversi anni in un'azienda, decidi che è ora di cambiare. Ma ti piace molto la compagnia in cui ti trovi. E ti sono davvero piaciuti diversi progetti di marketing a cui hai partecipato l'anno scorso. Ti trasferisci in un dipartimento di marketing per lavorare solo con i dati di marketing e diventare uno scienziato di marketing. Poi di nuovo, è tempo di cambiare; ti sei interessato all'apprendimento automatico e sei diventato un data scientist. Dopo diversi anni, vorresti tornare a scuola e prendere un dottorato di ricerca. Lasci il lavoro e ti dedichi a ottenere un dottorato di ricerca. Questo, combinato con la tua vasta esperienza lavorativa, ti fa capire che vuoi contribuire alla scienza dei dati in un modo diverso, forse teorico. E poi diventi un ricercatore. Questi sono solo esempi di come potrebbe essere la tua carriera. Qualsiasi somiglianza con persone reali e le loro carriere è puramente casuale. La tua carriera dipenderà dal tuo background, dalle tue capacità, dai tuoi interessi, dalle opportunità che hai nella tua (o in un'altra) azienda, dalle dimensioni dell'azienda, dall'organizzazione, dalla flessibilità e sì, un po' di fortuna. Qualsiasi modo tu scelga potrebbe avvantaggiarti a lungo termine. Ricorda, tutti questi lavori fanno parte della scienza dei dati, quindi avere più esperienza in un campo della scienza dei dati può essere utile solo se vuoi dare una scossa alle cose e fare qualcosa di nuovo per te all'interno di un campo della scienza dei dati. Naturalmente, per ottenere l'esperienza, è necessario prima un lavoro. Per ottenere un lavoro, dovrai affrontare il processo spesso noioso del colloquio di lavoro. Per rendere quell'esperienza il più indolore possibile, devi essere preparato. Competenze tecniche richiesta ai data scientist Nella scienza dei dati, le seguenti competenze sono obbligatorie: Programmazione in linguaggi come SQL, R, Python, Java, C-family Lavorare con i dati , che implica la raccolta, la pulizia e l'analisi dei dati Progettazione di database per capire come ottenere e archiviare i dati Analisi statistica per ottenere insight dai dati Matematica utilizzata nell'analisi dei dati e nel calcolo delle metriche Modellazione per la progettazione e la costruzione di modelli ML e AI per la distribuzione di modelli Dai un'occhiata al nostro post sulle competenze sulla scienza dei dati più richieste per scoprire quali sono le competenze tecniche e le competenze aziendali della scienza dei dati più richieste che devi avere come scienziato dei dati. Quanto guadagna un Data Scientist Nella scelta di una carriera, a parte i tuoi interessi e le circostanze, anche lo stipendio gioca il suo ruolo Secondo Jobted, che cita l'US Bureau of Labor Statistics (BLS), lo stipendio medio annuo negli Stati Uniti è di circa 53,5k. Quindi, come si confrontano i lavori nella scienza dei dati con questo? Ad esempio, i dati di Glassdoor mostrano che gli analisti di dati guadagnano in media $ 70.000 all'anno. Anche questo lavoro (in media) meno pagato nella scienza dei dati ti farà guadagnare oltre $ 15.000 al di sopra della media statunitense. Questo è il 30% in più! Lavorare come scienziato dei dati, che è uno dei lavori più pagati nella scienza dei dati, potrebbe farti guadagnare in media $ 139.000 , che è più di 1,5 volte superiore alla media. Anche lo stipendio più basso riportato è il doppio della media degli Stati Uniti, mentre lo stipendio può arrivare fino a $ 171.000. E questo non è nemmeno il lavoro più remunerativo nella scienza dei dati. L'istruzione, la conoscenza e le abilità ripagano davvero, nel caso ti chiedessi se investire nell'avanzamento di carriera o nel cambiamento. Di seguito è riportata la panoramica delle posizioni lavorative e degli stipendi medi in USD. Analista dati $ 70k Amministratore del database $ 84k Modellatore di dati $ 94k Ingegnere del software $ 108k Ingegnere dei dati $ 113k Architetto dei dati $ 119k Statistico $ 89k Sviluppatore di business intelligence (BI) $92k Scienziato di marketing $ 94k Analista di affari $ 77k Analista quantitativo $112k Scienziato dei dati $139k Ricercatore $142k Ingegnere di apprendimento automatico $189k A seconda dell'azienda in cui lavori, puoi aspettarti che gli stipendi base vengano aumentati di diversi vantaggi, come bonus in contanti e azioni, assicurazione sanitaria e sulla vita, ecc. Orario di lavoro dei Data Scientist Spesso, essere molto richiesti ed essere pagati in modo piuttosto dolce ha un prezzo. No, non è tutto roseo nella scienza dei dati. Sebbene di solito lavorino 40 ore a settimana, i data scientist occasionalmente hanno bisogno di dedicare lunghe ore. Ancora una volta, dipende dall'azienda, dalla sua organizzazione, dal settore e da altri numerosi fattori. Ma il più delle volte, va con la descrizione del lavoro e la sua natura periodica, il che significa che ti equilibrerai tra periodi completamente rilassati e facili e picchi in cui dovrai dedicare 50-60 ore lavorative a settimana. Questo perché le attività di scienza dei dati di solito coinvolgono progetti, il che significa risolvere i problemi entro scadenze rigorose. Con l'avvicinarsi della scadenza, il carico di lavoro di solito aumenta ed è allora che i data scientist devono dedicare qualche ora in più. Cosa rende un data scientist di successo? Avere un'istruzione pertinente e competenze tecniche è, ovviamente, il prerequisito per diventare un data scientist. Ma questo fa di te un grande scienziato di dati? Non necessariamente. Il punto della scienza dei dati è risolvere i problemi della vita reale. Puoi avere tutte le competenze tecniche del mondo, ma se non puoi usare quelle brillanti capacità per trovare una soluzione, qual è il punto? Oppure trovi una soluzione, ma nessuno la capisce e la usa. Hai davvero risolto il problema? No, non l'hai fatto. Le competenze tecniche vengono utilizzate per risolvere il problema e uno dei modi migliori per affinarle è creare un proprio progetto di analisi dei dati . Tuttavia, sono necessarie anche le competenze trasversali. Trovare una soluzione è in qualche modo inserito tra le altre due fasi importanti del lavoro di un data scientist. Capire il problema Trovare la soluzione (tramite competenze tecniche) Presentando la soluzione Per essere un grande data scientist, devi: Avere un pensiero Critico ( o essere un rompi palle ) Comunicare bene Essere bravo nel lavoro di squadra Essere dinami e Trasversale Essere Curioso e Infantile Non stiamo parlando di essere un monello viziato. Essere infantili significa essere curiosi, fare domande, voler imparare ed essere giocosi. Devi essere curioso, accettare di non capire tutto ed essere disposto ad imparare. Per farlo, devi fare quello che fanno i bambini: fare domande finché non ottengono risposte di cui sono felici. Devi diventare il " ragazzo dei perché". Solo in questo modo sarai in grado di comprendere il problema aziendale, le diverse esigenze di persone, reparti e clienti. Una volta che li capisci, usare le tue capacità tecniche diventa, beh, tecnicità. E quando trovi una soluzione, devi essere giocoso e fantasioso su come presenti la tua soluzione, probabilmente molto complessa, in modo che gli altri possano capirla e usarla. Comunicazione e Data Scientist La comunicazione è un'estensione naturale della prima abilità. Devi comunicare in modo efficiente, porre le domande giuste, presentare le tue idee e soluzioni in modo comprensibile. Quando le persone sentono che sei aperto ai suggerimenti, che le ascolti e le tratti con rispetto, saranno molto più coinvolte nel progetto. Saranno disposti a spiegare le loro esigenze e problemi (di affari) in modo molto più dettagliato, rendendo più facile per te capire cosa ti viene richiesto correttamente. Ovviamente, non ha senso inventare una brillante soluzione di data science se non puoi spiegare come funziona, in che modo avvantaggia i suoi utenti e come possono usarla. Quindi la comunicazione è necessaria quando presenti la tua soluzione. Lavoro di Squadra e Data Scientist Fortunatamente o no, lavorerai con persone reali che cercano di risolvere i loro problemi reali. Non lavorerai da solo all'interno del tuo dipartimento. E non lavorerai solo con persone del tuo dipartimento. Lavorerai con varie persone provenienti da diversi percorsi di vita, con diverse competenze tecniche, specializzazioni ed esperienze. Per essere un data scientist di successo, devi capire le persone e avere pazienza con loro, essere flessibile e adattarti a situazioni e approcci diversi. Creare una buona atmosfera di lavoro sarà vantaggioso per l'azienda, il tuo team e te stesso. Essere affidabili, responsabili e disposti ad aiutare i tuoi colleghi è qualcosa che è sempre apprezzato. Trasversalità nei Data Scientist Lavorare in team (diversi) con persone significa che lavorerai con diversi livelli e campi di competenza. Questa è un'opportunità per imparare. È allora che entra in gioco la trasversalità. Un data scientist che non sa nulla al di fuori dei rigidi confini della scienza dei dati non può essere un grande data scientist. La sezione trasversale ti farà capire e risolvere i problemi più rapidamente. Presenterai le soluzioni in modo più chiaro. Comprendere affari, marketing, reportistica, legale o qualsiasi altro aspetto del settore in cui lavori ti rende facilmente un datore di lavoro molto desiderabile. Gli esperti che possono colmare il divario tra i reparti tecnici e non tecnici sono fiori rari e molto preziosi. Conclusione sui Data Scientist La scienza dei dati è oggi uno dei campi più caldi del mercato del lavoro. C'è una forte domanda di data scientist, ma c'è anche molta concorrenza. Ciò significa che non è facile diventare un data scientist. Tuttavia, non è nemmeno impossibile. Questa guida è una delle cose che dovrebbe rendere più facile decidere se la scienza dei dati fa per te o meno. Per riassumere, ecco i passaggi per ottenere un lavoro nella scienza dei dati e avere successo: Ottieni una formazione in informatica o altri campi quantitativi. Lavora sulle tue competenze tecniche, come la programmazione, l'analisi dei dati, la progettazione di database e la costruzione di modelli. Preparati con cura per un colloquio di lavoro, il che significa rispondere a quante più domande tecniche e non tecniche possibili, ricercare l'azienda e la posizione per cui ti sei candidato. Lavora sulle tue competenze trasversali. Vuoi mettere in pratica quello che hai letto ? Scarica Progetti già pronti Lavora con il nostro editor online senza dover installare librerie Usa i nostri set di Dati Oppure segui i tutorial correlati : Tutorial di Regressione Logistica per l'apprendimento automatico Riconoscimento facciale con Python, in meno di 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 Feature Engineering e Feature Selection per Principianti e non Spiegazione della più semplice rete neurale per principianti PyScript, come usare Python nel browser! Il tuo Primo Programma di Machine Learning con Python e Google Colab Il tuo primo Programma di Deep Learning in Python con Keras Step-By-Step Come costruire modelli predittivi sanitari utilizzando PyHealth? Esempio pratico Rilevamento Di Veicoli In Tempo Reale Come implementare l'algoritmo Perceptron da zero in Python Implementare le reti neurali ricorrenti (RNN) con Python e Keras Deep learnign e python : Object Recognition e Object Predict esempio Come salvare e caricare il tuo modello di deep learning
- Cos'è un modello di Machine Learning o Apprendimento Automatico?
I modelli di apprendimento automatico o machine learning svolgono un ruolo fondamentale nell'intelligenza artificiale. In parole semplici, sono rappresentazioni matematiche . In altre parole, sono l'output che riceviamo dopo aver addestrato un processo. Quello che fa un modello di machine learning è scoprire i patterns in un set di dati di addestramento . In altre parole, i modelli di apprendimento automatico associano gli input agli output del set di dati specificato. Prerequisiti : Che cosa è il Machine Learning (ML) Cos'è il Machine Learning in 3 minuti! Spiegato in modo semplice Guida Completa Algoritmi di Machine Learning Falsi miti sul machine learning Machine Learning Esempi di Utilizzo nella Vita di tutti i Giorni Come funzionano gli algoritmi di machine learning? La spiegazione Completa Ciclo di vita del Machine Learning e delle Intelligenze artificiali Questi modelli di classificazione possono essere classificati in diversi modi chiamati Analisi delle componenti principali , Riduzioni dimensionali , Clustering , Modelli di regressione, Modelli di classificazione, ecc. Adesso poniamoci delle domande per capire in modo approfondito cosa è un modello e cosa centra con il machine learning o apprendimento automatico. Cos'è un modello nell'apprendimento automatico o machine learning? Costruire un modello nell'apprendimento automatico significa creare una rappresentazione matematica generalizzando e imparando dai dati di addestramento. Quindi, il modello di apprendimento automatico creato viene applicato ai nuovi dati per fare previsioni e ottenere risultati. Il modello che crei può essere un modello di regressione o un modello di classificazione basato sulla variabile target nota come variabile Y. Se la variabile target ha un valore quantitativo , è necessario creare un modello di regressione . Se il tipo di dati della variabile target è qualitativo , è necessario creare un modello di classificazione . La mancanza di dati può essere una sfida nella creazione di modelli di machine learning. Anche se hai accesso a un numero sufficiente di dati, dovrebbero essere in buone condizioni e puliti prima di creare il modello. Quali sono i modelli utilizzati nel machine learning? Esistono due tipi di apprendimento automatico: apprendimento supervisionato e apprendimento non supervisionato . Apprendimento supervisionato: Nell'apprendimento supervisionato, i modelli di apprendimento automatico cercano di capire le migliori dipendenze e relazioni tra i valori di input e gli obiettivi. È necessario fornire un set di dati di addestramento di input etichettato per l'apprendimento supervisionato. Gli algoritmi di apprendimento automatico scoprono i modelli da quel set di dati. Quindi, crea un modello che può essere utilizzato su nuovi dati chiamato test data. Apprendimento non supervisionato: L'apprendimento non supervisionato crea cluster utilizzando i dati di input . Nell'apprendimento non supervisionato, dovresti fornire un set di dati senza valori di output. Quindi, i modelli di apprendimento automatico possono capire modelli, regole e riepiloghi di punti dati simili. Vediamo i diversi tipi di modelli di apprendimento supervisionato e non supervisionato. Tipi di modelli di apprendimento supervisionato Modelli di regressione: è possibile creare un modello di regressione se le variabili di output del problema hanno valori continui. Ad esempio, crei modelli di regressione per prevedere i prezzi delle case. Modelli di classificazione: è possibile creare modelli di classificazione per prevedere la classe o il tipo di un oggetto da un numero finito di opzioni. In questi modelli, la variabile di output è sempre categoriale. I modelli di classificazione sono di due tipi. Questi sono modelli di classificazione multiclasse e modelli di classificazione binaria . I modelli di classificazione multiclasse vengono utilizzati per prevedere più classi (più di due risultati), mentre i modelli di classificazione binaria generano previsioni per un risultato binario (uno di due risultati). Ad esempio, dovresti creare un modello di classificazione multiclasse per prevedere se un prodotto è abbigliamento, cibo o libro. Allo stesso modo, dovresti creare un modello di classificazione binaria per prevedere se un'e-mail è uno spam o meno. Tipi di modelli di apprendimento non supervisionato 1- Clustering: è possibile creare un modello di clustering per raggruppare elementi simili . Consente di identificare rapidamente oggetti simili senza intervento manuale. 2- Regola di associazione: puoi creare un modello di regola di associazione per scoprire le associazioni nei dati . Ad esempio, se acquisti uno smartphone, è più probabile che tu acquisti anche una custodia per telefono. 3- Riduzione dimensionale: è possibile creare un modello di riduzione dimensionale per generalizzare i dati ed estrarre informazioni significative. 4- Deep Learning : nell'apprendimento profondo , utilizzi le reti neurali per creare modelli di machine learning. I modelli di deep learning possono essere classificati come autoencoder, macchine Boltzmann, reti neurali ricorrenti, reti neurali di convoluzionee perceptron multistrato in base alla loro architettura di rete neurale . Puoi utilizzare modelli di deep learning nell'apprendimento automatico supervisionato o non supervisionato. Qual è la metrica più importante per valutare un modello di machine learning? Quindi, ora che conosci i diversi tipi di modelli disponibili in ML, quale metrica è più importante per determinare il valore di un modello di machine learning? La metrica più importante di un modello di machine learning di classificazione è l' accuratezza . La precisione è il rapporto tra il numero totale di previsioni corrette e il numero totale di punti dati nel set di dati di test. La precisione è un modo per valutare le prestazioni di un modello , ma ci sono altri modi. Tuttavia, l'accuratezza offre la migliore prospettiva delle prestazioni di un modello per un determinato set di dati rispetto ad altre metriche. Usiamo le metriche per valutare le prestazioni di un modello. Successivamente, discuteremo i parametri del modello di cui il modello ha bisogno per fare previsioni. Che cos'è un parametro del modello nell'apprendimento automatico? Un parametro del modello è un valore che viene appreso e stimato durante l'addestramento dal set di dati. Il valore deve essere approssimato dai dati di addestramento. Quindi, i parametri del modello sono variabili interne del modello di apprendimento automatico. I valori dei parametri del modello vengono impostati in base all'addestramento. I modelli di apprendimento automatico utilizzano questi valori per fare previsioni. Le prestazioni del modello si basano sull'accuratezza dei valori dei parametri del modello. I valori dei parametri del modello hanno un certo grado di controllo sulla complessità di un modello . Cos'è una curva di complessità del modello nell'apprendimento automatico? La curva di complessità del modello è una trama grafica utilizzata per esprimere la complessità di un modello. Mostra l'aumento relativo delle informazioni all'aumentare della dimensione del campione. La curva di complessità può essere utilizzata per l'eliminazione dei dati e può accelerare il processo di apprendimento senza influire sull'accuratezza della classificazione. La curva di complessità consente di confrontare le prestazioni del modello sui dati di addestramento e convalida man mano che il modello diventa più o meno complesso. In generale, i modelli più complessi danno le migliori prestazioni rispetto ai modelli semplici. Ci sono molti parametri nei modelli complessi. Pertanto, possono adattarsi bene al risultato desiderato regolando questi parametri durante l'allenamento. Quindi, il loro tasso di errore sarà molto più basso. Nell'apprendimento automatico cos'è un model artifact ? Quando si addestra un modello ML, è necessario fornire i dati di addestramento all'algoritmo di apprendimento automatico da cui apprendere. Il model artifact è l'output creato dal processo di formazione. Potrebbe essere un file generato dal processo di addestramento, un checkpoint del modello o un modello completamente addestrato. Ad esempio, se alleni un modello di deep learning, guadagni pesi allenati come output. Qual è l'ordine corretto dei passaggi da eseguire nella creazione di un modello di apprendimento automatico? Ci sono sette passaggi che devi seguire quando crei modelli di machine learning. Non dovresti ignorare nessuno di questi 7 passaggi chiave nello sviluppo del modello di apprendimento automatico. 1. Raccogliere dati Prima di tutto, dovresti raccogliere dati. Questo passaggio è estremamente importante poiché la qualità e la quantità di dati raccolti hanno un enorme impatto sull'output del modello di machine learning. 2. Preparare i dati E' necessario modellare i dati aziendali raccolti in modo che possano essere utilizzati per addestrare un modello di machine learning. Le prestazioni del modello di apprendimento automatico si basano sulla qualità dei dati. La preparazione dei dati significa la pre-elaborazione dei dati rimuovendo i duplicati, correggendo gli errori e normalizzando. Quindi la preparazione dei dati prevede la pulizia, la trasformazione, l'aggregazione, la normalizzazione, l'aumento e l'etichettatura dei dati . 3. Scegli il modello Quando i tuoi dati sono in una forma utilizzabile, puoi scegliere il modello della tua macchina. Dovresti selezionare il modello di machine learning appropriato in base ai tuoi obiettivi di business. A seconda dell'obiettivo che desideri raggiungere, puoi selezionare modelli di machine learning tra cui regressione lineare, deep learning, clustering, classificazione e così via. Scegliere il modello giusto per i tuoi dati può essere una decisione difficile e talvolta richiedere molti tentativi ed errori per arrivare alla conclusione finale. 4. Addestra il tuo modello L'addestramento del modello di machine learning è al centro della creazione di modelli di machine learning. Il modello di apprendimento automatico sta attraversando la parte di apprendimento in questa fase. In questa fase, il modello è sottoposto a riqualificazione finché il modello di apprendimento automatico non fornisce il livello di accuratezza desiderato. 5. Valutazione Nella fase di valutazione, esegui la garanzia della qualità per il tuo modello di apprendimento automatico. Valuti il tuo modello di machine learning utilizzando calcoli di matrice, misurazioni della qualità e approccio metrico del modello. 6. Regolazione dei parametri Dopo aver eseguito la valutazione, puoi verificare se puoi migliorare ulteriormente la formazione. Devi fare la regolazione dei parametri per quello. Puoi mostrare il set di dati completo al tuo modello, in modo che possa ottimizzare i parametri e migliorare le previsioni. Puoi anche mostrare il set di dati completo con diversi timer per consentire al modello di fare previsioni più accurate. 7. Previsione o inferenza Dopo aver completato tutti i passaggi precedenti, puoi utilizzare il tuo modello di apprendimento automatico in scenari di vita reale. La fase finale del processo di costruzione del modello è chiamata previsione o inferenza . Questa è la fase di distribuzione del modello in cui è possibile utilizzare il modello di apprendimento automatico per risolvere i problemi del mondo reale. Questo processo prevede la fornitura di modelli di apprendimento automatico in produzione. Il Machine Learning Model Management gioca qui un ruolo significativo in quanto consente di portare il modello di machine learning dalla fase di sviluppo al livello di produzione. È possibile usare Azure Machine Learning per la distribuzione della gestione dei modelli. Puoi utilizzare la pipeline di machine learning per automatizzare questi flussi di lavoro di machine learning . Consente di correlare e trasformare i dati della sequenza in un modello, in modo da ottenere gli output desiderati. Le pipeline di machine learning possono trasformare il formato dei dati grezzi in informazioni utili che puoi utilizzare per estrarre informazioni dettagliate. Conclusione sui Modelli di Machine Learning La selezione del giusto modello di machine learning per un caso d'uso specifico è fondamentale per ottenere i risultati desiderati. Puoi definire KPI e metriche di valutazione per confrontare le prestazioni tra diversi modelli di machine learning per il tuo specifico problema aziendale. È possibile scegliere il modello migliore dopo aver verificato le prestazioni statistiche di ciascun modello. Vuoi mettere in pratica quello che hai letto Scarica Progetti già pronti Lavora con il nostro editor online senza dover installare librerie Usa i nostri set di Dati Oppure segui i tutorial correlati : Tutorial di Regressione Logistica per l'apprendimento automatico Riconoscimento facciale con Python, in meno di 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 Una Guida Semplice e Completa per passare da Excel a Python Feature Engineering e Feature Selection per Principianti e non Spiegazione della più semplice rete neurale per principianti PyScript, come usare Python nel browser! Il tuo Primo Programma di Machine Learning con Python e Google Colab Il tuo primo Programma di Deep Learning in Python con Keras Step-By-Step Come costruire modelli predittivi sanitari utilizzando PyHealth? Esempio pratico Rilevamento Di Veicoli In Tempo Reale Come implementare l'algoritmo Perceptron da zero in Python Implementare le reti neurali ricorrenti (RNN) con Python e Keras Deep learnign e python : Object Recognition e Object Predict esempio Come salvare e caricare il tuo modello di deep learning Apprendimento non Supervisionato con Python Filtro collaborativo cos'è e come implementarlo con python Trading algoritmico e apprendimento automatico con Python Spiegazione della più semplice rete neurale per principianti con implementazione Analisi esplorativa dati con Python. Analisi esplorativa dei dati (EDA) Come implementare l'algoritmo Perceptron da zero in Python
- Differenze tra Reti Neurali CNN Vs ANN Vs RNN
Né tutti i modelli possono essere applicati a un problema, né tutti i problemi possono essere affrontati con una rete neurale . Prerequisiti : Come funziona il Deep Learning o Apprendimento Profondo ? Spiegazione della più semplice rete neurale per principianti Come hackerare una rete neurale Cosa sono le reti neurali artificiali ANN? Cosa sono le reti neurali ricorrenti RNN? Cosa sono le reti neurali convoluzionali CNN? Se ti sei imbattuto in macchine che riconoscono il tuo viso e la tua voce tra milioni di immagini o audio e ti chiedi come sia possibile, è tutto merito delle reti neurali e del deep learning. Assomiglia al ragionamento umano e ha ispirato i ricercatori di intelligenza artificiale a sviluppare algoritmi di rete neurale . Mentre gli algoritmi di apprendimento automatico prendono decisioni in base ai dati che ricevono, le reti neurali sono progettate per seguire un percorso per arrivare all'output in modo autonomo. I ricercatori sviluppano centinaia di algoritmi in un giorno con caratteristiche e capacità di prestazioni diverse e la maggior parte dei quali si basa su modelli esistenti per prevedere e costruire modelli del mondo reale. Né tutti i modelli possono essere applicati a un problema, né tutti i problemi possono essere affrontati con una rete neurale. Tipi di reti neurali: Rete neurale artificiale (ANN): È un tipo di rete neurale progettata come rete feed-forward. Le informazioni passano da un livello all'altro senza rivisitare i livelli precedenti. È progettato per identificare il modello nei dati grezzi e migliorare ogni nuovo input che ottiene. L'architettura del design si sovrappone a tre livelli, in cui ogni strato aggiunge peso al passaggio delle informazioni. Sono popolarmente conosciuti come approssimatori funzionali universali, poiché sono in grado di apprendere funzioni non lineari. Utilizzato principalmente nei processi predittivi come nella business intelligence, nella previsione del testo, nel rilevamento di e-mail di spam, ecc., presenta pochi inconvenienti e vantaggi rispetto ad altri algoritmi. Anche se si tratta di un algoritmo a più livelli, le possibilità di una corruzione graduale sono basse. Piuttosto si verifica per un lungo periodo in modo da avere abbastanza tempo per correggere gli errori. A differenza di altre reti, memorizza le informazioni sull'intera rete lasciando pochissime possibilità di interruzione dell'intero sistema a causa di alcune informazioni mancanti. Questa stessa caratteristica rende l'ANN più tollerante ai guasti di altre. Sono popolari per le loro capacità multitasking, poiché utilizzano un sistema a più livelli in cui le informazioni sono archiviate in ogni nodo, sviluppando così la capacità di generare risultati confrontando l'evento con quelli precedenti. Nonostante i suoi numerosi vantaggi, è praticamente difficile progettare una ANN perché richiede una grande quantità di dati e molte più prove per azzerare l'architettura giusta. Semplice Esempio python Rete neurale artificiale (ANN): import numpy as np class NeuralNetwork(): def __init__(self): # impostiamo il seed np.random.seed(1) #Convertiamo i pesi self.synaptic_weights = 2 * np.random.random((3, 1)) - 1 def sigmoid(self, x): #sigmoide return 1 / (1 + np.exp(-x)) def sigmoid_derivative(self, x): #sigmoide derivata return x * (1 - x) def train(self, training_inputs, training_outputs, training_iterations): #Alleniamo il modello e aggiustiamo i pesi for iteration in range(training_iterations): output = self.think(training_inputs) #Calcoliamo l error rate per la back-propagation error = training_outputs - output #aggiustiamo i pesi adjustments = np.dot(training_inputs.T, error * self.sigmoid_derivative(output)) self.synaptic_weights += adjustments def think(self, inputs): #passiamo gli input ai neuroni inputs = inputs.astype(float) output = self.sigmoid(np.dot(inputs, self.synaptic_weights)) return output if __name__ == "__main__": #Inizializziamo la classe neural_network = NeuralNetwork() print("Genero pesi casuali: ") print(neural_network.synaptic_weights) #creo un dataset fittizzio training_inputs = np.array([[0,0,1], [1,1,1], [1,0,1], [0,1,1]]) training_outputs = np.array([[0,1,1,0]]).T #Alleno il modello neural_network.train(training_inputs, training_outputs, 15000) print("Pesi dopo l allenamento: ") print(neural_network.synaptic_weights) user_input_one = str(input("User Input 1: ")) user_input_two = str(input("User Input 2: ")) user_input_three = str(input("User Input 3: ")) print("Considerando un altra situazione: ", user_input_one, user_input_two, user_input_three) print("Output data: ") print(neural_network.think(np.array([user_input_one, user_input_two, user_input_three]))) print("Ecco una ANN in python") Rete neurale di convoluzione (CNN): Ampiamente usate per le sue applicazioni di visione artificiale, viene implementasti con tre tipi di strati , livello convoluzionale, livello di pooling e livello completamente connesso. La complessità degli algoritmi aumenta ad ogni livello. Analizzano l'input attraverso una serie di filtri noti come kernel. Sono come matrici che si spostano sui dati di input, utilizzate per estrarre le caratteristiche dalle immagini. Man mano che le immagini di input vengono elaborate, i collegamenti tra i neuroni si sviluppano come kernel negli strati. Ad esempio, per elaborare un'immagine, i kernel passano attraverso livelli sequenziali e cambiano di conseguenza nel processo di identificazione di colori, forme e, infine, l'immagine complessiva. Gli algoritmi della CNN sono diventati famosi dopo che la tecnologia visiva è diventata la principale fonte di diffusione delle informazioni. I compiti che gli esseri umani erano soliti svolgere in precedenza, ora sono semplificati con strumenti abilitati all'intelligenza artificiale sviluppati per il riconoscimento facciale, il riconoscimento delle immagini, l'analisi dei caratteri scritti a mano, l'analisi a raggi X, ecc. Gli algoritmi della CNN sono ancora nascenti e hanno problemi a lavorare con le variabili dati. È stato riferito che gli algoritmi della CNN non sono all'altezza quando si tratta di elaborare oggetti nascosti nelle immagini, elaborare immagini intitolate o ruotate. L'addestramento degli algoritmi della CNN richiede buone GPU (Graphical Processing Units), la cui mancanza potrebbe rallentare il progetto. Semplice Esempio python Rete neurale di convoluzione (CNN): #Importiamo le librerie from tensorflow.keras.datasets import mnist from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Conv2D from tensorflow.keras.layers import MaxPool2D from tensorflow.keras.layers import Flatten from tensorflow.keras.layers import Dropout from tensorflow.keras.layers import Dense #Carichiamo i dati (X_train,y_train) , (X_test,y_test)=mnist.load_data() X_train = X_train.reshape((X_train.shape[0], X_train.shape[1], X_train.shape[2], 1)) X_test = X_test.reshape((X_test.shape[0],X_test.shape[1],X_test.shape[2],1)) #Check dopo il reshape print(X_train.shape) print(X_test.shape) #Normalizziamo il valore dei pixel X_train=X_train/255 X_test=X_test/255 #Struttura modello model=Sequential() # convolution layer model.add(Conv2D(32,(3,3),activation='relu',input_shape=(28,28,1))) # pooling layer model.add(MaxPool2D(2,2)) # fully connected layer model.add(Flatten()) model.add(Dense(100,activation='relu')) # output layer model.add(Dense(10,activation='softmax')) #Compiliamo il modello model.compile(loss='sparse_categorical_crossentropy',optimizer='adam',metrics=['accuracy']) # Alleniamo il modello model.fit(X_train,y_train,epochs=10) #Valutiamo il modello model.evaluate(X_test,y_test) Reti neurali ricorrenti (RNN): Il riconoscimento vocale e l'elaborazione del linguaggio naturale sono i due cardini della rete RNN. Che si tratti di ricerca vocale con Siri di Apple, Google Translate o la tecnologia di rilevamento dei volti di Picasa, tutto è possibile grazie agli algoritmi RNN. Contrariamente alle reti feed-forward, le reti RNN sfruttano la memoria. Mentre per le reti neurali tradizionali si presume che gli input e gli output siano indipendenti, la rete RNN dipende dagli output precedenti all'interno della sequenza. Le reti RTT utilizzano una tecnica di backpropagation leggermente diversa da quella utilizzata da altre reti, specifica per la sequenza completa di dati. RNN è noto per la sua doppia capacità di elaborazione dei dati, ovvero elabora dati appartenenti al presente e al passato immediato, sviluppando quindi memoria e consapevolezza del contesto attraverso una comprensione approfondita delle sequenze. Questi algoritmi possono essere progettati per elaborare diversi input e output simultaneamente mappando set di dati uno-a-uno, uno-molti, molti-a-uno e molti-a-molti. Nonostante i vantaggi che RNN ha da offrire, presenta notevoli ostacoli nel processo di sviluppo. Richiedono molto tempo per addestrare gli algoritmi RNN e non sono così facili da sviluppare o implementare. A causa del modo in cui i livelli sono disposti nel modello RNN, la sequenza diventa piuttosto lunga con conseguente esplosione o pesi nulli, portando a un problema di gradiente. Per far funzionare un modello RNN, è necessario impilare le sequenze, Non c'è da stupirsi, le reti neurali stanno rapidamente diventando indispensabili per la loro versatilità nel fornire soluzioni a diversi problemi aziendali. McKinsey stima che il deep learning e le reti neurali abbiano il potenziale per far girare un mercato da 3,5 trilioni di dollari a 5,8 trilioni di dollari in diversi domini. L'unico problema a portata di mano dovrebbe essere identificare la rete neurale giusta. Semplice Esempio python Reti neurali ricorrenti (RNN): Implementare le reti neurali ricorrenti (RNN) con Python e Keras Vuoi mettere in pratica quello che hai letto ? Scarica Progetti già pronti Lavora con il nostro editor online senza dover installare librerie Usa i nostri set di Dati Oppure segui i tutorial correlati : Tutorial di Regressione Logistica per l'apprendimento automatico Riconoscimento facciale con Python, in meno di 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 Feature Engineering e Feature Selection per Principianti e non Spiegazione della più semplice rete neurale per principianti PyScript, come usare Python nel browser! Il tuo Primo Programma di Machine Learning con Python e Google Colab Il tuo primo Programma di Deep Learning in Python con Keras Step-By-Step Come costruire modelli predittivi sanitari utilizzando PyHealth? Esempio pratico Rilevamento Di Veicoli In Tempo Reale Come implementare l'algoritmo Perceptron da zero in Python Implementare le reti neurali ricorrenti (RNN) con Python e Keras Deep learnign e python : Object Recognition e Object Predict esempio Come salvare e caricare il tuo modello di deep learning
- Prevedere le Malattie Cardiache con il Machine Learning Python tutorial
In questo articolo, studiamo, in dettaglio, gli iperparametri, il codice e le librerie utilizzati per la previsione delle malattie cardiache utilizzando la regressione logistica sul set di dati delle malattie cardiache. Prerequisiti : Guida Completa Algoritmi di Machine Learning La crescita dell'Intelligenza Artificiale nel settore Medico Come costruire modelli predittivi sanitari utilizzando PyHealth? Come funzionano gli algoritmi di machine learning? L'Intelligenza Artificiale Spiegata Semplice Falsi miti sul machine learning Cos'è la Statistica e che Correlazione c'è con il Machine Learning ? Qual è la differenza tra Intelligenza Artificiale, Machine Learning, Deep Lear... La scienza dei dati Principali Linguaggi di Programmazione per la Data Science Machine Learning per Prevedere le malattie L'uso dell'apprendimento automatico nelle operazioni sanitarie può essere estremamente vantaggioso per l'azienda. L'apprendimento automatico è stato creato per gestire set di dati di grandi dimensioni e i file dei pazienti sono esattamente questo: molti punti dati che richiedono un'analisi e un'organizzazione approfondite. Inoltre, mentre un operatore sanitario e un algoritmo di apprendimento automatico molto probabilmente raggiungeranno la stessa conclusione sulla base dello stesso set di dati, l'utilizzo dell'apprendimento automatico otterrà risultati molto più velocemente, consentendo di iniziare il trattamento prima. Un altro punto per l'utilizzo delle tecniche di apprendimento automatico nell'assistenza sanitaria è l'eliminazione in una certa misura del coinvolgimento umano, il che riduce la possibilità di errore umano. Ciò riguarda in particolare le attività di automazione dei processi, poiché il lavoro di routine noioso è il luogo in cui gli esseri umani sbagliano di più. Iniziamo l'esempio con Python sulla previsione delle malattie cardiache. Partiamo importando le librerie necessarie. import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns Numpy : Numpy è una libreria Python open source per la gestione di array n-dimensionali, scritta nel linguaggio di programmazione C. Python è anche scritto nel linguaggio di programmazione C. Il caricamento di Numpy nella memoria consente all'interprete Python di lavorare con l'array computing in modo rapido ed efficiente. Numpy offre l'implementazione di varie funzioni matematiche, routine algebriche e trasformate di Fourier. Numpy supporta diverse tecnologie hardware e informatiche ed è adatto per GPU e calcolo distribuito. Il linguaggio di alto livello utilizzato fornisce facilità d'uso rispetto alle varie funzionalità di Numpy. Pandas : Pandas è un veloce strumento di analisi dei dati open source basato su Python. I panda consentono varie attività di manipolazione dei dati utilizzando gli oggetti Pandas DataFrame. I diversi metodi Panda utilizzati in questo studio verranno spiegati in dettaglio più avanti. Matplotlib : Matplotlib è una libreria Python che consente di tracciare grafici di qualità di pubblicazione, grafici statici e interattivi utilizzando Python. I grafici Matplotlib possono essere esportati in vari formati di file, possono funzionare con pacchetti di terze parti e possono essere incorporati nei notebook Jupyter. I metodi Matplotlib utilizzati sono spiegati in dettaglio man mano che li incontriamo. Seaborn : Seaborn è uno strumento di visualizzazione di dati statistici per Python costruito su Matplotlib. La libreria ci consente di creare visualizzazioni di alta qualità in Python. Esplorazione e visualizzazione dei dati Scarica il set di dati dataframe = pd.read_csv('heart_disease_dataset_UCI.csv') Il metodo read_csv della libreria Pandas ci consente di leggere il set di dati sulle malattie cardiache in formato file *.csv (comma-separated value) pubblicato da UCI nel dataframe. L'oggetto DataFrame è la struttura dati principale di Pandas che è una tabella bidimensionale con assi etichettati, lungo le righe e insieme alle colonne. Varie operazioni di manipolazione dei dati possono essere applicate al dataframe Pandas lungo righe e colonne. dataframe.head(10) Il metodo Pandas dataframe head(10) ci consente di dare un'occhiata alle prime 10 righe del dataframe. Questo ci aiuta a ottenere una panoramica delle varie colonne e un'idea del tipo e dei valori dei dati archiviati nel dataframe. dataframe.info() Il metodo Pandas dataframe info() fornisce informazioni sul numero di voci di riga nel dataframe e sul numero di colonne nel dataframe. Viene inoltre fornito il conteggio delle voci non nulle per colonna, il tipo di dati di ciascuna colonna e l'utilizzo della memoria del frame di dati. dataframe.isna().sum() I metodi Pandas dataframe isna().sum() forniscono il conteggio dei valori null in ogni colonna. dataframe.hist figsize=(12,12)) Il metodo Pandas dataframe hist traccia l'istogramma delle diverse colonne, con dimensioni di fig pari a 12 pollici di larghezza e 12 pollici di altezza. Ridimensionamento standard X = dataframe.iloc[:,0:13] y = dataframe.iloc[:,13] Successivamente, dividiamo il nostro dataframe in caratteristiche (X) e variabile di destinazione (y) utilizzando la proprietà dataframe 'iloc' di indicizzazione basata sulla posizione intera. Selezioniamo tutte le righe e le prime 13 colonne come variabile X e tutte le righe e la 14a colonna come variabile target. X = X.values y = y.values Estraiamo e restituiamo una rappresentazione Numpy dei valori X e y utilizzando la proprietà dei valori dataframe per il nostro studio di apprendimento automatico. from sklearn.preprocessing import StandardScalerX_std=StandardScaler().fit_transform(X) Usiamo la libreria scikit-learn (sklearn) per i nostri studi sull'apprendimento automatico. La libreria scikit-learn è una libreria Python open source per l'analisi predittiva dei dati e l'apprendimento automatico ed è basata su Numpy, SciPy e Matplotlib. L'ecosistema SciPy viene utilizzato per il calcolo scientifico e fornisce moduli ottimizzati per l'algebra lineare, il calcolo, i solutori ODE e le trasformazioni Fast Fourier, tra gli altri. Il modulo di preelaborazione sklearn implementa funzioni come il ridimensionamento, la normalizzazione e la binarizzazione dei dati. StandardScaler standardizza le caratteristiche rendendo la media uguale a zero e la varianza uguale a uno. Il metodo fit_transform() raggiunge il duplice scopo di : (i) il metodo fit() adattando un algoritmo di ridimensionamento e scoprendo i parametri per il ridimensionamento (ii) il metodo di trasformazione, dove la trasformazione di ridimensionamento effettiva viene applicata utilizzando i parametri trovati nel metodo fit(). Molti algoritmi di apprendimento automatico sono progettati sulla base del presupposto di aspettarsi dati normalizzati/ridimensionati e il ridimensionamento standard è quindi uno dei metodi che aiutano a migliorare l'accuratezza dei modelli di apprendimento automatico. Train-Test Split from sklearn.model_selection import train_test_split X_train,X_test,y_train,y_test=train_test_split(X_std,y,test_size=0.25,random_state=40) La classe sklearn model_selection implementa diverse classi di data splitter (divise in treno e set di test, treno KFold e set di test ecc.), ottimizzatori di iperparametri (cerca su una griglia per trovare iperparametri ottimali) e funzionalità di validazione del modello (valuta le metriche del modello con convalida incrociata ecc.). NB – La convalida incrociata KFold (K=10) significa dividere il treno in 10 parti. 9 parti vengono utilizzate per l'allenamento mentre l'ultima parte viene utilizzata per i test. Successivamente, un altro set di 9 parti (diverso dal set precedente) viene utilizzato per l'allenamento mentre la parte rimanente viene utilizzata per i test. Questo processo viene ripetuto finché ogni parte non forma un set di prova. La media dei 10 punteggi di precisione su 10 set di test è il KFold cross_val_score. Il metodo train_test_split della classe sklearn model_selection viene utilizzato per suddividere le nostre funzionalità (X) e gli obiettivi (y) in set di training e test. La dimensione del test = 0,25 specifica che il 25% dei dati deve essere mantenuto nel set di test mentre l'impostazione di random_state = 40 garantisce che l'algoritmo generi lo stesso set di dati di addestramento e test ogni volta che viene eseguito l'algoritmo. Gli algoritmi di apprendimento automatico sono casuali per natura e l'impostazione di un random_state garantisce che i risultati siano riproducibili. Fitting e previsione del modello from sklearn.linear_model import LogisticRegression from sklearn.metrics import confusion_matrix lr=LogisticRegression(C=1.0,class_weight='balanced',dual=False, fit_intercept=True, intercept_scaling=1,max_iter=100,multi_class='auto', n_jobs=None,penalty='l2',random_state=1234,solver='lbfgs',tol=0.0001, verbose=0,warm_start=False) model1=lr.fit(X_train,y_train) prediction1=model1.predict(X_test) cm=confusion_matrix(y_test,prediction1) sns.heatmap(cm,annot=True,cmap='winter',linewidths=0.3, linecolor='black',annot_kws={"size":20}) TP=cm[0][0] TN=cm[1][1] FN=cm[1][0] FP=cm[0][1] print('Testing Accuracy for Logistic Regression:',(TP+TN)/(TP+TN+FN+FP)) l modulo sklearn.metrics include funzioni di punteggio, metriche delle prestazioni e metriche della distanza, tra le altre. Il metodo confusion_matrix fornisce l'accuratezza della classificazione in un formato a matrice. 34 righe che possono salvare e prevenire tantissime morti causate dalle malattie cardiache Se vuoi provare anche tu segui questi passaggi: Vai su https://www.intelligenzaartificialeitalia.net/onlinepythoneditor Scarica il File Dataset che ti abbiamo messo sopra Segui le Indicazioni per caricare il file nell'editor Copia e incolla questo codice nella cella import numpy as np import pandas as pd import matplotlib.pyplot as plt dataframe = pd.read_csv('heart_disease_dataset_UCI.csv') X = dataframe.iloc[:,0:13] y = dataframe.iloc[:,13] X = X.values y = y.values from sklearn.preprocessing import StandardScaler X_std=StandardScaler().fit_transform(X) from sklearn.model_selection import train_test_split X_train,X_test,y_train,y_test=train_test_split(X_std,y,test_size=0.25,random_state=40) from sklearn.linear_model import LogisticRegression from sklearn.metrics import confusion_matrix lr=LogisticRegression(C=1.0,class_weight='balanced',dual=False, fit_intercept=True, intercept_scaling=1,max_iter=100,multi_class='auto', n_jobs=None,penalty='l2',random_state=1234,solver='lbfgs',tol=0.0001, verbose=0,warm_start=False) model1=lr.fit(X_train,y_train) prediction1=model1.predict(X_test) cm=confusion_matrix(y_test,prediction1) TP=cm[0][0] TN=cm[1][1] FN=cm[1][0] FP=cm[0][1] print('Testing Accuracy for Logistic Regression:',(TP+TN)/(TP+TN+FN+FP)) 5. Premi SHIFT+INVIO oppure premi il bottoncino verde in basso a destra La classe sklearn linear_model implementa una varietà di modelli lineari come la regressione lineare, la regressione logistica, la regressione Ridge, la regressione lazo ecc. Importiamo la classe LogisticRegression per i nostri studi di classificazione. Viene creata un'istanza di un oggetto LogisticRegression. Dettagli degli iperparametri Il parametro C specifica la forza di regolarizzazione. La regolarizzazione implica penalizzare il modello per overfitting. C=1.0 è il valore predefinito per LogisticRegressor nella libreria sklearn. Il metodo class_weight='balanced' fornisce pesi alle classi. Se non specificato, il peso_classe predefinito è = 1. Peso classe = 'bilanciato' assegna i pesi delle classi utilizzando la formula (n_campioni/(n_classi*np.bin_count(y))). es. se n_campioni =100, n_classi=2 e ci sono 50 campioni appartenenti a ciascuna delle classi 0 e 1, peso_classe = 100/(2*50) = 1 dual = False è preferibile quando n_samples > n_features. la doppia formulazione è implementata solo per il regolarizzatore L2 con solutore liblinear. NB Il solutore liblinear utilizza l'algoritmo di discesa delle coordinate invece degli algoritmi di discesa del gradiente per trovare i parametri ottimali per il modello di regressione logistica. Ad esempio, negli algoritmi di discesa del gradiente, ottimizziamo tutti i parametri contemporaneamente. Mentre la discesa delle coordinate ottimizza solo un parametro alla volta. Nella discesa delle coordinate, inizializziamo prima il parametro vector (theta = [theta 0 , theta 1 …….. theta n ]). Nell'iterazione kth, solo theta i k viene aggiornato mentre (theta 0 k … theta i-1 k e theta i+1 k-1 …. theta n k-1 ) sono fissi. fit_intercept = True Il valore predefinito è True. Specifica se è necessario aggiungere una costante alla funzione di decisione. intercept_scaling = 1 Il valore predefinito è 1. È applicabile solo quando il risolutore è liblinear e fit_intercept = True. [X] diventa [X, intercept_scaling]. Una caratteristica sintetica con valore costante = intercept_scaling viene aggiunta a [X]. L'intercetta diventa, intercetta il ridimensionamento * peso della caratteristica sintetica. Il peso delle caratteristiche sintetiche è modificato dalle regolarizzazioni L1/L2. Per ridurre l'effetto della regolarizzazione sui pesi delle caratteristiche sintetiche, è necessario scegliere un valore di intercept_scaling elevato. max_iter = 100 (predefinito). Viene preso un numero massimo di iterazioni per far convergere i risolutori. multi_class = 'ovr', 'multinomiale' o auto (predefinito). auto seleziona 'ovr' cioè problema binario se i dati sono binari o se il risolutore è liblineare. In caso contrario, auto seleziona multinomiale che riduce al minimo la funzione di perdita multinomiale anche quando i dati sono binari. n_jobs (predefinito = Nessuno). Un certo numero di core della CPU viene utilizzato durante la parallelizzazione dei calcoli per multi_class='ovr'. Nessuno significa che viene utilizzato 1 core. -1 significa che tutti i core vengono utilizzati. Ignorato quando il risolutore è impostato su liblinear. penalità : specifica la norma della penalità (default = L2). random_state = imposta lo stato casuale in modo che gli stessi risultati vengano restituiti ogni volta che viene eseguito il modello. risolutore = la scelta dell'algoritmo di ottimizzazione (default = 'lbfgs') tol = Tolleranza per i criteri di arresto (default = 1e-4) verbose = 0 (per sopprimere le informazioni durante l'esecuzione dell'algoritmo) warm_start = (predefinito = Falso). quando è impostato su True, usa la soluzione del passaggio precedente come inizializzazione per il passaggio attuale. Questo non è applicabile per il risolutore liblinear. Successivamente, chiamiamo il metodo fit sull'oggetto regressore logistico utilizzando (X_train, y_train) per trovare i parametri del nostro modello di regressione logistica. Chiamiamo il metodo predict sull'oggetto regressore logistico utilizzando X_test e i parametri previsti utilizzando il metodo fit() in precedenza. Possiamo calcolare la matrice di confusione per misurare l'accuratezza del modello utilizzando i valori previsti e y_test. I parametri per la heatmap sns (seaborn) sono stati spiegati in precedenza. Il parametro linecolor specifica il colore delle linee che divideranno ciascuna cella. Il parametro annot_kws passa gli argomenti delle parole chiave al metodo matplotlib, in questo caso fontsize. Infine, calcoliamo l'accuratezza del nostro modello di regressione logistica utilizzando la matrice di confusione (Vero Positivo + Vero Negativo)/a Numero totale di campioni di prova = 89,47%. Conclusione Questo ci porta alla fine dell'articolo. In questo articolo, abbiamo sviluppato un modello di regressione logistica per la previsione delle malattie cardiache utilizzando un set di dati dal repository UCI. Ci siamo concentrati sull'acquisizione di una comprensione approfondita degli iperparametri, delle librerie e del codice utilizzati durante la definizione di un modello di regressione logistica attraverso la libreria scikit-learn. Vuoi mettere in pratica quello che hai letto ? Scarica Progetti già pronti Lavora con il nostro editor online senza dover installare librerie Usa i nostri set di Dati Oppure segui i tutorial correlati : Tutorial di Regressione Logistica per l'apprendimento automatico Riconoscimento facciale con Python, in meno di 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 Feature Engineering e Feature Selection per Principianti e non Spiegazione della più semplice rete neurale per principianti PyScript, come usare Python nel browser! Il tuo Primo Programma di Machine Learning con Python e Google Colab Il tuo primo Programma di Deep Learning in Python con Keras Step-By-Step Come costruire modelli predittivi sanitari utilizzando PyHealth? Esempio pratico Rilevamento Di Veicoli In Tempo Reale Come implementare l'algoritmo Perceptron da zero in Python Implementare le reti neurali ricorrenti (RNN) con Python e Keras Deep learnign e python : Object Recognition e Object Predict esempio Come salvare e caricare il tuo modello di deep learning
- Cos'è un data warehouse ?
Introduzione ai Data Warehouse Di seguito è riportato un articolo approfondito che spiega cos'è il data warehousing, nonché i suoi tipi, caratteristiche, vantaggi e svantaggi. Alcuni degli argomenti che tratteremo nell'articolo sono: 1. Che cos'è un data warehouse? 2. Perché il data warehousing è fondamentale? 3. Applicazioni e caratteristiche di un data warehouse 4. Vantaggi e svantaggi di un data warehouse Cos'è il Data Warehouse? Un Data Warehouse (DW) è un repository di grandi quantità di dati organizzati. I dati possono essere consolidati da più fonti. I DW sono database relazionali progettati per il reporting analitico e il processo decisionale puntuale nelle organizzazioni. I dati utilizzati per questo scopo sono isolati e ottimizzati dai dati delle transazioni di origine, quindi non influiranno sull'attività principale. Quando un'organizzazione introduce qualsiasi cambiamento aziendale, DW viene utilizzato per analizzare gli effetti di tale cambiamento, quindi DW può essere utilizzato anche per monitorare i processi non decisionali. I data warehouse sono principalmente sistemi di sola lettura poiché i dati operativi sono tenuti separati dai data warehouse. Ciò fornisce un buon ambiente di scrittura di query per il recupero del volume di dati più elevato. Pertanto, DW fungerà da motore di back-end per gli strumenti di Business Intelligence che mostrano report e dashboard agli utenti aziendali. È ampiamente utilizzato nei settori bancario, finanziario, al dettaglio, ecc. Figura 1: i data mart sono sottoinsiemi dei dati del data warehouse. Perché il data warehousing è fondamentale? I motivi principali per cui il data warehousing è fondamentale sono i seguenti: I data warehouse combinano tutti i dati operativi provenienti da diverse fonti eterogenee di "diversi formati" e attraverso il processo di estrazione, trasformazione e caricamento (ETL), caricano i dati in DW in un "formato dimensionale standardizzato" all'interno di un'organizzazione. Un data warehouse conserva i dati attuali e storici per il reporting analitico e il processo decisionale basato sui fatti. Migliora le tue decisioni aziendali. I leader aziendali di successo sviluppano strategie basate sui dati e raramente prendono decisioni senza considerare i fatti. Il data warehousing consente ai responsabili delle decisioni aziendali di accedere più facilmente a diversi set di dati in modo più rapido ed efficiente e di ricavare informazioni che guideranno le loro strategie aziendali e di marketing. Le piattaforme di data warehouse consentono ai leader aziendali di accedere alle attività storiche della propria organizzazione e di valutare le iniziative che hanno avuto successo o meno in passato. Consente ai dirigenti di vedere dove possono ridurre i costi, massimizzare l'efficienza e aumentare le vendite per aumentare i profitti. Caratteristiche di un Data Warehouse La progettazione del data warehouse si basa sui seguenti criteri: orientato al soggetto, integrato, non volatile e variabile nel tempo. 1) Orientato al soggetto: possiamo chiamare un data warehouse orientato al soggetto se possiamo analizzare i dati in un'area particolare piuttosto che applicare dati saggi. Di conseguenza, il processo decisionale diventa più semplice. All'interno di un sistema educativo, le aree tematiche potrebbero essere studenti, materie, voti, insegnanti, ecc. 2) Integrato: i dati nel data warehouse sono integrati da diverse fonti, come altri database relazionali, file flat, ecc. Viene recuperata un'enorme quantità di dati per un'analisi dei dati efficace. Tuttavia, diverse fonti di dati possono essere in formati diversi, il che potrebbe causare conflitti di dati. Tutti questi dati vengono riuniti in un formato coerente nell'intero sistema nel data warehouse. 3) Non volatile: una volta che i dati sono stati caricati nel data warehouse, non possono essere modificati. In senso logico, questo è accettabile, poiché un frequente cambio di dati impedisce l'analisi. È possibile caricare il database operativo su base pianificata in un data warehouse. Durante questo processo, vengono aggiunti nuovi dati, ma i dati precedenti non vengono eliminati e rimangono come dati storici. 4) Variante temporale: tutti i dati storici insieme ai dati recenti nel data warehouse sono fondamentali per recuperare dati di qualsiasi durata. Per confrontarlo con gli anni precedenti e analizzare le tendenze, tutti i vecchi dati che hanno 6 mesi, 1 anno o anche più vecchi saranno necessari per rapporti, grafici, ecc. Figura 2: Caratteristiche del data warehouse Esempi e Applicazioni di Data Warehouse Nel data warehousing, la Business Intelligence (BI) viene utilizzata per il processo decisionale. La BI gioca un ruolo importante una volta che i dati nella DW sono stati caricati, analizzandoli e presentandoli agli utenti aziendali. Il termine "applicazioni di data warehouse" implica in modo efficace come i dati possono essere manipolati e utilizzati. Le applicazioni di data warehouse rientrano in tre categorie: elaborazione delle informazioni, elaborazione analitica e data mining. Elaborazione delle informazioni: un data warehouse consente di elaborare le informazioni che memorizza. I dati possono essere elaborati tramite query, analisi statistiche di base e reportistica. Elaborazione analitica: le informazioni archiviate in un data warehouse possono essere elaborate analiticamente. Con l'aiuto delle operazioni di base OLAP (Online Analytic Processing Server), come operazioni slice-and-dice, drill-down e drill-up e pivot, i dati possono essere analizzati. Data mining: attraverso il data mining, la conoscenza può essere scoperta trovando schemi e associazioni nascosti, costruendo modelli analitici ed eseguendo classificazione e previsione. I risultati del data mining possono essere presentati visivamente. 1. Elaborazione delle informazioni: questo è un tipo di applicazione in cui il data warehouse consente un contatto diretto e individuale con i dati che archivia. Utilizzo di query dirette sui dati con analisi statistica di base dei dati. Gli strumenti che DW supporta per l'elaborazione delle informazioni sono: 1.1) Strumenti di query: utilizzando gli strumenti di query, l'utente può esplorare i dati e generare report o grafici in base ai requisiti aziendali. 1.2) Strumenti di reporting: gli strumenti di reporting vengono utilizzati quando l'azienda desidera visualizzare i risultati in un determinato formato su base regolare, ad esempio giornaliera, settimanale o mensile. Questo tipo di report può essere salvato e recuperato in qualsiasi momento. 1.3) Strumenti statistici: per generare questi risultati, verranno utilizzati strumenti statistici se l'azienda desidera esaminare i dati da una prospettiva più ampia. Comprendendo questi risultati strategici, le aziende possono fare previsioni e conclusioni. 2 . Elaborazione analitica: questa è un'applicazione che consente l'analisi dei dati archiviati in un data warehouse. Slice and Dice, Drill Down, Roll Up e Pivoting sono alcune delle operazioni che possono essere utilizzate per valutare i dati. 2.1) Slice-and-Dice: un data warehouse consente operazioni slice-and-dice per valutare i dati da diversi livelli e da una varietà di prospettive. Internamente, il meccanismo di drill-down viene utilizzato per l'azione slice-and-dice. Lo Slicing è una tecnica per manipolare i dati dimensionali. Se ci concentriamo su una singola area come parte del requisito aziendale, lo slicing valuta le dimensioni di quella specifica regione in base ai criteri e restituisce i risultati. Dicing è un programma che esegue processi analitici. Dicing fornisce una varietà di punti di vista ingrandendo un insieme selezionato di proprietà in tutte le dimensioni. Una o più fette successive vengono utilizzate per calcolare le dimensioni. 2.2) Drill down: Drill down è un'operazione per scorrere un numero di riepilogo a livelli di dettaglio minori se l'azienda desidera arrivare a un livello più dettagliato di qualsiasi numero di riepilogo. Questo dà una buona indicazione di cosa sta succedendo e dove l'azienda dovrebbe concentrare i suoi sforzi. 2.3) Roll up: Roll up è l'esatto opposto del drill-down. Il roll up entra in gioco se l'azienda ha bisogno di dati di riepilogo. Avanzando la struttura dimensionale, aggrega i dati a livello di dettaglio. I roll-up vengono utilizzati per esaminare lo sviluppo e le prestazioni di un sistema. 3. Data mining: questo è un tipo di applicazione in cui il data warehouse facilita la scoperta della conoscenza dei dati e i risultati vengono visualizzati utilizzando strumenti di visualizzazione. È difficile eseguire query e approfondire il data warehouse per acquisire tutte le potenziali informazioni dettagliate sui dati poiché la quantità di dati aumenta in vari settori. Quindi il data mining entra in scena per aiutare con la scoperta della conoscenza. In questo modo vengono inseriti i dati con tutte le associazioni precedenti, i risultati e così via e si prevede il futuro. Modelli nascosti, correlazioni, classificazioni e previsioni possono essere trovati nei dati. Figura 3: Applicazioni dei data warehouse Vantaggi e svantaggi dei data warehouse Vantaggi dei data warehouse : Quando un sistema di data warehouse è operativo, un'azienda ottiene i seguenti vantaggi: Miglioramento della business intelligence Miglioramento delle prestazioni del sistema e delle query. Molteplici fonti di business intelligence Accesso ai dati in tempo reale Intelligenza del passato Eccezionale ritorno sull'investimento Svantaggi dei data warehouse : Nonostante sia un sistema di grande successo, è utile essere consapevoli di alcuni dei suoi difetti: La creazione di un Data Warehouse è un'operazione estremamente dispendiosa in termini di tempo e difficile. Il costo della manutenzione è elevato perché il sistema richiede continui miglioramenti. Sviluppatori, tester e utenti dovrebbero avere una formazione adeguata per comprendere il sistema DW. È possibile che i dati sensibili non possano essere inseriti in DW per il processo decisionale. Qualsiasi ristrutturazione del sistema di origine dei processi aziendali ha un impatto significativo su DW. Conclusione e riflessioni sui Data WareHouse Il modo in cui archiviamo, organizziamo e analizziamo i dati è cambiato radicalmente negli ultimi anni. I data warehouse basati su cloud offrono metodi migliorati per estrarre e analizzare le informazioni dai dati. Rendono il data warehousing accessibile ed efficace per le organizzazioni di piccole e medie dimensioni, nonché per le aziende grandi e ben finanziate. Invece di investire mesi e milioni di dollari in un Enterprise Data Warehouse monolitico, ora è possibile configurare un data warehouse basato su cloud in pochi giorni, con servizi gestiti e storage basato su cloud a partire da poche centinaia di dollari al mese. Speriamo di essere stati in grado di fornire un breve background del data warehousing, nell'articolo abbiamo trattato la definizione, i tipi, le caratteristiche, i vantaggi e gli svantaggi del data warehousing. Altre letture consigliate sui Data WareHouse: SQL vs. NoSQL : le principali differenze tra i database SQL e NoSQL Migliori IDE Python per il machine learning e data science Dove trovare i migliori Dataset per esercitarsi con il Machine learning e Deep Learning Strumenti e Tool Di Visualizzazione Dati usati nella Data Science Cosa è la business intelligence (BI) , come applicarla alla tua impresa Esempi di Dashboard Power BI I Migliori Libri Sull’ Intelligenza Artificiale in Italiano da Leggere 2022 Big Data, Data Science e Machine Learning i Migliori Libri per Principianti e non
- Come funziona il Deep Learning o Apprendimento Profondo ?
Le persone imparano dall'esperienza. Più ricche sono le nostre esperienze, più possiamo imparare. Nella disciplina dell'intelligenza artificiale (AI) nota come deep learning, lo stesso si può dire per le macchine alimentate da hardware e software di intelligenza artificiale. Le esperienze attraverso le quali le macchine possono apprendere sono definite dai dati che acquisiscono e la quantità e la qualità dei dati determinano quanto possono apprendere. Il deep learning è una branca del machine learning . A differenza dei tradizionali algoritmi di machine learning, molti dei quali hanno una capacità limitata di apprendere indipendentemente dalla quantità di dati che acquisiscono, i sistemi di deep learning possono migliorare le proprie prestazioni con l'accesso a più dati. Dopo che le macchine hanno acquisito sufficiente esperienza attraverso il deep learning, possono essere messe al lavoro per compiti specifici come guidare un'auto, rilevare le erbacce in un campo coltivato, rilevare malattie, ispezionare macchinari per identificare guasti e così via. Come funziona l'apprendimento profondo ? Le reti di deep learning apprendono scoprendo strutture complesse nei dati che sperimentano. Costruendo modelli computazionali composti da più livelli di elaborazione, le reti possono creare più livelli di astrazione per rappresentare i dati. Ad esempio, un modello di apprendimento profondo noto come rete neurale convoluzionale può essere addestrato utilizzando un numero elevato (come in milioni) di immagini, come quelle contenenti gatti. Questo tipo di rete neurale impara tipicamente dai pixel contenuti nelle immagini che acquisisce. Può classificare gruppi di pixel che sono rappresentativi delle caratteristiche di un gatto, con gruppi di caratteristiche come artigli, orecchie e occhi che indicano la presenza di un gatto in un'immagine. Il deep learning è fondamentalmente diverso dal machine learning convenzionale. In questo esempio, un esperto di dominio dovrebbe dedicare molto tempo alla progettazione di un sistema di apprendimento automatico convenzionale per rilevare le caratteristiche che rappresentano un gatto. Con il deep learning, tutto ciò che serve è fornire al sistema un numero molto elevato di immagini di gatti e il sistema può apprendere autonomamente le caratteristiche che rappresentano un gatto. Per molte attività, come la visione artificiale, il riconoscimento vocale (noto anche come elaborazione del linguaggio naturale ), la traduzione automatica e la robotica, le prestazioni dei sistemi di apprendimento profondo superano di gran lunga quelle dei sistemi di apprendimento automatico convenzionali. Questo non vuol dire che la creazione di sistemi di deep learning sia relativamente facile rispetto ai sistemi di machine learning convenzionali. Sebbene il riconoscimento delle funzionalità sia autonomo nell'apprendimento profondo, migliaia di iperparametri (manopole) devono essere ottimizzati affinché un modello di apprendimento profondo diventi efficace. Perché l'apprendimento profondo è importante? Stiamo vivendo un momento di opportunità senza precedenti e la tecnologia di deep learning può aiutarci a raggiungere nuove scoperte. Il deep learning è stato determinante nella scoperta di esopianeti e nuovi farmaci e nel rilevamento di malattie e particelle subatomiche. Fondamentalmente sta aumentando la nostra comprensione della biologia, inclusa la genomica, la proteomica, la metabolomica, l'immunoma e altro ancora. Viviamo anche in un'epoca in cui ci troviamo di fronte a sfide incessanti. Il cambiamento climatico minaccia la produzione alimentare e potrebbe un giorno portare a guerre per risorse limitate. La sfida del cambiamento ambientale sarà esacerbata da una popolazione umana in costante aumento, che dovrebbe raggiungere i nove miliardi entro il 2050. La portata e la portata di queste sfide richiedono un nuovo livello di intelligenza reso possibile dal deep learning. Durante l'esplosione del Cambriano circa 540 milioni di anni fa, la visione emerse come un vantaggio competitivo negli animali e divenne presto il principale motore dell'evoluzione. In combinazione con l'evoluzione delle reti neurali biologiche per elaborare le informazioni visive, la visione ha fornito agli animali una mappa dell'ambiente circostante e ha accresciuto la loro consapevolezza del mondo esterno. Oggi, la combinazione di telecamere come occhi artificiali e reti neurali in grado di elaborare le informazioni visive catturate da quegli occhi sta portando a un'esplosione di applicazioni di intelligenza artificiale basate sui dati. Proprio come la visione ha svolto un ruolo cruciale nell'evoluzione della vita sulla terra, il deep learning e le reti neurali miglioreranno le capacità dei robot. Saranno sempre più in grado di comprendere il loro ambiente, prendere decisioni autonome, collaborare con noi e aumentare le nostre capacità. Esempi di Apprendimento Profondo o Deep Learning Esempio di Apprendimento Profondo : Robotica Molti dei recenti sviluppi della robotica sono stati guidati dai progressi dell'IA e del deep learning. Ad esempio, l'IA consente ai robot di rilevare e rispondere al loro ambiente. Questa capacità aumenta la gamma di funzioni che possono svolgere, dall'esplorazione dei piani del magazzino allo smistamento e alla manipolazione di oggetti irregolari, fragili o confusi insieme. Qualcosa di semplice come raccogliere una fragola è un compito facile per gli umani, ma è stato straordinariamente difficile da eseguire per i robot. Con il progredire dell'IA, tale progresso migliorerà le capacità dei robot. Gli sviluppi nell'IA significano che possiamo aspettarci che i robot del futuro vengano sempre più utilizzati come assistenti umani. Non saranno usati solo per capire e rispondere alle domande, come alcuni sono usati oggi. Saranno anche in grado di agire su comandi vocali e gesti, persino anticipare la prossima mossa di un lavoratore. Oggi, i robot collaborativi lavorano già al fianco degli esseri umani, con esseri umani e robot che svolgono ciascuno compiti separati che sono più adatti ai loro punti di forza. Esempio di Apprendimento Profondo : Agricoltura L'IA ha il potenziale per rivoluzionare l'agricoltura. Oggi, il deep learning consente agli agricoltori di implementare attrezzature in grado di vedere e distinguere tra piante coltivate ed erbe infestanti. Questa capacità consente alle macchine diserbo di spruzzare selettivamente erbicidi sulle erbacce e di lasciare intatte altre piante. Le macchine agricole che utilizzano la visione artificiale abilitata per l'apprendimento profondo possono persino ottimizzare le singole piante in un campo spruzzando selettivamente erbicidi, fertilizzanti, fungicidi, insetticidi e prodotti biologici. Oltre a ridurre l'uso di erbicidi e migliorare la produzione agricola, il deep learning può essere ulteriormente esteso ad altre operazioni agricole come l'applicazione di fertilizzanti, l'irrigazione e la raccolta. Esempio di Apprendimento Profondo : Imaging medico e assistenza sanitaria Il deep learning è stato particolarmente efficace nell'imaging medico, grazie alla disponibilità di dati di alta qualità e alla capacità delle reti neurali convoluzionali di classificare le immagini. Ad esempio, il deep learning può essere efficace quanto un dermatologo nella classificazione dei tumori della pelle, se non di più. Diversi fornitori hanno già ricevuto l'approvazione della FDA per algoritmi di deep learning a fini diagnostici, inclusa l'analisi delle immagini per oncologia e malattie della retina. Il deep learning sta anche facendo progressi significativi nel miglioramento della qualità dell'assistenza sanitaria prevedendo eventi medici dai dati delle cartelle cliniche elettroniche. Il futuro dell'apprendimento profondo Oggi esistono varie architetture di reti neurali ottimizzate per determinati tipi di input e attività. Le reti neurali di convoluzione sono molto brave a classificare le immagini. Un'altra forma di architettura di deep learning utilizza reti neurali ricorrenti per elaborare dati sequenziali. Sia i modelli di rete neurale a convoluzione che quelli ricorrenti eseguono ciò che è noto come apprendimento supervisionato, il che significa che devono essere forniti con grandi quantità di dati per apprendere. In futuro, i tipi più sofisticati di IA utilizzeranno l'apprendimento non supervisionato. Una quantità significativa di ricerca è dedicata alla tecnologia dell'apprendimento non supervisionato e semisupervisionato. L'apprendimento per rinforzo è un paradigma leggermente diverso dall'apprendimento profondo in cui un agente apprende per tentativi ed errori in un ambiente simulato esclusivamente da ricompense e punizioni. Le estensioni di apprendimento profondo in questo dominio sono denominate apprendimento per rinforzo profondo (DRL). Ci sono stati notevoli progressi in questo campo, come dimostrato dai programmi DRL che battono gli umani nell'antico gioco del GO. Progettare architetture di reti neurali per risolvere i problemi è incredibilmente difficile, reso ancora più complesso con molti iperparametri da regolare e molte funzioni di perdita tra cui scegliere per ottimizzare. C'è stata molta attività di ricerca per apprendere in modo autonomo buone architetture di reti neurali. Imparare a imparare, noto anche come metalearning o AutoML, sta facendo progressi costanti. Le attuali reti neurali artificiali si basavano sulla comprensione degli anni '50 di come il cervello umano elabora le informazioni. La neuroscienza ha compiuto notevoli progressi da allora e le architetture di apprendimento profondo sono diventate così sofisticate da sembrare mostrare strutture come le cellule della griglia, che sono presenti nei cervelli neurali biologici utilizzati per la navigazione. Sia la neuroscienza che l'apprendimento profondo possono trarre vantaggio l'un l'altro dall'impollinazione incrociata di idee ed è molto probabile che questi campi inizieranno a fondersi a un certo punto. Non utilizziamo più computer meccanici e, a un certo punto, non utilizzeremo nemmeno computer digitali. Piuttosto, utilizzeremo una nuova generazione di computer quantistici. Negli ultimi anni ci sono state diverse scoperte nell'informatica quantistica e gli algoritmi di apprendimento possono certamente trarre vantaggio dall'incredibile quantità di elaborazione disponibile fornita dai computer quantistici. Potrebbe anche essere possibile utilizzare algoritmi di apprendimento per comprendere l'output dei computer quantistici probabilistici. L'apprendimento automatico quantistico è una branca molto attiva dell'apprendimento automatico e con la prima conferenza internazionale sull'apprendimento automatico quantistico prevista per il 2018, è iniziato bene. Per capire come funziona l'apprendimento profondo vediamo un esempio con Python Indice Tutorial In questa guida, seguiremo i seguenti passaggi: Passaggio 1: caricamento delle librerie e dei moduli richiesti. Passaggio 2: lettura dei dati ed esecuzione dei controlli di base dei dati. Passaggio 3: creazione di array per le funzionalità e la variabile di risposta. Passaggio 4: creazione dei set di dati di addestramento e test. Passaggio 5 - Costruzione, previsione e valutazione del modello di rete neurale. Passaggio 1: caricamento delle librerie e dei moduli richiesti import pandas as pd import numpy as np import matplotlib.pyplot as plt import sklearn 6from sklearn.neural_network import MLPClassifier 7from sklearn.neural_network import MLPRegressor from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error from math import sqrt 13from sklearn.metrics import r2_score Passaggio 2: lettura dei dati ed esecuzione dei controlli sui dati di base La prima riga di codice legge i dati come dataframe panda, mentre la seconda riga stampa la forma - 768 osservazioni di 9 variabili. La terza riga fornisce le statistiche riassuntive trasposte delle variabili. Osservando il riepilogo della variabile "diabete", osserviamo che il valore medio è 0,35, il che significa che circa il 35% delle osservazioni nel set di dati ha il diabete. Pertanto, l'accuratezza di base è del 65% e il nostro modello di rete neurale dovrebbe sicuramente battere questo benchmark di base. df = pd.read_csv('diabetes.csv') print(df.shape) df.describe().transpose() Produzione: (768, 9) | | count | mean | std | min | 25% | 50% | 75% | max | |-------------|-------|------------|------------|--------|----------|----------|-----------|--------| | pregnancies | 768.0 | 3.845052 | 3.369578 | 0.000 | 1.00000 | 3.0000 | 6.00000 | 17.00 | | glucose | 768.0 | 120.894531 | 31.972618 | 0.000 | 99.00000 | 117.0000 | 140.25000 | 199.00 | | diastolic | 768.0 | 69.105469 | 19.355807 | 0.000 | 62.00000 | 72.0000 | 80.00000 | 122.00 | | triceps | 768.0 | 20.536458 | 15.952218 | 0.000 | 0.00000 | 23.0000 | 32.00000 | 99.00 | | insulin | 768.0 | 79.799479 | 115.244002 | 0.000 | 0.00000 | 30.5000 | 127.25000 | 846.00 | | bmi | 768.0 | 31.992578 | 7.884160 | 0.000 | 27.30000 | 32.0000 | 36.60000 | 67.10 | | dpf | 768.0 | 0.471876 | 0.331329 | 0.078 | 0.24375 | 0.3725 | 0.62625 | 2.42 | | age | 768.0 | 33.240885 | 11.760232 | 21.000 | 24.00000 | 29.0000 | 41.00000 | 81.00 | | diabetes | 768.0 | 0.348958 | 0.476951 | 0.000 | 0.00000 | 0.0000 | 1.00000 | 1.00 | Passaggio 3: creazione di variabili di risposta La prima riga di codice crea un oggetto della variabile target chiamato 'target_column'. La seconda riga fornisce l'elenco di tutte le caratteristiche, esclusa la variabile target 'disoccupato', mentre la terza riga normalizza i predittori. La quarta riga mostra il riepilogo dei dati normalizzati. Possiamo vedere che tutte le variabili indipendenti sono state ora ridimensionate tra 0 e 1. La variabile target rimane invariata. target_column = ['diabetes'] predictors = list(set(list(df.columns))-set(target_column)) df[predictors] = df[predictors]/df[predictors].max() df.describe().transpose() Produzione: | | count | mean | std | min | 25% | 50% | 75% | max | |-------------|-------|----------|----------|----------|----------|----------|----------|-----| | pregnancies | 768.0 | 0.226180 | 0.198210 | 0.000000 | 0.058824 | 0.176471 | 0.352941 | 1.0 | | glucose | 768.0 | 0.607510 | 0.160666 | 0.000000 | 0.497487 | 0.587940 | 0.704774 | 1.0 | | diastolic | 768.0 | 0.566438 | 0.158654 | 0.000000 | 0.508197 | 0.590164 | 0.655738 | 1.0 | | triceps | 768.0 | 0.207439 | 0.161134 | 0.000000 | 0.000000 | 0.232323 | 0.323232 | 1.0 | | insulin | 768.0 | 0.094326 | 0.136222 | 0.000000 | 0.000000 | 0.036052 | 0.150414 | 1.0 | | bmi | 768.0 | 0.476790 | 0.117499 | 0.000000 | 0.406855 | 0.476900 | 0.545455 | 1.0 | | dpf | 768.0 | 0.194990 | 0.136913 | 0.032231 | 0.100723 | 0.153926 | 0.258781 | 1.0 | | age | 768.0 | 0.410381 | 0.145188 | 0.259259 | 0.296296 | 0.358025 | 0.506173 | 1.0 | | diabetes | 768.0 | 0.348958 | 0.476951 | 0.000000 | 0.000000 | 0.000000 | 1.000000 | 1.0 | Passaggio 4: creazione dei set di dati di addestramento e test Le prime due righe di codice seguenti creano matrici rispettivamente delle variabili indipendenti (X) e dipendenti (y). La terza riga suddivide i dati in training e test dataset e la quarta riga stampa la forma del training e dei dati di test. X = df[predictors].values y = df[target_column].values X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=40) print(X_train.shape); print(X_test.shape) Produzione: (537, 8) (231, 8) Passaggio 5: costruzione, previsione e valutazione del modello di rete neurale In questo passaggio, costruiremo il modello di rete neurale utilizzando l'oggetto stimatore della libreria scikit-learn, 'Multi-Layer Perceptron Classifier'. La prima riga di codice (mostrata di seguito) importa 'MLPClassifier'. La seconda riga crea un'istanza del modello con l'argomento 'hidden_layer_sizes' impostato su tre livelli, che ha lo stesso numero di neuroni del conteggio delle funzionalità nel set di dati. Selezioneremo anche 'relu' come funzione di attivazione e 'adam' come risolutore per l'ottimizzazione del peso. Per saperne di più su 'relu' e 'adam', fare riferimento alle guide Deep Learning con Keras , i cui collegamenti sono forniti alla fine di questa guida. La terza riga di codice adatta il modello ai dati di addestramento, mentre la quarta e la quinta riga utilizzano il modello addestrato per generare previsioni rispettivamente sul set di dati di addestramento e test. from sklearn.neural_network import MLPClassifier mlp = MLPClassifier(hidden_layer_sizes=(8,8,8), activation='relu', solver='adam', max_iter=500) mlp.fit(X_train,y_train) predict_train = mlp.predict(X_train) predict_test = mlp.predict(X_test) Una volta generate le previsioni, possiamo valutare le prestazioni del modello. Essendo un algoritmo di classificazione, importeremo prima i moduli richiesti, cosa che viene eseguita nella prima riga di codice seguente. La seconda e la terza riga di codice stampano la matrice di confusione ei risultati del rapporto di confusione sui dati di addestramento. from sklearn.metrics import classification_report,confusion_matrix print(confusion_matrix(y_train,predict_train)) print(classification_report(y_train,predict_train)) Produzione: [[319 39] [ 78 101]] precision recall f1-score support 0 0.80 0.89 0.85 358 1 0.72 0.56 0.63 179 avg / total 0.78 0.78 0.77 537 L'output sopra mostra le prestazioni del modello sui dati di addestramento. La precisione e il punteggio F1 sono rispettivamente di circa 0,78 e 0,77. Idealmente, il modello perfetto avrà il valore di 1 per entrambe queste metriche, ma è quasi impossibile negli scenari del mondo reale. Il passaggio successivo consiste nel valutare le prestazioni del modello sui dati di test eseguiti con le righe di codice seguenti. print(confusion_matrix(y_test,predict_test)) print(classification_report(y_test,predict_test)) In questa guida hai imparato a costruire un modello di rete neurale usando scikit-learn. La guida ha utilizzato il set di dati sul diabete e ha costruito un algoritmo di classificazione per prevedere il rilevamento del diabete. Il nostro modello sta raggiungendo una discreta precisione del 78% e del 75% rispettivamente sui dati di addestramento e test. Osserviamo che l'accuratezza del modello è superiore all'accuratezza di base del 66%. Il modello può essere ulteriormente migliorato eseguendo la convalida incrociata, l'ingegneria delle funzionalità o modificando gli argomenti nello stimatore della rete neurale. Si noti che abbiamo costruito un modello di classificazione in questa guida. Tuttavia, anche la costruzione del modello di regressione segue la stessa struttura, con un paio di aggiustamenti. Il primo è che al posto dello stimatore 'MLPClassifier', istanziare lo stimatore 'MLPRegressor'. La seconda correzione è che, invece di utilizzare l'accuratezza come metrica di valutazione, utilizzeremo il valore RMSE o R-quadrato per la valutazione del modello. Per ulteriori informazioni sulla creazione di modelli di machine learning utilizzando scikit-learn , fare riferimento alle seguenti guide: Il tuo Primo Programma di Machine Learning con Python e Google Colab Introduzione a Scikit Learn con esempio pratico in Python Come salvare e caricare modelli di Machine Learning con Python e scikit-learn Apprendimento non Supervisionato con Python Come Generare dataset con python e scikit-learn Corso Gratis su Python e Machine Learning Scikit Learn e Python Tutorial Per Creare Modelli di Intelligenza Artificiale Feature Engineering e Feature Selection per Principianti e non Come Migliorare la precisione di un modello di M.L. Manipolazione Dati con Python e Pandas
- Reti Neurali con python tutorial completo
Introduzione alle reti neurali con Python In questo articolo, vedremo come costruire reti neurali con Python e capiremo meglio l'apprendimento profondo creando una spiegazione per le previsioni del modello. Il Deep Learning è un tipo di apprendimento automatico che imita il modo in cui gli umani acquisiscono determinati tipi di conoscenza ed è diventato più popolare nel corso degli anni rispetto ai modelli standard. Mentre gli algoritmi tradizionali sono lineari, i modelli di Deep Learning, generalmente Reti Neurali, sono impilati in una gerarchia di crescente complessità e astrazione (quindi il "profondo" in Deep Learning). Le reti neurali si basano su un insieme di unità collegate (neuroni), che, proprio come le sinapsi nel cervello, in grado di trasmettere un segnale ad altri neuroni, modo che, comportandosi come le cellule cerebrali interconnesse, possono imparare e prendere decisioni in un modo più umano. Oggi il Deep Learning è così popolare che molte aziende vogliono usarlo anche se non lo comprendono pienamente. Spesso i data scientist devono prima semplificare questi complessi algoritmi per il Business, e poi spiegare e giustificare i risultati dei modelli, cosa non sempre semplice con le Reti Neurali. Penso che il modo migliore per farlo sia attraverso la visualizzazione. Ci siamo presi un po di tempo per creare questo articolo con del codice Python utile che può essere facilmente applicato in altri casi simili (basta copiare, incollare, adattare) e percorrere ogni riga di codice con commenti in modo da poter replicare gli esempi. In particolare, vedremo: Configurazione dell'ambiente, tensorflow vs pytorch. Scomposizione delle reti neurali artificiali, input, output, strati nascosti, funzioni di attivazione. Deep Learning con reti neurali profonde. Progettazione del modello con tensorflow/keras . Visualizzazione di reti neurali con Python. Formazione e test del modello. Spiegare i modelli con shap. Scarica GRATUITAMENTE il pdf dell'articolo sulle reti NEURALI e PYTHON Configurazione ambiente per creare e sviluppare Reti neurali o Modelli di Deep Learning Esistono due librerie principali per la creazione di reti neurali: TensorFlow (sviluppato da Google) PyTorch (sviluppato da Facebook) Queste due librerie sono preferite dalla community e dalle aziende perché possono sfruttare la potenza delle GPU NVIDIA. Ciò è molto utile, e talvolta necessario, per elaborare grandi set di dati come un corpus di testo o una galleria di immagini. Per questo tutorial, useremo TensorFlow e Keras , un modulo di livello superiore molto più intuitivo rispetto a TensorFlow e PyTorch puri , anche se un po' più lenti. Il primo passo è installare TensorFlow tramite il terminale: pip install tensorflow #python <3 pip3 install tensorflow #python >=3 !pip install tensorflow #google colab Se vuoi abilitare il supporto GPU, puoi leggere la documentazione ufficiale. Dopo averlo configurato, le tue istruzioni Python verranno tradotte in CUDA dalla tua macchina ed elaborate dalle GPU, quindi i tuoi modelli funzioneranno incredibilmente più velocemente. Ora possiamo importare sul nostro notebook i moduli principali da TensorFlow Keras e iniziare a codificare: from tensorflow.keras import models, layers, utils, backend as K import matplotlib.pyplot as plt import shap Reti neurali artificiali cosa sono Le ANN sono costituite da strati con una dimensione di input e una di output. Quest'ultimo è determinato dal numero di neuroni (detti anche “nodi”), un'unità computazionale che collega gli input pesati tramite una funzione di attivazione (che aiuta il neurone ad accendersi/spegnersi). I pesi , come nella maggior parte degli algoritmi di apprendimento automatico, vengono inizializzati e ottimizzati casualmente durante l'addestramento per ridurre al minimo una funzione di perdita. I livelli possono essere raggruppati come: Il livello di input ha il compito di passare il vettore di input alla rete neurale. Se abbiamo una matrice di 3 caratteristiche (forma N x 3), questo livello prende 3 numeri come input e passa gli stessi 3 numeri al livello successivo. I livelli nascosti rappresentano i nodi intermedi, applicano diverse trasformazioni ai numeri per migliorare l'accuratezza del risultato finale e l'output è definito dal numero di neuroni. Livello di output che restituisce l'output finale della rete neurale. Se stiamo eseguendo una semplice classificazione binaria o regressione, il livello di output avrà solo 1 neurone (in modo che restituisca solo 1 numero). Nel caso di una classificazione multiclasse con 5 classi diverse, il livello di output deve avere 5 neuroni. La forma più semplice di ANN è il Perceptron , un modello con un solo strato, molto simile al modello di regressione lineare. Chiedere cosa succede all'interno di un Perceptron equivale a chiedere cosa succede all'interno di un singolo nodo di una Rete Neurale multistrato… scomponiamolo. Supponiamo di avere un set di dati di N righe, 3 funzioni e 1 variabile di destinazione (ovvero 1/0) binario: Proprio come in ogni altro caso d'uso di apprendimento automatico, addestreremo un modello per prevedere l'obiettivo utilizzando le funzionalità riga per riga. Cosa significa "Creare un modello"? Cercare dei migliori parametri in una formula matematica che minimizzi l'errore delle tue previsioni. Nei modelli di regressione (es. regressione lineare) bisogna trovare i pesi migliori, nei modelli ad albero (es. random forest) si tratta di trovare i migliori punti di splitting... Di solito, i pesi vengono inizializzati in modo casuale e quindi modificati man mano che l'apprendimento procede. Qui li imposterò tutti come 1: Finora non abbiamo fatto nulla di diverso da una regressione lineare (che è abbastanza semplice da capire per l'azienda). Ora, passiamo da un modello lineare Σ( xi*wi )=Y ad uno non lineare f( Σ(xi*wi) )=Y … entra nella funzione di attivazione. La funzione di attivazione definisce l'output di quel nodo. Ce ne sono molte e si possono anche creare alcune funzioni personalizzate, puoi trovare i dettagli nella documentazione ufficiale e dare un'occhiata a questo cheat sheet . Se impostassimo una semplice funzione lineare nel nostro esempio, non avremmo alcuna differenza da un modello di regressione lineare. Ma noi invece useremo una funzione di attivazione del passo binario che restituisce solo 1 o 0: Abbiamo l'output del nostro Perceptron, una rete neurale a strato singolo che prende alcuni input e restituisce 1 output. Ora l'addestramento del modello continuerebbe confrontando l'output con l'obiettivo, calcolando l'errore e ottimizzando i pesi, ripetendo l'intero processo ancora e ancora. Ed ecco la rappresentazione comune di un neurone: Reti neurali profonde Si potrebbe dire che tutti i modelli di Deep Learning sono Reti Neurali ma non tutte le Reti Neurali sono modelli di Deep Learning. In generale, l'apprendimento "profondo" si applica quando l'algoritmo ha almeno 2 livelli nascosti (quindi 4 livelli in totale inclusi input e output). Immagina di replicare il processo del neurone 3 volte contemporaneamente: poiché ogni nodo (somma pesata e funzione di attivazione) restituisce un valore, avremmo il primo strato nascosto con 3 output. Ora ripetiamo usando quei 3 output come input per il secondo livello nascosto , che restituisce 3 nuovi numeri. Infine, aggiungeremo un livello di output (solo 1 nodo) per ottenere la previsione finale del nostro modello. Ricorda che i livelli possono avere un diverso numero di neuroni e una diversa funzione di attivazione, e in ogni nodo vengono allenati dei pesi per ottimizzare il risultato finale. Ecco perché più livelli aggiungi, maggiore è il numero di parametri addestrabili. Ora puoi rivedere il processo completo di una rete neurale, Ti consigliamo di prenderti un paio di minuti e osservare più e più volte. Si prega di notare che, per mantenerlo il più semplice possibile, non ho menzionato alcuni dettagli che potrebbero non essere di interesse per il Business, ma di cui uno scienziato dei dati dovrebbe assolutamente essere a conoscenza. In particolare: Bias : all'interno di ogni neurone, la combinazione lineare di input e pesi include anche un bias, simile alla costante in un'equazione lineare, quindi la formula completa di un neurone è f( (Xi * Wi ) + bias ) Backpropagation : durante l'addestramento, il modello apprende propagando nuovamente l'errore nei nodi e aggiornando i parametri (pesi e bias) per ridurre al minimo la perdita. Gradient Descent : l'algoritmo di ottimizzazione utilizzato per addestrare le reti neurali che trova il minimo locale della funzione di perdita effettuando ripetuti passaggi nella direzione della discesa più ripida. Progettazione del modello di Deep Learning Il modo più semplice per costruire una rete neurale con TensorFlow è con la classe Sequential di Keras. Usiamolo per creare il Perceptron del nostro esempio precedente, quindi un modello con un solo strato Denso. È lo strato più elementare in quanto fornisce tutti i suoi input a tutti i neuroni, ciascuno dei quali fornisce un output. model = models.Sequential(name="Perceptron", layers=[ layers.Dense( #a fully connected layer name="dense", input_dim=3, #with 3 features as the input units=1, #and 1 node because we want 1 output activation='linear' #f(x)=x ) ]) model.summary() La funzione di riepilogo fornisce un'istantanea della struttura e delle dimensioni (in termini di parametri da addestrare). In questo caso, abbiamo solo 4 (3 pesi e 1 inclinazione), quindi è piuttosto leggero. Se vuoi usare una funzione di attivazione che non è già inclusa in Keras , come la funzione di step binario che ho mostrato nell'esempio visivo, devi sporcarti le mani con TensorFlow grezzo : # definiamo la funzione import tensorflow as tfdef binary_step_activation(x): ##return 1 if x>0 else 0 return K.switch(x>0, tf.math.divide(x,x), tf.math.multiply(x,0)) # build the model model = models.Sequential(name="Perceptron", layers=[ layers.Dense( name="dense", input_dim=3, units=1, activation=binary_step_activation ) ]) Ora proviamo a passare dal Perceptron a una rete neurale profonda. Probabilmente ti starai facendo alcune domande: Quanti strati devo usare? La risposta giusta è "provare diverse varianti e vedere cosa funziona". Di solito lavoro con 2 livelli nascosti Dense con Dropout, una tecnica che riduce l'overfitting impostando casualmente gli input a 0. I livelli nascosti sono utili per superare la non linearità dei dati, quindi se non hai bisogno di non linearità puoi evitare strati nascosti. Troppi livelli nascosti porteranno al sovradattamento. Quanti neuroni? Il numero di neuroni nascosti dovrebbe essere compreso tra la dimensione del livello di input e la dimensione del livello di output. La mia regola pratica è (numero di ingressi + 1 uscita)/2 . Quale funzione di attivazione? Ce ne sono tanti e non si può dire che uno sia assolutamente migliore. Comunque la più usata è ReLU , una funzione lineare a tratti che restituisce l'output solo se è positivo, ed è usata principalmente per i layer nascosti. Inoltre, il livello di output deve avere un'attivazione compatibile con l'output previsto. Ad esempio, la funzione lineare è adatta per problemi di regressione mentre il Sigmoide è spesso utilizzato per la classificazione. Presumo un set di dati di input di N funzionalità e 1 variabile di destinazione binaria (molto probabilmente un caso d'uso di classificazione). n_features = 10model = models.Sequential(name="DeepNN", layers=[ ### hidden layer 1 layers.Dense(name="h1", input_dim=n_features, units=int(round((n_features+1)/2)), activation='relu'), layers.Dropout(name="drop1", rate=0.2), ### hidden layer 2 layers.Dense(name="h2", units=int(round((n_features+1)/4)), activation='relu'), layers.Dropout(name="drop2", rate=0.2), ### layer output layers.Dense(name="output", units=1, activation='sigmoid') ]) model.summary() Si prega di notare che la classe Sequential non è l'unico modo per costruire una rete neurale con Keras . La classe Model offre maggiore flessibilità e controllo sui livelli e può essere utilizzata per creare modelli più complessi con più input/output. Ci sono due grandi differenze: Il layer Input deve essere specificato mentre nella classe Sequential è implicito nella dimensione di input del primo layer Dense. I layer vengono salvati come oggetti e possono essere applicati agli output di altri layer come: output = layer(…)(input) Ecco come puoi usare la classe Model per costruire il nostro Perceptron e DeepNN: # Perceptron inputs = layers.Input(name="input", shape=(3,)) outputs = layers.Dense(name="output", units=1, activation='linear')(inputs) model = models.Model(inputs=inputs, outputs=outputs, name="Perceptron") # DeepNN ### layer input inputs = layers.Input(name="input", shape=(n_features,))### hidden layer 1 h1 = layers.Dense(name="h1", units=int(round((n_features+1)/2)), activation='relu')(inputs) h1 = layers.Dropout(name="drop1", rate=0.2)(h1)### hidden layer 2 h2 = layers.Dense(name="h2", units=int(round((n_features+1)/4)), activation='relu')(h1) h2 = layers.Dropout(name="drop2", rate=0.2)(h2)### layer output outputs = layers.Dense(name="output", units=1, activation='sigmoid')(h2)model = models.Model(inputs=inputs, outputs=outputs, name="DeepNN") Si può sempre verificare se il numero di parametri nel riepilogo del modello è lo stesso di quello di Sequential . Visualizzare i modelli di apprendimento profondo Ricorda, stiamo raccontando una storia al business e la visualizzazione è il nostro miglior alleato. Ho preparato una funzione per tracciare la struttura di una rete neurale artificiale dal suo modello TensorFlow , ecco il codice completo: Proviamolo sui nostri 2 modelli, prima il Perceptron usando questa semplice riga: visualize_nn (model, description=True, figsize=(10,8)) quindi la rete neurale profonda: TensorFlow fornisce anche uno strumento per tracciare la struttura del modello, potresti volerlo usare per reti neurali più complesse con livelli più complicati (CNN, RNN, …). Usando questa riga di codice potrai visualizzare la struttura della rete. utils.plot_model(model, to_file='model.png', show_shapes=True, show_layer_names=True) E adesso Vediamo come Allenare e Valutare le nostre reti neurali Infine, è il momento di addestrare il nostro modello di Deep Learning. Affinché possa funzionare, dobbiamo "compilare", o per dirla in un altro modo, dobbiamo definire l' ottimizzatore, la funzione di perdita e le metriche . Di solito uso l' ottimizzatore Adam , un algoritmo di ottimizzazione sostitutivo per la discesa del gradiente (il migliore tra gli ottimizzatori adattivi). Gli altri argomenti dipendono dal caso d'uso. Nei problemi di classificazione (binaria), è necessario utilizzare una perdita di entropia incrociata ( binaria) che confronta ciascuna delle probabilità previste con l'output effettivo della classe. Per quanto riguarda le metriche, mi piace monitorare sia la Precisione che il punteggio F1, una metrica che combina Precisione e Richiamo (quest'ultimo deve essere implementato in quanto non è già incluso in TensorFlow ). # define metriche def Recall(y_true, y_pred): true_positives = K.sum(K.round(K.clip(y_true * y_pred, 0, 1))) possible_positives = K.sum(K.round(K.clip(y_true, 0, 1))) recall = true_positives / (possible_positives + K.epsilon()) return recall def Precision(y_true, y_pred): true_positives = K.sum(K.round(K.clip(y_true * y_pred, 0, 1))) predicted_positives = K.sum(K.round(K.clip(y_pred, 0, 1))) precision = true_positives / (predicted_positives + K.epsilon()) return precision def F1(y_true, y_pred): precision = Precision(y_true, y_pred) recall = Recall(y_true, y_pred) return 2*((precision*recall)/(precision+recall+K.epsilon())) # compila la rete neurale model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy',F1]) D'altra parte, nei problemi di regressione, di solito imposto il MAE come perdita e R-quadrato come metrica. # definisci le metriche def R2(y, y_hat): ss_res = K.sum(K.square(y - y_hat)) ss_tot = K.sum(K.square(y - K.mean(y))) return ( 1 - ss_res/(ss_tot + K.epsilon()) ) # compile the neural network model.compile(optimizer='adam', loss='mean_absolute_error', metrics=[R2]) Prima di iniziare l'addestramento, dobbiamo anche decidere le Epoche e i Batch : poiché il set di dati potrebbe essere troppo grande per essere elaborato tutto in una volta, viene suddiviso in batch (maggiore è la dimensione del batch, maggiore è lo spazio di memoria necessario). La backpropagation ed il conseguente aggiornamento dei parametri avviene ad ogni batch. Un'epoca è un passaggio sull'intero set di allenamento. Quindi, se hai 100 osservazioni e la dimensione del batch è 20, ci vorranno 5 batch per completare 1 epoca. La dimensione del batch dovrebbe essere un multiplo di 2 (comune: 32, 64, 128, 256) perché i computer di solito organizzano la memoria con una potenza di 2. Tendo a iniziare con 100 epoche con una dimensione del batch di 32. Durante l'addestramento, ci aspetteremmo di vedere le metriche migliorare e la perdita diminuire epoca per epoca. Inoltre, è buona norma conservare una parte dei dati (20%-30%) per la convalida. In altre parole, il modello metterà da parte questa frazione di dati per valutare la perdita e le metriche alla fine di ogni epoca, al di fuori dell'addestramento. Supponendo che tu abbia i tuoi dati pronti in alcuni array X e y (in caso contrario puoi semplicemente generare dati casuali come import numpy as np X = np.random.rand(1000,10) y = np.random.choice([1,0], size=1000) è possibile avviare e visualizzare la formazione come segue: # train/validation training = model.fit(x=X, y=y, batch_size=32, epochs=100, shuffle=True, verbose=0, validation_split=0.3) # plot metrics = [k for k in training.history.keys() if ("loss" not in k) and ("val" not in k)] fig, ax = plt.subplots(nrows=1, ncols=2, sharey=True, figsize=(15,3)) ## training ax[0].set(title="Training") ax11 = ax[0].twinx() ax[0].plot(training.history['loss'], color='black') ax[0].set_xlabel('Epochs') ax[0].set_ylabel('Loss', color='black') for metric in metrics: ax11.plot(training.history[metric], label=metric) ax11.set_ylabel("Score", color='steelblue') ax11.legend() ## validation ax[1].set(title="Validation") ax22 = ax[1].twinx() ax[1].plot(training.history['val_loss'], color='black') ax[1].set_xlabel('Epochs') ax[1].set_ylabel('Loss', color='black') for metric in metrics: ax22.plot(training.history['val_'+metric], label=metric) ax22.set_ylabel("Score", color="steelblue") plt.show() Questi grafici sono presi da due casi d'uso reali che confrontano algoritmi di apprendimento automatico standard con reti neurali. Vediamo ora come Spiegare il nostro Modello Abbiamo addestrato e testato il nostro modello, ma non abbiamo ancora convinto il Business dei risultati… cosa possiamo fare? Facile, costruiamo una spiegazione per mostrare che il nostro modello di Deep Learning non è una scatola nera. Trovo che Shap funzioni molto bene con le Reti Neurali: per ogni previsione, è in grado di stimare il contributo di ogni caratteristica al valore previsto dal modello. Fondamentalmente, risponde alla domanda " perché il modello dice che questo è un 1 e non uno 0? ”. Puoi usare il seguente codice: def explainer_shap(model, X_names, X_instance, X_train=None, task="classification", top=10): ## create explainer ### machine learning if X_train is None: explainer=shap.TreeExplainer(model) shap_values=explainer.shap_values(X_instance) ### deep learning else: explainer=shap.DeepExplainer(model, data=X_train[:100]) shap_values=explainer.shap_values(X_instance.reshape(1,-1))[0].reshape(-1) ## plot ### classification if task=="classification": shap.decision_plot(explainer.expected_value, shap_values, link='logit', feature_order='importance',features=X_instance, feature_names=X_names, feature_display_range=slice(-1,-top-1,-1)) ### regression else: shap.waterfall_plot(explainer.expected_value[0], shap_values, features=X_instance, feature_names=X_names, max_display=top) Tieni presente che questa funzione può essere eseguita anche su altri modelli di Machine Learning (ad es. Regressione lineare, foresta casuale), non solo sulle reti neurali. Come puoi leggere dal codice, se l' argomento X_train viene mantenuto come None, la mia funzione presuppone che non sia Deep Learning. Proviamolo sugli esempi di classificazione e regressione: i = 1 explainer_shap(model, X_names=list_feature_names, X_instance=X[i], X_train=X, task="classification", #task="regression" top=10) Abbiamo Finito Scarica GRATUITAMENTE il pdf dell'articolo sulle reti NEURALI e PYTHON Questo articolo è stato un tutorial per dimostrare come progettare e costruire reti neurali artificiali, profonde e non. Nella seconda parte del tutorial, abbiamo utilizzato TensorFlow per creare alcune reti neurali, dal Perceptron a una più complessa. Quindi, abbiamo addestrato il modello di Deep Learning e valutato la sua spiegabilità sia per i casi d'uso di classificazione che di regressione. Speriamo davvero ti sia piaciuto! Commenta o condividi il Post. Altro sulle reti neurali : Cosa sono le reti neurali artificiali ANN? Cosa sono le reti neurali ricorrenti RNN? Cosa sono le reti neurali convoluzionali CNN? Implementare le reti neurali ricorrenti (RNN) con Python e Keras Il tuo primo Programma di Deep Learning in Python con Keras Step-By-Step Chi ha inventato il Deep Learning ? Vediamo in breve la storia del D.L. Vuoi mettere in pratica quello che hai letto ? Scarica Progetti già pronti Lavora con il nostro editor online senza dover installare librerie Usa i nostri set di Dati Oppure segui i tutorial correlati : Diventare Data Scientist (Scienziato del dato) in 10 Step partendo da Zero Una Guida Semplice e Completa per passare da Excel a Python Visualizzare i dati con il LinePlot o grafico a linee con Python e MatplotLib Data engineer vs data scientist: quale carriera devi scegliere ? Differenze tra Analisi descrittiva, predittiva e prescrittiva Feature Engineering e Feature Selection per Principianti e non Spiegazione della più semplice rete neurale per principianti Prerequisiti per le carriere di Intelligenza Artificiale - Machine Learning PyScript, come usare Python nel browser! Principali Linguaggi di Programmazione per la Data Science Che cosa è il Machine Learning (ML) Migliori progetti Open Source Python di Intelligenza Artificiale Il tuo Primo Programma di Machine Learning con Python e Google Colab Come Analizzare Un Dataset in Solo 5 Passaggi Il tuo primo Programma di Deep Learning in Python con Keras Step-By-Step Come costruire modelli predittivi sanitari utilizzando PyHealth? Esempio pratico Rilevamento Di Veicoli In Tempo Reale Come implementare l'algoritmo Perceptron da zero in Python Implementare le reti neurali ricorrenti (RNN) con Python e Keras Deep learnign e python : Object Recognition e Object Predict esempio Come salvare e caricare il tuo modello di deep learning
- Quali Sono i Tipi di Intelligenza Artificiale ? Debole, Generale, e Super Intelligenza Artificiale
Esistono 3 tipi di intelligenza artificiale (AI): Intelligenza Artificiale debole o debole Intelligenza Artificiale generale o forte Super intelligenza artificiale Al momento abbiamo ottenuto solo un'IA ristretta. Man mano che le capacità di apprendimento automatico continuano ad evolversi e gli scienziati si avvicinano al raggiungimento dell'IA generale, circolano teorie e speculazioni sul futuro dell'IA. Ci sono due teorie principali. Una teoria si basa sulla paura di un futuro distopico, in cui i robot killer super intelligenti conquistano il mondo, spazzando via la razza umana o schiavizzando l'intera umanità, come illustrato in molte narrazioni di fantascienza. L'altra teoria prevede un futuro più ottimistico, in cui umani e robot lavorano insieme, gli esseri umani utilizzano l'intelligenza artificiale come strumento per migliorare la loro esperienza di vita. Gli strumenti di intelligenza artificiale stanno già avendo un impatto significativo sul modo in cui conduciamo gli affari in tutto il mondo, completando le attività con una velocità ed efficienza che non sarebbero possibili per gli esseri umani. Tuttavia, l'emozione e la creatività umana sono qualcosa di incredibilmente speciale e unico, estremamente difficile - se non impossibile - da replicare in una macchina. In questo articolo, discutiamo approfonditamente i 3 tipi di Intelligenza Artificiale e le teorie sul futuro. Cominciamo definendo chiaramente l'intelligenza artificiale. Cos'è l'intelligenza artificiale (AI)? L'intelligenza artificiale è una branca dell'informatica che si sforza di replicare o simulare l'intelligenza umana in una macchina, in modo che le macchine possano eseguire attività che in genere richiedono l'intelligenza umana. Alcune funzioni programmabili dei sistemi di intelligenza artificiale includono la pianificazione, l'apprendimento, il ragionamento, la risoluzione dei problemi e il processo decisionale. I sistemi di intelligenza artificiale sono alimentati da algoritmi, utilizzando tecniche come l'apprendimento automatico, l'apprendimento profondo e le regole. Gli algoritmi di apprendimento automatico forniscono dati informatici ai sistemi di intelligenza artificiale, utilizzando tecniche statistiche per consentire ai sistemi di intelligenza artificiale di apprendere. Attraverso l'apprendimento automatico, i sistemi di intelligenza artificiale migliorano progressivamente nelle attività, senza dover essere programmati specificamente per farlo. Se sei nuovo nel campo dell'IA, probabilmente hai più familiarità con la rappresentazione fantascientifica dell'intelligenza artificiale; robot con caratteristiche simili a quelle umane. Anche se non siamo ancora al livello robotico umano dell'IA, ci sono una miriade di cose incredibili che scienziati, ricercatori e tecnologi stanno facendo con l'Intelligenza Artificiale. L'intelligenza artificiale può comprendere qualsiasi cosa, dagli algoritmi di ricerca di Google, a Watson di IBM , alle armi autonome. Le tecnologie di intelligenza artificiale hanno trasformato le capacità delle aziende a livello globale, consentendo agli esseri umani di automatizzare attività che prima richiedevano tempo e di ottenere informazioni non sfruttate sui propri dati attraverso il rapido riconoscimento dei modelli. Quali sono i tipi di intelligenza artificiale? Le tecnologie di intelligenza artificiale sono classificate in base alla loro capacità di imitare le caratteristiche umane, la tecnologia che usano per farlo, le loro applicazioni nel mondo reale e la teoria della mente, che discuteremo più approfonditamente di seguito. Utilizzando queste caratteristiche come riferimento, tutti i sistemi di intelligenza artificiale, reali e ipotetici, rientrano in uno di tre tipi: Intelligenza artificiale stretta (ANI), che ha una gamma ristretta di abilità; Intelligenza generale artificiale (AGI), che è alla pari con le capacità umane; o Superintelligenza artificiale (ASI), che è più capace di un essere umano. Artificial Narrow Intelligence (ANI), Debole AI, Narrow AI L'intelligenza artificiale stretta (ANI), nota anche come IA debole o IA stretta, è l'unico tipo di intelligenza artificiale che abbiamo realizzato con successo fino ad oggi. L'intelligenza artificiale stretta è orientata agli obiettivi, progettata per eseguire compiti singoli - ad esempio riconoscimento facciale, riconoscimento vocale / assistenti vocali, guidare un'auto o cercare in Internet - ed è molto intelligente nel completare l'attività specifica per cui è programmata. Sebbene queste macchine possano sembrare intelligenti, operano sotto una serie ristretta di vincoli e limitazioni, motivo per cui questo tipo è comunemente indicato come IA debole. L'intelligenza artificiale ristretta non imita né replica l'intelligenza umana, ma si limita a simulare il comportamento umano in base a una gamma ristretta di parametri e contesti. Considera il riconoscimento vocale e della lingua dell'assistente virtuale Siri su iPhone, il riconoscimento visivo delle auto a guida autonoma e i motori di raccomandazione che suggeriscono i prodotti che realizzi in base alla cronologia degli acquisti. Questi sistemi possono solo apprendere o imparare a completare compiti specifici. L'intelligenza artificiale stretta ha registrato numerose scoperte nell'ultimo decennio, alimentate dai risultati nell'apprendimento automatico e nell'apprendimento profondo. Ad esempio, i sistemi di intelligenza artificiale oggi vengono utilizzati in medicina per diagnosticare il cancro e altre malattie con estrema precisione attraverso la replica della cognizione e del ragionamento di tipo umano. L'intelligenza artificiale di Narrow AI deriva dall'uso dell'elaborazione del linguaggio naturale (PNL) per eseguire attività. La PNL è evidente nei chatbot e in simili tecnologie di intelligenza artificiale. Comprendendo il parlato e il testo in linguaggio naturale, l'IA è programmata per interagire con gli esseri umani in modo naturale e personalizzato. L'Intelligenza Artificiale stretta può essere reattiva o avere una memoria limitata. L'IA reattiva è incredibilmente semplice; non ha capacità di memoria o di archiviazione dei dati, emulando la capacità della mente umana di rispondere a diversi tipi di stimoli senza esperienza precedente. L'intelligenza artificiale a memoria limitata è più avanzata, dotata di capacità di memorizzazione e apprendimento dei dati che consentono alle macchine di utilizzare i dati storici per prendere decisioni. La maggior parte dell'Intelligenza Artificiale è AI a memoria limitata, in cui le macchine utilizzano grandi volumi di dati per il deep learning. Esempi di IA stretta: Rankbrain di Google / Ricerca Google Siri di Apple, Alexa di Amazon, Cortana di Microsoft e altri assistenti virtuali Watson di IBM Software di riconoscimento dell'immagine / facciale Mappatura delle malattie e strumenti di previsione Robot di produzione e droni Filtri antispam / strumenti di monitoraggio dei social media per contenuti pericolosi Contenuti di intrattenimento o marketing consigliati in base al comportamento di visualizzazione / ascolto / acquisto Auto a guida autonoma Artificial General Intelligence (AGI), Strong AI, Deep AI L'intelligenza generale artificiale (AGI), denominata anche IA forte o intelligenza artificiale profonda, è il concetto di una macchina con intelligenza generale che imita l'intelligenza e / oi comportamenti umani, con la capacità di apprendere e applicare la sua intelligenza per risolvere qualsiasi problema. AGI può pensare, capire e agire in un modo che è indistinguibile da quello di un essere umano in una determinata situazione. I ricercatori e gli scienziati dell'IA non hanno ancora raggiunto un'IA forte. Per avere successo, avrebbero bisogno di trovare un modo per rendere consapevoli le macchine, programmando una serie completa di abilità cognitive. Le macchine dovrebbero portare l'apprendimento esperienziale al livello successivo, non solo migliorando l'efficienza su compiti singoli, ma acquisendo la capacità di applicare la conoscenza esperienziale a una gamma più ampia di problemi diversi. L'intelligenza artificiale forte utilizza un framework di intelligenza artificiale della teoria della mente, che si riferisce alla capacità di discernere bisogni, emozioni, credenze e processi di pensiero di altri titoli intelligenti. La teoria dell'intelligenza artificiale a livello mentale non riguarda la replica o la simulazione, si tratta di addestrare le macchine per comprendere veramente gli esseri umani. L'immensa sfida di ottenere un'intelligenza artificiale forte non è sorprendente se si considera che il cervello umano è il modello per la creazione di intelligenza generale. La mancanza di una conoscenza completa sulla funzionalità del cervello umano ha costretto i ricercatori a lottare per replicare le funzioni di base della vista e del movimento. K costruito da Fujitsu, uno dei supercomputer più veloci, è uno dei tentativi più notevoli per ottenere una forte intelligenza artificiale, ma considerando che ci sono voluti 40 minuti per simulare un singolo secondo di attività neurale , è difficile determinare se un'intelligenza artificiale forte sarà o meno raggiunto nel nostro prevedibile futuro. Con l'avanzare della tecnologia di riconoscimento delle immagini e dei volti, è probabile che vedremo un miglioramento nella capacità delle macchine di apprendere e vedere. Superintelligenza artificiale (ASI) La super intelligenza artificiale (ASI) è l'ipotetica IA che non si limita a imitare o comprendere l'intelligenza e il comportamento umano; L'ASI è il luogo in cui le macchine acquisiscono consapevolezza di sé e superano le capacità dell'intelligenza e delle capacità umane. La superintelligenza è stata a lungo la musa della fantascienza distopica in cui i robot invadono, rovesciano e / o schiavizzano l'umanità. Il concetto di superintelligenza artificiale vede l'IA evolversi per essere così simile alle emozioni e alle esperienze umane, che non solo le comprende, ma evoca emozioni, bisogni, convinzioni e desideri propri. Oltre a replicare la multiforme intelligenza degli esseri umani, l'ASI teoricamente sarebbe straordinariamente migliore in tutto ciò che facciamo; matematica, scienze, sport, arte, medicina, hobby, relazioni emotive, tutto. L'ASI avrebbe una memoria maggiore e una capacità più rapida di elaborare e analizzare dati e stimoli. Di conseguenza, le capacità decisionali e di risoluzione dei problemi degli esseri super intelligenti sarebbero di gran lunga superiori a quelle degli esseri umani. Il potenziale di avere macchine così potenti a nostra disposizione può sembrare allettante, ma il concetto stesso ha una moltitudine di conseguenze sconosciute. Se venissero alla luce esseri super intelligenti autocoscienti, sarebbero capaci di idee come l'autoconservazione. L'impatto che questo avrà sull'umanità, sulla nostra sopravvivenza e sul nostro modo di vivere è pura speculazione. L'intelligenza artificiale è pericolosa? I robot conquisteranno il mondo? La rapida crescita dell'Intelligenza Artificiale e le potenti capacità hanno reso molte persone paranoiche. Nel suo libro Superintelligence , Nick Bostrom inizia con "La favola incompiuta dei passeri". Fondamentalmente, alcuni passeri hanno deciso di volere un gufo domestico. La maggior parte dei passeri pensava che l'idea fosse fantastica, ma uno era scettico, esprimendo preoccupazione su come i passeri potessero controllare un gufo. Questa preoccupazione è stata respinta in una questione "affronteremo quel problema quando sarà un problema". Elon Musk ha preoccupazioni simili riguardo agli esseri superintelligenti e sosterrebbe che gli umani sono i passeri nella metafora di Bostrom, e ASI è il gufo. Come per i passeri, il “problema del controllo” è particolarmente preoccupante perché potremmo avere solo una possibilità di risolverlo. Mark Zuckerberg è meno preoccupato per questo ipotetico problema di controllo, dicendo che gli aspetti positivi dell'Intelligenza Artificiale superano i potenziali negativi. La maggior parte dei ricercatori concorda sul fatto che è improbabile che l'Intelligenza Artificiale superintelligente mostri emozioni umane e non abbiamo motivo di aspettarci che l'ASI diventi malevolo. Quando si considera come l'Intelligenza Artificiale potrebbe diventare un rischio, sono stati determinati due scenari chiave come quelli più probabili. L'intelligenza artificiale potrebbe essere programmata per fare qualcosa di devastante ? Le armi autonome sono sistemi di intelligenza artificiale programmati per uccidere. Nelle mani della persona sbagliata, le armi autonome potrebbero inavvertitamente portare a una guerra con vittime di massa, potenzialmente anche la fine dell'umanità. Tali armi possono essere progettate per essere estremamente difficili da "spegnere" e gli esseri umani potrebbero, plausibilmente, perdere rapidamente il controllo. Questo rischio è prevalente anche con Intelligenza Artificiale ristretta, ma cresce in modo esponenziale con l'aumentare dell'autonomia. L'intelligenza artificiale potrebbe essere programmata per fare qualcosa di utile, ma sviluppare un metodo distruttivo per raggiungere il suo obiettivo ? Può essere difficile programmare una macchina per completare un'attività, se non delinei attentamente e chiaramente i tuoi obiettivi. Considera di chiedere a un'auto intelligente di portarti da qualche parte il più velocemente possibile. L'istruzione "il più velocemente possibile" non tiene conto della sicurezza, delle regole stradali, ecc. L'auto intelligente può completare con successo il suo compito, ma quale caos può causare nel processo? Se a una macchina viene assegnato un obiettivo e quindi dobbiamo cambiare l'obiettivo o dobbiamo fermare la macchina, come possiamo assicurarci che la macchina non consideri i nostri tentativi di fermarla come una minaccia per l'obiettivo? Come possiamo garantire che la macchina non faccia "tutto il necessario" per completare l'obiettivo? Il pericolo sta nel "qualunque cosa serva" ei rischi con l'Intelligenza Artificiale non sono necessariamente legati alla malevolenza, ma alla competenza. L'IA superintelligente sarebbe estremamente efficiente nel raggiungere gli obiettivi, qualunque essi siano, ma dobbiamo assicurarci che questi obiettivi siano in linea con i nostri se ci aspettiamo di mantenere un certo livello di controllo. Qual è il futuro dell'IA? Questa è la domanda scottante. Siamo in grado di ottenere un'intelligenza artificiale forte o una superintelligenza artificiale? Sono anche possibili? Esperti ottimisti ritengono che AGI e ASI siano possibili, ma è molto difficile determinare quanto siamo lontani dal realizzare questi livelli di AI. Il confine tra i programmi per computer e l'intelligenza artificiale è opaco. Imitare elementi ristretti dell'intelligenza e del comportamento umani è relativamente facile, ma creare una versione meccanica della coscienza umana è una storia completamente diversa. Sebbene l'intelligenza artificiale sia ancora agli inizi e la ricerca di un'intelligenza artificiale forte è stata a lungo considerata fantascienza, le scoperte nel campo dell'apprendimento automatico e profondo indicano che potrebbe essere necessario essere più realistici sulla possibilità di raggiungere l'intelligenza artificiale generale nel corso della nostra vita. È scoraggiante considerare un futuro in cui le macchine sono migliori degli umani nelle cose che ci rendono umani. Non possiamo prevedere con precisione tutti gli impatti che i progressi dell'IA avranno sul nostro mondo, ma l'eliminazione di cose come malattie e povertà non è insondabile. Per ora, la più grande preoccupazione che la civiltà deve affrontare per quanto riguarda le tecnologie di IA ristretta, è la prospettiva di un'automazione efficiente orientata agli obiettivi che fa sì che molti lavori umani diventino obsoleti. Nel suo discorso, "Cosa aggiunge l'IA alle nostre vite?" Alla conferenza Digital Life Design (DLD) 2020 a Monaco, Germania, Gary Kasparov , il più giovane campione mondiale di scacchi e miglior giocatore di scacchi da 20 anni, ha presentato un argomento alternativo. Kasparov ha affermato che abbiamo più da vincere che perdere quando si tratta di AI e che invece di diventare obsoleti, gli esseri umani saranno promossi. Kasparov dice: “I lavori non scompaiono, si evolvono. Eliminare le persone da lavori ripetitivi consente loro di essere più creative. Il futuro della razza umana è basato sulla creatività. “Il futuro riguarda uomini e macchine che lavorano insieme. L'intelligenza artificiale ti porterà ciò che desideri di più ... il tempo... " Vuoi mettere in pratica quello che hai letto ? Scarica Progetti già pronti Lavora con il nostro editor online senza dover installare librerie Usa i nostri set di Dati Oppure segui i tutorial correlati : Diventare Data Scientist (Scienziato del dato) in 10 Step partendo da Zero Data engineer vs data scientist: quale carriera devi scegliere ? Feature Engineering e Feature Selection per Principianti e non Spiegazione della più semplice rete neurale per principianti Prerequisiti per le carriere di Intelligenza Artificiale - Machine Learning PyScript, come usare Python nel browser! Principali Linguaggi di Programmazione per la Data Science Che cosa è il Machine Learning (ML) Migliori progetti Open Source Python di Intelligenza Artificiale Il tuo Primo Programma di Machine Learning con Python e Google Colab Il tuo primo Programma di Deep Learning in Python con Keras Step-By-Step Come costruire modelli predittivi sanitari utilizzando PyHealth? Esempio pratico Rilevamento Di Veicoli In Tempo Reale Come implementare l'algoritmo Perceptron da zero in Python Implementare le reti neurali ricorrenti (RNN) con Python e Keras Deep learnign e python : Object Recognition e Object Predict esempio Come salvare e caricare il tuo modello di deep learning
- Ciclo di vita del Machine Learning e delle Intelligenze artificiali
Introduzione al ciclo di vita del Machine Learning (ML). Il ciclo di vita dell'apprendimento automatico è definito come un processo ciclico che coinvolge un processo in tre fasi (sviluppo della pipeline, fase di addestramento e fase di inferenza) acquisito dal data scientist e dai data engineer per sviluppare, addestrare e servire i modelli utilizzando l'enorme quantità di dati che sono coinvolti in varie applicazioni in modo che l'organizzazione possa trarre vantaggio dall'intelligenza artificiale e dagli algoritmi di apprendimento automatico per ricavare un valore aziendale pratico. Il primo passo nel ciclo di vita dell'apprendimento automatico consiste nel trasformare i dati grezzi in un set di dati pulito, che viene spesso condiviso e riutilizzato. Se un analista o un data scientist riscontrano problemi nei dati ricevuti, devono accedere ai dati originali e agli script di trasformazione. Ci sono una serie di motivi per cui potremmo voler tornare a versioni precedenti dei nostri modelli e dati. Ad esempio, trovare la versione migliore precedente potrebbe richiedere la ricerca in molte versioni alternative poiché i modelli inevitabilmente degradano il loro potere predittivo. Ci sono molte ragioni per questo degrado, come uno spostamento nella distribuzione dei dati che può comportare un rapido declino del potere predittivo come compensazione degli errori. La diagnosi di questo declino può richiedere il confronto dei dati di addestramento con i dati in tempo reale, la riqualificazione del modello, Oppure Imparare dagli errori, parte fondamentale del Ciclo di vita del Machine Learning Lo sviluppo di modelli richiede training separati e set di dati di test. L'uso eccessivo dei dati dei test durante l'allenamento può portare a una scarsa generalizzazione e prestazioni, in quanto possono portare a un adattamento eccessivo. Il contesto gioca un ruolo fondamentale qui, quindi è necessario capire quali dati sono stati utilizzati per addestrare i modelli previsti e con quali configurazioni. Il ciclo di vita dell'apprendimento automatico è basato sui dati perché il modello e l'output del training sono collegati ai dati su cui è stato eseguito il training. Nella figura seguente è mostrata una panoramica di una pipeline di machine learning end-to-end con un punto di vista dei dati: Passaggi coinvolti nel ciclo di vita dell'apprendimento automatico Lo sviluppatore di Machine Learning esegue costantemente la sperimentazione con nuovi set di dati, modelli, librerie software, parametri di ottimizzazione al fine di ottimizzare e migliorare l'accuratezza del modello. Poiché le prestazioni del modello dipendono completamente dai dati di input e dal processo di addestramento. 1. Costruire il modello di apprendimento automatico Questo passaggio determina il tipo di modello in base all'applicazione. Rileva inoltre che l'applicazione del modello nella fase di apprendimento del modello in modo che possano essere progettati correttamente in base alle esigenze di un'applicazione prevista. È disponibile una varietà di modelli di machine learning, come il modello supervisionato, il modello non supervisionato, i modelli di classificazione, i modelli di regressione, i modelli di clustering e i modelli di apprendimento per rinforzo. Una visione ravvicinata è illustrata nella figura seguente: 2. Preparazione dei dati Una varietà di dati può essere utilizzata come input per scopi di machine learning. Questi dati possono provenire da una serie di fonti, come un'azienda, aziende farmaceutiche, dispositivi IoT, aziende, banche, ospedali ecc. Nella fase di apprendimento della macchina vengono forniti grandi volumi di dati poiché all'aumentare del numero di dati si allinea ottenendo i risultati desiderati. Questi dati di output possono essere utilizzati per l'analisi o inseriti come input in altre applicazioni o sistemi di machine learning per i quali fungeranno da seme. 3. Allenamento del modello Questa fase riguarda la creazione di un modello dai dati forniti. In questa fase, una parte dei dati di addestramento viene utilizzata per trovare parametri del modello come i coefficienti di un polinomio o i pesi di nell'apprendimento automatico, il che aiuta a ridurre al minimo l'errore per il set di dati specificato. I dati rimanenti vengono quindi utilizzati per testare il modello. Questi due passaggi vengono generalmente ripetuti più volte al fine di migliorare le prestazioni del modello. 4. Selezione dei parametri Implica la selezione dei parametri associati al training che sono anche chiamati iperparametri. Questi parametri controllano l'efficacia del processo di addestramento e quindi, in definitiva, le prestazioni del modello dipendono da questo. Sono molto cruciali per la produzione di successo del modello di apprendimento automatico. 5. Trasferisci l'apprendimento Poiché ci sono molti vantaggi nel riutilizzare i modelli di apprendimento automatico in vari domini. Pertanto, nonostante il fatto che un modello non possa essere trasferito direttamente tra domini diversi, viene utilizzato per fornire un materiale di partenza per iniziare la formazione di un modello di fase successiva. In questo modo si riduce notevolmente il tempo di allenamento. 6. Verifica del modello L'input di questa fase è il modello addestrato prodotto dalla fase di apprendimento del modello e l'output è un modello verificato che fornisce informazioni sufficienti per consentire agli utenti di determinare se il modello è adatto all'applicazione prevista. Pertanto, questa fase del ciclo di vita dell'apprendimento automatico riguarda il fatto che un modello funziona correttamente se trattato con input che non sono visibili. 7. Distribuire il modello di apprendimento automatico In questa fase del ciclo di vita del machine learning, ci applichiamo per integrare i modelli di machine learning in processi e applicazioni. L'obiettivo finale di questa fase è la corretta funzionalità del modello dopo la distribuzione. I modelli dovrebbero essere distribuiti in modo tale da poter essere utilizzati per l'inferenza e dovrebbero essere aggiornati regolarmente. 8. Monitoraggio Implica l'inclusione di misure di sicurezza per garantire il corretto funzionamento del modello durante la sua durata. Affinché ciò avvenga è necessaria una corretta gestione e aggiornamento. Vantaggio del ciclo di vita dell'apprendimento automatico L'apprendimento automatico offre i vantaggi di potenza, velocità, efficienza e intelligenza attraverso l'apprendimento senza programmarli esplicitamente in un'applicazione. Offre opportunità per prestazioni, produttività e robustezza migliorate. Conclusione sul Ciclo di vita del Machine learning I sistemi di apprendimento automatico stanno diventando ogni giorno più importanti poiché la quantità di dati coinvolti in varie applicazioni sta aumentando rapidamente. La tecnologia di apprendimento automatico è il cuore di dispositivi intelligenti, elettrodomestici e servizi online. Il successo dell'apprendimento automatico può essere ulteriormente esteso ai sistemi critici per la sicurezza, alla gestione dei dati, al calcolo ad alte prestazioni, che ha un grande potenziale per i domini applicativi. Articoli consigliati Questa è una guida al ciclo di vita dell'apprendimento automatico. Abbiamo visto l'introduzione, Imparare dagli errori e i Passaggi coinvolti nel ciclo di vita dell'apprendimento automatico con i relativi vantaggi. Vuoi mettere in pratica quello che hai letto ? Scarica Progetti già pronti Lavora con il nostro editor online senza dover installare librerie Usa i nostri set di Dati Oppure segui i tutorial correlati : Tutorial di Regressione Logistica per l'apprendimento automatico Riconoscimento facciale con Python, in meno di 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 Feature Engineering e Feature Selection per Principianti e non Spiegazione della più semplice rete neurale per principianti PyScript, come usare Python nel browser! Il tuo Primo Programma di Machine Learning con Python e Google Colab Il tuo primo Programma di Deep Learning in Python con Keras Step-By-Step Come costruire modelli predittivi sanitari utilizzando PyHealth? Esempio pratico Rilevamento Di Veicoli In Tempo Reale Come implementare l'algoritmo Perceptron da zero in Python Implementare le reti neurali ricorrenti (RNN) con Python e Keras Deep learnign e python : Object Recognition e Object Predict esempio Come salvare e caricare il tuo modello di deep learning














