Star stuff, contemplating the stars Carl Sagan · guanyar un torneig de poker contra els millors...
Transcript of Star stuff, contemplating the stars Carl Sagan · guanyar un torneig de poker contra els millors...
fgds
Xavier Vives Sánchez Física, Informàtica i Matemàtiques Rosa Barbero 2017-18 Escola Gravi 2n batx B
IA a la recerca de nous planetes
1
“We've begun, at last, to wonder about our origins.
Star stuff, contemplating the stars.”
Carl Sagan
IA a la recerca de nous planetes
2
Índex 1. Introducció ................................................................................................................. 4
2. Intel·ligència artificial ................................................................................................. 6
2.1. Què és una IA? .................................................................................................. 6
2.2. Com funciona una IA? ....................................................................................... 7
1. Quines són les parts d’una neurona? ................................................................ 7
2. Com funciona una neurona d’una xarxa neuronal? .......................................... 8
3. Quines són les parts d’una xarxa neuronal? ................................................... 10
4. Com funciona una xarxa neuronal? ................................................................ 11
2.3. Programari ....................................................................................................... 12
1. Python .............................................................................................................. 12
2. TensorFlow ...................................................................................................... 13
3. Jupyter.............................................................................................................. 14
3. Exoplanetes ............................................................................................................. 15
3.1. Què són els exoplanetes? ............................................................................... 15
3.2. Com trobar-los? ............................................................................................... 16
1. Velocitats radials .............................................................................................. 16
2. Astrometria ....................................................................................................... 17
3. Trànsits ............................................................................................................ 17
4. Microlents gravitatòries .................................................................................... 18
5. Pertorbacions en discs circumestelars ............................................................ 19
6. Observació directa ........................................................................................... 19
4. Pràctica .................................................................................................................... 20
4.1. Instal·lació del software ................................................................................... 20
4.2. Aprendre a fer servir TensorFlow .................................................................... 22
4.3. Creació dels fitxers d’entrenament de la IA .................................................... 27
4.4. Creació de la IA ............................................................................................... 32
1. Programa 1: ..................................................................................................... 33
2. Programa 2: ..................................................................................................... 33
3. Programa 3: ..................................................................................................... 34
4. Programa 4: ..................................................................................................... 36
5. Programa 5: ..................................................................................................... 37
6. Programa 6: ..................................................................................................... 38
4.5. Resultats .......................................................................................................... 38
IA a la recerca de nous planetes
3
5. Conclusions i agraïments ........................................................................................ 42
6. Web grafia ............................................................................................................... 43
7. Annexos ................................................................................................................... 46
7.1. Glossari ............................................................................................................ 46
7.2. Deducció de formules ...................................................................................... 48
7.3. Parametrització d’una variable d’entrenament. ............................................... 59
7.4. Llistat de programes ........................................................................................ 60
7.5. Resultats de la IA ........................................................................................... 150
IA a la recerca de nous planetes
4
1. Introducció El meu treball consisteix en aprendre com funciona la intel·ligència artificial, més coneguda com IA.
Empreses com Microsoft, Google, Amazon i Facebook estan invertint milions de dòlars en intel·ligència artificial i sovint apareixen notícies de nous avenços en aquest àmbit. Veient l’interès que hi ha actualment en aquest tema he tingut
curiositat per aprendre què és i com funciona una IA.
La intel·ligència artificial és programa a l’ordinador amb xarxes neuronals. Per
poder aplicar-les necessito aprendre certs processos matemàtics i programació, dos àmbits que sempre m’han interessat.
Des de petit m’han agradat molt la matemàtica i la física i sobretot l’estudi de
l’espai. Per això, una de les meves opcions després del batxillerat, és estudiar
la doble titulació de física i matemàtiques. Crec que el tema del treball em pot ajudar a aprendre més sobre aquest àmbit i a decidir el meu futur.
La informàtica també m’interessa però em costa trobar un objectiu per aprendre
més i crec que aquest treball és un al·licient per adquirir coneixements i destreses informàtiques, que també necessitaré en els meus estudis propers.
En la recerca d’informació pel treball he trobat molts articles que fan servir la IA
pel reconeixement d’imatges, fotos, lletra escrita a mà, etc... i tot basat en la identificació de patrons.
A la xarxa he trobat les dades de 1600 estels disponibles per trobar exoplanetes. Aquestes indiquen les velocitats dels estels deguts a l’òrbita dels
planetes al seu voltant. El moviment orbital ha de generar un patró, i tenint en compte que la intel·ligència artificial es fa servir per reconèixer patrons, m’he
preguntat si podria fer servir una IA per trobar exoplanetes. notícia1
Per estudiar aquest tema m’he plantejat les següents preguntes:
Què és una IA? Com es programa una IA? Com es troben els exoplanetes? Com aplicar una IA per trobar-los?
La resposta a aquestes preguntes verificarà o desmentirà la hipòtesis següent:
Una IA pot determinar si una estrella té exoplanetes.
I els meus objectius són:
Aprendre què és una IA, com funciona i les seves aplicacions.
1 Web grafia [1]
IA a la recerca de nous planetes
5
Ser capaç de programar una IA. Estudiar els exoplanetes, les seves característiques i com es troben. Dissenyar una IA per trobar exoplanetes.
La metodologia de treball ha consistit en desenvolupar una IA de reconeixement de patrons o caràcters per identificar els patrons de moviment de les estrelles i calcular si té o no exoplanetes.
Per fer-ho he utilitzat TensorFlow que és una llibreria oberta de Google dissenyada per fer-la servir amb el llenguatge de programació Python, seguint el següent procediment:
Primer, per aprendre a fer servir TensorFlow, he reproduït uns programes d’exemple (amb la proposta de fer un programa que entengui números escrits a mà).
Un cop ja he assolit uns coneixements suficient per poder utilitzar amb facilitat TensorFlow, he creat la IA que pugui determinar si una estrella té o no exoplanetes a partir dels resultats del processament de les dades presentades abans.
Després amb la IA he entrenat amb uns conjunts de dades per reproduir les òrbites dels plantes, simulacions amb diferent grau de complexitat.
I un cop la IA ha estat entrenada, s’han processat les dades experimentals proporcionades per l’observatori.
IA a la recerca de nous planetes
6
2. Intel·ligència artificial
2.1. Què és una IA?
En la dècada dels 50 es va crear una nova disciplina de la informàtica que tractava sobre les intel·ligències artificials. Aquesta disciplina va sorgir en el moment en què Turing2 va formular la pregunta de “Pot pensar una màquina?”. Per respondre aquesta pregunta va crear el test de Turing3, que consisteix en què una persona, l'avaluadora, fa preguntes a dos subjectes: una computadora dissenyada per generar respostes anàlogues a les dels humans i una persona. L'avaluadora no pot accedir directament als subjectes, sinó a través d'una interfície intermèdia. Si després d'analitzar la conversa, l'avaluadora no pot distingir la persona de la màquina o considera que la màquina és una persona, la màquina superaria el test de Turing i es consideraria intel·ligent.
El test de Turing no s’ha aconseguit superar fins fa poc. En el 2014, es va
aconseguir fer passar per un nen de 13 anys. La idea de fer una màquina intel·ligent va fer que els científics s’interessessin en el tema.
L’objectiu de les intel·ligències artificials sempre ha estat aconseguir fer un
software4 informàtic amb intel·ligència, creant un programa capaç d’imitar el
funcionament del cervell humà utilitzant les anomenades xarxes neuronals. Teòricament podríem fer una IA capaç de pensar com un cervell humà tot i que, a la pràctica, no existeix cap computadora capaç de suportar aquest programa.
Com que no podem fer una IA que funcioni al mateix nivell que el cervell, el que fem actualment és crear-ne una centrada en resoldre un problema concret i que per obtenir la solució cal aplicar una estratègia per arribar al resultat.
Al funcionar amb xarxes neuronals, el software adquireix algunes propietats com la capacitat d’aprenentatge o unes capacitats de reconèixer patrons, imatges, textos, seqüències temporals...
Les fites més importants aconseguides fins ara serien:
En el 2013 el MIT5 va presentar una IA a les proves de coeficient intel·lectual que se li fan a un nen de 4 anys i va obtenir una puntuació superior a la mitja.6
2 Alan Mathison Turing (Paddington, Londres, Anglaterra, 23 de juny de 1912 - Wilmslow, Cheshire, Anglaterra 7 de juny de 1954) fou un científic, matemàtic, lògic, criptoanalista, biomatemàtic i maratonià britànic. Va treballar en camps com la informàtica teòrica, la criptoanàlisi o la intel·ligència artificial. Se'l considera el pare de la informàtica moderna. 3 Web grafia [19] 4 Glossari 5 El Massachusetts Institute of Technology (MIT) és una institució i universitat estatunidenca dedicada a la recerca i la investigació, situada a la ciutat de Cambridge, Massachusetts. Es dedica sobretot a la tecnologia, ciència i enginyeria, però també a altres temes. La feina del MIT s'ha premiat amb força premis Nobel i és considerada una de les millors del món.
IA a la recerca de nous planetes
7
DeepMind, la IA de Google, en 2015, va jugar als jocs de Atari 2600 obtenint en la majoria de jocs una puntuació superior a la humana.7
AlphaGo, IA de Google, actualment està considerat el millor jugador de Go després de guanyar, en el 2016, a Lee Se-dol, el considerat millor jugador fins aquell moment.8
En el 2016, una IA creada per la universitat de Cincinnati va guanyar a experts del combat aeri en un simulador.9
Libratus, IA creada en la universitat Carnegie Mellon, en el 2017, va guanyar un torneig de poker contra els millors jugadors del món.10
2.2. Com funciona una IA?
Com he comentat al punt anterior les intel·ligències artificials funcionen principalment amb xarxes neuronals11. En la part pràctica desenvoluparé el mètode de les xarxes neuronals. Per entendre’l cal respondre les següents
qüestions:
1. Quines són les parts d’una neurona? 2. Com funciona una xarxa neuronal? 3. Quines són les parts d’una xarxa neuronal? 4. Com funciona una neurona d’una xarxa neuronal?
1. Quines són les parts d’una neurona?
Les neurones artificials estan pensades per imitar el funcionament d’una
neurona real12.
6 Web grafia [20] 7 Web grafia [21] 8 Web grafia [22] 9 Web grafia [23] 10 Web grafia [24] 11 Web grafia [7] 12 Glossari
Comparació d’una neurona real amb el esquema d’una artificial.
IA a la recerca de nous planetes
8
De la mateixa forma que una neurona real rep diversos estímuls a través de les dendrites13, la neurona artificial imita aquest funcionament amb un conjunt de valors que es denomina x. Una neurona real es pot activar o no en funció d’aquests estímuls, la neurona artificial ho copia utilitzant una funció d’activació.
La sortida del senyal, que emet la neurona per l’axó14, es simula amb un valor de sortida que es denomina y.
Una neurona artificial té les següents parts:
x: Valor d’entrada, és la dada
inicial o el valor de la neurona anterior.
W: Pes sinàptic, és un valor que determina la importància d’aquella dada.
B: Biaix, valor propi de la neurona que determina un llindar d’activació.
y: Valor de sortida que passa a la següent neurona o si és la última capa, la solució.
2. Com funciona una neurona d’una xarxa neuronal?
Una neurona artificial funciona de la següent manera:
Per exposar el funcionament d'una neurona ens basarem en una estructura simple de triple entrada com les mostrades en les il·lustracions de l'apartat anterior.
1. Primer tenim els 3 valors d’entrada x1, x2 i x3. Cada un d’aquest valors es
multiplica pel seu pes sinàptic W1, W2 i W3. El resultat determina la importància que té cada valor d’entrada per a la neurona. Amb això tindríem 3 valors d’activació:
2. S’uneixen tots aquests valors, W·x, en un valor, gin. Hi ha moltes formes de fer-ho multiplicar, sumar, seleccionar el major... La més utilitzada per ser la més simple és sumar i és la que faré servir. L’expressió del valor seria:
13 Glossari: v. neurona 14 Glossari: v. neurona
{W 1⋅x1 , W 2⋅x2 , W 3⋅x3}
gin = W 1⋅x1 + W 2⋅x2 + W 3⋅x3 + B
IA a la recerca de nous planetes
9
3. En aplicar la funció d’activació, per comoditat les funcions d’activació es
defineixen amb un llindar d’activació al 0, una neurona concreta pot tenir un
altre llindar i per això a gin se li ha suma el biaix, B. Les neurones tenen dos estats activat i desactivat. Per conveni l’estat activat
se li dóna el valor d’1 i al desactivat, els valors 0 o -1. Hi ha moltes funcions que es poden fer servir per determinar l’estat, les funcions més comunes són
aquestes:
Expressió analítica Rang de
les ordenades
Representació gràfica
Funció lineal
(-1,1)
Funció sigmoide
(0,1)
Funció tangent hiperbòlica
(-1,1)
El resultat de la funció és el valor de sortida, y. Si s’expressa de manera
matemàtica quedaria de la següent manera:
Per simplificar es pot expressar gin com un sumatori de W·x, quedant de la següent manera:
Si es substitueix gin a la fórmula:
Si es generalitza la fórmula, s’ha de tenir en compte que no tenim 3 valors sinó
n valors, per tant hem de variar el 3 de la fórmula, que esta d’alt del sumatori
per n.
f (x ) = {−1 x≤−1x −1<x<11 x≥1 }
f (x ) =1
1 + e−x
f (x ) =ex− e−x
ex+ e−x
y = f (gin)
gin = ∑i=1
3
W i⋅xi + B
y = f (∑i=1
3
W i⋅xi + B)
y = f (∑i=1
n
W i⋅xi + B)
IA a la recerca de nous planetes
10
3. Quines són les parts d’una xarxa neuronal?
Una xarxa neuronal és un conjunt de neurones que interactuen entre elles i treballen conjuntament per realitzar una tasca. Per simplificar el funcionament i evitar bucles les xarxes s’estructuren en capes, això vol dir que les neurones
d’una capa només interactuen amb la capa següent.
Les xarxes neuronals, formades per neurones artificials, tenen les mateixes variables, que s'anomenen de manera sistemàtica per poder diferenciar-les.
Les neurones d’una mateixa columna es denominen capa. Les capes es
diferencien en tres grups:
Capa d’entrada: És la primera columna i és la capa que rep les dades inicials. Capa oculta: Són les capes intermèdies. Capa de sortida: És la capa final on la pròpia sortida és la resposta.
Per comoditat també s’anomenen les capes per nombre, anant del 0 que
sempre és la capa d’entrada fins N que és la capa de sortida.
Per diferenciar els biaixos o els pesos sinàptics s’enumeren de la següent
manera:
IA a la recerca de nous planetes
11
4. Com funciona una xarxa neuronal?
En una xarxa neuronal, cada neurona aplica la funció per trobar el seu valor de sortida i els valors de sortida d’una capa són els valors d’entrada de les
neurones de la capa següent. Si generalitzem la fórmula:
k número de capa.
m número de neurona d’una capa.
n número de neurona de la capa anterior respecte m.
num(k) número de neurones de la capa k.
En crear una xarxa neuronal no es pot establir els valors W i B. L'entrenament és el procediment que s'utilitza per trobar-los.
Per poder entrenar una IA es necessiten uns fitxers d’entrenament, que són
una sèrie de fitxers que contenen les dades inicials que s’introdueixen a la IA i
uns altres amb fitxers que tenen la resposta que hauria de donar la IA.
El primer pas és assignar uns valors aleatoris a B i W. Un cop ja tenim aquests valors introduïm a la IA els fitxers d’entrenament amb les dades inicials i s’obté
unes respostes.
El segon pas, quan ja s’ha obtingut les respostes , y1, y2, ..., yn, i les respostes ideals, y’1, y’2, ..., y’n, consisteix a definir una funció d’error, que avalua la desviació de la resposta obtinguda de la resposta ideal. La funció d’error més utilitzada es la següent:
ym(k )
= f ( ∑n=1
num(k−1)
W nm(k)⋅xn
(k−1)+ Bm
(k )
) → m∈{1, … , num(k )} ; k∈{1, … , N }
error = ( y1−y'1)2+( y2−y '2)
2+…+ ( yn−y 'n)
2
IA a la recerca de nous planetes
12
La nostra intenció és aconseguir el mínim valor d’error possible. Per a qualsevol funció d’una variable, els mínims es troben igualant la derivada de la
funció a 0. En aquest cas tenim una funció de moltes variables que són les B i W, el que s’ha de fer matemàticament és igualar a 0 les derivades parcials de
cada una de les B i W, utilitzant la funció d’error i les equacions de les neurones.
Fer el càlcul de les derivades no implica dificultat però sí igualar a 0 i aïllar B i W. L'ús de la llibreria TensorFlow facilitarà la tasca mitjançant el càlcul de derivades i aproximacions successives per trobar el mínim automàticament.
Aquesta gràfica representa una funció d’error respecte dos B i/o W. Un problema molt típic és que hi hagin diversos mínims i que acabi trobant un mínim i no el mínim absolut. Per evitar aquesta situació, la llibreria de TensorFlow fa servir diferents estratègies com començar des de diferents punts o afegir la variació d’un valor
amb una certa probabilitat.
2.3. Programari
TensorFlow15 és la llibreria desenvolupada per Google per entrenar la seva IA. Python16 és el llenguatge de programació en què esta escrita aquesta llibreria. Jupyter17 és la interface que faré servir per escriure i executar el programa.
1. Python
Python és un llenguatge de programació creat pel holandès Guido van Rossum en el 1991 en el CWI. Va ser creat per substituir el llenguatge de programació ABC. Actualment Python és el llenguatge de programació més
15 Web grafia [10] 16 Web grafia [9] 17 Web grafia [11]
Logotip de Python
IA a la recerca de nous planetes
13
demandat per les empreses de programació segons la revista Forbes18.
Python és un llenguatge de codi obert multiparadigmàtic19. Això significa que més que forçar els programadors a adoptar un estil particular de programació, permet diferents estils: programació orientada a objectes, programació imperativa i programació funcional. La filosofia de Python és que el llenguatge sigui el màxim llegible possible. Un altre avantatge és que Python té un mode interactiu que consisteix en introduir els comandaments un a un i executar-los per veure si el codi està correctament escrit.
2. TensorFlow
TensorFlow és una llibreria creada per Google Brain, el 9 de novembre del 2015, per satisfer les seves necessitats de sistemes capaços de construir i entrenar xarxes neuronals. TensorFlow a diferència de la seva antecessora DistBelief és de codi obert.
TensorFlow va ser creada perquè Google volia millorar DistBelief fent-la més robusta i ràpida. DeepMind és la IA més famosa de Google actualment funciona amb TensorFlow que en ser de codi obert permet a qualsevol programador tant fer servir DeepMind com crear noves IAs.
TensorFlow és una llibreria de codi obert, programada en Python i C++, perquè aprengui automàticament mitjançant un rang de feines. Un avantatge destacable és la possibilitat de funcionar tant amb la CPU20 de l’ordinador com amb la GPU21 de la targeta gràfica permetent-li tenir més potencia i, per tant, un funcionament més ràpid.
18 Web grafia [8] 19 Web grafia [25] 20 Glossari 21 Glossari
Logotip de TensorFlow
IA a la recerca de nous planetes
14
3. Jupyter
Jupyter és un Shell desenvolupat per Scipy i anunciat en 2014 per Fernando Pérez. Jupyter Notebook és una aplicació web de codi obert que permet crear i compartir documents que contenen codi en viu, equacions, visualitzacions i text explicatiu. Els usos inclouen: neteja i transformació de dades, simulació numèrica, modelització estadística, aprenentatge automàtic i molt més. Jupyter té suport per a més de 40 llenguatges de programació, com ara Python, R, Julia i Scala.
Logotip de Jupyter
IA a la recerca de nous planetes
15
3. Exoplanetes
3.1. Què són els exoplanetes?22
A l’univers existeixen , conjunt de planes que orbiten al voltant d’una estrella
diferent del Sol, aquests planetes s’anomenen planetes extrasolars o exoplanetes. Es van començar a descobrir a la dècada de 1990, des de feia temps se’n sospitava de la seva existència però gràcies a la millora en les tècniques de detecció en van poder trobar.
El primer planeta extrasolar descobert orbitant una estrella va ser 51 Pegasi b, al 1995 per Michel Mayor i Didier Queloz de l'Observatori de Ginebra. Aquest planeta té una massa comparable a la de Júpiter. Des de llavors més d'un centenar de planetes han estat descoberts per diferents grups d’investigació
astrofísica internacionals.
Al 2013 un estudi dirigit per François Fressin del Centre d'Astrofísica de la Universitat Harvard23, conclou que com a mínim, hi ha un planeta per cada estrella. La nostra galàxia conté al voltant de 100.000 milions d’estrelles, així segons aquest estudi, la Via Làctia24 contindria un mínim de 17.000 milions d’exoplanetes amb una mida similar o propera a la de la Terra, però no es pot determinar quins d’ells seran habitables.
22 Web grafia [12] 23 La Universitat Harvard (en anglès: Harvard University) és una de les institucions educatives més prestigioses del món i la més antiga dels Estats Units d'Amèrica. Fundada el 8 de setembre de 1636 com a New College a Cambridge, va ser rebatejada el 13 de març de 1639 en honor de John Harvard, un dels seus principals mecenes. 24 La Via Làctia és una galàxia en forma d'espiral (més concretament d'espiral barrada), on es troba el sistema solar. Està formada per més de 200 mil milions d'estels (alguns estudis recents li atribueixen més de 400 mil milions d'estels) iguals o semblants al nostre Sol, i els seus planetes, juntament amb milers de nebuloses. Tot fa suposar que al centre de la Via Làctia hi ha un forat negre supermassiu.
Gràfica dels descobriments de exoplanetes. El blau són els descobriments fets amb velocitat radial, el verd amb transit, el groc amb astrometria, el vermell amb observació directe i el taronja amb microlents gravitatòries. Imatge estreta de Viquipèdia.
IA a la recerca de nous planetes
16
Al desembre de 2011 la missió Kepler25 de la NASA va trobar els primers exoplanetes amb la mida de la Terra, es van anomenar Kepler-20e i Kepler-20f, i estan molt a prop de la seva estrella en una zona considerada no habitable, caldria trobar-los en un zona on l'aigua pogués estar en forma líquida, a la seva superfície. La importància d’aquesta descoberta és per que són els exoplanetes, confirmats, fins al moment, més petits que orbiten al voltant d'una estrella com el nostre Sol.
3.2. Com trobar-los?
Per trobar exoplanetes hi ha diversos mètodes, d'entre els que destaquem els següents:
1. Velocitats radials 2. Astrometria 3. Trànsits 4. Microlents gravitatòries 5. Pertorbacions en discs circumestelars 6. Observació directa
1. Velocitats radials
El mètode de detecció mitjançant velocitat radial consisteix en l’aplicació de
l’efecte Doppler26, que consisteix en la variació d’ona d’un objecte en moviment.
Això es produeix quan un planeta orbita entorn d’una estrella genera una força de atracció gravitatòria que produeix que aquesta orbiti entorn el centre de masses comú del sistema. Aquestes oscil·lacions es poden detectar amb lleus canvis en les línies espectrals, si s’apropa les línies són més blaves i si s’allunya són
més vermelles.
25 La Missió Kepler és un telescopi espacial de la NASA, la desena missió del programa Discovery. Està dissenyada específicament per estudiar una porció de la Via Làctia a les constel·lacions del Cigne i la Lira per descobrir exoplanetes de la grandària de la Terra i determinar en quin seria possible que s'hi pogués desenvolupar vida. La missió es diu així en honor a Johannes Kepler. El llançament va tenir lloc el dia 7 de març de 2009. 26 Web grafia [13]
Imatge estreta de Wikipedia. Es una expressió artística de Alfa Centauri B.
IA a la recerca de nous planetes
17
Un dels planetes que s’ha trobat amb aquest mètode és Alfa Centauri Bb27. Alfa Centauris són les estrelles més properes al sistema solar, estan a 4,37 anys llum, i l’estrella Alfa Centauri B té un planeta orbitant d’aproximadament la
massa de la Terra però esta molt a prop de la estrella i no és habitable.
2. Astrometria
Ja que les estrelles orbiten entorn el centre de masses, l’astrometria consisteix
en mesurar el moviment de la estrella i per detectar la presència de planetes.
Només s’ha aconseguit trobar un planeta
és HD 176051 b que orbita al voltant de HD 176051.
3. Trànsits
El trànsit consisteix en observar la lluminositat d’una estrella i detectar la
variació lumínica al passar el planeta per davant. Aquest mètode junt amb la velocitat radial són més eficients amb planetes grans i propers a l’estrella que
amb planetes petits com la Terra.
En 2017, la NASA va publicar el descobriment de 7 exoplanetes que giren al voltant de l’estrella TRAPPIST-128. El mètode que es va fer servir per trobar-los va ser el trànsit.
27 Web grafia [15] 28 Web grafia [16]
Imatge estreta de Wikipedia. És el concepte de l’artista de la NASA-JPL/Caltech del que pot ser el sistema planetari TRAPPIST-1.
Imatge treta de la pagina Starlight Musings. És una imatge del firmament on marca a HD 17605. Està en la constel·lació de Lira a prop de ϒ Lira.
IA a la recerca de nous planetes
18
4. Microlents gravitatòries
La microlent gravitatòria29 és un efecte astronòmic predit per la teoria general de la relativitat d’Einstein30. Segons Einstein31, quant la llum procedent d’una
estrella passa molt a prop d’una altra estrella en el seu camí cap a un
observador en la Terra, la gravetat de l’estrella intermèdia corba lleugerament els raigs de llum de l’estrella d’origen.
Les microlents gravitatòries funcionen, com es veu a la imatge, de la següent manera:
A l’observar un objecte llunyà amb massa, forat negre, estrella..., i un altre cos el creua per davant es genera una deformació. Si resulta que l’objecte
intermedi té algun altre objecte orbitant (en cas d’estrella el que orbita normalment és un planeta) la deformació generada es pot detectar en la imatge de l’objecte més llunyà.
El planeta més llunyà que s'ha trobat gràcies a microlents gravitatòries està situat en la galàxia de Andròmeda i s’anomena OGLE-2005-BLG-390Lb.
29 Web grafia [17] 30 Glossari 31 Albert Einstein (Ulm, Wurtemberg, 14 de març del 1879 - Princeton, Nova Jersey, 18 d'abril del 1955) va ser un físic d'origen alemany, nacionalitzat posteriorment suís i nord-americà. Va ser el científic més conegut i important del segle XX.
Imatge extreta de Ciencia Historai. Explicació gràfica del funcionament de microlents gravitatòries
Imatge extreta de Ciencia Historai. Visualització de la grafica del descobriment de planeta OGLE-2005-BLG-390Lb.
IA a la recerca de nous planetes
19
5. Pertorbacions en discs circumestelars
En estrelles joves hi ha un disc circumestelar de pols. El mètode de pertorbacions en discs circumestelars consisteix en detectar irregularitats en el pols estel·lar produïdes per efecte de la gravetat produïda per planetes que orbiten entorn de l’estrella.
S’han trobat diversos planetes amb aquest mètode. I succeeix un cas similar en el disc de Saturn i els seus satèl·lits pastors que generen diferents línies en el disc.
6. Observació directa
En alguns casos es pot veure el planeta a simple vista, sempre que la llum de l'estrella no tapi el planeta.
Les condicions del planeta han de ser les següents:
El planeta ha de ser gran, de la mida de Júpiter o major.
Ha de ser un planeta càlid. Ha d’estar situat molt lluny de
l’estrella.
En 2005 l'equip del Spitzer Space Telescope va detectar directament la radiació infraroja emesa per dos planetes extrasolars ja coneguts: HD 209458 b i TrES-1. La temperatura dels dos planetes era de 787 ºC per a TrES-1 i de 857 ºC per a HD 209458 b.
Imatge estreta de Viquipèdia. Foto fet en el 2004 a Saturn.
Imatge del Telescopi Espacial Spitzer, estreta de Viquipèdia.
IA a la recerca de nous planetes
20
4. Pràctica
4.1. Instal·lació del software
El procediment per instal·lar TensorFlow32 i fer servir com interfase de desenvolupament Jupyter, ha estat:
1. Abans d’instal·lar Python he instal·lat el paquet distribuïble de
Microsoft visual C++33.
2. Instal·lar Anaconda34 que és una distribució de Python. És de codi obert i té
moltes llibreries científiques i altres millores.
3. Obrir la consola de sistema.
4. Crear i activar un entorn de treball anomenat “tensorflow”.
5. Instal·lar TensorFlow.
6. Per últim, instal·lar nb_conda (un paquet de utilitats d’anaconda), matplotlib
(un paquet per fer gràfiques) i Jupyter (la interfase de desenvolupament).
7. Per obrir la interfase de desenvolupament, s’escriu:
Un cop escrit això en la consola s’obrirà una pestanya en internet.
32 Web grafia [2] i [6] 33 Web grafia [4] 34 Web grafia [3]
Anaconda3-4.3.1-Windows-x86_64.exe
C:\> conda create --name tensorflow python=3.5 C:\> activate tensorflow
vc_redist.x64.exe
(tensorflow) C:\> pip install --upgrade tensorflow
(tensorflow) C:\> conda install nb_conda (tensorflow) C:\> pip install matplotlib (tensorflow) C:\> conda install jupyter
C:\> activate tensorflow (tensorflow) C:\> jupyter notebook
IA a la recerca de nous planetes
21
A l’entrar en aquesta llibreria, has de clicar el desplegable de “New”, en la línia que posa “Python [conda env:tensorflow]”. En polsar s’obrirà una nova
pestanya al cercador i aquí és on ja es pot programar.
Interface per programar en Python.
IA a la recerca de nous planetes
22
4.2. Aprendre a fer servir TensorFlow
Per aprendre a fer servir TensorFlow vaig copiar un programa que consisteix en una IA que reconeix números escrits a mà. Aquest exemple el vaig treure d’un video35 d’unes xerrades, organitzades per la Universitat de Salamanca i el ACM
(Association for Computing Machinery) que tractaven l’ús del TensorFlow per a IAs.
La pràctica consta de dues parts. La primera és una intel·ligència sense neurones ocultes, és a dir només té entrada i sortida, i la segona, és una IA amb una capa oculta. Les dues són pràcticament iguals i només canvien algunes línies de codi.
IA sense neurones ocultes
Primera part: 1. Escriure aquestes línies de codi, per descarregar unes llibreries
d’entrenament per la IA.
35 Web grafia [5]
IA amb neurones ocultes
import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets('MNIST_ data/', one_hot=True)
%matplotlib inline import matplotlib.pyplot as plt import numpy as np
IA a la recerca de nous planetes
23
2. Per verificar si s’han carregat bé les imatges d’entrenament, en visualitzo una amb aquest codi.
3. La següent part és començar a fer la IA. Donem un valor x a cada
un dels píxels. Com la imatge és de 28x28 són 784 valors de entrada, i definim y_ com el número que és real. Aquests valors van del 0 al 9, per tant són 10 valors de sortida. Després es defineix W com els pesos sinàptics i B, com els biaixos. A continuació, s’escriu la funció
4. i una altre funció que faci que la y i y_ s’aproximin tant com es
pugui.
plt.imshow(mnist.train.images[190].reshape(28,28), cmap='gray')
Aquesta és la imatge 190 i en pots escollir qualsevol altra només variant el numero entre [ ].
x = tf.placeholder(tf.float32, [None, 784]) y_ = tf.placeholder(tf.float32, [None, 10]) W = tf.Variable(tf.zeros([784, 10])) B = tf.Variable(tf.zeros([10])) y = tf.nn.tanh( tf.matmul(x, W) + B ) mse = tf.reduce_mean( tf.square(y - y_)) train_step = tf.train.GradientDescentOptimizer(0.01).minimize(mse) init = tf.global_variables_initializer() sess = tf.Session() sess.run(init)
y = x × W + B
IA a la recerca de nous planetes
24
5. Finalment s’inicia l’entrenament, que consisteix en escriure aquest
fragment de codi i deixar que s’entreni.
6. A partir d’aquests codis podem veure la corba d’entrenament, l’eix
de les y ens indica l’error i en l’eix x, les reiteracions.
7. Per saber l’efectivitat de la IA s’aplica un arxiu de prova per obtenir el percentatge d’error.
trainLoss = [] testLoss = [] for i in range(80): batchX, batchY = mnist.train.next_batch(500) sess.run(train_step, feed_dict={x:batchX, y_:batchY}) loss1 = sess.run(mse, feed_dict={x:batchX, y_:batchY}) loss2 = sess.run(mse, feed_dict={x:mnist.test.images, y_:mnist.test.labels}) trainLoss.append(loss1) testLoss.append(loss2) print("Training finished.")
plt.plot(trainLoss, 'r') plt.plot(testLoss, 'b')
S’observen dos corbes: la blava, la corba remitjada, i la vermella, la
corba exacta a partir de tots els punts.
pred = sess.run(y, feed_dict={x: mnist.test.images, y_: mnist.test.labels})
IA a la recerca de nous planetes
25
Això ens dona que la IA té un error del 22.07%.
8. Per últim, és interessant analitzar com queden representats gràficament els pesos de les W. La gama de colors utilitzada és:
Blau per a valors negatius. Blanc per el 0. Vermell per a valors positius.
Imatges obtingudes de representar gràficament els pesos sinàptics.
errors = 0. for i in range(pred.shape[0]): if(np.argmax(pred[i]) != np.argmax(mnist.test.labels[i]) ): errors = errors + 1 print("test error: " +str( errors/pred.shape[0]))
myW = sess.run(W)
for i in range(10): plt.imshow(myW[:, i].reshape(28,28), cmap='bwr') plt.show()
IA a la recerca de nous planetes
26
Segona part: Com ja he dit abans, en aquesta part canvien algunes parts del programa i només cal reescriure unes línies per introduir la capa oculta.
1. El primer canvi es produeix, com és de esperar, en la programació de la IA. La major diferència és que passa de tenir una funció a tenir-ne dues:
I l’altre canvi és que es defineix una nova variable n_hidden que iguala el nombre de neurones de la capa oculta.
2. El codi de l’entrenament i el codi per representar la gràfica no varien però el resultat de la gràfica és totalment diferent.
n_hidden = 250 x = tf.placeholder(tf.float32, [None, 784]) y_ = tf.placeholder(tf.float32, [None, 10]) W0 = tf.Variable(tf.random_normal([784, n_hidden], stddev=0.01)) B0 = tf.Variable(tf.random_normal([n_hidden], stddev=0.01)) W1 = tf.Variable(tf.random_normal([n_hidden, 10], stddev=0.01)) B1 = tf.Variable(tf.random_normal([10], stddev=0.01)) h = tf.nn.tanh( tf.matmul(x, W0) + B0 ) y = tf.nn.tanh( tf.matmul(h, W1) + B1 ) mse = tf.reduce_mean( tf.square(y - y_)) train_step = tf.train.AdamOptimizer(0.005).minimize(mse) init = tf.global_variables_initializer() sess = tf.Session() sess.run(init)
Es poden veure dos línies, la blava és la corba remitjada, i la vermella és la corba exacta pintant tots els punts, igual que la gràfica anterior.
h = x × W0 + B0y = h × W1 + B1
IA a la recerca de nous planetes
27
3. El codi que ens indica l’error tampoc canvia però el resultat és molt més favorable. L’error d’aquesta IA és del 10,2%.
4. El codi que sí apareix modificat és el dels pesos associats a les W0.
4.3. Creació dels fitxers d’entrenament de la IA36
Per poder entrenar una IA, cal disposar d’uns paquets de dades inicials per activar les neurones d’entrada i la seves respostes per comparar els resultats.
Perquè la IA funcioni i doni bons resultats, cal tenir moltes dades inicials representatives del problema. En el cas d’una IA que detecti exoplanetes, són necessaris uns fitxers semblants als fitxers descarregats de la notícia, com aquests:
36 Annex 7.4
myW0 = sess.run(W0)
for i in range(10): plt.imshow(myW0[:, i].reshape(28,28), cmap='bwr') plt.show()
Aquesta gama de colors és igual a l’obtinguda en les representacions del
pesos de la primera part però la imatge no queda definida.
IA a la recerca de nous planetes
28
Aquest fitxer conté 7 columnes de les quals només ens interessen les 3 primeres que són:
1. La data, en data Juliana37, en què es va fer la observació. 2. La velocitat, en m/s, calculada mitjançant l’efecte Doppler, de l’estrella. 3. L’error de la mesura anterior, en m/s.
Per poder tenir una col·lecció prou gran de fitxers amb les solucions s’haurà de
crear un programa que els generi i per simplificar la feina, els fitxers d’entrenament només tindran un planeta orbitant.
Inicialment, el programa necessita uns valors inicials per poder crear l’òrbita:
M Massa estrella, en masses solars. m Massa planeta, en masses de Júpiter. R_min Distància del Periastre, distància mínima a la que està el
planeta de l’estrella, en unitats astronòmiques38 [UA]. e Excentricitat, coeficient que determina quan d’ovalada és l’òrbita. th Angle que determina la inclinació respecte l'eix de coordenades, en
graus. t_peri Instant en què passa pel periastre, en data juliana.
Per determinar les sis dades inicials el programa les selecciona de manera aleatòria. Els intervals possibles són: per M, un valor entre 0,2 i 2,0 masses solars, per m, un valor entre 0,1 i 9000,0 masses de Júpiter (aquestes dues dades estan delimitades pels màxims i mínims trobats), R_min, pot tenir qualsevol valor, e entre 0 i 1 i th, entre 0º i 360º.
Per tal que el fitxer resultant tingui les suficients dades per la IA s’han de complir les següents condicions per generar l’òrbita:
El període de l’òrbita, temps que triga el planeta en donar una volta a la estrella, ha de ser més petit que el nostre temps de simulació, per tenir com a mínim una òrbita completa.
Com les observacions de les estrelles tenen un error entre 1 m/s i 3 m/s degut a l’activitat estel·lar, el planeta ha d’arribar a moure l’estrella més de 3 m/s perquè no es consideri un error de mesura.
37 Glossari 38 Glossari
IA a la recerca de nous planetes
29
El segon pas, obtingut un conjunt de dades, el programa simularà l’òrbita:
1. Primer intent
Gràcies a una llibreria de Python que permet integrar equacions diferencials39, es simulen les òrbites a partir de les equacions del moviment.
Per descriure el moviment, s’utilitza l’equació de la gravitació de Newton40, les lleis de Newton i la conservació del moment.
Llei de la gravitació
Segona llei de Newton
Conservació del moment
Desenvolupant les fórmules per a aquest cas, s’obté41:
Es detecta, després d’una mesos d’entrenament, que el sistema no conserva l’energia, i que aparegui un error molt elevat en les òrbites dels planetes que fa que el planeta acabi escapant del sistema.
39 Annex 7.2 40 Sir Isaac Newton FRS (Woolsthorpe-by-Colsterworth, Lincolnshire, Anglaterra, 4 de gener de 1643 - Kensington, Middlesex, Regne d'Anglaterra, 31 de març de 1727) fou un físic, matemàtic i filòsof anglès. Newton és l'autor dels Philosophiae Naturalis Principia Mathematica (1687), en què descriu la llei de la gravitació universal i les tres lleis del moviment (lleis de la inèrcia), base de la mecànica clàssica. Newton fou el primer que demostrà que les lleis naturals governen els moviments de la Terra i dels objectes celestes. Newton també va crear un model matemàtic per a les lleis de Kepler del moviment dels planetes a partir de la llei de la gravitació universal. Així, va ampliar-les demostrant-ne que les òrbites (com les dels estels amb cua) no eren solament el·líptiques sinó que també podien ser hiperbòliques i parabòliques. 41 Annex 7.2
F=G M⋅m
r2
F⃗ = m⋅⃗a
m⋅v⃗ p + M⋅v⃗S = 0
d vx P
dt= −G
M
((x P−xS)2+( y P− yS)
2)
3/2⋅(x P− xS)d vyP
dt= −G
M
(( xP−x S)2+( yP− yS )
2)
3/2⋅( yP− yS )
d x P
dt= vx P
d y P
dt= vyP
d x S
dt= −
mM⋅vx P
d yS
dt= −
mM⋅vyP
IA a la recerca de nous planetes
30
Dibuix de l’òrbita en un temps de 6000 dies
Representació de la posició respecte el temps
Vermell posició en x Blau posició en y
Valor teòric del perióde
3771,620 dies
2436,406 dies
Com es pot veure en el primer sistema, el període és d’uns 4000 dies i no arriba a tancar-se en 6000 dies, i en el segon sistema possiblement no arribarà a tancar-se mai.
2. Segon intent
En el segon intent, es parteix de les lleis de Kepler42 i l’equació d’una òrbita el·líptica.
Segona llei de Kepler
Tercera llei de Kepler
Orbita el·líptica
42 Johannes Kepler (Weil der Stadt, Sacre Imperi Romanogermànic, 27 de desembre de 1571 - Ratisbona, 15 de novembre de 1630), astrònom i matemàtic alemany i figura clau en la revolució científica. És conegut, fonamentalment, pel descobriment de les lleis sobre el moviment dels planetes que va plasmar en les seves obres Astronomia Nova i Harmonices Mundi. Va ser ajudant del també astrònom Tycho Brahe i matemàtic de la cort de l'emperador Rodolf II. També va proporcionar una de les bases per a la teoria de la gravitació universal elaborada per Isaac Newton.
L = μ r2θ̇
T = 2πa3 /2
√G(M +m)
r =a⋅(1−e2
)
1+e⋅cos(θ−θ0)
IA a la recerca de nous planetes
31
A diferència del desenvolupament de l’apartat anterior, forma de l’òrbita està
fixada i només tenim una equació diferencial per l’angle. Si es desenvolupa, tot això l’equació diferencial a simular és la següent43:
En fer servir les lleis de Kepler, els resultats obtingut no presenta l’error de no conservació d’energia i les dades permeten representar la gràfica i els valors teòrics com en el cas anterior.
Dibuix de l’òrbita en un temps de 6000 dies
Representació de la posició respecte el temps
Vermell posició en x Blau posició en y
Valor teòric del període
3771,620 dies
2436,406 dies
Els valors d’inici de les gràfiques són els mateixos que els de les gràfiques del primer intent només que en el segon cas s’utilitzen les lleis de Kepler. Com es pot veure, els resultats són molt més coherents.
L’últim pas és que el programa ha de crear dos fitxers, un amb la resposta, que són les dades inicials M, m, R_min, e i th, i l’altre amb les dades
que se li introduiran a la IA. El fitxer resposta és senzill de crear, només s’ha
d’escriure les dades inicials. El segon fitxer és més complex.
43 Annex 7.2
θ̇ = 2π(1+e⋅cos(θ−θ0))
2
T⋅(1−e2)
3/2
IA a la recerca de nous planetes
32
Per crear el fitxer amb les dades d’entrada a la IA el programa ha de:
1. Separar l’òrbita calculada en 5000 punts i seleccionar un conjunt de 50 a 250 de punts (aquests valors es determinen tenint en compte el nombre màxim i mínim de punts que hi ha en els fitxers descarregats de la notícia).
2. Ordenar cronològicament els punts, simulant els fitxers de la notícia, sense oblidar convertir el temps en data Juliana.
3. Ordenar cronològicament la velocitat a la que es mou l’estrella en aquell
instant, col·locant un valor aleatori a l’error de la mesura de velocitat, que va entre 0,5 m/s i 3 m/s, encara que hi ha una certa probabilitat de què l’error sigui major o menor, i omplir les altres columnes amb un valor fix.
4.4. Creació de la IA44
Després de diversos intents, s’ha aconseguit una IA que funcioni amb un bon rendiment, és a dir, un error proper al 5%. A part, el funcionament principal de totes les IAs té característiques comunes:
Per poder entrar-li la informació:
1. La IA obre els fitxers d’entrenament i cerca l’últim dia. 2. La IA resta 5000 dies (aproximadament 15 anys) al dia trobat i assignar
el resultat com a dia 0, fent que tots els valors que no entrin en aquests període quedin eliminats.
3. La IA crea un array45 de 5000 punts, tots en valor 0. 4. Omple amb les velocitats del fitxers d’entrenament on els correspongui
temporalment. L’hora del dia quan es va fer la observació es menysprea perquè es considera mínim el moviment diari.
5. Escala els valors de les velocitats perquè adquireixin un valor entre 0,5 i -0,5.
44 Annex 7.4 45 Glossari
Representació de les velocitats amb el temps
IA a la recerca de nous planetes
33
Per optimitzar la IA es calcula la diferència quadràtica, la forma correcta de calcular l’error. La IA s’entrena minimitzant aquest error. Cal tenir en compte que l’error representa en les gràfiques és l’error relatiu d’un paquet
d’entrenament, expressat en tant per cent.
1. Programa 1:
Primer es van iniciar tots els valors de W i B a 0 perquè és més senzill. Després de fer diversos intents, l’entrenament no es produïa perquè el valor de W no variava, Sempre amb un error al voltant de 300%. Després de variar el nombre de capes i neurones s’arriba a la conclusió que l’error era culpa dels 0 de la inicialització.
2. Programa 2:
En iniciar els valors de W i B amb un d’aleatori, la IA entrenava i l’error va
passar del 120% al 15% al final del procés.
Gràfica d’un dels primers entrenaments.
Gràfica del últim entrenament.
IA a la recerca de nous planetes
34
L’objectiu de la IA era trobar la velocitat màxima, l’excentricitat, el període i el
radi mínim. En la taula següent s’observen les diverses modificacions del
número de neurones per disminuir el % d’error. Número intent
Número capes ocultes
Neurones per capa oculta Error en %
1 1 1000 124 2 1 2000 120 3 2 1000 200 60 4 2 2000 200 69 5 2 1000 400 92 6 2 1000 50 50 7 2 1000 10 64 8 2 200 50 33 9 2 50 50 34
10 2 100 50 35 11 3 100 50 50 25 12 3 200 50 50 19 13 3 300 50 50 23 14 3 200 10 50 45 15 3 200 100 50 16 16 3 200 200 50 23 17 3 200 100 20 24 18 3 200 100 70 29 19 4 200 100 50 50 20 20 4 200 100 50 25 15 21 4 400 200 100 50 16
Aquesta IA no baixa del 15% i si representem l’error de cada variable per separat hi ha errors molt acceptables però no es mantenen.
3. Programa 3:
Per poder reduir el error encara més, es creen diverses IAs, cada una dissenyada específicament per trobar el valor d’una variable en concret. En total, 6 IAs:
VelocitatP La velocitat que té en el periastre, és a dir, la velocitat més gran.
VelocitatA La velocitat que té en l’apoastre, és a dir, la velocitat més petita.
Període El temps que triga en donar una volta. Masses La relació de masses, és a dir, la divisió de la massa de
l’estrella i el planeta.
IA a la recerca de nous planetes
35
LongitudP La inclinació de la longitud en passar pel periastre respecte el semieix de coordenades.
Excentricitat L’excentricitat, és a dir, quan d’ovalada és l’òrbita.
La diferència més important respecte els altres programes és que una neurona en lloc de buscar un valor, com per exemple el període que resultaria un nombre entre 100 i 5000 dies, generant molta imprecisió, s’han fet servir 30 neurones per representar el mateix interval, utilitzant una escala logarítmica46 per distribuir el temps entre totes les neurones de manera que l’error d’una, individualment, disminueix.
En aquestes IAs em fixo en dos errors, el resultant al final del entrenament i l’error observat en la gràfica dels últims punts del entrenament.
Gràfica d’un entrenament.
Gràfica dels 500 últims punts de l’entrenament.
L’error del entrenament era del 3,49%
Això ho feia perquè l’error de l’entrenament era del 3,49% però com es veu en les gràfiques al final l’error no s’estabilitza i per tenir un valor més fiable de
l’error agafava el valor més alt dels últims punts. Totes començaven amb 3 capes i amb 200, 100, 50 neurones per capa.
Error en % Error de la gràfica en % VelocitatP 1,08 3,2 VelocitatA 1,48 4,5 Període 2,72 8 Masses 0,45 50
LongitudP 2,06 5,8 Excentricitat 9,51 32
En veure que algunes variables, com les velocitats, resultaven valors molt positius i altres, com les masses o l’excentricitat, donen valors inacceptables. Es van descartar les IAs de les masses, ja que es pot deduir, i la longitud
46 Annex 7.3
IA a la recerca de nous planetes
36
perquè és poc important. Aquesta decisió permet concentrar l’atenció en
millorar el valor de l’excentricitat i el període.
Excentricitat:
La taula següent els diversos entrenaments per trobar la combinació amb el menor error. El nombre de capes ocultes sempre va ser 3.
Nombre intent
Neurones per capa oculta Error en %
Error de la gràfica
en % 1 200 100 50 9,51 32 2 400 100 50 0,13 18 3 200 150 50 0,23 25 4 400 200 50 5,62 10 5 400 200 100 9,45 35 6 400 300 50 2,30 5 7 400 300 100 1,99 23 8 400 150 50 2,88 9,75 9 400 350 50 4,67 13
10 400 300 50 1,20 50
Període:
En el cas del període, es produeix com en el cas anterior. La variació de l’error
ha estat mínima.
Nombre intent
Neurones per capa oculta Error en %
Error de la gràfica
en % 1 200 100 50 2,72 8 2 400 100 50 5,29 8 3 200 150 50 3,46 7 4 200 100 75 5,04 10 5 400 200 100 18,81 40 6 450 150 50 4,17 8 7 800 200 50 3,20 8
4. Programa 4:
Davant l’evidència que els fitxers d’entrenament no conservaven l’energia i les IAs l’únic que feien era aprendre un valor característic de cada fitxer i dir el valor que coincidia amb el resultat, es van executar els canvis següents:
IA a la recerca de nous planetes
37
Canvi 1:
Crear un array unint els punts de velocitats que tenim amb rectes.
Canvi 2:
Per representar gràficament si la IA està entrenant a cada volta, es calcula l’error relatiu. El canvi consisteix en invertir el procés, calcular primer el valor absolut i posteriorment la mitja, ja que contràriament els errors positius es restaven amb els negatius donant un error final més petit i utilitzant el segon mètode, la mitjana troba un valor més representatiu del error total.
Canvi 3:
L’últim canvi permet que el programa pugui guardar la IA per poder-la utilitzar posteriorment o per fer uns test de prova per veure l’eficiència amb arxius que no hagin estat utilitzats durant l’entrenament.
5. Programa 5:
Aquest programa és igual al programa anterior, amb la diferència que si abans cada variable tenia un programa diferent, en canvi aquest, és un programa que pot crear les tres IAs.
Finalment només cal trobar els valors de VelocitatP, VelocitatA i Període per determinar les dades de l’exoplaneta, la resta, com l’Excentricitat, les Masses o LongitudP es poden deduir reduint el nombre de IAs creades.
El principal problema és el no poder determinar la certesa de les IAs, degut a que els arxius d’entrenament són una simplificació de la realitat. Per solucionar-
Representació de les velocitats amb el temps
IA a la recerca de nous planetes
38
ho s’han creat deu IAs amb cadascuna de les variables i després s’han
comparat els resultats tenint en compte que a major semblança la probabilitat de que el resultat sigui correcte augmenta.
Com aquestes IAs s’utilitzaran per determinar els exoplanetes i han de estar ben entrenades. Per poder assegurar un bon entrenament s'ha realitzat el procés d’entrenament deu cops per a cada IA. A diferència dels altres programes, l’ordinador utilitzat només suporta entrenar cinc IAs alhora i només cinc entrenaments com a màxim, durant un temps de càlcul total de 8 hores aproximadament, així que en total es va haver d’iniciar el programa dotze cops amb una duració total de 96 hores, és a dir, 4 dies de càlcul.
6. Programa 6:
Aquest programa només agafa les IAs entrenades anteriorment i introdueix els arxius de planetes, que proporcionava la notícia, per trobar el resultat, que apunta en un fitxer, separat per comes, els valors obtinguts d’una variable al
costat del nom de l’estrella per després convertir-ho en un full de càlcul.
4.5. Resultats
S’ha creat tres fulls de càlcul, un per a cada variable, i s’ha calculat la sigma47 de cada un. Després s’ha representat l’error de cadascuna i les gràfiques obtingudes són les següents:
47 Glossari: v. Propagació d’errors
0 100 200 300 400 500 600 700 800 900 1000 1100 1200 1300 1400 1500 1600 17000
10
20
30
40
50
60
70
80
90
100
Error Relatiu
PeríodeV. PeriastreV. Apoastre
Por
cent
atge
IA a la recerca de nous planetes
39
Com es pot veure les tres gràfiques tenen una forma molt semblant. La velocitat del periastre ha tingut molt bon resultat, en canvi el període té més error, però el fet de no superar el 100%, és un senyal molt bo, ja que l’error
inicial per les IAs era del 300% o superior.
S’han seleccionat els cinc millors valors de les tres fulles, i s’han resumit en les
taules següents:
Velocitat Periastre Nom estrella Valor mitja Sigma Error relatiu
HD221974 5,1173 0,2004709109 3,92% HD206116 12,331187 0,4851520389 3,93% HD209393 21,072768 0,8514902954 4,04% HD103890 7,579267 0,308933077 4,08% HD9113 12,983756 0,5292234764 4,08%
Velocitat Apoastre Nom estrella Valor mitja Sigma Error relatiu
HIP26857 4,696175 0,6580910703 14,01% HD40397 21,654159 3,1749282084 14,66% HD30649 745,127075 109,2985918618 14,67% HD4614B 11,879303 1,802896112 15,18% G60-06 2,490823 0,3851285087 15,46%
Període Nom estrella Valor mitja Sigma Error relatiu HD39828 4048,129638 301,8994519313 7,46% HD190360 2832,768871 216,9052583697 7,66% HD9986 3268,898827 279,3236083162 8,54% HD144287 3976,581105 353,301971878 8,88% HD4635 4126,382764 380,5227409344 9,22%
A partir d’aquestes tres dades s’han calculat48 els següents paràmetres de l’òrbita:
Massa relativa Massa de l’exoplaneta Semieix major Excentricitat Radi mínim Radi màxim
48 Annex 7.2
IA a la recerca de nous planetes
40
Després s’ha calculat l’error49 en tant per cent i finalment s’han ordenat els resultats segons l’error i numerat. També s’ha fet la mitjana aritmètica dels valors de la numeració del període, la massa de l’exoplaneta, el semieix i
l’excentricitat per obtenir un ranking dels resultats50. En les següents taules s’han seleccionat els deu millors:
Nom Període Massa Semieix Excentricitat dies error % M Júpiter error % UA error % valor error %
1 HD4635 4126 9,22 0,2340 10,7 5,035 17,5 0,4547 17,9 2 HIP1368 4119 11,0 0,3948 13,8 5,030 22,1 0,5461 17,1 3 HD29461 3627 14,7 43,95 14,0 4,683 24,1 0,5382 17,1 4 HD38858 3322 16,4 0,5143 15,4 4,358 26,8 0,5296 19,6 5 HD47752 2473 22,8 0,1999 14,6 3,579 29,8 0,5360 16,6 6 HD185414 2898 18,7 60,23 16,4 4,053 29,0 0,5649 17,9 7 HD61606 3938 17,6 0,2602 12,4 4,881 24,1 0,4077 22,2 8 HD174080 3998 13,8 0,5877 14,2 4,931 24,0 0,4535 23,6 9 GL317 720,7 13,9 0,8902 15,6 1,178 25,7 0,4800 23,9
10 GL2066 2290 15,0 0,2861 12,8 3,401 22,9 0,3963 24,9
Si es representen els valors d’aquest sistemes proporcionats per la notícia i es comparen amb les gràfiques obtingudes a partir de les respostes s’observen les
següents gràfiques:
GL317
GL2066
HD4635
HD29461
49 Glossari: v. Propagació d’errors 50 Full de càlcul amb tots els resultats a l’annex 7.5
IA a la recerca de nous planetes
41
HD38858
HD47752
HD61606
HD174080
HD185414
HIP1368
IA a la recerca de nous planetes
42
5. Conclusions i agraïments
L’objectiu principal d’aquest treball és respondre a la pregunta:
Una IA pot determinar si una estrella té exoplanetes.
Fent servir varies IAs senzilles s’ha demostrat que sí. S’han trobat estrelles que poden tenir un planeta al seu voltant amb un grau de fiabilitat molt alt.
Per dissenyar les IAs ha calgut:
Aprendre a programar Python. Crear les IAs utilitzant les llibreries de TensorFlow Aplicar conceptes matemàtics i físics com les primitives, càlculs
estadístics o les lleis de Newton i Kepler, desconeguts per mi. Aprendre a utilitzar fulls de càlcul.
S’ha aconseguit:
Crear un conjunt de IA, programades amb Python. Executar aquestes IAs i obtenir els paràmetres físics per poder confirmar
l’existència d’exoplantes. Tractar les dades per trobar exoplanetes amb molta fiabilitat.
Per la determinació dels paràmetres físics dels exoplanetes, primer es van utilitzar un model deduït a partir de les lleis de Newton, però no la integració matemàtica de TensorFlow no conservava l’energia i els resultats eren erronis.
Va caldre deduir un nou model a partir de les lleis de Kepler que sí va funcionar.
Durant el procés no s’ha aconseguit fer servir la targeta gràfica per
l’entrenament de les IAs, cosa que hauria reduït molt el temps de càlcul.
A nivell personal, aquest treball m’ha motivat a continuar amb l’estudi de les
IAs, per ser un sistema amb moltes possibilitats, senzill d’aplicar i imagino que
en un futur pròxim serà molt potent i les trobarem aplicades a molts camps (conducció autònoma de vehicles, robòtica, entre d’altres).
Per confirmar el mètode i el càlcul, s’enviarà un correu o a diferents entitats amb els cinc millors resultats obtinguts i es demanarà que verifiquin l’existència
o no d’aquests exoplanetes.
Per finalitzar el meu treball voldria agrair l’ajuda en la part pràctica al meu pare,
les correccions d’estil i ortografia de la meva mare i els consells i correccions de la meva tutora.
IA a la recerca de nous planetes
43
6. Web grafia
1. Noticia dels exoplanetes http://gizmodo.com/scientists-need-your-help-discovering-the-next-
exoplane-1792307596 2. Web per instal·lar TensorFlow
https://www.tensorflow.org/install/ https://www.tensorflow.org/install/install_windows
3. Web oficial de Anaconda
https://www.continuum.io/downloads 4. Web oficial de instal·lació de Microsoft visual C++
https://support.microsoft.com/es-es/help/2977003/the-latest-supported-visual-c-downloads
5. Vídeos de xarrades sobre com utilitzar TensorFlow
https://www.youtube.com/watch?v=Nv67i-agXWU https://www.youtube.com/watch?v=YT6_cMxlfXc https://www.youtube.com/watch?v=A1mixlmDrzg https://www.youtube.com/watch?v=GKsJ4Y_mS8g https://www.youtube.com/watch?v=n-5ifngrV7k https://www.youtube.com/watch?v=3ODGSDGy5fc https://www.youtube.com/watch?v=qKysEIFNYIQ
6. Llibre de iniciació al TensorFlow “Hello World” en TensorFlow
http://jorditorres.org/libro-hello-world-en-tensorflow/ 7. Informació de xarxes neuronals
https://ca.wikipedia.org/wiki/Xarxa_neuronal https://www.frro.utn.edu.ar/repositorio/catedras/quimica/5_anio/orientado
ra1/monograias/matich-redesneuronales.pdf 8. Enllaç a la llista dels llenguatge de programació més demandats per les
empreses https://www.forbes.com/sites/jeffkauflin/2017/05/12/the-five-most-in-
demand-coding-languages/#560dee30b3f5 9. Informació de Python
https://es.wikipedia.org/wiki/Python 10. Informació de TensorFlow
https://es.wikipedia.org/wiki/TensorFlow
IA a la recerca de nous planetes
44
11. Informació de Jupyter
http://jupyter.org/ https://es.wikipedia.org/wiki/IPython
12. Informació d’exoplanetes
https://ca.wikipedia.org/wiki/Planeta_extrasolar https://es.wikipedia.org/wiki/Planeta_extrasolar
13. Efecte Doppler
https://ca.wikipedia.org/wiki/Efecte_Doppler 14. Llista d’exoplanetes
https://es.wikipedia.org/wiki/Anexo:Planetas_extrasolares 15. Alfa Centauri Bb
https://es.wikipedia.org/wiki/Alfa_Centauri_Bb 16. TRAPPIST-1
https://es.wikipedia.org/wiki/TRAPPIST-1 17. Informació de microlents gravitatòries
http://www.cienciahistoria.com/2017/04/metodo-de-microlente-gravitatoria-para.html
18. Informació de la història de les IAs
https://es.wikipedia.org/wiki/Historia_de_la_inteligencia_artificial 19. Test de Turing
https://ca.wikipedia.org/wiki/Test_de_Turing 20. Noticia de la IA del MIT amb millor CI que un nen de 4 anys
http://www.pcworld.com/article/2044846/artificial-intelligence-hits-preschooler-level-study-finds.html
21. Noticia de DeepMind jugant als jocs de Atari 2600
http://www.techrepublic.com/article/google-ai-beats-humans-at-more-classic-arcade-games-than-ever-before/
22. Noticia de AlphaGo
https://www.theverge.com/2016/3/9/11184362/google-alphago-go-deepmind-result
IA a la recerca de nous planetes
45
23. Noticia de la IA que guanya a experts del vol https://phys.org/news/2016-06-video-games-artificial-intelligence-
tactical.html 24. IA que guanya al poker
https://www.theverge.com/2017/1/4/14161080/ai-vs-humans-poker-cmu-libratus-no-limit-texas-hold-em
25. Significat de multiparadigmàtic
https://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_multiparadigma