Xarxa neuronal

De Viquipèdia
Dreceres ràpides: navegació, cerca

Una xarxa neuronal artificial (XNA), també anomenada xarxa neuronal simulada o senzillament xarxa neuronal, és un conjunt de neurones artificials interconnectades que utilitza un model matemàtic o computacional de processament de dades basat en una aproximació connexionista per a la computació. Els investigadors no es posen d'acord a l'hora de definir què és una xarxa neuronal, però la majoria coincideix a dir que es tracta d'una xarxa d'elements de processament relativament simples en què el funcionament global es troba determinat per les connexions entre els elements de processament i els paràmetres d'aquests. La inspiració original de la tècnica es va extraure de l'estudi de les xarxes bioelèctriques del cervell que estan formades per neurones i per les sinapsis d'aquestes (vegeu xarxa neuronal biològica). En un model de xarxa neuronal, els nodes (també anomenats neurones, neurodes, elements de processament o unitats) estan connectats per formar una xarxa de nodes i, per això, s'anomena xarxa neuronal.

Una xarxa neuronal és un conjunt de nodes interconectats, paregut al l'extensíssima xarxa de neurones al cervell humà.

Estructura[modifica | modifica el codi]

Com el cervell, una xarxa neuronal artificial és un conjunt paral·lel d'unitats de processament petites i simples on les interconnexions constitueixen una gran part de la intel·ligència de la xarxa. No obstant això, les xarxes neuronals artificials són prou diferents del cervell pel que respecta a l'estructura. Per exemple, una xarxa neuronal és molt més menuda que el cervell. A més, les unitats utilitzades en una xarxa neuronal són, generalment, molt més simples que les neurones. Tot i això, algunes funcions que semblen exclusives del cervell, com és el cas de l'aprenentatge, s'han reproduït a escala més senzilla en les xarxes neuronals. Vegeu també: neurona artificial, perceptró

Models[modifica | modifica el codi]

En una xarxa neuronal típica, cada node funciona gairebé com una neurona biològica. En una neurona biològica, cada sinapsi d'entrada té un pes associat. Quan el pes de cada sinapsi, multiplicat per la seva entrada, se suma a totes les sinapsis entrants i aquesta suma és major que algun 'valor llindar', la neurona es dispara i envia un valor a una altra neurona de la xarxa. El node típic d'una xarxa neuronal intenta emular aquest funcionament. Cada node conté un conjunt de línies d'entrada que són anàlogues a les sinapsis d'entrada d'una neurona biològica. A més, cada node té una 'funció d'activació' (coneguda també com a 'funció de transferència') que li indica quan ha de disparar-se, semblant a allò que ocorre en una neurona biològica. En la seva forma més senzilla, aquesta funció d'activació pot generar un valor '1' si l'entrada sumada és major que algun valor, però si això no es produeix, generarà un valor '0'. No obstant això, les funcions d'activació no sempre són tan senzilles. De fet, per crear xarxes que puguen realitzar una tasca útil, les funcions d'activació quasi sempre han de ser més complexes per a, almenys, alguns dels nodes de la xarxa.

Una xarxa neuronal feedforward, un dels tipus de xarxes neuronals més comuns, està formada per un conjunt de nodes i connexions. Aquests nodes s'organitzen en capes. Generalment, les connexions es formen connectant cadascun dels nodes d'una determinada capa a totes les neurones de la següent capa. D'aquesta manera, tots els nodes d'una determinada capa estan connectats a tots els nodes de la següent.

Normalment, en una xarxa neuronal feedforward hi ha almenys tres capes: una capa d'entrada, una capa oculta i una capa de sortida. La capa d'entrada no processa res, ja que és en aquesta on el vector de dades alimenta la xarxa. Així doncs, la capa d'entrada alimenta la capa oculta i aquesta, al seu torn, alimenta la capa de sortida. El processament real de la xarxa té lloc en els nodes de la capa oculta i de la capa de sortida.

