Introduzione
Continuiamo con questo articolo la nostra serie sul funzionamento dei modelli LLM: ci concentreremo, in particolare, sull’uso della modellazione orientata agli oggetti per presentare e successivamente confrontare le reti neurali biologiche (BNN) e le reti neurali artificiali (ANN). L’obiettivo è fornire ai lettori modelli formali per rappresentare questi domini utilizzando il linguaggio di modellazione unificato (UML), in particolare la notazione dei diagrammi delle classi.
I modelli saranno presentati senza applicare i tradizionali passaggi di ottimizzazione del software, per riflettere più fedelmente queste strutture come sono realmente. Nel contesto dello sviluppo software classico, possono essere considerati modelli di business.
Reti neurali biologiche e artificiali: tante differenze
Dall’analisi di questi due domini, si può subito osservare come differiscano, nonostante i concetti alla base siano molto simili. Per comprendere appieno questo documento, è essenziale avere qualche conoscenza del paradigma orientato agli oggetti e della notazione dei diagrammi di classe, anche se i diagrammi sono spiegati anche in un linguaggio semplice. Il linguaggio UML standard, in particolare la notazione dei diagrammi di classe, è un linguaggio ben consolidato che può essere appreso attraverso un’ampia letteratura. Ad ogni modo, non è necessario comprendere ogni aspetto di questo articolo per capire il modello e i successivi articoli.
Reti neurali biologiche (BNN)
Le reti neurali biologiche sono costituite da diverse sinapsi (figura 1, angolo superiore sinistro), con ogni sinapsi (rappresentata dalla classe Synapse) che ha funzione di collegamento tra due o più neuroni. I neuroni sono tipi di cellule specializzate; infatti, la classe Neuron eredita dalla classe Cell. Per quanto riguarda la programmazione OO, i neuroni non sono semplicemente un ruolo svolto da cellule normali, ma rappresentano una vera e propria specializzazione della classe Cell. Questa progettazione nasce dal fatto che, oltre a condividere la struttura fondamentale e il comportamento di una cellula, i neuroni possiedono strutture specifiche come i dendriti (vedi composizione con la classe Dendrite) e gli assoni (vedi composizione con la classe Axon), e svolgono compiti specializzati come ricevere e trasmettere segnali.
Il neurone è una classe astratta (gli elementi astratti sono evidenziati in UML con il nome riportato in corsivo) e comprende tre sottoclassi specializzate: SensoryNeuron (neurone sensoriale), Interneuron (interneurone) e MotorNeuron (neurone motore).
I neuroni sensoriali
i neuroni sensoriali sono in grado di rilevare vari stimoli, vale a dire cambiamenti di tipo fisico o chimico nell’ambiente, tra cui:
- stimoli ambientali: come luce, suono, calore, pressione e sostanze chimiche, rilevati dai recettori sensoriali;
- stimoli interni: informazioni sullo stato interno del corpo, inclusi cambiamenti di temperatura, pH e la presenza di alcuni metaboliti, rilevati dai recettori interni.
Pertanto, la classe Stimuli è astratta e dovrebbe essere ulteriormente specializzata. Questa parte tuttavia non è stata inclusa nel modello per evitare eccessiva complessità.
Gli stimoli vengono convertiti in segnali nervosi dai recettori sensoriali, permettendo ai neuroni sensoriali di trasmettere le informazioni al sistema nervoso centrale (CNS, Central Nervous System) per la corrispondente interpretazione.
Gli interneuroni
Gli interneuroni collegano tra loro i neuroni e si trovano solo nel CNS; il loro ruolo principale è di ritrasmettere le informazioni.
Il modello non rappresenta in modo preciso la realtà. Infatti, la classe Interneuron è associata alla classe genitore Neuron attraverso due relazioni: sources (sorgenti) e destinations (destinazioni). Questo potrebbe portare a configurazioni errate del modello. Per esempio, un MotorNeuron potrebbe essere una sorgente di un Interneuron, oppure, viceversa, un SensoryNeuron potrebbe essere una destinazione di un Interneuron. L’attuale modello comprende un ambito semantico più ampio e incorretto rispetto al dominio reale. Per correggere questa situazione, si può sia ricorrere a modelli artificialmente più complessi, sia aggiungere i seguenti due vincoli:
- sources può essere solo di tipo #SensoryNeuron o #Interneuron
- destinations può essere solo di tipo #SensoryNeuron o #MotorNeuron
Motoneuroni
Dal punto di vista del sistema nervoso, muscoli, organi e ghiandole possono essere collettivamente definiti come effettori (classe Effector). Gli effettori sono componenti del corpo che eseguono i comandi inviati dai neuroni motori, provocando risposte come movimento, secrezioni o cambiamenti nella funzione degli organi.
Anche in questo caso, la classe Effector è astratta e dovrebbe essere ulteriormente specializzata. Questa non è stata ancora implementata nel modello per evitare di appesantirlo.
Per quanto riguarda il comportamento, le funzioni eseguite dai vari metodi dovrebbero essere abbastanza chiare sia dal diagramma e sia dalle spiegazioni fornite finora. Potrebbe essere utile tuttavia approfondire il metodo evaluateThreshold() della classe astratta Neurone, che verifica se tutti i segnali in arrivo raggiungono o superano una soglia predefinita, determinando se il neurone debba generare o meno una potenziale azione.
Il senso di un modello
Infine, è importante considerare come vengono assegnati i metodi alle diverse classi di neuroni. Ad esempio, solo un neurone sensoriale può ricevere stimoli (getStimuli), mentre solo un neurone motorio può innescare azioni (triggerAction), e così via.
I paragrafi appena visti rappresentano in modo formale un sistema reale e complesso, utilizzando la notazione UML, mostrando l’eleganza e la potenza dei modelli orientati agli oggetti. Inoltre, essendo basato su una semantica rigorosa, può essere facilmente compreso da un vasto pubblico senza necessità di ulteriori spiegazioni, dimostrando ancora una volta che un diagramma di questo tipo ha il valore di migliaia di parole in linguaggio naturale, soprattutto considerando che il linguaggio naturale è intrinsecamente ambiguo.
Reti neurali artificiali (ANN)
Passiamo ora a un modello per illustrare le reti neurali artificiali (ANN) e i loro componenti chiave in un’ottica di chiarezza e di intuitività del modello a scapito dei dettagli di una possibile implementazione diretta, che richiederebbe un affinamento basato sull’ottimizzazione di strutture ecorrispondenti performance. Come menzionato nell’Introduzione, questo modello deve essere inteso come un Business Model.
Il modello è organizzato in due Package (figura 2), che riflettono due prospettive chiave:
- la vista del Modello
- la vista delle Reti Neurali Artificiali
La prima dipende dalla seconda.
Model
Il Modello (parte superiore del diagramma) comprende tre istanze di Layer:
- uno strato di Input (Input)
- uno strato di Output (Output)
- uno strato Nascosto (Hidden)
Il modello ammette una sola istanza per lo strato di Input e una sola per quello di Output. Tuttavia, lo strato nascosto è diverso, poiché generalmente ogni modello ne include più di uno. Tutti gli strati ereditano dalla stessa classe padre, Layer, che gestisce la composizione con la classe NeuronNode.
Questo aspetto del modello avrebbe potuto essere rappresentato elegantemente utilizzando un Pattern di Composizione [Gamma et al., 1995]; tuttavia, questo approccio avrebbe oscurato il significato semantico del modello e avrebbe aumentato la sua complessità. Per questa ragione, non è stato adottato.
Ogni strato ha un nome e un ID (vedi layer). Ad esempio: nome = “Output”, ID = “O1”; nome = “Interno 1”, ID = “I1”; nome = “Interno 2”, ID = “I2”, e così via.
Reti neurali artificiali
Nel secondo Package, quello indipendente, rappresentato nella parte inferiore del diagramma, la radice è ArtificialNeuralNetwork. La sua istanza possiede tutti i nodi e include collegamenti diretti ai nodi di input. Sebbene quest’ultima associazione sia in parte ridondante (poiché può essere derivata analizzando tutti i nodi posseduti), essa chiarisce e semplifica la navigazione.
Ogni NeuronNode ha un bias, che appartiene al neurone, vedi getBiasValue(), ed è associato a una funzione di attivazione. I pesi sono attributi che appartengono alle connessioni tra i neuroni. Questa “sinapsi” è modellata dalla classe Connection, che collega un nodo sorgente a un nodo destinazione.
Anche in questo caso, il modello non è sufficientemente rigoroso. Infatti, la classe Connection consentirebbe tutte le tipologie di comunicazioni tra i nodi neurali di layer diversi, cosa assolutamente non corretta.
Pertanto, anche in questo caso il modello può essere corretto includendo opportuni vincoli per limitare le tipologie di connessioni consentite. Ad esempio, si potrebbe includere che ogni nodo appartenente al layer di Input deve:
- non fungere mai da “destinazione” in una Connection;
- ricoprire esclusivamente il ruolo di “origine” in una Connection con un nodo appartenente al layer Nascosto.
E così via.
Ulteriori dettagli
Ogni neurone ha una funzione di attivazione, e possono essere configurate diverse funzioni. Questa parte del diagramma è stata modellata seguendo il pattern Command [Gamma et al., 1995].
Infine, ogni istanza di NeuronNode può valutare l’insieme di input (che consiste nel moltiplicare ogni valore di input per il peso corrispondente e poi sommare il bias). Può invocare l’esecuzione della ActivationFunction configurata, il cui risultato determinerà se il nodo deve inviare il suo output o meno.
Inoltre, questo diagramma ha lo scopo di rappresentare e descrivere in modo formale, ma anche semplice, il mondo complesso delle ANN. Leggendo questo diagramma, le persone dovrebbero poter acquisire tutte le informazioni sulla struttura senza dover leggere pagine lunghe di un libro di testo. Questa è ancora una prova che la modellazione OO è uno strumento davvero potente.
Conclusioni
In questo articolo, abbiamo analizzato il dominio delle Reti Neurali Biologiche (BNN) e delle Reti Neurali Artificiali (ANN) da una prospettiva orientata agli oggetti (OO), sfruttando la notazione dei diagrammi delle classi del linguaggio di modellazione UML.
Il concetto centrale di entrambi i modelli è lo stesso: il neurone. Tuttavia, la struttura circostante è notevolmente diversa. Ciò evidenzia, ancora una volta, che sebbene le ANN siano state concepite prendendo spunto dalle BNN, il loro design differisce sostanzialmente… almeno per il momento.
Tuttavia, ciò che i Large Language Models (LLM) possono realizzare è impressionante e ogni giorno sembra segnare un ulteriore passo avanti nell’evoluzione dell’intelligenza artificiale. Le capacità degli LLM continuano a espandersi, dimostrando avanzamenti notevoli nella comprensione e generazione di contenuti simili o addirittura superiori a quelli umani, il che sottolinea il rapido progresso in questo campo.
Riferimenti
[McCulloch, Pitts, 1943] McCulloch, W.S., Pitts, W. “A logical calculus of the ideas immanent in nervous activity”. Bulletin of Mathematical Biophysics 5, 115–133 (1943).
https://doi.org/10.1007/BF02478259
[Rosenblatt, 1958] Frank Rosenblatt, “The perceptron: A probabilistic model for information storage and organization in the brain”
https://psycnet.apa.org/record/1959-09865-001
[Gamma et al., 1995] E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns : Elements of Reusable Object-Oriented Software. Reading, Mass. :Addison-Wesley, 1995.
[Rumelhart, et al. 1986] David E. Rumelhart, Geoffrey E. Hinton & Ronald J. Williams, “Learning representations by back-propagating errors”. Nature 323, 533–536 (1986).
https://doi.org/10.1038/323533a0
[Hochreiter et al., 1997] Sepp Hochreiter, Jürgen Schmidhuber; Long Short-Term Memory. Neural Comput 1997; 9 (8): 1735–1780.
doi: https://doi.org/10.1162/neco.1997.9.8.1735
[LeCun et al., 1998] LeCun, Y., Bottou, L., Bengio, Y., & Haffner, P. (1998). “Gradient-Based Learning Applied to Document Recognition.” Proceedings of the IEEE
https://ieeexplore.ieee.org/document/726791
[Nicholls et al., 2001] Principles of signaling and organization. In From neuron to brain. Sunderland, MA: Sinauer Associates.
[Reece et al., 2011] Neuron structure and organization reflect function in information transfer. Campbell biology. San Francisco, CA: Pearson.
[Hanani, M., 2005] “Satellite glial cells in sensory ganglia: From form to function”. Brain Research Reviews, 48, 457-476.
https://www.sciencedirect.com/science/article/abs/pii/S0165017304001274
[Khan Academy, 2012] The neuron and nervous system. Overview of neuron structure and function. Introduction to neurons and glia. How the structure of a neuron allows it to receive and transmit information.
https://www.khanacademy.org/science/biology/human-biology/neuron-nervous-system/a/overview-of-neuron-structure-and-function
[Goodfellow et al. 2014] Ian J. Goodfellow, Jean Pouget-Abadie, Mehdi Mirza, Bing Xu, David Warde-Farley, Sherjil Ozair, Aaron Courville and Yoshua Bengio (2014). “Generative Adversarial Networks.”
https://arxiv.org/abs/1406.2661
[LeCun et al., 2015] Yann LeCun, Yoshua Bengio & Geoffrey Hinton. (2015). “Deep Learning.” Nature.
https://www.nature.com/articles/nature14539
[Solomon, 2016] Sensory receptors. In Introduction to human anatomy and physiology. Maryland Heights, MO: Saunders.
[Rye et al, 2016] Connie Rye, Robert Wise, Vladimir Jurukovski, Jean DeSaix, Jung Choi, Yael Avissar, Biology, OpenStax, 2016
https://openstax.org/books/biology/pages/1-introduction
https://openstax.org/books/biology/pages/35-1-neurons-and-glial-cells#fig-ch35_01_04
[Byrne, 2016] “Introduction to Neurons and Neuronal Networks”. Neuroscience.
https://nba.uth.tmc.edu/neuroscience/s1/introduction.html.
[Vaswani et al., 2017] Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser and Illia Polosukhin, 2017, “Attention is All You Need.” Advances in Neural Information Processing Systems (NeurIPS)”
https://arxiv.org/abs/1706.03762
[Drug Target R., 2019] Scientists discover unique imaging technique to view synapse proteins, Drug Target Review, 27 September 2019
https://www.drugtargetreview.com/news/50185/scientists-discover-unique-imaging-technique-to-view-synapse-proteins/