Xarxa neuronal artificial

De Viquipèdia
Dreceres ràpides: navegació, cerca
Xarxa neuronal artificial perceptró simple amb n neurones d'entrada, m neurones en la seva capa oculta i una neurona de sortida.

Les xarxes de neurones artificials (denominades habitualment en anglès com "ANN") són un paradigma d'aprenentatge i processament automàtic inspirat en la forma en què funciona el sistema nerviós dels animals. Es tracta d'un sistema d'interconnexió de neurones en una xarxa que col·labora per produir un estímul de sortida. A intel·ligència artificial és freqüent referir-se a elles com xarxes de neurones o xarxes neuronals.

Funcionament[modifica | modifica el codi]

Les xarxes neuronals consisteixen en una simulació de les propietats observades en els sistemes neuronals biològics a través de models matemàtics recreats mitjançant mecanismes artificials (com un circuit integrat, un ordinador o un conjunt de vàlvules). L'objectiu és aconseguir que les màquines donin respostes similars a les que és capaç de donar el cervell que es caracteritzen per la seva generalització i la seva robustesa.

perceptró amb 2 entrades.

Una xarxa neuronal es compon d'unitats anomenades neurones. Cada neurona rep una sèrie d'entrades a través d'interconnexions i emet una sortida. Aquesta sortida ve donada per tres funcions:

  1. Una funció de propagació (també coneguda com a funció d'excitació), que generalment consisteix en el sumatori de cada entrada multiplicada pel pes del seu interconnexió (valor net). Si el pes és positiu, la connexió s'anomena excitadora , si és negatiu, s'anomena inhibitòria .
  2. Una funció d'activació, que modifica l'anterior. Pot no existir, en aquest cas, la sortida la mateixa funció de propagació.
  3. Una funció de transferència, que s'aplica al valor retornat per la funció d'activació. S'utilitza per a limitar la sortida de la neurona i generalment ve donada per la interpretació que vulguem donar-li a aquestes sortides. Algunes de les més utilitzades són la funció sigmoide (per obtenir valors en l'interval [0,1]) i la tangent hiperbòlica (per obtenir valors en l'interval [-1,1]).

Disseny i programació d'una xarxa neuronal[modifica | modifica el codi]

Amb un paradigma convencional de programació a enginyeria del programari, l'objectiu del programador és modelar matemàticament (amb diferents graus de formalisme) el problema en qüestió i posteriorment formular una solució (programa) mitjançant un algorisme codificat que tingui una sèrie de propietats que permetin resoldre aquest problema. En contraposició, l'aproximació basada en les xarxes neuronals part d'un conjunt de dades d'entrada prou significatiu i l'objectiu és aconseguir que la xarxa aprengui automàticament les propietats desitjades. En aquest sentit, el disseny de la xarxa té menys a veure amb qüestions com els fluxos de dades i la detecció de condicions, i més a veure amb qüestions com ara la selecció del model de xarxa, la de les variables a incorporar i el preprocessament de la informació que formarà el conjunt d'entrenament. Així mateix, el procés pel qual els paràmetres de la xarxa s'adeqüen a la resolució de cada problema no es denomina genèricament programació sinó que se sol anomenar entrenament neuronal.

Per exemple en una xarxa que s'aplicarà al diagnòstic d'imatges mèdiques; durant la fase d'entrenament el sistema rep imatges de teixits que se sap són cancerígens i teixits que se sap són sans, així com les respectives classificacions d'aquestes imatges. Si l'entrenament és l'adequat, una vegada conclòs, el sistema podrà rebre imatges de teixits no classificats i obtenir la seva classificació sa /no sa amb un bon grau de seguretat. Les variables d'entrada poden ser des dels punts individuals de cada imatge fins a un vector de característiques de les mateixes que es puguin incorporar al sistema (per exemple, procedència anatòmica del teixit de la imatge o l'edat del pacient a qui se li va extreure la mostra).

Estructura[modifica | modifica el codi]

La majoria dels científics coincideixen en què una xarxa neuronal és molt diferent en termes d'estructura d'un cervell animal. Igual que el cervell, una xarxa neuronal es compon d'un conjunt massivament paral·lel d'unitats de procés molt simples i és en les connexions entre aquestes unitats on resideix la intel·ligència de la xarxa. No obstant això, en termes d'escala, un cervell és molt més gran que qualsevol xarxa neuronal creada fins a l'actualitat, i les neurones artificials també són més simples que la seva contrapartida animal.

