Taller d'AI: Com ensenyar a la màquina a reconèixer les imatges

Els nostres cotxes poden haver d’esperar uns moments al parc mentre expliquem com una Intel·ligència Artificial pot reconèixer les imatges. El nostre cotxe també confia en aquesta habilitat. També veurem com s’estructuren les xarxes neuronals.

Foto: Frida Aguilar Estrada

El nostre cotxe necessita una càmera per avançar. Una opció seria un radar Lidar (detecció de llum i interrupció de la llum) que utilitza feixos làser per a mapar el seu entorn. Però si Elon Musk creu que una solució òptica és suficient per a Tesla, ens n'hi ha prou. En aquest post intento descriure la base tecnològica del reconeixement de la imatge de l'AI.

Hi ha tres categories principals en l’aprenentatge artificial: aprenentatge reforçat, aprenentatge supervisat i aprenentatge no supervisat. L’aprenentatge supervisat és una manera molt habitual d’ensenyar una IA i ens centrarem en això avui. La idea és donar dades a una màquina que ja han estat classificades. En el nostre cas, mostraríem a un ordinador moltes imatges i dir què representen. Podríem tenir l’objectiu de formar-lo per poder diferenciar entre lasanya, falafels i canyelles. Així doncs, mostrem imatges amb totes les tres etiquetes i moltes. Quan la IA estigui llesta, li podem mostrar una nova imatge i es calcularan les probabilitats que sigui una de les tres opcions.

Imagineu-vos que teníem un camió de gelat aparcat per un port i voldríem predir les seves vendes per poder tenir prou inventari. Quin podria ser un factor en les vendes de gelats? La temperatura del dia pot ser bona. Per tant, examinem les temperatures i les vendes de gelats dels dies. Els podem posar en un gràfic i utilitzar la regressió lineal per analitzar les dades. Ens donarà una línia de millor ajustament amb la qual podem fer prediccions. La posició de la línia es defineix optimitzant la distància de tots els punts a la línia i fer-la el més petita possible. Amb la línia de millor ajustament, podem fer algunes prediccions aproximades.

Però la temperatura mitjana diària probablement no és l’únic factor de vendes. Si afegíssim quantitat de pluja a la imatge, obtindríem un gràfic tridimensional. La línia de millor ajustament es convertiria en un pla de millor ajustament. I si afegim el dia de la setmana a l’anàlisi, acabaríem amb un model que no podem visualitzar. En situacions complexes com aquestes xarxes neuronals funcionen molt bé.

Com que la investigació tecnològica artificial inicialment va intentar imitar la intel·ligència humana alguns dels termes coneixen la biologia. Tenim neurones, sinapsis i estímul. Però també tenim molta terminologia de la ciència de dades com una funció de pèrdua i un ajustament excessiu. Avui en dia, la recreació del cervell humà ja no és l'objectiu, sinó que la terminologia queda bloquejada.

Les xarxes neuronals consisteixen en neurones unides entre si mitjançant sinapsis. Les connexions tenen diferents pesos. A les neurones se'ls dóna funcions d'activació que defineixen quan la neurona es dispara i passa informació. (Podeu llegir més informació sobre diferents tipus de funcions d’activació i quan utilitzar-les des d’aquí)

Volem fer un classificador que pugui reconèixer imatges de lletres. Tenim els següents patrons, cada quadrat representa una imatge. Hem decidit utilitzar una funció de pas com a funció d'activació, que només ens donarà resultats 0 o 1. Quan el píxel sigui blanc, sortirà 0. Quan el píxel té colors, sortirà 1. Quin color no té cap diferència, per il·lustrar les diferències he utilitzat diferents colors. Així que quan es converteix el píxel no sigui blanc, la neurona s’activarà. I per mantenir la informació en ordre i comparable, imprimirem la sortida d'esquerra a dreta, de dalt a baix. La sortida de neurones de la figura S seria 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1 i per a la figura E seria 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1.

Ara cal esbrinar com aplicar pesos a la sortida neuronal per diferenciar entre les figures. Hi ha solucions infinites per aconseguir-ho. És evident que ens hauríem de centrar en els píxels on la sortida és diferent. Això vol dir que podem utilitzar el pes 0 per a tots els píxels activats per ambdues figures (morats). Tots els píxels blancs no activen les neurones, per la qual cosa no hem de pensar en els seus pesos.

