top of page

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 :



Differenze tra Reti Neurali CNN Vs ANN Vs RNN
Differenze tra Reti Neurali CNN Vs ANN Vs RNN


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):



Vuoi mettere in pratica quello che hai letto ?



Oppure segui i tutorial correlati :


PCR (5).gif
PCR (4).gif
PCR.gif
PCR.gif
PCR.gif
PCR.gif
PCR (5).gif
3.gif
Vediamo se riesci a cliccarmi ! Nascondo una Sorpresa... (2).png

Ciao 

🤗 Articoli consigliati dalla nostra
Intelligenza Artificiale in base ai tuoi interessi

Correlazione Alta

Correlazione Media

Correlazione Bassa

Iscriviti

VUOI DIVENTARE UN MEMBRO DI INTELLIGENZA ARTIFICIALE ITALIA GRATUITAMENTE E TRARNE I SEGUENTI BENEFICI?

Corsi Gratis

più di 150 lezioni online

Dataset Gratis

più di 150o dataset

Ebook Gratis

più di 10 libri da leggere

Editor Gratis

un editor python online

Progetti Gratis

più di 25 progetti python

App Gratis

4 servizi web con I.A.

Unisciti Ora a oltre
1.000.000
di lettori e appassionanti d'I.A.

Tutto ciò che riguarda l'intelligenza Artificiale, in unico posto, in italiano e gratis.

MEGLIO DI COSI' NON SI PUO' FARE

Dopo l'iscrizione riceverai diversi Regali

VUOI SCRIVERE ARTICOLI INSIEME A NOI.

Grazie

bottom of page