Biològicament, un cervell aprèn mitjançant la reorganització de les connexions sinàptiques entre les neurona es que el componen. De la mateixa manera, les XNA tenen un gran nombre de processadors virtuals interconnectats que de forma simplificada simulen la funcionalitat de les neurones biològiques. En aquesta simulació, la reorganització de les connexions sinàptiques biològiques es modela mitjançant un mecanisme de pesos , que són ajustats durant la fase d'aprenentatge. En una xarxa neuronal entrenada, el conjunt dels pesos determina l coneixement d'aquesta RNA i té la propietat de resoldre el problema per al qual la xarxa neuronal ha estat entrenada.

D'altra banda, en una xarxa neuronal, a més dels pesos i les connexions, cada neurona té associada una funció matemàtica anomenada funció de transferència. Aquesta funció genera el senyal de sortida de la neurona a partir dels senyals d'entrada. L'entrada de la funció és la suma de tots els senyals d'entrada pel pes associat a la connexió d'entrada del senyal. Alguns exemples d'entrades són la funció graó de Heaviside, la lineal o mixta, la sigmoide i la funció gaussiana, recordant que la funció de transferència és la relació entre el senyal de sortida i l'entrada.

Avantatges[modifica | modifica el codi]

Les xarxes neuronals artificials tenen molts avantatges pel fet que estan basades en l'estructura del sistema nerviós, principalment el cervell.

  • Aprenentatge : Les xarxa neuronals tenen l'habilitat d'aprendre mitjançant una etapa que s'anomena etapa d'aprenentatge . Aquesta consisteix a proporcionar a la xarxa neuronal dades com a entrada al seu torn que se li indica quina és la sortida (resposta) esperada.
  • Auto organització : Una xarxa neuronal crea la seva pròpia representació de la informació al seu interior, descarregant l'usuari d'això.
  • Tolerància a fallades : Atès que una xarxa neuronal emmagatzema la informació de forma redundant, aquesta pot seguir responent de manera acceptable fins i tot si es fa malbé parcialment.
  • Flexibilitat : Una xarxa neuronal pot gestionar canvis no importants en la informació d'entrada, com a senyals amb soroll o altres canvis en l'entrada (ex. si la informació d'entrada és la imatge d'un objecte, la resposta corresponent no pateix canvis si la imatge canvia una mica la seva brillantor o l'objecte canvia lleugerament)
  • Temps real : L'estructura d'una xarxa neuronal és paral·lela, per la qual cosa si això és implementat amb ordinadors o en dispositius electrònics especials, es poden obtenir respostes en temps real.

Tipus[modifica | modifica el codi]

Models[modifica | modifica el codi]

Hi ha una sèrie de models que apareixen en la majoria d'estudis acadèmics i la bibliografia especialitzada.

Topologia[modifica | modifica el codi]

Una primera classificació de les xarxes de neurones artificials que se sol fer és en funció del patró de connexions que presenta. Així es defineixen tres tipus bàsics de xarxes:

  • Dos tipus de xarxes de propagació cap endavant o acícliques en què tots els senyals van des de la capa d'entrada cap a la sortida sense existir cicles, ni connexions entre neurones de la mateixa capa.
  • Les xarxes recurrents que presenten almenys un cicle tancat d'activació neuronal. Exemples: Elman, Hopfield, màquina de Boltzmann.

Aprenentatge[modifica | modifica el codi]

Una segona classificació que se sol fer és en funció del tipus d'aprenentatge que és capaç (si es requereix o no un conjunt d'entrenament supervisat). Per a cada tipus d'aprenentatge trobem diversos models proposats per diferents autors:

Tipus d'entrada[modifica | modifica el codi]

Finalment també es poden classificar les RNAs segons siguin capaços de processar informació de diferent tipus a:

  • Xarxes analògiques: processen dades d'entrada amb valors continus i, habitualment, acotats. Exemples d'aquest tipus de xarxes són: Hopfield, Kohonen i les xarxes d'aprenentatge competitiu.
  • Xarxes discretes: processen dades d'entrada de naturalesa discreta; habitualment valors lògics booleans. Exemples d'aquest segon tipus de xarxes són: les màquines de Boltzmann i Cauchy, i la xarxa discreta de Hopfield.