Quan un nombre suficient de neurones estan connectades en capes, la xarxa es pot 'entrenar' per realitzar tasques útils usant un algorisme d'entrenament. Les xarxes feedforward, en concret, si estan entrenades apropiadament, són molts útils per realitzar tasques intel·ligents de classificació o d'identificació d'informació desconeguda.

Càlculs[modifica | modifica el codi]

La corba sigmoïdal sovint s'utilitza com a funció de transferència perquè aquesta introdueix no-linealitat en els càlculs de la xarxa en delimitar el nivell d'activació de la neurona a un interval [0,1]. La funció sigmoïdal compta amb l'avantatge addicional de tenir una funció derivable molt simple, tal com es requereix per retropropagar els errors a través d'una xarxa neuronal feedforward. A més, poden utilitzar-se altres funcions amb característiques semblants. Majoritàriament, s'usa la funció tanh que delimita les activacions en l'interval [-1, 1] encara que, de vegades, també s'usa una funció lineal piece-wise que simplement talla l'activació en compte de delimitar-la.

Funció sigmoïdal utilitzada com a funció d'activació de les neurones

Si no s'introdueix no-linealitat que la delimita o la talla, la xarxa perd gran part del seu poder computacional i es converteix en una senzilla operació de multiplicació de matrius de l'àlgebra lineal.

Altres models de càlculs alternatius de les xarxes neuronals inclouen models amb bucles en què s'utilitzen processos amb retard i models el guanyador s'ho emporta tot on la neurona amb el major valor de càlcul pren un valor 1 i totes les altres neurones prenen el valor 0.

Normalment, els pesos d'una xarxa neuronal s'inicien en uns valors aleatoris baixos. Açò mostra que la xarxa no té cap tipus de coneixement; la seua sortida és, bàsicament, una funció aleatòria de l'entrada. A mesura que el procés d'entrenament avança, els pesos de les connexions es modifiquen gradualment segons les regles computacionals específiques de l'algorisme d'aprenentatge que s'utilitza. Finalment, els pesos ideals convergeixen en uns valors que els permeten realitzar un càlcul útil. Es pot dir que, al començament, les xarxes neuronals no tenen cap tipus de coneixement i tracten d'obtenir algun tipus de coneixement real, encara que aquest és subsimbòlic.