Podem decidir per exemple que quan el resultat és negatiu, la figura és E i els resultats positius representen la figura S. Per aconseguir-ho donem a la neurona que només activa amb la figura E el pes de -1 i la neurona que es dispara només amb la figura. S el pes 1. Quan les altres sortides es multipliquen per 0 obtindrem els resultats 1 o -1.

De manera que la suma de totes les sortides de la figura S seria 0 x 1+ 0 x 1+ 0 x1 +0 x 1+ 0 x 1+ 0 + 0 + 0 + 0 x 1 + 0 x 1 + 0 x 1 + 0 x 1 + 0 + 0 + 0 + 1 x 1 + 0 x 1 + 0 x 1 + 0 x 1+ 0 x 1 = 1. I la suma de totes les sortides de la figura E seria 0 x 1 + 0 x 1 + 0 x 1 + 0 x 1 + 0 x 1 + 0 + 0 + 0 + 0 x 1 + 0 x 1 + 0 x 1 + 0 x 1 + (-1 x 1) + 0 + 0 + 0 + 0 x 1 + 0 x 1 + 0 x 1 + 0 x 1 = -1.

Això era bastant fàcil de solucionar. Però si afegim la lletra F a la barreja, les coses es compliquen una mica més.

Es pot fer una diferenciació entre les lletres E i F sense problemes, per exemple amb aquests pesos:

Aquests pesos resultarien en 11 x 0,1 = 1,1 o 3 x (-1) = -3 amb els resultats positius per a la figura F i negatius per a la figura E. Però quan s'inclou la figura S les diferències són menys pronunciades i més difícil de diferenciar amb els pesos. I afegir lletres només empitjora.

Necessitaríem una solució més complexa que amb resultats negatius i positius. Probablement hauríem assignat resultats entre 0 i 2 per a la figura S, entre 2 i 4 per a la figura E, etc. Quan afegim capes de neurones a una xarxa neuronal, pot realitzar canvis més elaborats als pesos i tenir píxel només si és important un altre píxel es va activar. I és així com les xarxes neuronals són capaces de realitzar les complicades tasques per les quals volem utilitzar-les. Si afegiu capes més ocultes, aprofundireu en la capacitat d'aprenentatge de l'AI.

Aguantar! Quines capes ocultes? Les neurones d’una xarxa neuronal s’estructuren generalment de manera que cada neurona estigui connectada a totes les altres neurones de les capes al costat. Una xarxa neuronal sol tenir tres parts: una capa d’entrada, una o més capes ocultes i la capa de sortida.

La capa d’entrada consisteix en la informació que donem a la xarxa. A mesura que la informació es transmet a través de les capes ocultes, els pesos ajusten els números i quan es resumeixen tots junts, tenim la capa de sortida i el resultat d’estimació. Més capes ocultes poden gestionar dades més obscures, però requereixen més poder de càlcul. També ens fan més difícil entendre què passa a les capes ocultes.

Com evolucionen els pesos entre les neurones? Al principi, són iguals o es generen amb un generador de números aleatoris. Però quan la xarxa neuronal s’alimenta de dades classificades afectarà els pesos. La xarxa neuronal descobreix quines són les posicions més importants que les altres i quines estan connectades entre elles. Una tecnologia molt útil per a això és l'algorisme de backpropagation que alimenta les dades a la xarxa enrere des de la capa de resultats fins a les capes ocultes, etc. S'adapta a la xarxa neuronal a les dades. Al final, els pesos ajustats permeten a la xarxa fer bones prediccions.

Exemple de xarxa neuronal per predir les vendes de gelats:

Les nostres dades sobre vendes, dies i clima han ajustat els pesos entre les neurones. Per avaluar com són de precisió les prediccions, necessitem un conjunt de dades de proves a més del conjunt de dades de formació que ja hem utilitzat. El conjunt de dades de proves està format per casos que la xarxa neural encara no ha vist. Els seus resultats ens diran la precisió de les nostres prediccions.