Aplicacions[modifica | modifica el codi]

Les característiques de les RNA les fan prou apropiades per a aplicacions en les quals no es disposa a priori d'un model identificable que pugui ser programat, però es disposa d'un conjunt bàsic d'exemples d'entrada (prèviament classificats o no). Així mateix, són altament robustes tant al soroll com a la disfunció d'elements concrets i són fàcilment paral·lelitzades.

Això inclou problemes de classificació i reconeixement de patrons de veu, imatges, senyals, etc. Així mateix s'han utilitzat per trobar patrons de frau econòmic, fer prediccions en el mercat financer, fer prediccions de temps atmosfèric, etc.

També es poden utilitzar quan no hi ha models matemàtics necessaris o algorismes amb complexitat raonable, per exemple la xarxa de Kohonen ha estat aplicada amb un èxit més que raonable al clàssic problema del viatjant (un problema per al qual no es coneix solució algorísmica de complexitat polinòmica).

Un altre tipus especial de xarxes neuronals artificials s'ha aplicat en conjunció amb els algoritmes genètics (AG) per crear controladors per robot s. La disciplina que tracta l'evolució de xarxes neuronals mitjançant algoritmes genètics s'anomena robòtica evolutiva. En aquest tipus d'aplicació el genoma de l'AG el constitueixen els paràmetres de la xarxa (topologia, algorisme d'aprenentatge, funcions d'activació, etc.) I l'adequació de la xarxa ve donada per l'adequació del comportament exhibit pel robot controlat (normalment una simulació d'aquest comportament)

Exemples[modifica | modifica el codi]

Quake II Neuralbot[modifica | modifica el codi]

Un bot és un programa que simula un jugador humà. El Neuralbot és un bot per al joc Quake II que utilitza una xarxa neuronal artificial per decidir el seu comportament i un algorisme genètic per a l'aprenentatge. És molt fàcil provar i res per veure la seva evolució.[1]

Classificador no esbiaixat de Proteïnes[modifica | modifica el codi]

És un programa que combina diverses tècniques computacionals amb l'objectiu de classificar famílies de proteïnes. Un possible mètode consisteix en utilitzar mètriques adaptatives com per exemple: mapes autoorganitzats i algoritmes genètics.

El problema de classificació no esbiaixada basada en l'expressió de les proteïnes en Aminoàcids pot reduir-se, conceptualment, al següent:

  • La identificació de grups de proteïnes que comparteixin característiques comunes.
  • La determinació de les raons estructurals per les quals les proteïnes en qüestió s'agrupen de la manera indicada.
  • Evitar la idea d'establir criteris de classificació ("esbiaixats") fonamentats en idees preconcebudes per aconseguir la seva classificació. En aquest sentit, hi ha dos assumptes de considerar:
    • Com aconseguir la caracterització de les proteïnes de manera no esbiaixada
    • Com aconseguir això sense apel·lar a mesures d'agrupament que, al seu torn, impliquen algun tipus de biaix sobre aquest agrupament.

Les RNA han estat aplicades a un nombre en augment de problemes en la vida real i de considerable complexitat, on el seu major avantatge és en la solució de problemes que són força complexos per a la tecnologia actual, tractant-se de problemes que no tenen una solució algorísmica o la solució algorísmica és massa complexa per a ser trobada.

En general, pel fet que són semblants al les del cervell humà, les XNA són ben nomenades ja que són bones per resoldre problemes que l'humà pot resoldre però les computadores no. Aquests problemes inclouen el reconeixement de patrons i la predicció del temps. De totes maneres, l'humà té capacitat per al reconeixement de patrons, però la capacitat de les xarxes neuronals no es veu afectada per la fatiga, condicions de treball, estat emocional, i compensacions.

Es coneixen cinc aplicacions tecnològiques aplicades:

  1. Reconeixement de textos manuscrits
  2. Reconeixement de la parla
  3. Simulació de centrals de producció d'energia
  4. Detecció d'explosius
  5. Identificació de blancs de radars

Vegeu també[modifica | modifica el codi]

Notes[modifica | modifica el codi]

  1. http://homepages.paradise.net.nz/nickamy/neuralbot/index.html

Enllaços externs[modifica | modifica el codi]

A Wikimedia Commons hi ha contingut multimèdia relatiu a: Xarxa neuronal artificial