Les xarxes neuronals artificials (XNA) presenten alguns avantatges perquè s'assemblen als principis de l'estructura del sistema neuronal:

  • Aprenentatge: tenen la destresa d'aprendre mitjançant l'anomenada etapa d'aprenentatge.
  • Autoorganització: creen la seua pròpia representació de la informació donada en el procés d'aprenentatge.
  • Tolerància a fallades: com que emmagatzemen informació redundant, la destrucció parcial de la xarxa no perjudica del tot a la resposta de la xarxa.
  • Flexibilitat: poden manejar dades d'entrada sense canvis importants com ara senyals acústics o altres canvis en les dades d'entrada determinades (per exemple, si les dades d'entrada són un objecte, aquest pot ser un poc diferent i no ser un problema per a la resposta de la xarxa neuronal artificial).
  • Temps real: l'estructura de les xarxes neuronals és paral·lela; si s'implementen d'aquesta manera amb ordinadors o amb un maquinari especial, poden obtenir-se respostes en temps real.
  • Escalabilitat: poden adaptar-se a qualsevol problema d'una determinada àrea.

Avantatges[modifica | modifica el codi]

Les xarxes neuronals artificials (XNA) presenten alguns avantatges perquè s'assemblen als principis de l'estructura del sistema neuronal:

  • Aprenentatge: tenen la destresa d'aprendre mitjançant l'anomenada etapa d'aprenentatge.
  • Autoorganització: creen la seua pròpia representació de la informació donada en el procés d'aprenentatge.
  • Tolerància a fallades: com que emmagatzemen informació redundant, la destrucció parcial de la xarxa no perjudica del tot a la resposta de la xarxa.
  • Flexibilitat: poden manejar dades d'entrada sense canvis importants com ara senyals acústics o altres canvis en les dades d'entrada determinades (per exemple, si les dades d'entrada són un objecte, aquest pot ser un poc diferent i no ser un problema per a la resposta de la xarxa neuronal artificial).
  • Temps real: l'estructura de les xarxes neuronals és paral·lela; si s'implementen d'aquesta manera amb ordinadors o amb un maquinari especial, poden obtenir-se respostes en temps real.
  • Escalabilitat: poden adaptar-se a qualsevol problema d'una determinada àrea.

Aplicacions[modifica | modifica el codi]

Utilitat[modifica | modifica el codi]

Les xarxes neuronals artificials són especialment útils per a tractar amb dades de nombres reals limitats en què es requereix una sortida amb valor real. D'aquesta manera, les xarxes neuronals realitzaran una classificació per nivells i són capaces d'expressar valors equivalents a no segur. Si la xarxa neuronal s'entrena utilitzant la funció d'error d'entropia creuada (vegeu l'obra Neural Networks for Pattern Recognition, escrita per Christopher M. Bishop) i la sortida de la xarxa és sigmoïdal, aleshores les sortides seran estimacions de la vertadera probabilitat posterior d'una classe.

Aplicacions en la vida real[modifica | modifica el codi]

En la vida real, les xarxes neuronals realitzen especialment bé les següents tasques:

Altres tipus de xarxes neuronals i, en especial, les xarxes neuronals recurrents de temps continu s'utilitzen en combinació amb els algorismes genètics (AG) per produir controladors per a robots. El genoma està constituït pels paràmetres de les xarxes i la idoneïtat d'una xarxa és l'adequació del funcionament mostrat pel robot controlat (o sovint per una simulació d'aquest funcionament). No obstant això, també pot utilitzar-se per al reconeixement d'iris.

Tipus de xarxes neuronals[modifica | modifica el codi]

Perceptró monocapa[modifica | modifica el codi]

Esquema d'un perceptró amb 2 entrades

El primer tipus de xarxa neuronal és el perceptró monocapa, format per una sola capa de nodes de sortida. Les entrades alimenten directament les sortides a través d'una sèrie de pesos, per això aquest pot considerar-se el tipus més senzill de xarxa feedforward. La suma dels productes dels pesos i de les entrades es calcula en cada node i, si el valor està per sobre un llindar (normalment el 0), la neurona es dispara i pren el valor activat (normalment l'1); si això no ocorre pren el valor desactivat (normalment el -1). A les neurones amb aquest tipus de funció d'activació també se’ls anomena neurones de McCulloch-Pitts o neurones de llindar, descrites als anys 40 per Warren McCulloch i Walter Pitts. En els textos especialitzats, el terme perceptró sol fer referència a les xarxes que consten només d'una d'aquestes unitats.

Es pot crear un perceptró fent servir qualsevol valor de l'estat activat o del desactivat, sempre que el valor del llindar estiga entre els dos*. La major part dels perceptrons tenen sortides d'1 o de -1 amb un llindar de 0. A més, hi ha proves que a aquestes xarxes se’ls pot entrenar més ràpidament que a les xarxes creades per nodes amb valors d'activació i de desactivació diferents. Es pot emprar un algorisme simple d'aprenentatge, generalment anomenat regla delta, per entrenar els perceptrons. Aquest calcula els errors entre la sortida calculada i les dades de sortida de mostra, els empra per crear un reajustament de pesos i implementa així una forma de descens del gradient.

AND linealment separableOR linealment separableXOR no linealment separable

Els perceptrons d'una sola una unitat sols poden aprendre models que són linealment separables. L'any 1969, una famosa monografia titulada Perceptrons, elaborada per Marvin Minsky i Seymour Papert, va mostrar que era impossible que un perceptró monocapa aprenguera la funció XOR. A més, els autors van conjecturar, però de manera equivocada, que ocorreria el mateix amb un perceptró multicapa.