A l’hora d’entrenar, ajustar i avaluar la xarxa neuronal, hem d’anar amb compte d’ajustar-la al conjunt de dades. Pot semblar que el conjunt de dades de formació té alguns aspectes relacionats que, en realitat, no estan relacionats. La correlació no és el mateix que la causalitat. Aquí podeu trobar exemples divertits com la manera en què el consum de mozzarella i la quantitat de doctorats en enginyeria de construcció es donen de la mà estadísticament, però en realitat no tenen res a veure. És per això que es recomana incloure només informació rellevant al conjunt de dades. I, per descomptat, la qualitat i la quantitat del conjunt de dades de formació és important per a la precisió.

En l’exemple d’ordenació, la nostra funció d’activitat era observar si un píxel era blanc o no. Normalment la informació de les imatges es converteix en els números que els ordinadors requereixen d'una manera diferent. Si la imatge és en blanc i negre a cada píxel se li donarà el valor de brillantor entre 0 (negre) i 255 (blanc). Els píxels d'una imatge en color tindran tres valors RGB d'entre 0 i 255. Tots els colors de la pantalla es componen barrejant llum vermella, verda i blava. (Fet que conec des de fa anys i segueix sent molt contra intuïtiu.)

En el nostre exemple molt senzill, les xifres estaven sempre en les mateixes posicions, que normalment no és així. Fins i tot a la base de dades d’imatges del passaport, tots els ulls no s’alineen. Una tecnologia que fa que el reconeixement d’imatges sigui molt més ràpid i eficaç és afegir una capa de convolució a la xarxa neuronal. D’aquesta manera es buscaran funcions d’imatge recognoscibles, com ara sanefes en adreces específiques, patrons o diferents esquitxades de colors. El nas d’un gos podria ser un, els dits humans podrien ser un, la forma i la textura d’un con de gelat podria ser un. Aleshores no importa si el gelat es troba a la part esquerra o dreta de la imatge, si es manté dret o en diagonal i quina mida té el con. I us podeu imaginar fins a quin punt resulta més fàcil fer-ho un reconeixement d’imatges. Les xarxes neuronals amb una capa de convolució s’anomenen xarxes neuronals convolucionals.

Per obtenir resultats fiables, necessitarem grans quantitats d’imatges com a conjunt d’entrenament. Però, com passa amb moltes coses relacionades amb la programació, no hem de partir de res i tornar a inventar la roda. Podem utilitzar les biblioteques i bases de dades existents.

Una base de dades important és la base de dades d’escriptura de mà normalitzada MNIST. Cada deu anys els EUA prenen un cenc de totes les persones que viuen a les seves fronteres. Es fa fent que tothom ompli un qüestionari en paper. A més de recopilar informació important sobre la mida i l'estructura de la població, també produeix una gran varietat de mostres d'escriptura. A partir d’aquestes mostres es va crear una base de dades estandarditzada per a lletres i números i la podeu utilitzar per ensenyar o provar la vostra IA. Malauradament només conté les 26 lletres de l’alfabet anglès. Quin és el tipus de problema que sovint es troba amb recursos preparats. Però si us interessa provar les IA i les xarxes neuronals és almenys un lloc on començar i no us limitareu a les dades que podeu recollir i produir vosaltres mateixos.

El que heu de recordar sobre l'aprenentatge automàtic és que les màquines no aprenen conceptes, sinó que només aprenen com es manifesten aquests conceptes. A un ordinador li falta la rica xarxa d’experiències que tenim la gent. Per això, encara és difícil per a les màquines distingir entre algunes imatges clares que avui dia ens són. I una màquina només pot conèixer les coses sobre les quals se li ha dit. Tot i que, un cotxe auto conduint no necessita saber si hi ha una poma o un mussol que hi ha al davant. Un obstacle és un obstacle i s'ha d'evitar. Només això és important per al cotxe.

Però es pot formar una IA per ser expert en detectar diferències subtils. Com analitzar cribratges de càncer o diagnosticar diabetis a causa dels canvis en els vasos sanguinis de les ulleres amb resultats molt més precisos i ràpids. Una màquina tampoc mai s’avorreix ni es cansa de la tasca repetitiva que van ser dissenyades.

Per tant, si em demanessin que pesa en quina és, finalment, millor (reconeixement d’imatges humanes o artificials), no podria. Tots dos són molt, molt diferents.