Date post: | 06-Jul-2018 |
Category: |
Documents |
Upload: | pedro-pablo-juarez |
View: | 214 times |
Download: | 0 times |
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 1/151
FACULTAD DE INGENIERIAS
Tema:
DISEÑO Y CONSTRUCCIÓN DE UNA RED NEURONALARTIFICIAL DE PROPÓSITO GENERAL
Octubre 2007Quito-Ecuador
SEDE QUITO – CAMPUS SUR
CARRERA DE INGENIERIA DE SISTEMAS
MENCIÓN ROBÓTICA E INTELIGENCIA ARTIFICIAL
TESIS PREVIA A LA OBTENCIÓN DEL TITULO DE INGENIERO DE SISTEMAS
DANY ANAEL LÓPEZ LOAIZA
DIRECTOR: ING. NAVAS RUILOVA GUSTAVO
UNIVERSIDAD POLITÉCNICA SALESIANA
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 2/151
1
DECLARACIÓN
Yo, Danny Anael López Loaiza, declaro bajo juramento que el trabajo aquí
descrito es de mi autoría; que no ha sido previamente presentado para ningn
grado o cali!icación pro!esional; y, que hemos consultado las re!erencias
bibliogr"!icas que se incluyen en este documento#
A trav$s de la presente declaración cedemos nuestros derechos de propiedad
intelectual correspondientes a este trabajo, a la %niversidad &olit$cnica 'alesiana,segn lo establecido por la Ley de &ropiedad (ntelectual, por su reglamento y por
la normatividad institucional vigente#
)))))))))))))))))))))))
Danny Anael López Loaiza
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 3/151
2
CERTIFICACIÓN
*erti!ico que el presente trabajo !ue desarrollado por Danny Anael López Loaiza,
bajo mi dirección#
_______________________
Ing. Navas Ruilova Gustavo
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 4/151
3
DEDICATORIA
Dedicado a todas aquellas personas que en lugar de ver una nota, un pago o un
premio; vieron la necesidad y gusto de aprender algo, imaginarlo y verlo
!uncionar#
A quien no sigue una carrera esperando encontrar trabajo o buen sueldo#
A quien no aspira emplearse, sino ser !uente de empleo#
A quien no ve el reloj para salir de su trabajo#
A quien comprende que el conocimiento no se puede esconder y sabe
compartirlo#
Y a quien, an estando en desacuerdo, permite al resto hacerlo#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 5/151
4
AGRADECIMIENTOS
+presar en pocas lineas de teto el pro!undo agradecimiento hacia todas laspersonas que hacen posible que alguien tenga la oportunidad de escribir esto, me
resulta m"s complicado que la redacción del trabajo en sí#
Y pues, si somos resultado de todas las eperiencias que vivimos, agradecer a
cada una de ellas resultaría una tarea de m"s complicada#
Así que para hacer un breve resumen puedo agradecer a mis padres por su
cari-o, por todas las oportunidades que me regalan, por hacerme ver el mundo de
otra !orma, por solo mencionar unas pocas razones#
A quien estuvo alado mio durante todo este camino de aprendizaje#
A mis amigos quienes nunca me !altaron y estuvieron siguiendo mi mismo
camino, u otro que aunque parecía lejano, a la larga resultó la !orma de estar m"s
cerca#
A mis pro!esores, tutores, guías, senseis y dem"s, quienes pudieron ejempli!icar ymostrar el conocimiento de libros en un idioma m"s entendible para mi#
A mi tutor por su gran paciencia, con!ianza y sinceridad#
+ntre muchas, muchas m"s a quienes no creo que hago justicia en este
agradecimiento; como al viejo pichirilo que entre atentados !ísicos y velocidadesnunca vistas, me llevo sano y salvo a mi casa todas las noches durante algunos
a-os#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 6/151
5
ÍNDICE DE CONTENIDO
Indice :
. DECLARACIÓN................................................................................................................. 1
. CERTIFICACIÓN............................................................................................................... 2
. DEDICATORIA...................................................................................................................3
. AGRADECIIENTO!....................................................................................................... 4
. "NDICE DE CONTENIDO .................................................................................................5
. RE!#EN.........................................................................................................................13
. $RE!ENTACIÓN..............................................................................................................14
1. CA$IT#LO I% Int&o'u((i)n al T*+a '* T*sis.................................................................151.1. Titulo%....................................................................................................................... 15
1.2. $lant*a+i*nto '*l ,&o-l*+a% ................................................................................... 15
1.3. O-*tivos...................................................................................................................1/
1.3.1. O-*tivo G*n*&al...............................................................................................1/
1.3.2. O-*tivos *s,*(0i(os........................................................................................ 1/
1.4. Al(an(*..................................................................................................................... 1
1.5. I+,o&tan(ia ustii(a(i)n.......................................................................................1
1.5.1. I+,o&tan(ia.......................................................................................................1
1.5.2. ustii(a(i)n...................................................................................................... 1
2. CA$IT#LO II% T*(nolog0a DotNET................................................................................26
2.1. Int&o'u((i)n% ............................................................................................................26
2.2. .NET F&a+*7o&8%.....................................................................................................21
2.2.1. CLI 9Co++on Languag* In&ast&u(tu&*:..........................................................23
2.2.2. ;CL 9;as* Class Li-&a&:%................................................................................25
2.2.3. CLR 9Co++on Languag* Runti+*:.................................................................2/
2.2.4. RE!#EN....................................................................................................... 2
2.3. IDE 9Int*g&at*' D*v*lo,+*nt Envi&on+*nt: ,a&a .NET%........................................ 31
2.4. <*&sion*s '*l .NET F&a+*7o&8%..............................................................................34
2.4.1. .NET F&a+*7o&8 v1.6% .................................................................................... 34
2.4.2. .NET F&a+*7o&8 v1.1% .................................................................................... 34
2.4.3. .NET F&a+*7o&8 v2.6% .................................................................................... 35
2.4.4. .NET F&a+*7o&8 v3.6% .................................................................................... 35
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 7/151
=
2.5. C> 9!?a&,:@ El l*ngua* ,&*'il*(to '*l .NET &a+*7o&8%........................................ 3=
2.=. T&a-aan'o (on DotNET.......................................................................................... 3
2.=.1. Int&o'u((i)n%..................................................................................................... 3
2.=.2. oto& G&i(o 9GDIB:%..................................................................................... 3
2.=.2.1. Li*no 9G&a,?i(s:%.................................................................................... 46
2.=.2.2. L,i(*s 9$*n:%............................................................................................41
2.=.2.3. ;&o(?as 9;&us?:%....................................................................................... 41
2.=.2.4. Figu&as ;si(as%........................................................................................ 42
2.=.2.5. an*o '* I+g*n*s%................................................................................ 44
2.=.3. $unt*&os%........................................................................................................... 4=
2.=.4. ilos 9T?&*a's:%................................................................................................ 4
2.=.5. C&*a(i)n '* Cont&ol*s '* #sua&io%................................................................... 513. CA$IT#LO III% R*'*s N*u&onal*s A&tii(ial*s 9RNA:...................................................=6
3.1. Int&o'u((i)n%.............................................................................................................=6
3.2. R*s*a ist)&i(a%......................................................................................................=1
3.3. N*u&ona ;iol)gi(a%...................................................................................................=3
3.3.1. D*n'&itas...........................................................................................................=3
3.3.2. !ina,sis............................................................................................................. =4
3.3.3. !o+a................................................................................................................. =43.3.4. A)n..................................................................................................................=4
3.4. N*u&ona A&tii(ial%....................................................................................................=5
3.5. $*&(*,t&)n%................................................................................................................==
3.5.1. A,&*n'ia* '*l $*&(*,t&)n% .............................................................................=/
3.5.2. $&o-l*+a '* Os(ila(i)n.................................................................................... =
3.5.3. $&o-l*+a '* Lin*ali'a' ................................................................................... /6
3.=. $*&(*,t&)n ulti(a,a................................................................................................/=3.=.1. N*u&ona a&tii(ial auilia& 9;IA!:% ................................................................../
3./. Algo&it+o '* a,&*n'ia*% ;AC$RO$AGATION................................................1
3./.1. Int&o'u((i)n%..................................................................................................... 1
3./.2. R*su+*n ?ist)&i(o%............................................................................................2
3./.3. Algo&it+o '* A,&*n'ia*%............................................................................... 4
3./.3.1. Ca,a '* !ali'a%........................................................................................../
3./.3.2. #na Ca,a O(ulta%......................................................................................
3./.3.3. G*n*&alia& a N (a,as O(ultas%................................................................. 6
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 8/151
/
4. CA$IT#LO I<% Anlisis .................................................................................................2
4.1. Int&o'u((i)n..............................................................................................................2
4.2. Li+ita(ion*s............................................................................................................. 2
4.3. R*Huisitos................................................................................................................. 3
4.4. R**&*n(ias a ot&os ,&o*(tos................................................................................... /
4.5. Diag&a+as '* Casos '* #so.....................................................................................
4.5.1. Diag&a+a '* Casos '* #so N 1%......................................................................
4.5.2. Diag&a+a '* Casos '* #so N 2%......................................................................
4.5.3. Diag&a+a '* Casos '* #so N 3%.................................................................... 166
4.5.4. Diag&a+a '* Casos '* #so N 4%.................................................................... 161
4.5.5. Diag&a+a '* Casos '* #so N 5%.................................................................... 162
4.5.=. Diag&a+a '* Casos '* #so N =%.................................................................... 1635. CA$IT#LO <% Dis*o ..................................................................................................164
5.1. Int&o'u((i)n............................................................................................................164
5.2. DI!EJO DEL !OFTKARE 9#L:......................................................................165
5.2.1. Diag&a+as '* Clas*s.......................................................................................165
5.2.2. Diag&a+as '* !*(u*n(ia................................................................................. 16
5.2.2.1. Diag&a+a '* !*(u*n(ia N 1% Conigu&a(i)n '* la RNA........................16
5.2.2.2. Diag&a+a '* !*(u*n(ia N 2% Ca+-ia& Fun(i)n Custo+...................... 165.2.2.3. Diag&a+a '* !*(u*n(ia N 3% Ent&*na+i*nto '* la RNA..................... 116
5.2.2.4. Diag&a+a '* !*(u*n(ia N 4% #so '* la RNA ..................................... 111
5.2.2.5. Diag&a+a '* !*(u*n(ia N 5% #so '*l <iso& '* la RNA..................... 112
=. CA$IT#LO <I% Const&u((i)n....................................................................................... 113
=.1. *&&a+i*ntas #sa'as% ............................................................................................113
=.2. Co+,on*nt* RNA.................................................................................................. 114
=.3. Clas* CA$A............................................................................................................11=.4. Clas* Ca,aCol*((ion..............................................................................................126
=.5. Clas* Evalua'o&!t&ing............................................................................................ 121
=.=. Clas* RNA_<iso&...................................................................................................122
/. CA$IT#LO <II% E*+,lo '* A,li(a(i)n 9OCR ;si(o:...............................................124
/.1. Int&o'u((i)n............................................................................................................124
/.2. A'Huisi(i)n '* la vo(al.......................................................................................... 125
/.3. R*'N*u&onal A&tii(ial..........................................................................................12/
/.4. Con(lusion*s '*l OCR............................................................................................12
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 9/151
. CA$IT#LO <III% Con(lusion*s R*(o+*n'a(ion*s....................................................136
.1. Con(lusion*s...........................................................................................................136
.2. R*(o+*n'a(ion*s................................................................................................... 133
. ;I;LIOGRAF"A ...........................................................................................................135
16. ANEMO% anual '* #sua&io.................................................................................... 13=
16.1. Int&o'u((i)n% ........................................................................................................13=
16.2. Ag&*ga& los (ont&ol*s '* IA_RNA....................................................................... 13/
16.3. Conigu&a& la RNA............................................................................................... 13
16.4. Conigu&a& *l <iso&...............................................................................................143
16.4.1. Ca,as.............................................................................................................143
16.4.2. $*sos............................................................................................................. 143
16.4.3. Ta+aos........................................................................................................14416.5. Ent&*na+i*nto.......................................................................................................145
16.=. Consulta................................................................................................................14
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 10/151
Dibujos
. Di-uo 1% .NET F&a+*Ko&8 ORIGEN% $&o,ia '*l auto&.................................................21
. Di-uo 2% Est&u(tu&a '*l F&a+*Ko&8 ORIGEN% $&o,ia '*l auto&...................................36
. Di-uo 3% IDE <isual !tu'io.NET ORIGEN% i(&osot <isual !tu'io .NET 2665...... 32
. Di-uo 4% IDE !?a&,D*v*lo, ORIGEN% !?a&,D*v*lo, v2.6..........................................33
. Di-uo 5% a-ilita& C)'igo No !*gu&o ORIGEN% <isual !tu'io.NET 2665.................. 4/
. Di-uo =% Fluo '* ilos ORIGEN% $&o,ia '*l auto&.......................................................56
. Di-uo /% Nu*vo $&o*(to Class Li-&a& ORIGEN% <isual !tu'io.NET 2665...............52
. Di-uo % Nu*vos (o+,on*nt*s o (ont&ol*s ORIGEN% <isual !tu'io.NET 2665...........53
. Di-uo % $&o,i*'a'*s *n *l ()'igo ORIGEN% $&o,ia '*l auto&......................................5
. Di-uo 16% N*u&ona ;iol)gi(a ORIGEN% $&o,ia '*l auto&............................................. =3
. Di-uo 11% N*u&ona A&tii(ial ORIGEN% $&o,ia '*l auto&.............................................. =5
. Di-uo 12% $&o-l*+a '* Os(ila(i)n ORIGEN% $&o,ia '*l auto&..................................... =
. Di-uo 13% !olu(i)n Lin*ali'a' ORIGEN% $&o,ia '*l auto&........................................... =
. Di-uo 14% Co+,u*&ta AND ORIGEN% $&o,ia '*l auto&................................................ /1
. Di-uo 15% !olu(i)n C. AND ORIGEN% $&o,ia '*l auto&............................................... /2
. Di-uo 1=% $&o-l*+a Lin*al ORIGEN% $&o,ia '*l auto&................................................. /3
. Di-uo 1/% Co+,u*&ta MOR ORIGEN% $&o,ia '*l auto&................................................ /4
. Di-uo 1% $&o-l*+a No Lin*al ORIGEN% $&o,ia '*l auto&........................................... /5
. Di-uo 1% Int*&(on*i)n '* (a,as ORIGEN% $&o,ia '*l auto&......................................./=
. Di-uo 26% Est&u(tu&a '* una RNA ORIGEN% $&o,ia '*l auto&...................................... //
. Di-uo 21% !olu(i)n '* la C. MOR ORIGEN% $&o,ia '*l auto&....................................../
. Di-uo 22% N*u&ona ;IA! ORIGEN% $&o,ia '*l auto&.................................................../
. Di-uo 23% $&o,aga(i)n '* *&&o&*s ?a(ia at&s ORIGEN% $&o,ia '*l Auto&....................1
. Di-uo 24% Davi' E. Ru+*l?a&t ORIGEN%
?tt,%777.g&a7*+**&.(o+,s(?olog,&*vious62.?t+................................................ 3
. Di-uo 25% a+*s L (Cl*llan' ORIGEN%
?tt,%777.g&a7*+**&.(o+,s(?olog,&*vious62.?t+................................................ 3
. Di-uo 2=% Caso '* uso N 1 ORIGEN% $&o,ia '*l Auto&..............................................
. Di-uo 2/% Caso '* uso N 2 ORIGEN% $&o,ia '*l Auto&..............................................
. Di-uo 2% Caso '* uso N 3 ORIGEN% $&o,ia '*l Auto&............................................166
. Di-uo 2% Caso '* uso N 4 ORIGEN% $&o,ia '*l Auto&............................................161
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 11/151
16
. Di-uo 36% Caso '* uso N 5 ORIGEN% $&o,ia '*l Auto&............................................162
. Di-uo 31% Caso '* uso N = ORIGEN% $&o,ia '*l Auto&............................................163
. Di-uo 32% Diag&a+a '* Clas*s ORIGEN% $&o,ia '*l Auto&.........................................165
. Di-uo 33% L**n'a '* Diag&a+as '* Clas*s ORIGEN% $&o,ia '*l Auto&................... 165
. Di-uo 34% Diag&a+a '* Clas*s 9D*tall* 1: ORIGEN% $&o,ia '*l Auto&...................... 16=
. Di-uo 35% Diag&a+a '* Clas*s 9D*tall* 2: ORIGEN% $&o,ia '*l Auto&...................... 16/
. Di-uo 3=% Conigu&a(i)n '* la RNA ORIGEN% $&o,ia '*l Auto&.............................. 16
. Di-uo 3/% Ca+-ia& Fun(i)n Custo+ ORIGEN% $&o,ia '*l Auto&.............................. 16
. Di-uo 3% Ent&*na+i*nto '* la RNA ORIGEN% $&o,ia '*l Auto&..............................116
. Di-uo 3% #so '* la RNA ORIGEN% $&o,ia '*l Auto&...............................................111
. Di-uo 46% #so '*l <iso& '* la RNA ORIGEN% $&o,ia '*l Auto&............................... 112
. Di-uo 41% Clas* RNA ORIGEN% !?a&,D*v*lo, 2.2....................................................11=
. Di-uo 42% $&o,i*'a'*s '*l RNA ORIGEN% Au'a G*n*&a'a (on Do(u+*ntM 5.6...11/
. Di-uo 43% Pto'o Evalua& ORIGEN% !?a&,D*v*lo, 2.2............................................ 11
. Di-uo 44% Au'a% Pto'o Evalua& ORIGEN% Au'a G*n*&a'a (on Do(u+*ntM 5.6
............................................................................................................................................11
. Di-uo 45% Clas* CA$A ORIGEN% !?a&,D*v*lo, 2.2..................................................11
. Di-uo 4=% Clas* Ca,aColl*(tion ORIGEN% !?a&,D*v*lo, 2.2....................................126
. Di-uo 4/% Clas* Evalua'o&!t&ing ORIGEN% !?a&,D*v*lo, 2.2.................................. 121
. Di-uo 4% Clas* RNA_<iso& ORIGEN% !?a&,D*v*lo, 2.2.........................................122
. Di-uo 4% A'Huisi(i)n '* la vo(al ORIGEN% $&o,ia '*l auto&....................................125
. Di-uo 56% ,a&a+*t&ia(i)n '* la vo(al ORIGEN% $&o,ia '*l auto&..............................12=
. Di-uo 51% ;a&&a '* *&&a+i*ntas ORIGEN% $&o,ia '*l Auto&@ *t&a0'o '* !. <isual
!tu'io 2665........................................................................................................................ 13/
. Di-uo 52% <*ntana '* s*l*((i)n '* (o+,on*nt*s ORIGEN% $&o,ia '*l Auto&@ *t&a0'o
'* !. <isual !tu'io 2665................................................................................................ 13. Di-uo 53% I(onos '* los (o+,on*nt*s ORIGEN% $&o,ia '*l Auto&@ *t&a0'o '* !.
<isual !tu'io 2665............................................................................................................. 13
. Di-uo 54% $&o,i*'a'*s '*l (o+,on*nt* RNA ORIGEN% $&o,ia '*l Auto&@ *t&a0'o '*
!. <isual !tu'io 2665..................................................................................................... 13
. Di-uo 55% $&o,i*'a' O(ultas ORIGEN% $&o,ia '*l Auto&@ *t&a0'o '* !. <isual
!tu'io 2665........................................................................................................................ 146
. Di-uo 5=% FT Es(al)n ORIGEN% $&o,ia '*l Auto&.................................................... 141
. Di-uo 5/% FT Lin*al ORIGEN% $&o,ia '*l Auto&.......................................................141
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 12/151
11
. Di-uo 5% FT !ig+oi'* loga&0t+i(a ORIGEN% $&o,ia '*l Auto&.............................. 141
. Di-uo 5% FT !ig+oi'* Tang*n(ial ORIGEN% $&o,ia '*l Auto&...............................142
. Di-uo =6% FT Gauss ORIGEN% $&o,ia '*l Auto&.......................................................142
. Di-uo =1% Conigu&a& *l RNA_<iso& ORIGEN% $&o,ia '*l Auto&.............................144
. Di-uo =2% Ca+-ia& valo&*s '* *nt&a'a '*s'* *l viso& ORIGEN% $&o,ia '*l auto&.......156
. Di-uo =3% *nQ (ont*tual '*l viso& ORIGEN% $&o,ia '*l auto&................................151
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 13/151
12
Códigos
C)'igo 1% E*+,lo '* ()'igo *s(&ito *n C> ORIGEN% $&o,ia '*l Auto&..........................3/
C)'igo 2% E*+,lo '*l uso '* ,unt*&os ORIGEN% $&o,ia '*l Auto&................................ 4
C)'igo 3% Ass*+-lIno ORIGEN% $&o,ia '*l auto&........................................................ 53
C)'igo 4% C&*a& una $&o,i*'a' ORIGEN% $&o,ia '*l auto&..............................................54
C)'igo 5% Pto'o $AINT ORIGEN% $&o,ia '*l auto&......................................................54
C)'igo =% Cont&ol s*n(illo ORIGEN% $&o,ia '*l auto&..................................................... 55
C)'igo /% C&*a& un Ev*nto ORIGEN% $&o,ia '*l auto&....................................................5=
C)'igo % Co+*nta&ios ML ORIGEN% $&o,ia '*l auto&................................................5/
C)'igo % A&gu+*ntos 'o(u+*nta'os ORIGEN% $&o,ia '*l auto&...................................5
C)'igo 16% E*+ '* *nt&*na+i*nto ORIGEN% $&o,ia '*l auto&......................................14=
C)'igo 11% E*+ '*l *v*nto it*&a(i)n ORIGEN% $&o,ia '*l auto&..................................14/
C)'igo 12% D*t*n*& *l *nt&*na+i*nto ORIGEN% $&o,ia '*l auto&...................................14/
C)'igo 13% E*+,lo '* uso (on ;DD ORIGEN% $&o,ia '*l auto&..................................14
C)'igo 14% E*+,lo '*l uso '* i(?*&o ORIGEN% $&o,ia '*l auto&................................14
C)'igo 15% E*+ '* (onsulta ORIGEN% $&o,ia '*l auto&............................................... 14
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 14/151
13
RESUMEN
+l presente trabajo muestra el dise-o y construcción de un control escrito en *.,
que encapsula todas las !uncionalidades de una red neuronal multi/perceptrón
con el algoritmo de aprendizaje 0ac1&ropagation o propagación para atr"s# +l
mismo que podr" ser usado para crear aplicaciones usando este tipo de redes en
cualquier lenguaje de programación soportado por la tecnología Dot2+3 de la
versión 4#5 del 6rame7or1 de 8icroso!t# &ara lograrlo, los controles est"n
encapsulados en un DLL que permite la compatibilidad entre lenguajes#
+l componente que encapsula todas las !uncionalidades de una red neuronal
arti!icial se llamar" RNA por sus siglas# &ero adicionalmente se crear" un control
gr"!ico llamado RNA_Visor que ser" una representación e inter!az gr"!ica de una
92A, dando así una completa herramienta para el estudio y aplicación de las
redes neuronales#
: : :
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 15/151
14
PRESENTACIÓN
Dada la realidad económica y tecnológica de nuestro medio, estoy convencido
que el uso de programas comerciales especializados en materias de inteligencia
arti!icial no es una buena solución, por su alto precio, para la elaboración de
sistemas inteligentes que el medio necesita#
&or esta razón, creo que el uso de so!tare abierto o libre es la mejor alternativa a
la hora de desarrollar una aplicación# +n cuanto a sistemas inteligentes, a la hora
de desarrollar el presente trabajo, no eisten proyectos de so!tare abierto para
inteligencia arti!icial# De modo que el dise-o y construcción de nuestras propias
herramientas se convierte en un eje indispensable; y así es que el presente
trabajo muestra, no solo como programar una herramienta inteligente que en este
caso es una red neuronal, sino que muestra como crear una herramienta, un
control para ser usado en cualquier aplicación y en!oc"ndola al programador y no
a un usuario !inal#
: : :
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 16/151
15
1 CAPITULO I: Introducción al Tema de Tesis
1.1 Titulo:
Dise-o y *onstrucción de una 9ed 2euronal Arti!icial <92A= de
propósito general
1.2 Planteamiento del problema:
*omprendiendo la inmensa necesidad de !omentar la peque-a y mediana
empresa de nuestro país, casi todas las universidades en la actualidad educan
a sus alumnos para competir y desarrollar sus propios bienes y servicios#
Lamentablemente uno de los principales obst"culos que eiste es el di!ícil
acceso a las herramientas de desarrollo que se aprecia m"s en las
especialidades o "reas vinculadas a la tecnología como es el caso de la
robótica e inteligencia arti!icial#
+n el caso especí!ico de 9edes 2euronales Arti!iciales <92A= como
herramienta de desarrollo de procesos inteligentes, resulta casi imposible por
los altos costos# &or ejemplo, una herramienta de programación que permita el
uso de las 92A es el paquete Lab>ie v?#45 de la 2acional (nstrument que se
puede adquirir por un precio de @4,BC %'D ,otro es el paquete de
programación matem"tico 8A3LA0 de 8ath7or1s que sumado el tool1it de
92A llegan a un precio de @,CC5 %'D4 ,y por ltimo el paquete deprogramación 2+%9E(ntelligence alcanza un precio de @,BBB %'D #
Precio consultado en agosto del 2006 en: http://www.ni.com/labview/esa/
2 Precio consultado en agosto del 2006 en: http://www.mathworks.com/store/priceListLink.do
3 Precio consultado en agosto del 2006 en: ?tt,%777.alu'a.(o+
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 17/151
1=
Dada esta realidad social y económica que hace pr"cticamente imposible que
una peque-a empresa !inancie una herramienta de programación de tal
elevados costos, nos encontramos hoy en día con ingenieros que han pasadoa !ormar parte de otros sectores como operarios, realizando !unciones
impropias a las de un ingeniero, que son la investigación y desarrollo de
soluciones; convergiendo en uno de los tantos problemas que nos sitan como
un país consumista y tercermundista#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 18/151
1/
1.3 Objetios
1.3.1 Objetio !eneral.
Dise-ar y construir una red neuronal arti!icial de propósito general que pueda ser
usada en cualquier lenguaje de programación que soporte la tecnología Dot2+3
v4# <8icroso!t 6rame7or1 4#5=
1.3.2 Objetios espec"#icos.
● Desarrollar el so!tare en su totalidad en el lenguaje de programación *.
v4#
● +mpaquetar el programa en un componente o control #2+3 <archivo DLL=
para !acilitar su uso y portabilidad#
● *onstruir una inter!az gr"!ica que muestre la 92A programada y su
!uncionamiento#
● %sar estructuras F8L <Data'ets= para el almacenamiento de los datos
brind"ndole así la posibilidad de interactuar con cualquier base de datos#
● %sar punteros para el c"lculo de pesos y así mejorar la velocidad de
procesamiento#
● %sar programación en hilos para no atascar el !lujo de todo el programa en
los procesos largos de la 92A#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 19/151
1
1.$ Alcance
+l so!tare de 92A a desarrollar estar" basado en la versión 4 del 6rameor1 de
8icroso!t y solo alcanza una compatibilidad directa con los programas y entornosde programación que soporten este !rameor1, tal es el caso de >isual 0asic en
su versión ?, *. 4, *GG para #2+34, >0A para Autocad 455H, etc#
+l uso de lenguajes de programación que permitan una compatibilidad indirecta
con esta tecnología como es el caso de Delphi ?#2+3, >isual 0asic H I H#, *.,
Linu con su proyecto Jo/8E2E, Lab>ie, >isual 0asic K y otros, 2E est"n en el
alcance investigativo de esta tesis aunque en teoría !uncionarían sin problema#
La 92A a programarse nicamente soportar" el algoritmo de aprendizaje
denominado 0ac1&ropagationM#
Así mismo el so!tare esta sujeto a las limitaciones y alcance que posee la
plata!orma 6rame7or1 4#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 20/151
1
1.% Importancia & 'usti#icación.
1.%.1 Importancia.
La herramienta de programación que o!rece el presente trabajo permitir" a
muchos desarrolladores poner en pr"ctica sus conocimientos de 92A de una
!orma !"cil, r"pida y a un costo etremadamente bajo en relación a sus similares,
al distribuirse el control como Fr!"r## 0rindando así una gran ayuda a la
!ormación y crecimiento de la peque-a y mediana empresa que se dedique al
desarrollo de procesos inteligentes#
Adem"s se pretende !omentar el desarrollo a bajos costos de herramientas que
permitan el desarrollo en conjunto del "rea de robótica e inteligencia arti!icial que
tiene poca o ninguna acogida en nuestro país#
1.%.2 'usti#icación.
+l presente trabajo nació de una necesidad real en el desarrollo y aplicación de
procesos inteligentes en una peque-a empresa de Nuito, así como tambi$n en
distintos proyectos o trabajos de tesis presentados contempor"neamente a este#
&or otro lado, dar" una alternativa al o!recer una herramienta que permita estudiar
las 92A de una !orma pr"ctica y no solo teórica#
+l uso de la tecnología #2+3 se eligió por su gran avance y acogida, siendo la
plata!orma usada por m"s de 45 lenguajes hoy en día <>isual 0asic, Ada, *obol,
&erl, *GG, Oava, etc= , siendo *. su lenguaje por ecelencia#
Adem"s la etensa documentación que lo sustenta lo hace la mejor opción para
un trabajo de esta naturaleza# Y por ltimo, la visión a corto plazo que plantea
esta tecnología lo hace compatible con diversas plata!ormas como Linu,
8acintosh, 'olaris, etc#
4 !ot7a&* '* 'ist&i-u(i)n g&atuita sin l0+it* '* ti*+,o. ?tt,%*s.7i8i,*'ia.o&g7i8iF&**7a&*
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 21/151
26
2 CAPITULO II: Tecnolo("a )ot*+T
2.1 Introducción:
La creciente demanda de los programadores para desarrollar aplicaciones
multimedia y 7eb obligaba a plata!ormas como 7indos a desarrollar sobre la
marcha A&(s <Application &rogramming (nter!ace= cada vez m"s elaborados y
complejos que carecían de documentación detallada y en muchos casos caían en
incompatibilidades y errores#
La solución empezó a dialogarse en las mesas de los ejecutivos de
8icroso!t a !inales de los B5Ps, y así en Oulio del 4555, su presidente, 0ill Jates
anunciaba al mundo en la Profesional Developer Conference <PDC$% de Erlando
una vista preliminar de lo que sería una nueva plata!orma de desarrollo que
uni!icaría todos los "mbitos del so!tare, desde aplicaciones de escritorio
pasando por entornos 7eb, Dispositivos móviles, 0ases de Datos, entre otros#
*omo era de esperarse, 8icroso!t copio la idea que tan bien le estaba
!uncionando a la empresa 'un 8icrosystems con su lenguaje OA>A, y decidió
usar un compilador O(3 así como un lenguaje hibridado entre *GG y 0asic < *. =K#
&ero no se con!ormaron solo con eso, pensaron en ir m"s all" y establecer
un est"ndar a nivel internacional y lograr que cualquier lenguaje de programaciónpueda ser usado con su tecnología, y que esta cubriera todos los "mbitos de
programación eistentesQ &EE, Jr"!icos, 8ultimedia, 0DD, 7eb, Dispositivos
móviles, Ouegos, etc#
5 ?tt,%777.+i(&osot.(o+$&*ss,ass,&*ss2666ul66,'(gat*s8*not*,&.+s,
= Con(lusion ,&o,ia '*l auto&
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 22/151
21
2.2 .*+T ,rame-or:
+l !rameor1, traducido al espa-ol como marco de trabajoM aunque se
recomienda mantener la palabra en ingl$s por su concepto dedicado, es el
corazón de la tecnología Dot2+3 y aunque !ue impulsada por 8icroso!t, en su
desarrollo intervinieron empresas comoQ Relett/&ac1ard , (ntel, (08, 6ujitsu
'o!tare, &lum Rall, la %niversidad de 8onash e ('+
Jeneralizando un poco, se puede decir que el .NET Framework es a la
tecnología 2+3 como el Java Virtual Machine, JRE y J2SE es al Oava# +s decir,
el !rameor1 constituye el vínculo entre el sistema operativo y el programa
generado bajo la tecnología Dot2+3, dando así una transparencia al código alresolver el problema de incompatibilidad que se daba al tener que tomar en
cuenta el sistema operativo base, su versión, e incluso su con!iguración al
programar#
%n dato muy importante que cabe recalcar es que muchos de los elementos
de la tecnología Dot2+3 !ueron estandarizados bajo normativas internacionales, y
por lo tanto abiertas a todo el mundo# La normativa que rige al #2+3 !rameor1 es
Dibujo 1: .!" #rame$ork % &'()!: Propia del autor
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 23/151
22
la ECMA&''%( ISO)IEC *'*+,+# 0asado en esto la versión de 8icroso!t toma el
nombre deQ Microsoft .NET Framework y no es el nico eistente, hoy en día
eisten varios aunque el de 8icroso!t constituye el m"s usado y !amoso; no
obstante la empresa -i.i"/ y m"s tarde No011, ambas encargadas de dar vida a
los programas de código libre entre ellos Linu, empezó con la tarea de crear un
#2+3 !rameor1 para todas los sistemas operativos, y al proyecto lo llamaronQ
MONO2, el cual ya esta disponible de !orma gratuita en su p"gina eb y ha tenido
mucha acogida por programadores de 7indos, Linu, 'olaris y 8ac E' F#
+l #2+3 6rameor1 se divide en las siguientes partesQ
● (n!raestructura comn de lenguajes o *L(
● La 0iblioteca de *lases 0ase o 0*L
● +ntorno *omn de +jecución para Lenguajes o *L9
/ ?tt,%777.+i(&osot.(o+$&*ss,ass,&*ss2666ul66,'(gat*s8*not*,&.+s,
?tt,%777.+ono,&o*(t.(o+
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 24/151
23
2.2.1 CLI 3Co..o/ L"/gu"g I/4r"s5ru65ur$
+l propósito del *L( es soportar una gran gama de lenguajes de
programación y traducirlos a un lenguaje comn propio del !rameor1 conocidocomo MSIL <8icroso!t (ntermediate Lenguaje= que ser" usado luego por el
compilador O(3#
Así, el *L( se encarga de brindar una in!raestructura que debe cumplir
todos los lenguajes que quieran !uncionar bajo la tecnología #2+3, adem"s se
encarga de la validación del mismo y de su respectiva compilación para alcanzar
el código 8'(L que ser" un lenguaje parecido al ensamblador y resultado !inal del
programa# +s decir un programa realizado en #2+3 nunca alcanza el lenguaje de
m"quina del computador por si solos, sino que queda epresado en este lenguaje
8'(L que cumple la misma !uncionalidad que el lenguaje llamado 0Y3+*ED+ en
Oava#
&uesto de esta manera, es posible usar cualquier lenguaje deprogramación que cumpla las especi!icaciones del *L( para poder usar la
tecnología #2+3, y es por esto que hoy en día tenemos varios lenguajes a nuestra
disposición# Los o!recidos por 8icroso!t sonQ C7( C88( Visu"1 9"si6 : ;7( no
obstante muchas empresas han brindado a sus propios lenguajes de
programación la compatibilidad con el *L( del #2+3 !rameor1 de 8icroso!t, y es
así que hoy en día se puede encontrar lenguajes como< D1=>i?NET( Pr1(
P:5>o/( For5r"/ : Cobo1?NET entre otros# Rasta la !echa se han sumado m"s de
30 lenguaes de programaci!n" que pueden ser usados en la tecnología #2+3#
+l *L( posee internamente un compilador para cada uno de los lenguajes a
usarse, y es así que realizar un programa en >isual 0asic no va a ser igual que
realizarlo en un *., las di!erencias de velocidad, alcance, entre otras va a seguir
dando las mismas di!erencias que siempre# %n lenguaje eterno como los
?tt,%777.'otn*t,o7*&*'.(o+languag*s.as,
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 25/151
24
mencionados antes <Delphi, *obol, 6ortran, etc= deben de poseer un compilador
eterno, y claramente ser compatible con el *L( y m"s especí!icamente con el
*L' <*ommon Language 'peci!ication= que es la parte del *L( donde se
encuentran las reglas a seguir para validar o no un lenguaje, adem"s usar el *3'
<*ommon 3ype 'ystem= que es el encargado de brindar un sistema de tipos nico
para todos los lenguajes de programación, es decir, para todos los lenguajes
basados en #2+3 las variables como int, string, long, doubleM van a tener el
mismo tama-o en bits, y los mismos limites#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 26/151
25
2.2.2 9CL 39"s C1"ss Libr"r:$<
+sta biblioteca es un conjunto muy bien organizado de clases que abarcan
las !unciones m"s comunes para todo programador#
+st"n de!inidas como archivos DLL lo que signi!ica que est"n en código 8'(L y
por lo tanto pueden ser usadas de !orma transparente por cualquier lenguaje #2+3
Aquí una lista de las principales !uncionalidades que se pueden encontrar en esta
biblioteca de clasesQ
● (nteracción con los dispositivos peri!$ricos
● 6ormularios y componentes para aplicaciones de escritorio <7indos
6orms=
● 8anejo de datos <ADE#2+3=
● Administración de memoria
● 3ransmisión y recepción de datos por distintos medios <F8L, 3*&I(&=
● Administración de componentes 7eb que corren tanto en el servidor como
en el cliente <A'+3=
● 8anejo y administración de ecepciones
● 8anejo del sistema de ventanas
● Rerramientas de despliegue de gr"!icos <JD(G=
● Rerramientas de seguridad e integración con la seguridad del sistema
operativo
● (nteracción con otras aplicaciones
● 8anejo de cadenas de caracteres y epresiones regulares
● 8anejo de archivos, !icheros y streams#
● Eperaciones aritm$ticas
● 8anipulación de !echas, zonas horarias y periodos de tiempo
● 'erialización
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 27/151
2=
● 8anipulación de archivos de im"genes
● Jeneración de código
● 8anejo de idiomas
● (nteracción con el A&( 7in4 o 7indos A&(#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 28/151
2/
2.2.3 CLR 3Co..o/ L"/gu"g Ru/5i.$
+s el verdadero ncleo de la tecnología #2+3, se encarga de las !unciones
principales de un buen motor de ejecución, cumpliendo tambi$n las !unciones dedepuración, organización de memoria, seguridad y m"s#
Las !unciones que cumple sonQ
• *arga las di!erentes clases de la 0*L, recursos y las uni!ica al programa#
• 8aneja la iteración con antiguos componente *E8 que no son propios de
la tecnología #2+3
• *ontrola todos los recursos de memoria para soportar hilos <threads=
• >eri!ica y valida los di!erentes tipos a usarse
• *ontrola las ecepciones
• 8otor de seguridad
•
8otor de depuración• *ontrolador de código en general
• 9ecolector de basura <Jarbage *olector J*M=
• *ompilador O(3
+l *ompilador O(3 <Oust/(n/3ime= es un motor que corre en tiempo real generando
a partir del código 8'(L un lenguaje de m"quina propio de cada computador# +ste
es en realidad el que otorga a la tecnología #2+3 la compatibilidad con los
di!erentes sistemas#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 29/151
2
*uando uno realiza un programa en la tecnología #2+3, este programa ya en su
etapa de release, por ejemplo un ejecutable +F+; el #2+3 !rameor1 lo deja
epresado en el código 8'(L, cuando es ejecutado el programa, el motor O(3 lo
trans!orma en tiempo real al lenguaje de m"quina del computador local# +n caso
de que el programa !uese usado en otra computadora con otro sistema operativo
y otro procesador# +l programa ser" interpretado por el motor O(3 de la otra
m"quina, como el lenguaje 8'(L sigue siendo el mismo, el motor O(3 del nuevo
computador traducir" en tiempo real el código 8'(L a un nuevo lenguaje de
m"quina perteneciente a esta nueva computadora# Etorgando así la !leibilidad de
tener un programa que pueda correr en varias computadoras con di!erentes
con!iguraciones, siendo el !rameor1 el encargado de realizar los cambios
respectivos, dando al programador total transparencia#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 30/151
2
2.2.$ RESUMEN
&ara simpli!icar las cosas, podemos decir que el !rameor1 es el motor que
corre entre el usuario y el sistema operativo, siendo claramente indispensabletenerlo instalado en la computadora donde se quiera ejecutar cualquier programa
bajo la tecnología #2+3
+l !rameor1 es un est"ndar a nivel mundial, siendo 8icroso!t la empresa
que lo impulso y por lo tanto la pionera en esta tecnología#
+l 8icroso!t #2+3 6rameor1 es la versión de 8icroso!t de este !rameor1, y es
completamente gratuito, pudiendo ser descargada desde el (nternet# &ero no es el
nico !rameor1 bajo la tecnología #2+3, el proyecto 8E2E es una alternativa al
!rameor1 de 8icroso!t impulsado por la grande del código libre 2ovell#
+l !rameor1 se divide en tres partes !undamentalmenteQ
• +l *L(, encargado de compilar y validar un código escrito en muchos de los
lenguajes de programación eistentes para la tecnología #2+3 y dar como
resultado un código ensambler virtual conocido como 8'(L#
• +l 0*L es la biblioteca de clases en las que se encuentran todas las
!unciones m"s comunes que un programador pueda requerir para una
aplicación#
• +l *L9 es el motor que ejecuta el código 8'(L y lo trans!orma al código de
m"quina requerido de !orma di!erente en cada computador#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 31/151
36
Dibujo 2: !structura del #rame$ork % &'()!: Propia del autor
*. >0#2+3
CLI / Common Lan(ua(e In#rastructure 0
8'(L
1CL /1ase Class Librar&0
CL2 /Common Lan(ua(e 2untime0
8'(L
D55D5DD5DD5DD5DDD5
'('3+8A E&+9A3(>E
8icroso!t #2+3
6rame;or1
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 32/151
31
2.3 I)+ /Inte(rated )eelopment +nironment0 para .*+T:
*omo todos sabemos un (D+ es una #ntorno $ntegrado de Desarrollo que
brinda a un programador varias herramientas entre ellas una inter!az gr"!ica deusuario <J%(=, un int$rprete, coloración de sintais entre otras; para !acilitar el
trabajo a la hora de programar#
+l #2+3 6rameor1 como vimos anteriormente consta internamente de
compiladores para los lenguajes promocionados por 8icroso!t, entre los que se
encuentran *. y >isual 0asic principalmente# 3eniendo la posibilidad de realizar
nuestros programas sin pagar un solo centavo por licencias de programas, al ser
como ya dijimos el #2+3 !rameor1 una aplicación !reeare que se puede
descargar de (nternet#
&ero hay que estar consientes que esto involucra escribir nuestro código en
algn editor de teto que ya dispongamos como el 0loc de 2otas, y hacer la
respectiva compilación desde un entorno de consola de comandos <DE'=# Asícomo no disponer de dise-adores gr"!icos para las aplicaciones con !ormularios
lo que resulta un dolor de cabeza#
Dado el mencionado problema, vemos la gran ayuda que signi!ica el uso de
un (D+ para la tecnología #2+3, y es aquí que 8icroso!t lanza al mercado el (D+
m"s usado en el mundo para esta tecnología, conocido comoQ Mi6roso45 Visu"1
S5udio?NET, que sirve como (D+ para todos los lenguajes de 8icroso!t, no
obstante si se desea un (D+ para un lenguaje nada m"s podemos encontrar uno
dedicado a >isual 0asic llamado Mi6roso45 Visu"1 9"si6?NET, o para *.
conocido como Mi6roso45 Visu"1 C7?
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 33/151
32
&ero cabe recalcar que el paquete 8icroso!t >isual 'tudio#2+3 es tan solo
un (D+ de la tecnología #2+3 y no el motor indispensable# De ahí que no es el
nico (D+ eistente en el mercado, aunque si el mejor y por lo tanto el m"scostoso#
Dibujo *: (D! +isual ,tudio.!" % &'()!: -icrosot +isual ,tudio .!"
200
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 34/151
33
Race varios a-os ya, un grupo de personas empezaron la tarea de o!recer a los
programadores de #2+3 un (D+ !reeare y de ahí que hoy podemos descargar de
!orma gratuita el tan !amoso S>"r=D01o=
<#icsharpcode#netIEpen'ourceI'D= que por menos de 580 <versión 4#5= ,
podemos tener un (D+ de altísimo nivel, igualando en casi todos los aspectos al
(D+ de 8icroso!t#
Dibujo : (D! ,harpDeelop % &'()!: ,harpDeelop 2.0
'harpDevelop tuvo tan buena acogida en el mercado de los programadores
a nivel mundial que obligo a 8icroso!t a hacer algo que hace algunos a-osparecía imposible que lo llegue a hacer, me re!iero concretamente a su versión
+press del paquete 455C, el cual da a sus usuarios una versión !reeare de su
(D+ del cual hablaremos m"s adelante#
Ambos (D+s cumplen los requisitos mínimos que un programador necesita,
entre ellos, un dise-ador gr"!ico de !ormularios, coloración de sintais, coloración
de errores, base de datos de los m$todos y propiedades de una clase <lista que
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 35/151
34
aparece indicando los m$todos y variables que posee una clase=, depuración,
entre otros# 2o obstante cabe se-alar que segn mi apreciación personal, la
versión de 8icroso!t es un poco m"s r"pida y consta de mejores herramientas
que el 'D, aunque se debe tomar muy en cuenta que el >isual 'tudio viene en 4
*Ds en comparación a los 580 del 'harpDevelop#
2.$ ersiones del .*+T ,rame-or:
Desde el a-o 4555 cuando !ue presentada la idea de la tecnología #2+3, se
empezó a trabajar en la construcción de un !rameor1 que alcanzara tal nivel de
pro!undidad que se pueda construir todo un sistema operativo sobre $l# Ran
pasado casi H a-os desde entonces y las ambiciones de 8icroso!t se est"n
materializando#
2.$.1 ?NET Fr".@or 0,?B<
'u primera versión vio la luz a !inales del 455 y vino de la mano con la salida de
Visu"1 S5udio?NET *BB* o vH#5, la que incluía claro la versión H de >isual 0asic y
la primera versión de *., este nuevo lenguaje que m"s adelante le dedicaremos
principal atención#
2.$.2 ?NET Fr".@or 0,?,<
&oco tiempo despu$s de la salida de su primera versión, los cambios y parches
en el !rameor1 eran tan grandes que obligaron a sacar al mercado una versión
# del !rameor1 acompa-ada del Mi6roso45 Visu"1 S5udio *BB' que incluía a
>isual 0asic H# y a *. # # +sta versión es por muchos considerada la primera y
dejo completamente descontinuada a la 4554#
La gran acogida de esta tecnología por los programadores de todo el mundo
sorprendió hasta a los mismos ejecutivos de 8icroso!t, incrementando sus
usuarios en una proporción geom$trica jam"s vista#
+s aquí cuando 'harpDevelop sale al mercado con su versión #5
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 36/151
35
2.$.3 ?NET Fr".@or 0*?B<
&ara el 455C, la llegada de la segunda versión rompió todos los esquemas, dando
completa integración a los programas desarrollados en las versiones anteriores,acompa-ada por el Mi6roso45 Visu"1 S5udio?NET *BB%, la que incluía claro la
versión ? de >isual 0asic y la tan esperada segunda versión de *.# Las mejores
son muy considerables a todo nivel y es actualmente la versión m"s usada en el
mundo para las aplicaciones #2+3, integrando cientos de programas escritos en
esta tecnología, por mencionar alguno al propio Auto*AD 455H de la !irma
AutoDes1# 'harpDevelop claro, lanzó su segunda versión con este nuevo #2+3
6rameor1#
2.$.$ ?NET Fr".@or 0'?B<
Actualmente la acogida en el mundo de los programadores de #2+3 es tan grande
y sobretodo tan creciente que 8icroso!t decidió jugarse todo por el todo con esta
tecnología, y así la llegada del !rameor1 #5 en estas !echas <+nero 455H= nos
trae no solo una versión mejorada, sino la gran sorpresa que quedar" escrita enlos libros, me re!iero concretamente la llegada del nuevo 7indos >ista, el primer
sistema operativo escrito en su totalidad en código 8'(L, es decir en un lenguaje
de alto nivelM, rompiendo la tradición de escribirlo en lenguaje de m"quina# Las
ventajas de este hecho hace que todo el sistema operativo y por lo tanto todos
programas estar"n basados en la tecnología #2+3 y por lo tanto al hacer una
aplicación en #2+3 estaremos al mismo nivel que todo, teniendo completo control
y transparencia#
8icroso!t ha anunciado el desarrollo de una versión #C del !rameor1,
cuyo (D+ est" bajo el nombre clave de ORCAS y ser" la versión 455? del >isual
'tudio#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 37/151
3=
2.% C4 /56arp07 +l len(uaje predilecto del .*+T #rame-or:
+l lenguaje m"s usado de todos los tiempos sin duda es el *GG por su gran
alcance, sin embargo su inminente di!icultad hizo que lenguajes tan super!icialesM
como el 0asic llegaran a las manos de todos por su sencillez y sobretodo por su
velocidad de desarrollo#
Oava, a !inales de los B5, propondría un nuevo lenguaje que hibridara la
sencillez del 0asic con la potencialidad del *GG, marcando un interesanteequilibrio entre los dos# La acogida de este lenguaje marco la historia, teniendo
hoy en día a Oava entre los primeros lenguajes de programación m"s usados en
el mundo entero#
Así es como 8icroso!t aposto a la creación de un nuevo lenguaje similar a
Oava, y para esto contrato a una leyenda de la programación, encargada de dar
vida al &ascal y a Delphi, me re!iero a A/drs j1sbrg,B, que !ue el arquitectode *. y uno de los encargados de dar vida a la tecnología Dot2+3#
'u sintais se apega a una derivación del *, como casi todos los lenguajes
lo han hecho, !ormando poco a poco en lo que algn día, creo yo, ser" un
est"ndar# +sto es la utilización de ;M para el !in de instrucción, el uso de llaves
S TM, la distinción entre maysculas y minsculas, por mencionar algunas#
16 ?tt,%*s.7i8i,*'ia.o&g7i8iAn'*&s_*ls-*&g
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 38/151
3/
Adem"s el *. constituye el lenguaje clave para la tecnología #2+3, de ahí
que todo lo que se pueda hacer con esta tecnología, se podr" hacer desde *.,
siendo el resto de lenguajes los que se deban acoplar#
&or citar un ejemplo, el propio (D+ antes mencionado, el 'harpDevelop
esta escrito en su totalidad en *.# 3eniendo en este lenguaje entre los 5 m"s
usados en el mundo, lo que es un r$cord tomando en cuenta que la vida de *. es
de tan solo C a-os con respecto a Oava que lleva m"s de C a-os#
3digo 1: !jemplo de c3digo escrito en 4 % &'()!: Propia del 5utor
public Form1() { InitializeComponent(); }
private Stopwatch temporizador; private const int cuantasCadenas = !!!!; private void btnCalcular"Clic#(ob$ect sender% &vent'rs e) { btnCalcular&nabled = *alse; btnCalcular+e*resh(); ,, -a prueba de Strin.uilder (/ue tarda menos) thist0tStrin.uildere0t = 23rueba4 ,, -a prueba de Strin (/ue tarde un poco m5s) thist0tStrine0t = calcularStrin()oStrin(); btnCalcular&nabled = true;
btnCalcular+e*resh(); }
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 39/151
3
2.8 Trabajando con )ot*+T
2.8.1 Introducción:
*omo ya lo había mencionado, dentro de todos los lenguajes que se
pueden usar dentro de la tecnología Dot2+3, vamos a usar el *. <'harp= puesto
que es el lenguaje por ecelencia de Dot2+3, es decir, el *. constituye un
lenguaje creado eclusivamente para esta tecnología y por ende resulta el m"s
compatible y en $l se pueden eplotar al m"imo todas las herramientas que
brinda Dot2+3#
Al igual que la mayoría de lenguajes de cuarta generación, el *. brinda
una programación estructurada, programación orientada a objetos <&EE=, y
dem"s# &ero en el desarrollo del presente trabajo se utilizaron algunas
herramientas poco usuales en cuanto a este lenguaje y tecnología se re!iere,
como esQ
+l motor gr"!ico JD(G propio de la tecnología Dot2+3 que nos da la !acilidad de
dibujar a un ecelente nivel, pudiendo resolver !"cilmente los problemas deparpadeo que aparecen siempre que intentamos realizar algn tipo de animación,
solo por poner un ejemplo#
+l uso de punteros que era una tarea casi eclusiva para *GG, ahora se
puede hacer desde *., claro, usando ciertas protecciones para combinar el
código administrado por el motor de la tecnología Dot2+3 <código seguro= y el
código en el que usamos punteros <código no seguro=#
A estas herramientas le aumentamos el uso de hilos para poder correr
varios procesos en paraleloM y una eplicación de como crear controles de
usuario encapsulados en una DLL para poder usarlos desde cualquier lenguaje de
esta tecnología y tendremos todas las herramientas que se han usado en el
desarrollo del presente trabajo#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 40/151
3
2.8.2 9otor !r#ico /!)I;0:
+l JD( por sus siglas en inglesQ Gr"=>i6s D0i6 I/5r4"6,,, es el motor
gr"!ico del sistema operativo indos, y constituye, como todo motor, de un A&(programado originalmente en *GG que nos permite usar esta librería# +sta librería
gr"!ica ha sido modi!icada constantemente para cubrir los grandes avances de las
presentaciones gr"!icas, y es así que para indos F&, los desarrolladores de
microso!t re/hicieron toda la librería gr"!ica dando nacimiento al JD(G, que como
su nombre lo indica es una evolución del mismo#
La tecnología Dot2+3 ha incluido una librería de comunicación directa y en
bajo nivel al JD(G de indos, d"ndonos así la posibilidad de usar esta potente
herramienta de !orma natural y sencilla desde cualquier lenguaje de Dot2+3#
+l JD(G se divide en tres partes principalmenteQ
● Dibujo en 4DQ +sta parte permite dibujar lineas, cuadrados, elipses, y
dem"s !iguras en cualquier parte de nuestros controles, incluyendo los
!ormularios# A esta parte se le ha agregado varias !uncionalidades muy
tiles como los degradados, sistema de colores A9J0, es decir incluyendo
el componente de Al!a que da niveles de transparencia; entre otras
mejoras#
● 8anejo de im"genesQ *on esta parte podemos abrir, manipular y guardar
im"genes que abarcan todos los !ormatos conocidos, como son el 08&,
O&J, J(6, &2J, entre otros# La manipulación de las mismas se la puede
hacer piel por piel, o con matrices de trans!ormación y rotación#
● 8anejo de 3etosQ JD(G incluye un completo algoritmo para le manejo detetos en el dibujo, pudiendo usar degradados, estilos de linea y m"s en la
gra!icación de tetos#
+n *., el uso de esta librería se da por medio del ensambladoQ S:s5.?Dr"@i/g
Nue a su vez contiene varios ensamblados y clases como por ejemploQ
Draing4D, 3et, (maging, etc#
11 ?tt,%777.+i(&osot.(o+7?'(a&(?iv*GDIn*t.+s,
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 41/151
46
2.6.2.% &ien'o ()raphics*:
+l lienzo, epresado en una clase de nombre Gr"=>i6s, es la clase base
para poder dibujar cualquier cosa en JD(G# Y pues, igual que un lienzo real, es loprimero que hay que tener antes de dibujar aun quesea una linea# +n Dot2+3, el
lienzo es de color transparente y puede ser etraído de casi cualquier lado,
teniendo entre las !ormas m"s comunes las siguientesQ
● es!e una "ma#en$ 3eniendo un objeto de tipo I."g o 9i5."= que
luego trataremos m"s a !ondo, podemos etraer un lienzo con el siguiente
códigoQ
G&a,?i(s g G&a,?i(s.F&o+I+ag*9i+ag*n:S
● es!e un %ontrol$ 3eniendo cualquier control con inter!az gr"!ica, como
un !ormulario, botón, etiqueta, panel, u otro controlQ
G&a,?i(s g control .C&*at*G&a,?i(s9:S
● &san!o el evento '("NT$ 3odos los controles poseen un evento
denominado &A(23, que se genera cuando indos requiere volver a
dibujar dicho control# Así podemos capturar este evento y como argumentodel mismo, tenemos a nuestra disposición el lienzo u objeto Jraphics con
el que podemos alterar lo dibujado en el control#
,&ivat* voi' (ont&ol_$aint9o-*(t s*n'*&@ $aintEv*ntA&gs *:
G&a,?i(s g *.G&a,?i(sS
U
+isten varias !ormas m"s de conseguir un lienzo, pero estas son las m"s
usadas# *abe recalcar que cuando se etrae el lienzo de una imagen, todos los
dibujos se quedan intrínsecamente en la imagen y por lo tanto mantiene sus
modi!icaciones# &ero cuando se etrae el lienzo desde un control directamente,
los dibujos realizados sobre este se ejecutan una nica vez, y esto se re!leja al
minimizar por ejemplo el !ormulario, los dibujos se habr"n borrado al restaurar el
!ormulario# &ara lograr que el control mantenga sus dibujos siempre, se usa el
evento &A(23, así se dibujara cada vez que se lo solicite#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 42/151
41
2.6.2.2 &+pices (Pen*:
Los l"pices son clases que representan el estilo con el que se quiere
dibujar la silueta o contorno de algo# &or ejemplo, para crear un l"piz de color Azuly de un grosor de se usaría el siguiente códigoQ
$*n ,1 n*7 $*n9Colo& .;lu*@3:S
+sta clase es muy completa, puesto que permite crear lapices con distintos
colores, teturas, !ormas de empezar como una !lecha por ejemplo, etc#
2.6.2.3 ,rochas (,rush*:
Las brochas son clases que sirven para rellenar un dibujo# &rincipalmente se
puede tenerQ
● 'olid0rush Q +s una brocha de un solo color#
!oli';&us? s-1 n*7 !oli';&us?9Colo& .G&**n:S
● Ratch0rush Q +sta brocha combina dos colores de varias !ormas
predeterminadas#
at(?;&us? -1 n*7 at(?;&us?9at(?!tl*.!?ingl*@ Colo& .;lu*@ Colo& .R*':S
● LinearJradient0rush Q &ermite usar una gradiente lineal de varios colores#
Lin*a&G&a'i*nt;&us? l-1 n*7 Lin*a&G&a'i*nt;&us?
9n*7 $oint96@ 56:@ n*7 $oint9166@ 56:@ Colo& .;lu*@ Colo& .R*':S
● &athJradient0rushQ +sta permite una gradiente de !orma circular de varios
colores#
G&a,?i(s$at? g,1 n*7 G&a,?i(s$at?9:S
g,1.A''R*(tangl*9n*7 R*(tangl*96@6@166@166::S $at?G&a'i*nt;&us? ,-1 n*7 $at?G&a'i*nt;&us?9g,1:S
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 43/151
42
,-1.C*nt*&Colo& Colo& .Lig?tV*llo7S
,-1.!u&&oun'Colo&s n*7 Colo& WX Colo& .Lig?tG&**n@ Colo& .Lig?tG&**n@
Colo& .G&**n@ Colo& .Da&8G&**n US
● 3eture0rush Q *on esta brocha podemos usar una imagen como papel
tapiz de nuestro relleno#
T*tu&*;&us? t-1n*7 T*tu&*;&us?9I+ag*.F&o+Fil*9YZC%[guill*.,gZ::S
2.6.2.- iguras ,+sicas:
+ntre los m$todos que encontramos en el lienzo <Jraphics=, se ven
claramente dos grupos, los llamados D9A7 y los llamados 6(LL, con quienes se
pueden gra!icar todas las !ormas b"sicas de dibujo como son las lineas,
rect"ngulos, elipses, teto, etc#
Los D9A7 est"n basados en l"pices, por lo tanto solo dibuja siluetas o
contornos# Así se puede tener los siguientes códigosQ
g.D&a7Lin*9,1@ 6@ 6@ 166@ 166:S g.D&a7R*(tangl*9,2@ 166@ 166@ 266@ 266:S
g.D&a7Elli,s*9,1@ 166@ 166@ 56@ 56:S g.D&a7Elli,s*9n*7 $*n9Colo& .R*':@ 166@ 166@
156@ 56:S
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 44/151
43
3odos los m$todos del tipo D9A7 dentro de la clase Jraphics sonQQ
D&a7A&(
D&a7;*i*&
D&a7Clos*'Cu&v*
D&a7Cu&v*
D&a7Elli,s*
D&a7I(on
D&a7I+ag*
D&a7I+ag*#ns(al*'
D&a7Lin*
D&a7Lin*s
D&a7$at?
D&a7$i*
D&a7$olgon
D&a7R*(tangl*
D&a7R*(tangl*s
D&a7!t&ing
&or otro lado, cuando usamos los m$todos 6(LL, estos est"n dirigidos a rellenarlas !ormas, así tenemos lo siguienteQ
g.FillElli,s*9s-1@ 6@ 6@ 166@ 166:S g.FillElli,s*9?-1@ 6@ 6@ 166@ 166:S
g.FillR*(tangl*9,-1@ 6@ 6@ 166@ 166:S g.FillElli,s*9t-1@ 6@ 6@ 366@ 366:S
*omo se ve, en los ejemplos usamos las distintas brochas que creamos
anteriormente#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 45/151
44
La lista de m$todos 6(LL dentro de la clase Jraphics sonQ
6ill9egion
6ill9ectangle
6ill9ectangles
6ill&olygon
6ill&ie
6ill&ath
6ill+llipse
6ill*losed*urve
2.6.2. aneo de $m+genes:
+l manejo de im"genes es muy etenso, y como no se uso el tema en el
presente trabajo, solo dar$ una breve introducción a lo que a im"genes se re!iere#
+l JD(G divide el trato de im"genes en dos grandes clases#
IMAGE< +s la clase que soporta una im"gen y est" en!ocada a tratar la
manipulación de la imagen a un nivel de archivo# +s decir, abrir la imagen, grabar
en un !ormato establecido, etraer in!ormación de la misma, presentarla en un
&citure0o, etc
I+ag* i+ag*n1 I+ag*.F&o+Fil*9YZC%[guill*.,gZ:S
IT9AP: Esta (las* ta+-iPn (onti*n* una i+ag*n ,*&o *st *no(a'a al t&ato '* los
,i*l*s '* la i+ag*n. Es '*(i&@ *n (uanto a +o'ii(a& los ,i*l*s s* t&ata@ *st* o-*to *s *l
Hu* lo ,*&+it* ?a(*&. A'*+s@ *sta (als* ,*&+it* instan(ia&s* a 'i*&*n(ia '* la IAGE@
(&*an'o as0 una nu*va i+ag*n.
;it+a, -+1 n*7 ;it+a,9166@ 166:S
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 46/151
45
+stas dos clases !uncionan casi siempre a la par, puesto que cada una contiene
!uncionalidades requeridas a lo largo de un trabajo de procesamiento de
im"genes# Y son 55U compatibles en cuanto a intercambiabilidad se re!iere# +s
decir, si se requiere pasar una imagen para que sea un objeto 0(38A& o (8AJ+,
basta con hacer el debido castingQ
i+ag*n1 9I+ag*:-+1S
-+1 9;it+a,:i+ag*n1S
&ara tratar con cada uno de los pieles, es necesario tener la imagen en un objeto
0(38A& y usar los m$todosQ
-+1.G*t$i*l9@ :S
-+1.!*t$i*l9@ @ Colo& .R*':S
Donde F,Y son las coordenadas del piel que se quiere leer o escribir# +l piel
esta representado por un color que es toda una clase que brinda !acilidades para
el trato de colores#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 47/151
4=
2.8.3 Punteros:
2ormalmente, las variables, objetos o recursos que usamos en nuestros
programas son alojados de !orma din"mica en la memoria 9A8 de nuestrocomputador, esto signi!ica que dependiendo de las necesidades del sistema
operativo, este tiene la potestad de mover los espacios de memoria 9A8 que
usamos# Jracias a esto, conseguimos que nuestros programas no inter!ieran con
otros que puedan estar corriendo en un computador# 2o obstante, algunas veces
es necesario alojar un paquete de datos en la memoria 9A8 y que este no se
mueva de ahí en un tiempo, adem"s, al tenerlo !ijo es posible acceder a estos
datos de !orma directa# A esto se le conoce como Atacar directamente a lamemoria 9A8M# Las ventajas que se consiguen al hacer esto es principalmente
velocidad#
+n *., el uso de punteros es conocido como *ódigo 2E/'+J%9EM o
U/SAFE, puesto que al tener acceso directamente a la memoria 9A8 de la
computadora, es posible inter!erir con otros programas y llegar al colapso de
varios de ellos# &or esto hay que tener varias consideraciones, que van desde
usar correctamente las variables o punteros, hasta tener en cuenta el tama-o del
banco de datos que nos perteneces y no sobrepasarlo porque podremos alterar
otros valores de algn otro proceso#
&asos para escribir un código no seguro en *.#
# Avisar al compilador que permita el código no seguro# +sto se hace en las
propiedades del proyecto <*lic derecho VV &ropiedades=, en la pesta-a
0%(LDM hay una opción que indica poder habilitar el código no seguro#
(llow unsafe co!e
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 48/151
4/
4# Declarar los m$todos que van a contener el código con punteros como
%2'A6+
,u-li( unsa* voi' $&o(*sa&9 -t*WX -u:
# 6ijar o congelar una variable u objeto en la memoria 9A8 con el comando
6(F+D#
i*' 9 -t*\ , -u:
W# %sar los punteros de la misma !orma que se hace en *GG, esto es, usar el
puntero para indicar la dirección en la memoria 9A8# %sar el pre!ijo
asterisco < : = para indicar lo +speci!icado porM, es decir, para indicar elcontenido de esa dirección de la 9A8#
63untero = 77; ,,&scribir en la direcci8n indicada por el
puntero el valor de 77
3untero99; ,,'uemntar la direcci8n de la memoria +':
Dibujo : abilitar 3digo o ,eguro %&'()!: +isual ,tudio.!" 200
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 49/151
4
Ej.=1o< 8$todo que dado un vector de entrada, rellene todo el vector con el
valor de 55#
3digo 2: !jemplo del uso de punteros % &'()!: Propia del 5utor
public unsa*e void 3rocesar(bte< bu**) { *i0ed (bte6 p = bu**) { bte6 pp = p; *or(bte i=! ; i > bu**-enth ; i99) { 6pp = 1!!;
pp99; }
}
}
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 50/151
4
2.8.$ <ilos /T6reads0:
%n computador realiza varias tareas simult"neamenteM, por ejemplo,
escuchamos msica mientras jugamos solitario y estamos descarg"ndonos algnarchivo del (nternet#
*ontando los procesos propios del sistema operativo y dem"s programas,
tenemos cerca de 5 procesos corriendo simult"neamente en nuestro
computador# &ero nosotros sabemos que casi toda computadora tiene
nicamente un procesador, y bueno, ahora se habla de dos procesadores
!uncionando en paralelo, pero aun así no son 5 procesadores, para cada
programa# Así que lo que se hace, es dividir todos los procesos en peticiones muy
peque-as, y estas son enviadas al procesador; trabajo realizado por el sistema
operativo de !orma transparente para nosotros# Así el procesador solo e!ecta una
nica operación a la vez, pero como hace un pedacito de cada uno, este se
aprecia como si lo hiciera todo a la vez#
*uando nosotros realizamos un programa, este es un proceso m"s para el
sistema operativo, sin embargo es un proceso casi siempre de un solo hilo# Y así
un hilo no es m"s que un sub/proceso que corre independientementeM de los
otros#
&ara aclarar mejor la idea, es muy comn usar los controles 3(8+9 en nuestros
programas# +stos pueden ser muy !"cilmente programados, basta un contador
que llame a un m$todo cuando el tiempo establecido haya !inalizado, sin embargo
si lo program"ramos de la !orma tradicional, mientras el programa realiza el
conteo del timer, no podríamos hacer nada m"s# +s así que un 3imer esta
programado en otro hilo# +sto signi!ica que se ha creado otro proceso
independiente para que realice el conteo, y este est" muy aparte del proceso
normal de nuestro programa#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 51/151
56
+n Dot2+3 v4, han implementado un control llamado 0ac1ground7or1erM que es
un completo control que permite empezar un proceso en un hilo nuevo# +ste
control nos brinda las !acilidades de crear uno o varios procesos en hilos
di!erentes para que puedan correr simult"neamente#
Rilo
ilo 4
Dibujo 6: #lujo de ilos % &'()!: Propia del autor
$&og&a+a $&in(i,al
Cont*o '*l Ti+*&
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 52/151
51
2.8.% Creación de Controles de Usuario:
Los controles de usuario nos brindan varias ventajas, entre las m"s
importantes consta la compatibilidad de ser usada sin problema desde cualquier
lenguaje soportado por Dot2+3; así un control desarrollado en *. puede ser
usado desde >isual0asic#2+3 por ejemplo# Adem"s nos brinda protección al
código, puesto que se encuentra compilado y encapsulado en un DLL# &or otro
lado se puede programar el control pensando en una programación de usuario,
esto es, dejando comentarios en F8L para que el motor de >isual 'tudio
encargado de las !acilidades de programación como listas, comentarios de
argumentos, entre otros, pueda usar nuestros propios comentarios; adem"s el
uso correcto de propiedades y dise-o gr"!ico nos da la posibilidad de usar nuestro
control en la plantilla de dise-o#
+isten dos tipo de controles que se pueden crear, los llamados
CONTROLES propiamente dichos son aquellos que constan de una inter!az de
usuario gr"!ica, por ejemplo los botones, las etiquetas, !ormularios, etc# 'e
muestran de !orma gr"!ica en nuestro monitor# &or otro lado eisten controles que
no tienen inter!az gr"!ica que toman el nombre de COMPONENTES y entre estos
se encuentran controles como el 3imer, 'erial&ort, Data'ets, entre otros# 'i bien
el concepto de control o componente puede ajustarse a ambos casos, se usa esta
di!erencia para separar ambos casos, puesto que en la parte de dise-o, ambos
son tratados de !orma di!erente#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 53/151
52
Los pasos a seguir para la creación de un control sonQ
# *rear un proyecto nuevo y elegir la plantilla *lass LibraryM, el nombre del
nombre del proyecto asignado ser" el nombre del ensamblado y del
archivo DLL generado al !inal#
4# Agregar un nuevo *ontrol de %suario# &ara esto basta hacer clic derecho
encima del proyecto en el eplorador de soluciones y elegir la opciónQ Add
VV 2e (temM y seleccionar la plantillaQ %ser *ontrolM para crear un control
y *omponent *lassM para un componente#
Dibujo 7: ueo Pro8ecto lass Librar8 % &'()!: +isual ,tudio.!" 200
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 54/151
53
# &rogramar el control o componente con sus respectivos valores,
propiedades, comentarios, inter!az gr"!ica, etc#
W# *ompilar el control ya sea bajo D+0%J o 9+L+A'+# Al hacerlo saldr" un
mensaje avisando que una biblioteca de clases compilada, crea un DLL
pero este no puede ejecutarse de !orma independiente# De esta !orma,
podemos revisar la carpeta 0(2 de nuestro proyecto y veremos ahí el
archivo DLL creado#
NOTA?& 'e puede abrir el archivo (ssem)ly"nfo.cs que est" dentro de la carpeta
&ropiedades del proyecto, y modi!icar los indicadores con que se compila el DLL,
estos indicadores sonQ
Dibujo 9: ueos componentes o controles % &'()!:
+isual ,tudio.!" 200
3digo *: 5ssembl8(no % &'()!: Propia del autor
<assembl? 'ssemblitle(@:isControles@) <assembl? 'ssemblAescription(@Controles propios@) <assembl? 'ssemblCon*iuration(@@) <assembl? 'ssemblCompan(@SI-&C@) <assembl? 'ssembl3roduct(@:isControles@) <assembl? 'ssemblCopriht(@Aann -8pezBCopriht !!D@) <assembl? 'ssemblrademar#(@@) <assembl? 'ssemblCulture(@@)
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 55/151
54
+n la elaboración de un control de usuario eisten W cosas a tomar en cuentaQ
# Pro=id"ds< *omo bien sabemos, las propiedades no son m"s que
variables encapsuladas, pero en la creación de controles estas son usadas
para acceder desde la ventana de propiedades en tiempo de dise-o# &or
ejemplo, si creamos una propiedad llamada *olor9ectanguloM de tipo
*ELE9#
4# M5odo O/PAINT?& +ste m$todo est" en la clase %ser*E239EL4 de lacual heredamos nuestra clase, por lo tanto para tener acceso a este
m$todo tenemos que sobre/escribirlo de esta !ormaQ
12 ?tt,%+s'n2.+i(&osot.(o+*nusli-&a&+s1/3639<!.6:.as,
3digo : rear una Propiedad % &'()!: Propia del autor
private Color color+ = Color.lue; public Color Color+ectanulo{ et { return color+; }
set { color+ = value; } }
3digo : -todo P5(" % &'()!: Propia del autor
protected override void En3aint(3aint&vent'rs e) { raphics = eraphics;
,,'/uG se inresa todo el c8dio para ra*icar en el control Araw+ectanle(3ens.lue% 7!% 7!% !!% !!); baseEn3aint(e); }
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 56/151
55
+n este ejemplo estamos dibujando un rect"ngulo de color azul en el
control y este aparecer" incluso en el tiempo de dise-o cuando lo coloquemos en
un !ormulario# De este modo solo basta un buen dote artístico para crear
controles gr"!icos, por ejemplo un 'itch, un L+D, u otros#
*ombinando las propiedades y este m$todo podemos probar el siguiente
códigoQ
*omo podemos ver, luego de cambiar el valor de la propiedad
Co1orR65"/gu1o, colocamos una llamada al m$todo I/0"1id"5 del control, queobliga a ejecutarse de nuevo el m$todo En&A(23# Y dentro de este, el color del
rect"ngulo ser" el establecido por la propiedad#
Lo interesante de esto es que este código se ejecuta en tiempo de dise-o,
así cuando tengamos a nuestro control en un !ormulario, basta cambiar la
propiedad en la ventana correspondiente y el rect"ngulo cambiar" de color# Y
cabe recalcar una vez m"s que esto se hace en tiempo de dise-o#
3digo 6: ontrol sencillo % &'()!: Propia del autor
private Color color+ = Color.lue; public Color Color+ectanulo
{ et {return color+;} set {
color+ = value; thisInvalidate(); } }
protected override void En3aint(3aint&vent'rs e) { raphics = eraphics;
Araw+ectanle(new 3en(color+)% 7!% 7!% !!% !!); baseEn3aint(e); }
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 57/151
5=
# E0/5os?& *omo se trata de una clase con código cerrado, es
indispensable el uso de eventos para avisar al programa sustentador del
control que se ha e!ectuado una acción# 3odo control de usuario ya posee
por herencia varios eventos tales como el *lic, el &aint, los eventos propios
del 8ouse, etc# &ero por ejemplo, si en nuestro control quisi$ramos
generar un evento cuando se ha cambiado el color del rect"ngulo a rojo,
debemos crear el evento nosotros mismos de esta maneraQ
*omo vemos, el evento se llama %olorRo*o y est" en la lista de eventos de
la ventana &ropiedades del control en tiempo de dise-o, y se lo puede usar como
cualquier evento m"s# Adem"s est" usando un delegado sin argumentos, pero
casi siempre los eventos poseen argumentos que deben estar especi!icados porel delegado#
3digo 7: rear un !ento % &'()!: Propia del autor
public deleate void dColor(); public event dColor Color+o$o;
public Color Color+ectanulo { et { return color+; } set { color+ = value; i* (color+&/uals(Color+ed)) { i* (Color+o$o H= null) Color+o$o(); } thisInvalidate(); } }
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 58/151
5/
W# Co./5"rios -ML?& +stos comentarios son muy tiles a la hora de usar el
control, pues son utilizados por el (D+ de programación# Los comentarios
se colocan antes de empezar con la declaración de una clase, propiedad o
m$todo y son declarados con tres barras inclinadas IIIM# Adem"s en el
caso de las propiedades, tambi$n hay como agregar especi!icaciones para
ser usadas en la ventana de propiedades en tiempo de dise-o# >eamos
unos cuantos ejemplos#
>entana de &ropiedades en tiempo de dise-o
3digo 9: omentarios ;-L % &'()!: Propia del autor
,,, >summar ,,, &s el color /ue va a tener el borde del rect5nulo ,,, >,summar
<Aescription'ttribute(@&s el color /ue va a tener el borde delrect5nulo@)
<.indable'ttribute(true) <Cateor'ttribute(@Colores@) public Color Color+ectanulo {
(lustraci3n 1: +entana de Propiedades %
&'()!: Propia del autor
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 59/151
5
*omentario de la propiedad al escribir código#
+n el caso de los m$todos se puede usar m"s indicativos como por ejemploQ
%sando estos comentarios de !orma correcta, podemos hacer uso de las
!acilidades que brinda visual studio al navegar por objetos, es decir podemos usar
Dibujo <: Propiedades en el c3digo % &'()!: Propia del autor
3digo <: 5rgumentos documentados % &'()!: Propia del autor
,,, >summar ,,, :Jtodo /ue suma dos valores ,,, >,summar ,,, >param name=@sumando1@Kalor del primer nLmero a sumar>,param ,,, >param name=@sumando@Kalor del seundo nLmero a sumar>,param ,,, >returns+espuesta de la suma>,returns public double Sumar(double sumando1% double sumando) { return sumando1 9 sumando; }
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 60/151
5
el eplorador de objetos, los comentarios en tiempo de dise-o, generar reportes
de m$todos, ayudas, y muchas cosas m"s#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 61/151
=6
3 CAPITULO III: edes *euronales Arti#iciales /*A0
3.1 Introducción:
La inteligencia arti!icial b"sicamente trata de dotarle a un sistema computacional
la capacidad de tener inteligencia, y esta en un breve resumen se puede centrar
puntualmente en dos aspectosQ
a= 3oma de decisiones segn el entorno
b= 8ejorar sus conocimientos en el transcurso del tiempo <aprendizaje X
evolución=#
&ara cumplir el primer aspecto se-alado, es necesario tener un sistema
retroalimentado que consta b"sicamente de sensores para poder parametrizar el
entorno, un cerebro que procese la in!ormación y tome decisiones, y actuadores
para poder interactuar con el entorno#
+n tanto el segundo aspecto se torna un poco m"s complicado# &ara que
un sistema pueda aprender se necesita inevitablemente cambiar la in!ormación
que posee, es decir sus reglas del juego, y para conseguir esto es necesario tener
un sistema computacional, puesto que es el nico sistema que tiene la capacidad
de cambiar sus datos de !orma autónoma#
2o obstante, la complejidad de cambiar de !orma autónoma un programa
para que este pueda aprenderM nos obliga a buscar una manera de conseguir
una estructura in!orm"tica estable y que dependa nicamente de DA3E' o
valores para su cambio o aprendizaje#
+s así que las redes neuronales arti!iciales, basadas en el !uncionamiento
de las redes neuronales biológicas, cumplen el segundo aspecto de la inteligencia
arti!icial, constan de un sistema in!orm"tico estable que depende de valores
!"cilmente alterables para su aprendizaje#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 62/151
=1
3.2 ese=a <istórica:
Las redes neuronales arti!iciales nacieron de la idea de simular o imitar el
!uncionamiento de las redes neuronales biológicas, así que para mirar su pasadodebemos empezar mencionando a &latón y Aristóteles quienes !ueron los
primeros en plantear teóricamente el !uncionamiento del cerebro humano# *laro,
no !ue hasta BK que A1"/ Turi/g miró al cerebro como una !orma de ver los
sistemas computacionales, presentando muchos trabajos sobre la inteligencia
arti!icial, algunos consagrados como el !amoso Test !e Turin# +#
&ero la verdadera cuna de las redes neuronales arti!iciales como tales,
viene de la mano de !"rr/ M6Cu11o6> y !"15r Pi55s, un neuro!isiólogo y un
matem"tico, respectivamente# Nuienes publicaron en ,#' un libro llamadoQ A
1ogi6"1 6"16u1us o4 5> id"s i.."//5 i/ /r0ous "65i0i5: que mostraba un
an"lisis matem"tico del !uncionamiento del cerebro y adem"s mostraron el primer
modelamiento de una neurona simple, construida con circuitos electrónicos de la
$poca, al que llamaron Pr6=5ró/#
&ero el gran avance de estos sistemas tendría un golpe muy duro de la
mano de M"r0i/ Mi/s:,# : S:.our P"=r5 del (nstituto 3ecnológico de
8assachussets <8(3=, que presento el libro 'erce-trons en BKB que mostraba
al perceptrón como una unidad de control muy d$bil al no poder resolver la
!unción FE9 <E9 eclusiva=, y así demostrar la linealidad del perceptrón,
característica intolerable en un mundo no/lineal, razón su!iciente como para
declarar a la neurona arti!icial como un elemento de control no apropiado y
caduco#
+n el transcurso de la siguiente d$cada muy pocas investigaciones se
hicieron, aunque !ue en BHW cuando se realizo el primer algoritmo de aprendizaje
de propagación para atr"s#
13 ?tt,%777.il.ion.u(l.a(.u8]asagintttt*st.?t+l
14 ?tt,%7*-.+*'ia.+it.*'u],a,*&t
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 63/151
=2
&ero el nuevo renacimiento de las redes neuronales arti!iciales vendría de
;o>/ o=4i1d del mismo (nstituto 3ecnológico de 8assachussetsC en B?4 al
publicar el libro Nur"1 Co.=u5"5io/ o4 D6isio/ i/ O=5i.i"5io/ Prob1.sM
que mostraba la idea de conjunto de neuronas, conjunto de perceptrones que al
ser combinados en una estructura podían solucionar problemas no/lineales, y
claro, lo demostraron con el mismo problema que a-os atr"s había destruido al
perceptrón#
Desde entonces las redes neuronales han ido evolucionando
constantemente, teniendo ahora un gran nmero de alternativas que van desde
un multi/layer perceptrón con 0ac1 &ropagation, hasta lo conocido como 9edes
neuronales di!usas#
Y sus aplicaciones hoy est"n en muchos de los arte!actos que usamos a diario#
+ntre ellos los m"s conocidos sonQ todos los E*9 <reconocimiento óptico de
caracteres=, reconocedores de voz, 33'K <3et 3o 'peech= , 9econocedores de
huellas digitales, *ontroladores 0iom$tricos de personal, correctores de gram"tica
de procesadores de palabras, etc
15 ?tt,%7*-.+it.*'u
1= ?tt,%*n.7i8i,*'ia.o&g7i8i!,**(?_snt?*sis
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 64/151
=3
3.3 *eurona ioló(ica:
Al basarse las redes neuronales arti!iciales en el comportamiento de las redes
neuronales biológicas, es evidente empezar por entender el !uncionamiento deuna simple neurona biológica, esta sin entrar en mayor detalle se compone en de
W partesQ
Dibujo 10: eurona =iol3gica % &'()!: Propia del autor
3.3.1 D/dri5"s
'on capilares que permiten el ingreso de los impulsos neuronales hacia el ncleo
o 'E8A de la neurona# +s decir, las dendritas constituyen las +ntradasM de la
neurona biológica#
Los impulsos neuronales son cargas electro/químicas generadas por el paso de
iones el$ctricos de varios componentes químicos como el potasio y sodio#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 65/151
=4
3.3.2 Si/"=sis
+s una membrana premiable que se encuentra al etremo de cada dendrita# +sta
sinapsis modi!ica el impulso el$ctrico que ingresa por la dendrita, atenu"ndolo o
ampli!ic"ndolo, de tal manera que es visto como la JananciaM de una dendrita#*omo veremos posteriormente, la ganancia que la sinapsis le brinda a cada
dendrita es la causante directa del resultado que la neurona genere, de este modo
es considerada a este nivel como la 8emoriaM de la neurona, puesto que
depende de la sinapsis para que una neurona se comporte de una !orma u otra#
3.3.3 So."?
+s el ncleo de la neurona, y es aquí donde se procesa todas las se-ales
procedentes de las dendritas para generar una se-al resultado# +ste
procesamiento se divide b"sicamente en dos etapasQ
'uma de se-ales#/ 'implemente se suman todas las se-ales obtenidas de las
dendritas#
6unción de 3rans!erencia#/ Ebtenida la se-al sumada, esta pasa por una !unción
de trans!erencia propia de cada tipo de neuronas, y genera una se-al resultado#
3.3.$ AHó/?
+s la salida de la neurona, es decir, la se-al resultado que o!rece el 'E8A luego
de procesar las se-ales de las dendritas, es transportada por el aón que puede
etenderse en el caso de los humanos, hasta varios metros rami!ic"ndose
llevando esta se-al no solo hasta la dendrita una neurona, sino que puede llegar a
dar su se-al hasta a 5 555 neuronas, y así, con la coneión de aones y
dendritas, !ormar lo que se conoce como una 9ed 2euronal#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 66/151
=5
3.$ *eurona Arti#icial:
0as"ndose en el modelo de la neurona biológica, vamos a tenerQ
Dibujo 11: eurona 5rtiicial % &'()!: Propia del autor
Donde claramente las entradas estar"n epresadas con el vector F, las
respectivas ganancias con J, la sumatoria y !unción de trans!erencia y !inalmente
la respuesta epresada en la se-al Y#
Dado este modelo lógico, pasar a un modelo matem"ticoH es bastante sencilloQ
:9
1
( . >
$ ; ( n
i
ii
=
⋅= ∑=
HLibroQ A logical calculus o! the ideas immanent in nervous activityM
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 67/151
∑
FD
F4
FA
Fn
7D
74
7A
7n
Y
==
Donde se ha reemplazado la ganancia JM, por la 7M, puesto que la
mayoría de autores le tratan a la ganancia de una entrada como &+'E de la
entrada, así en ingl$s sería 7(D3R y de ahí que se usa la 7M en lugar de la JM
para epresar este par"metro#
3.% Perceptrón:
+l perceptrón es uno de los primeros modelos de neurona arti!icial que eistió, y
apareció en BW# +st" basado en el modelamiento matem"tico antes visto y usala !unción de trans!erencia +'*AL2# +s decir, consta nicamente de dos
valores de salida A*3(>ADE I D+'A*3(>ADE que puede epresarse de !orma
binaria por y 5 lógico# +ste valor de salida depende de un umbral <u= el cual casi
siempre tiene el valor de 5; al sobrepasar este umbral, la neurona se activa y al no
pasar el umbral la neurona queda desactivada#
∑=⋅=
n
i
ii $ ; ( 1
(! ( V u Q Y Z
+lse Y Z 5
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 68/151
=/
3.%.1 Aprendi>aje del Perceptrón:
+n BW?, C a-os despu$s de la creación del perceptrón, Donald Rebb
propuso un algoritmo matem"tico para ajustar los pesos del perceptrón, y conesto lograr que la neurona responda como se desea al dar unas determinadas
entradas#
+l algoritmo de variación de los pesos se basa en el error o di!erencia que
eiste entre la salida obtenida de la neurona y la salida requerida o deseada; y
multiplicar este error por el valor mismo de la entrada, dando un valor el cual
indicar" la di!erencia entre el nuevo peso y el antiguo#
$ $ $
! ; $
> > !
t t ii
ii
od
∆+=⋅=∆
−=
+ :19
Do/d<
Q 'alida Deseada
Q 'alida Ebtenida
Q 'igni!ica el Deltha del peso
Q Race re!erencia al valor del nuevo peso, por eso el <t G =, que signi!ica
<3iempoG=
Q +ste entonces sería el peso actual# +n el tiempo actual <t=
Los pasos a seguir para ense-ar a una neurona a comportarse de la !orma
que deseamos, es el siguienteQ
*olocamos valores aleatorios en todos los pesos#
t
t
i
i
i
o
d
$
$
$
>
>
:19 +
∆
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 69/151
=
>amos colocando un conjunto de entradas y tomando la salida obtenida#
*alculamos el error, que no es m"s que la di!erencia entre la salida deseada y la
obtenida#
*alculamos el d7, es decir, el valor Deltha del peso#
Ahora tomamos un segundo juego de entradas y volvemos a aplicar los pasos 4,
y W# +sto lo hacemos para todos los conjuntos de entradas#
'umamos todos los d7 de un peso que obtenemos en los distintos conjuntos de
entradas, para uni!icar el cambio que queremos darle al peso#
Actualizamos los valores de los pesos segn nuestro d7
*on esto terminamos lo que se conoce como UNA ITERACIÓN#
+l aprendizaje de una neurona se mide en razón de las iteraciones que le demora
converger en una respuesta# De este modo una neurona lograr" converger a una
respuesta en varios miles de iteraciones, claro, dependiendo de la complejidad del
problema a resolver#
3.%.2 Problema de Oscilación.
+ste problema se encontró en las iteraciones !inales de una neurona alalcanzar una respuesta# Y no es m"s que un cambio brusco en los pesos que
hace que la solución no llegue a converger en una respuesta
Dibujo 12: Problema de &scilaci3n % &'()!: Propia del autor
9espuesta Deseada
9espuesta Ebtenida
(teraciones
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 70/151
=
La solución de este problema no es m"s que atenuar el cambio de los pesos, para
que no cambien tan bruscamente y así pueda converger m"s r"pido# Así nace el
par"metro conocido como Taa !e a-ren!ia*e, en ingl$s /earnin# Rate
epresado normalmente con las siglas L9 o como una constante o coe!iciente, es
decir con una letra griega como alpha <[=#
+ste valor de taza de aprendizaje normalmente toma un valor entre 5 y ,
siendo un valor cercano a 5 su!iciente como para variar muy poco los pesos# 'e
usa un valor así de bajo cuando se quiere pulir una respuesta# &or otro lado, un
valor alto cercano a haría que los pesos cambien bruscamente#
%sar un valor alto siempre, hace que la respuesta oscile y no converja en
una respuesta como lo veíamos anteriormente, por otro lado un valor muypeque-o haría demasiado lento el proceso de entrenamiento# &or eso es
recomendable empezar el entrenamiento con un valor alto de L9, y segn vaya
llegando a una respuesta reducir esta variable hasta converger en una respuesta#
An sabiendo la !uncionalidad eacta de este par"metro L9, no es posible
asignar un algoritmo que lo describa a lo largo del entrenamiento de la neurona#
Así que el valor y la variación del mismo depender" de la eperiencia empírica dequien entrena la red, así como la complejidad del problema a resolver# +n todo
caso, muchos optan por dejar con un valor !ijo a este par"metro durante todo el
entrenamiento, el cual casi siempre esta entre 5,C y 5,K#
Dibujo 1*: ,oluci3n Linealidad % &'()!: Propia del autor
9espuesta Deseada
9espuesta Ebtenida
(teraciones
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 71/151
/6
3.%.3 Problema de Linealidad
&ara comprender de mejor manera el problema de linealidad de una
neurona, vamos a tomar como ejemplo un perceptrón de dos entradas, el cual sepuede representar en un plano donde el valor de cada entrada toma un valor en
cada uno de los 4 ejes, gra!icando un punto en el plano, propio de cada conjunto
de entradas#
Ahora, vamos a entrenar a nuestra neurona para que se comporte como una
compuerta lógica A2D, es decir, que responda de acuerdo a la siguiente tablaQ
a b Y
5 5 5
5 5
5 5
Jra!icando este problema en un plano tendríamos queQ
&
a
b
Y
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 72/151
/1
Dibujo 1: ompuerta 5D % &'()!: Propia del autor
Ahora, si observamos la ecuación que describe el comportamiento del perceptrón
tenemosQ
∑=
⋅=n
i
ii $ ; ( 1
"f " 0 1 $ 3 + $Else 3 1
Y aplicada al problema de nuestro ejemplo tenemosQ
21 $ b$ a ( ⋅+⋅=&ues bien, est" !ormula es correspondiente a la ecuación de una recta, en dondeQ
2 => 5; r ++= 121 +⋅+⋅= $ b$ a (
A Z 7 Q 0 Z 74 Q F Z a Q Y Z b Q * Z
*omo sabemos, las constantes que dan !orma a una recta son A y 0,
correlacionadas a nuestra neurona, vendrían a ser los pesos de la misma# Así es
Y Z
Y Z 5
5
a
b
5
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 73/151
/2
que al modi!icar los pesos de esta neurona, en realidad estamos creando y
ubicando una recta en el plano#
%na recta que resuelva nuestro problema, se gr"!ica en el plano a continuaciónQ
Dibujo 1: ,oluci3n . 5D % &'()!: Propia del autor
9ecordando a la ecuación de la recta que usualmente us"bamos para saber si un
punto <,y= o en este ejemplo <a,b= se encontraba !ormando parte de la recta#
Ahora vamos a usar la ecuación para saber a que lado de la recta se encuentra
un punto#
Y esto se logra solo viendo si el resultado es positivo, se encuentra a un lado, y si
es negativo, se encuentra al otro# *laro, tendiendo en 5 que nuestro punto !orma
parte de la recta#
De esta !orma, los valores constantes que representan a esta recta, ser"n los
valores de los pesos de nuestra neurona al llegar a la respuesta de este
problema#
Y Z
Y Z 5
5
a
b
5
r
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 74/151
/3
>isto desde este punto, al inicializar los pesos de !orma aleatoria, estamos
colocando una recta cualquiera en el plano, y esta empieza a moverse a medida
que nuestra neurona se entrena, hasta llegar a separar un conjunto de otro#
'i analizamos cualquier otro ejemplo de 4 entradas, podremos gra!icar los
conjuntos de respuesta en un plano, y gra!icar una recta que los separe# Dando
así con el valor de los pesos para que un perceptrón resuelva el problema#
&or ejemploQ
Dibujo 16: Problema Lineal % &'()!: Propia del autor
'i trabajamos con una sola entrada, podemos gra!icar los valores como puntossobre un solo eje, y la rectaM solucionadora quedaría epresada solo como un
punto que separe los do grupos a clasi!icar#
'i trabajamos con tres entradas nos tocaría gra!icar los valores en un plano en
tres dimensiones, y la rectaM solucionadora debería ser ahora un plano que
separe un grupo de otro#
De esta !orma, si trabajamos con W entradas, en teoría se debería gra!icar los
valores en un plano de W dimensiones, lo cual no es posible, al menos por ahora,
a
b
Y Z
Y Z 5
r
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 75/151
/4
y la separación estaría dada por un cubo# +n todo caso, el modelamiento
matem"tico sirve para resolver problemas de cualquier nmero de entradas, así
no sea posible un modelamiento gr"!ico del mismo#
Ya sea con una, dos o nM entradas, el &erceptrón solo responde a una respuesta
linealM si$ndole imposible resolver problemas donde sus respuestas requeridas
no puedan ser separadas por una línea# Y es así que 8arvin 8ins1y y 'eymour
&apera del 8(3 en BKB mostraban la imposibilidad del perceptrón al tratar de
resolver la operación binaria FE9# Dado que, la tabla de verdad de la FE9 y su
respuesta debería serQ
a b Y
5 5 5
5
5
5
*omo se puede apreciar, una recta no podría nunca dar resultado a este
problema# Adem"s, argumentando que los problemas en la naturaleza responden
Dibujo 17: ompuerta ;&' % &'()!: Propia del autor
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 76/151
/5
m"s a una solución desordenada que a una ordenada que demanda una
respuesta no lineal de los sistemas, por ejemploQ
Dibujo 19: Problema o Lineal % &'()!: Propia del autor
Así es como estos investigadores del 8(3 recomendaron en su libroabandonar toda investigación respecto al uso del las neuronas arti!iciales# Y así
!ue que durante 5 a-os no se hizo mayor investigación al respecto#
a
b
Y Z
Y Z 5
r
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 77/151
/=
3.8 Perceptrón 9ulticapa
+n B?4 de se muestra una investigación realizada por el mismo 8(3 que a-os
atr"s había sepultado al perceptrón, la posibilidad de armar una red conperceptrones, es decir combinar un conjunto de neuronas arti!iciales y hacerlas
!uncionar a la par para resolver un mismo problema# A esta combinación de
neuronas arti!iciales se le conoció como &erceptrón 8ulticapa, y es aquí donde
nace la idea propiamente dicho de Rds Nu5r"1s Ar5i4i6i"1s#
+stas redes estar"n organizadas por capas, teniendo nicamente dos al
inicio, la capa de entrada y la capa de salida# Y ambas interconectadas teniendo a
todas las neuronas de la capa de salida con una coneión o peso para cada una
de las neuronas de la capa de entrada#
Dibujo 1<: (ntercone?i3n de capas % &'()!: Propia del autor
+ste modelo sirvió para combinar varias neuronas arti!iciales en un mismo
problema, pero seguían siendo perceptrones que respondían a una respuestalineal# +s así que se vio la necesidad de epandir este modelo y aumentar una o
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 78/151
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 79/151
/
Dibujo 21: ,oluci3n de la . ;&' % &'()!: Propia del autor
+n cuanto al algoritmo de aprendizaje, las redes neuronales se clasi!ican en dos
grandes gruposQ
● Aprendizaje 'upervisado
● Aprendizaje 2E/'upervisado
'iendo la primera aquella que necesita saber la salida deseada antes de empezar
el proceso de aprendizaje# 'e le conoce como supervisada por el mismo hecho de
tener que o!recerle las salidas que se buscan, lo que implica inevitablementesaber las salidas que se quieren, lo cual no siempre es un dato al que tenemos
acceso# +n este sistema, se encuentran varios algoritmos teniendo el m"s usado
y popular al 0ac1/&ropagation el cual se eplicar" en detalle m"s adelante#
+l aprendizaje 2o/'upervisado es un dise-o di!erente de redes neuronales donde
la propia red establece cuales son las mejores salidas que puede o!recer# +sto
representa como en todo, puntos a !avor y en contra# &or un lado hace m"s
din"mico el aprendizaje y logra converger a soluciones de una manera m"s
natural y m"s cercana al modelo biológico del cerebro# &ero por otro lado, el no
tener las salidas deseadas, hace imposible calcular una taza de error y por lo
tanto muy complejo saber hasta cuando llevar a cabo el entrenamiento de la
misma# +n este tipo de aprendizaje entran modelos de redes como las de \anon,
8apas Auto/Erganizativos y dem"s#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 80/151
/
3.8.1 *eurona arti#icial au?iliar /IA50:
+l manejo de las redes neuronales de !orma empírica o!reció muchos resultados a
los investigadores quienes buscan maneras de hacer el aprendizaje m"s eacto ysobretodo r"pido# +n base a uno de estos estudios empíricos nació la idea de una
neurona arti!icial auiliar a la que llamaron 3endencia o por su ingl$s 0(A', que
no es m"s que un perceptrón en una capa que siempre tendr" como valor de
entrada la unidad <=, de esta !orma no a!ecta como entrada al sistema, pero sus
pesos si a!ectan al conjunto# Agregar esta neurona auiliar demostró en la
pr"ctica mejoras muy signi!icativas en varios problemas, y el uso o no de la
misma an no est" regido a una norma, como muchas cosas en las redesneuronales, esta depende de la eperiencia del dise-ador de la red#
La mayoría de autores, muestran a la neurona auiliar como una neurona de
!orma triangular, ubicada como una neurona m"s en la capa anterior y sin
representar su entrada, puesto que siempre ser" #
Dibujo 22: eurona =(5, % &'()!: Propia del autor
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 81/151
6
8uchas veces el modi!icar un peso, implicar alterar signi!icativamente la
entrada al que corresponde dicho peso# La neurona auiliar 0(A' nos brinda la
posibilidad de tener pesos, los cuales podemos modi!icar sin que esto implique
alterar a su entrada, puesto que su entrada siempre ser" y por lo tanto no
tomada en cuenta, adem"s es una neurona auiliar, es decir est" como sobra del
sistema y por lo tanto no inter!iere, pero si nos da varios pesos m"s que mover y
así converger a un resultado m"s r"pido#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 82/151
1
3.@ Al(oritmo de aprendi>aje: ACPOPA!ATIO*
[email protected] Introducción:
La creación de redes multicapas resolvía el problema de linealidad como ya vimos
anteriormente, pero plantea un nuevo problema en cuanto al algoritmo de
aprendizaje#
&ara usar la regla delta se necesita saber los valores de salida deseados y
compararlos con los valores obtenidos por la red neuronal, sin embargo al tener
una o varias capas ocultas, necesitaríamos conocer los valores que quisi$ramos
que dicha capa oculta saque, y esto no es posible# 2o obstante las salidas
deseadas de la capa de salida si se los tiene, al ser un aprendizaje supervisado y
podemos saber el error general de la red neuronal y en base a este error,
distribuirlo hacia las capas ocultas usando una modi!icación o generalización de la
regla delta, conocida mejor como algoritmo 9"6Pro="g"5io/ haciendo $n!asis
en la idea de capturar el error en la capa de salida y propagar el error hacia atr"s,
llegando a todas las capas ocultas#
Dibujo 2*: Propagaci3n de errores hacia atr@s % &'()!: Propia del 5utor
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 83/151
2
[email protected] esumen 6istórico:
+n BHW, &aul >erbos, &h#D# de la %niversidad de Rarvard, publica el libro T>
Roo5s o4 9"6Pro="g"5io/J donde describe un sin nmero de procesos
matem"ticos para propagar el error hacia atr"s en cualquier red de modelamientoparalelo# Dado que las redes neuronales se consideran un tipo especial de redes,
sus colegas cientí!icos tomaron poca o ninguna importancia a sus estudios que
generalizaban este proceso sin darle una utilidad concreta a las redes neuronales#
Doce a-os despu$s de esto <B?K=, dos trabajos realizados al mismo tiempo porDavid +# 9umelhart, Jeo!!rey +# Rinton y 9onald O# 7illiams, David &ar1er y
Yann Le *un, mostraban un algoritmo bac1propagation mucho m"s concreto,
estable y dedicado a las redes neuronales; recibiendo mucha acogida por la
comunidad de desarrolladores#
'in embargo !ue gracias al libro que el mismo a-o publicaron David + 9umelhart y
Oames L 8c*lelland de la %niversidad de *ali!ornia con el título de P"r"111
dis5ribu5d =ro6ssi/gM que hizo del algoritmo uno de los m"s populares y
usados m$todos de aprendizaje hasta nuestros días#
Libro 1: "he 'oots o =ackPropagation % (,=: <79071<9<79
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 84/151
Dibujo 2: Daid !. 'umelhart % &'()!:
http://www.graweme8er.com/ps8cholog8/preious/02.htm
3
Libro 2: Parallel Distributed Processing % (,= 02621912*1
Dibujo 2: Aames L -clelland % &'()!:
http://www.graweme8er.com/ps8cholog8/preious/02.htm
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 85/151
4
[email protected] Al(oritmo de Aprendi>aje:
La regla delta generalizada o 0ac1propagation se puede resumir simplemente
comoQ
21 ! $ $ t t ∇−=+ α
DondeQ
1+t $ Z 2uevo valor del peso
t
$ Z >alor actual del peso
α Z L9 <Learning 9ate= o taza de aprendizajeQ >alor +ntre 5 y
2 ! ∇− Z Jradiente negativa del error medio cuadr"tico
+ntonces la di!erencia entre el nuevo y el actual valor del peso esta dado por la
gradiente negativa del error medio cuadr"tico, atenuado por el L9
+l LR o 5"" d "=r/di"j es un valor que va entre 5 y , siendo 5 un indicador
que no haría ningn cambio en el peso, y el que deje pasar todo el valor al
nuevo peso# Así un 5,C atenuaría el cambio del nuevo peso a la mitad#
+n posteriores capítulos trataremos de nuevo el valor de la taza de aprendizaje
para entender mejor como a!ecta en el entrenamiento de la red neuronal#La gradiente inversa del error se describe como la derivada del error
respecto a todos los pesos de la red#
$
! !
∂∂
−=∇−2
2
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 86/151
5
&ara continuar desenvolviendo la derivada hasta llegar a una representación
matem"tica !"cil de interpretar en código, veamos una vez m"s la nomenclatura
usada para de!inir todas las partes de una red neuronal#
&ara este ejemplo demostrativo, solo veremos una red neuronal con una capa
oculta#
AsíQ
E1 Z 'alida de la primera neurona de la capa de entrada
i Z 2umero de neuronas en la capa de entrada
O1 Z 'alida de la primera neurona de la capa oculta
Z 2umero de neuronas en la capa oculta
!1 Z 'alida de la primera neurona de la capa de salida
8 Z 2umero de neuronas en la capa de salida
Ki Z &eso que conecta a la neurona iM de la capa de entrada y la neurona jM
de la capa oculta#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 87/151
=
K 8 Z &eso que conecta a la neurona jM de la capa oculta y la neurona 1M
de la capa de salida#
Adem"s teniendo implícitamente cada neurona variables tales comoQ
IE1 Z >alor neto de la primera neurona de la capa de entrada
MiO Z >alor de entrada iM de la neurona jM de la capa oculta
I!8 Z >alor neto de la neurona 1M de la capa de salida
+ntonces para sacar el error medio cuadr"tico procedemos a aplicar la
siguiente !órmula?Q
∑=
−=k
n
nn , D ! 1
22 :92
1
DondeQ
Dn Z 'alida Deseada de la neurona en la posición nM
&uesto que en estos momentos no tenemos idea de los valores que tienen
los pesos, por muchos motivos, empezando con que se inicializan con valores
aleatorio; no es posible sacar una derivada num$rica del error medio cuadr"tico
con respecto a los pesos, así que debemos operar la derivada hasta llegar aepresarla en otro dominio#
1 ?tt,%o?+.ut,.*'u.(on*u&onal*sCa,itulo2;a(8,&o,agationR*gla;.?t+
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 88/151
/
3..3.% Capa de 4alida:
'iendoQ
jk $
!
∂
∂−
2
La gradiente inversa del error con respecto a los pesos que corresponden a las
coneiones entre la capa oculta y la capa de salida < j 1 =#
3enemosQ
jk
k nn
k
n
nn
jk jk $
, , D, D
$ $
!
∂∂
×−=
−
∂∂
−=∂∂
− ∑=
:9:92
1
1
22
Ahora tenemos a la derivada de las se-ales de salida con respecto a los pesos#
+ntonces sabiendo que la salida es una !unción directa de la sumatoria interna de
las entradas a la que llamamos < ( =, aplicamos la regla de la cadenaQ
jk
k
k
k
jk
k
$
(
(
,
$
,
∂∂
×∂∂
=∂∂
+ntonces, reemplazando esta ecuación con la anterior tenemos queQ
jk
k
k
k k k
jk $
(
(
, , D
$
!
∂∂
×∂∂
×−=∂∂
− :92
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 89/151
9ecordando que :9 ( . > = tenemosQ
jk
,k
,k k k jk $
( ( . , D
$
!
∂
∂××−=
∂
∂− :9^:9
2
Y recordando tambi$n queQ ( )∑=
⋅= j
n
nk nk $ ; ( 1
tenemosQ
j,k k k jk & ( . , D$
!
××−=∂
∂
− :9^:9
2
'iendo O la salida de la capa oculta, y por lo tanto entrada de la capa de
salida#
+ntonces volviendo a la !órmula principal de cambio de pesos tenemos queQ
j,k k k jk jk & ( . , D$ $ t t
××−×+=+
:9^:9:9:19
α
3eniendo a mejor epresar comoQ
j,k k k jk & ( . , D$ ××−=∆ :9^:9
jk jk jk $ $ $ t t
∆×+=+
α :9:19
DondeQ
jk $ ∆ Z +s la di!erencia o cambio a aplicar en el peso K 8
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 90/151
3..3.2 5na Capa culta:
+n cuanto a los pesos de la capa oculta, basta con proyectar la misma !órmula
teniendo en cuenta que ahora la derivada del error a desarrollar y su respectiva
regla de la cadena quedarían asíQ
ij
&j
&j
j
j
,k
,k
k
ij
k
$
(
(
&
&
(
(
,
$
,
∂
∂×
∂
∂×
∂∂
×∂∂
=∂∂
9esumiendo el proceso, la !órmula !inal quedaríaQ
( ) i
k
n
jk ,k k k &jij ! $ ( . , D ( . $ ×××−×=∆ ∑
=1
:9^:9:9^
ijijij $ $ $ t t
∆×+=+
α :9:19
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 91/151
6
3..3.3 )enerali'ar a 7 capas cultas:
&ara generalizar la !órmula a 2 capas ocultas, vamos a pensar en una red
neuronal de las siguientes característicasQ
DondeQ
k , Z 2eurona 1M en la capa de salida
l i& Z 2eurona lM en la capa oculta iM
mi& :19 + Z 2eurona mM en la capa oculta que le sigue a la capa iM
ni& :19 − Z 2eurona nM en la capa oculta anterior a la capa iM
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 92/151
1
Así, la capa oculta iM, empezar" siendo la ltima capa, la que se encuentra m"s
cercana a la capa de salida, donde la capa iGM ser" la capa de salida y la capa
Mi/M la penltima capa# Luego la capa iM pasar" a ser la que muestra el gr"!ico y
que antes era la capa i/M y la capa iGM pasar" a ser la que antes era la capa iM
y así sucesivamente hasta cubrir todas las capas ocultas#
Ahora vamos a de!inir un nuevo valor que muchos autores denominan
4Sensitivi!a! !e la ca-a5 < δ = y no es m"s que la !uerza que tiene el error
propagado en esa capa#
Así, la sensitividad de la capa de salida ser"Q
:9^:9 ,k k k k , ( . , D ×−=δ
+sta sensitividad es la nica di!erencia a partir de ahora entre una capa de salida
y una capa oculta, siendo la sensitividad de una capa ocultaQ
( )∑=
××= +
n
j
mj j&
m&m
& $ ( . i
i
i
1
:19
:9^ δ δ
La generalización de las !órmulas para el cambio de pesos sería entoncesQ
l i
m&
lmo &$
ii:19 −
×=∆ δ
lmo
lmo
lmo i
t
i
t
i
$ $ $ ∆×+=+
α :9:19
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 93/151
2
$ CAPITULO I: Anlisis
$.1 Introducción
+n el presente capítulo se detallaran todos los requerimientos y limitaciones que
va a tener la tesis en!oc"ndose en el aspecto t$cnico# 3eniendo toda la teoría a
disposición, el an"lisis se dar" mediante una auto evaluación de las necesidades
que se quiere cubrir, actuando como %suario &rogramador <cliente= y
desarrollador al mismo tiempo#
$.2 Limitaciones
Dejando a un lado las limitaciones propias del hardare y so!tare que actan
como plata!orma, en cuanto al sistema se re!iere, este tendr" nicamente el
algoritmo de aprendizaje por 0ac1propagation, usando las !órmulas matem"ticas
que se muestran con detalle en el capítulo #
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 94/151
3
$.3 eBuisitos
● Desarrollar íntegramente el código en *. v4#
● *ompilar el código en base al 8icroso!t 6rame7or1 v4#5
● *rear un componente que permita usar una red neuronal arti!icial, teniendo
las siguientes característicasQ
○ 2mero ilimitado: de neuronas en la capa de entrada
○ 2mero ilimitado: de neuronas en la capa de salida
○
2mero ilimitado
:
de capas ocultas, pudiendo ir desde ninguna hastalas que se requieran#
○ 2mero ilimitado: de neuronas en cada capa oculta#
○ (ntegrar las siguientes !unciones de trans!erenciaQ
■ +scalón
■ Lineal
■ 'igmoide Logarítmica
■ 'igmoide 3angencial
■ Jauss
○ (ncluir una !unción de trans!erencia personalizada por el %suario
&rogramador, es decir, que pueda escribir directamente la !órmula
matem"tica que desea como !unción de trans!erencia#
○ &oder asignar una !unción de trans!erencia por cada capa de !orma
independiente#
○ &oder usar opcionalmente la neurona auiliar 0(A'M por cada capa de
!orma independiente#\ Li+ita'o ,o& las (a,a(i'a'*s '* sot7a&* ?a&'7a&* '*l (o+,uta'o&@ ,o& **+,lo +*+o&ia RA.
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 95/151
4
○ (ncluir una !orma de inicializar todos los pesos de la red de !orma
aleatoria#
○ Dadas un nmero de muestras de entradas y salidas deseadas, que
ejecute su debido aprendizaje usando el algoritmo de bac1propagation#
&ermitiendo, así mismo, elegir los par"metros de aprendizaje como son
la taza de aprendizaje, el momento y el error mínimo para terminar el
proceso de aprendizaje#
○ +l proceso de aprendizaje debe reportar su avance mediante un evento
donde indique el error y la iteración llevada a cabo#
○ +l proceso de aprendizaje debe correr en otro hilo que el programa
principal# &uesto que dicho proceso es largo, no debe paralizar el
programa principal#
○ Debe permitir consultar a la red neuronal arti!icial dada un vector de
entradas teniendo como resultado el vector de salida e indicando cual
de ellas es la mayor#
○ 3odos los par"metros a modi!icar por el %suario &rogramador deben de
estar como &ropiedadesM para poder usar la inter!az de dise-o denuestro (D+ de programación#
○ &oder eportar las con!iguraciones y pesos de una red hacia una
estructura F8L <Ebjeto Data'+3=
○ &oder eportar las con!iguraciones y pesos de una red hacia una
archivo eterno#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 96/151
5
● *rear un control que permita visualizar la con!iguración y !uncionamiento
del componente de redes neuronales arti!iciales con las siguientes
característicasQ
○ &oder seleccionar cual objeto del componente se requiere visualizar#
○ >isualizar todas las capas y neuronas de la red#
○ Di!erenciar claramente entre la capa de entrada, salida y ocultas en el
caso de eistir#
○ Dada la variedad de nmero de neuronas que puede haber en cada
capa, se requiere poder variar el tama-o del gr"!ico que represente a
una neurona#
○ &oder cambiar los colores de cada capa#
○ >isualizar los valores num$ricos de cada entrada y cada salida de la
red#
○ >isualizar las coneiones o pesos de la red#
○ 9epresentar con un color, el valor num$rico del peso en cada una de
las coneiones#
○ 3oda el diagrama de la red debe ser auto/escalado dependiendo del
tama-o del control, es decir, si el control cambia de tama-o en alguna
acción como por ejemplo maimizar la ventana, el gr"!ico se ajusta al
nuevo tama-o#
○ Asignar el nmero de decimales a mostrar en los valores num$ricos de
la capa de salida
○ &oder cambiar el tipo de letra y color del teto mostrado en el visor#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 97/151
=
○ &ermitir en tiempo de dise-o y por medio de este control varias tareas
del componente de redes neuronales, como sonQ
■ Asignar pesos aleatorios
■ Asignar valores a cada una de las entradas de la red
■ +jecutar una consulta con los valores de entrada actuales
■ Juardar y 9estaurar un archivo donde est$ la con!iguración y pesos
de la red#
○ (ngresar en tiempo de ejecución los valores de las entradas de la red#
○ 9epresentar la neurona auiliar 0(A'M#
○ %sar círculos para la representación de las neuronas, lineas para las
coneiones y tri"ngulos para las neuronas auiliares 0(A'M#
○ 8ostrar gr"!icamente en el centro de cada neurona, un símbolo que
indique la !unción de trans!erencia usada#
● +ncapsular ambos controles en un archivo DLL#
● Documentar con comentarios F8L el código#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 98/151
/
$.$ e#erencias a otros pro&ectos
A la !echa de inicio de este proyecto, no eistía ningn trabajo sobre redes
neuronales arti!iciales escritas en el lenguaje de programación *., que se pueda
encontrar, ya sea en algn libro o en el (nternet# +l no encontrar ningn trabajo deeste tipo !ue una de las razones que impulso el desarrollo de esta tesis#
2o obstante, a la !echa de hoy, se puede encontrar m"s de un trabajo realizado
en *. re!erente a las redes neuronales arti!iciales# &royectos que nunca se
tomaron como re!erentes para el an"lisis, ni desarrollo de la tesis actual# 'in
embargo, luego de la culminación del mismo, se ha revisado brevemente algunos
de los trabajos encontrados en (nternet y se ha podido ver con satis!acción
di!erencias muy grandes entre todos los proyectos#
A continuación se muestra las re!erencias de los proyectos de redes neuronales
arti!iciales que se ha podido encontrar en (nternet hasta la !echa de hoy#
● Ti5u1o< A( Q 2eural 2etor1 !or beginners <&arte , 4 y =
Au5or< 'acha 0arber
U/i0rsid"d< 'usse %niversity in (n!ormation 3echnology !or +/
*ommerce <(3+*= (nglaterra
URL< httpQII#codeproject#comIcsIalgorithmsI2eural2etor1)#asp
● Ti5u1o< *. 2eural netor1 library
Au5or< 6ranc1 6leurey <6rancia=
URL< httpQII!ranc1#!leurey#!ree#!rI2eural2etor1
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 99/151
$.% )ia(ramas de Casos de Uso
$.%.1 )ia(rama de Casos de Uso * 1:
C"so d Uso< *rear Aplicativo para entrenar#
A65ors< &rogramador
Ds6ri=6ió/< +s necesario crear un aplicativo para poder entrenar la 92A que se
encuentra en !orma de componente en un archivo DLL# 9azón por la cual el caso
de uso presente muestra como crear un aplicativo en cualquier lenguaje de
Dot2+3, por ejemplo >0#2+3 y muestra tambi$n como agregar la re!erencia del
DLL para usar los componentes#
Dibujo 26: aso de uso B 1 % &'()!: Propia del
5utor
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 100/151
$.%.2 )ia(rama de Casos de Uso * 2:
C"so d Uso< Agregar y *on!igurar una 92A
A65ors< &rogramador
Ds6ri=6ió/< +l componente 92A que ahora se debe encontrar en la barra deherramientas del tiempo de dise-o de un !ormulario, se agrega como cualquierotro componente, es decir arrastr"ndolo hacia el !ormulario# %na vez colocado, seprocede a con!igurarlo mediante la ventana de &ropiedades del entorno dedise-o#
Dibujo 27: aso de uso B 2 % &'()!: Propia del
5utor
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 101/151
166
$.%.3 )ia(rama de Casos de Uso * 3:
C"so d Uso< Agregar y *on!igurar el control 92A)>isor
A65ors< &rogramador
Ds6ri=6ió/< +l control 92A)>isor que ahora se debe encontrar en la barra de
herramientas del tiempo de dise-o de un !ormulario, se agrega como cualquier
otro componente, es decir arrastr"ndolo hacia el !ormulario# %na vez colocado, se
procede a con!igurarlo mediante la ventana de &ropiedades del entorno de dise-o
y sirve como visualizador de un componente 92A#
Dibujo 29: aso de uso B * % &'()!: Propia del
5utor
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 102/151
161
$.%.$ )ia(rama de Casos de Uso * $:
C"so d Uso< +ntrenar una 92A
A65ors< &rogramador, +structura F8L <Data'et=
Ds6ri=6ió/< La etapa de entrenamiento de la red neuronal# *on este proceso se
especializa a la red en una tarea dada#
Dibujo 2<: aso de uso B % &'()!: Propia del 5utor
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 103/151
162
$.%.% )ia(rama de Casos de Uso * %:
C"so d Uso< *onsultar una 92A
A65ors< &rogramador, +structura F8L <Data'et=
Ds6ri=6ió/< La etapa de consulta es el uso como tal del sistema, una vez
entrenada la red, est" lista para ser consultada o usada#
Dibujo *0: aso de uso B % &'()!: Propia del 5utor
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 104/151
163
$.%.8 )ia(rama de Casos de Uso * 8:
C"so d Uso< 3rabajar con el visor de la 92A
A65ors< &rogramador
Ds6ri=6ió/< 'e puede visualizar el proceso de una red neuronal mediante este
control, este caso de uso, muestra su utilización#
Dibujo *1: aso de uso B 6 % &'()!: Propia del
5utor
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 105/151
164
% CAPITULO : )ise=o
%.1 Introducción
+n el presente capítulo, se analizar" el dise-o de los controles que permitir"n el
uso de redes neuronales arti!iciales# 3eniendo el an"lisis en el capítulo anterior,
aquí veremos el dise-o de las clases y secuencia de operaciones, manteniendo el
modelamiento %8L#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 106/151
165
%.2 )I5+DO )+L 5O,TEA+ /U9L0
%.2.1 )ia(ramas de Clases
+l detalle de las clases se muestra a continuación, representados con la siguiente
simbologíaQ
Dibujo *2: Diagrama de lases % &'()!: Propia del 5utor
Dibujo **: Le8enda de Diagramas de lases %
&'()!: Propia del 5utor
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 107/151
16=
Dibujo *: Diagrama de lases CDetalle 1 % &'()!: Propia del 5utor
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 108/151
16/
Dibujo *: Diagrama de lases CDetalle 2 % &'()!: Propia del 5utor
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 109/151
16
%.2.2 )ia(ramas de 5ecuencia
.2.2.% Diagrama de 4ecuencia 78 %: *on!iguración de la 92A
A65ors< &rogramador
Dibujo *6: oniguraci3n de la '5 % &'()!: Propia del 5utor
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 110/151
16
.2.2.2 Diagrama de 4ecuencia 78 2: *ambiar 6unción *ustom
A65ors< &rogramador
Dibujo *7: ambiar #unci3n ustom % &'()!: Propia del 5utor
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 111/151
116
.2.2.3 Diagrama de 4ecuencia 78 3: +ntrenamiento de la 92A
A65ors< &rogramador
Dibujo *9: !ntrenamiento de la '5 % &'()!: Propia del 5utor
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 112/151
111
.2.2.- Diagrama de 4ecuencia 78 -: %so de la 92A
A65ors< &rogramador
Dibujo *<: Eso de la '5 % &'()!: Propia del 5utor
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 113/151
112
.2.2. Diagrama de 4ecuencia 78 : %so del >isor de la 92A
A65ors< &rogramador
Dibujo 0: Eso del +isor de la '5 % &'()!: Propia del 5utor
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 114/151
113
8 CAPITULO I: Construcción
8.1 <erramientas Usadas:
*omo se ha repetido a lo largo de todo el documento, todo el sistema est"
programado íntegramente en el lenguaje de programación *., compilado bajo el
6rame7or1 de 8icroso!t en su versión 4#5
+l (D+ de programación usado es el S>"r=D01o= 0*?* que se puede descargar
gratuitamente de su p"gina eb como se indico en el capítulo 4#
Así mismo, se probó abrir y ejecutar el proyecto desde el (D+ de 8icroso!t >isual
'tudio 455C con todo $ito, ya sea en su versión gratuita <+press= como en la
pro!esional#
Adem"s, para la creación del control que muestra una representación gr"!ica, seuso el motor JD(G propio de Dot2+3# Así mismo se usaron punteros y manejo de
hilos# 3odos estas herramientas eplicadas en el capítulo 4#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 115/151
114
8.2 Componente *A
+l componente encargado de mani!estar todo el comportamiento de la red
neuronal arti!icial como ya vimos en el diagrama de clases, se llama 92A por sussiglas# +ste componente ser" una clase heredada de Component que es una
clase propia del 0*L del !rameor1 y encapsula todas las propiedades y m$todos
que le permiten comportarse como un componente de usuario y poder ser usado
como tal en todo el (D+#
3odas las clases usadas estar"n dentro de un namespace llamado (A)92A,
haciendo re!erencia que es parte de la (nteligencia Arti!icial# 2ombre que llevara
tambi$n el ensamblado DLL#
+l código de esta clase, como en el resto de clases, est" debidamente organizado
utilizando los 9+J(E2, que son sentencias ignoradas por el compilador que
sirven para agrupar el código y así ser m"s !"cil organizarlo#
Adem"s, el uso de comentarios F8L para documentar el código resulta muy
recomendable puesto que a la hora de compilar, estos comentarios se enlazan
como 8etadatos a la aplicación !inal, siendo en este caso el archivo DLL# De esta
!orma un (D+ como el 'harpDevelop o el >isual 'tudio pueden mostrar estos
comentarios din"micamente al %suario &rogramador#
&or otro lado, eisten muchas herramientas eternas como el Document9 de la
empresa innovasys que nos permiten generar todo un documento de ayuda en
base a estos comentarios F8L de !orma autom"tica# +n el transcurso de este
capitulo, presentaremos pedazos de código y muestras del documento de ayuda
generado con esta herramienta eterna#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 116/151
115
+n este gr"!ico se puede apreciar la organización que nos brinda los 9+J(E2s,
así como un comentario F8L, que siempre comienzan con un triple símbolo dedividido <slash IM =# +n el ejemplo, se muestra un resumen <sumary= de lo que va
a hacer esa clase#
La linea de código que se muestra justo encima de la declaración de la clase,
sirve para asignar un icono al componente y así lograr que este salga en la barra
de herramientas de nuestro (D+#
Dibujo 1: lase '5 % &'()!: ,harpDeelop 2.2
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 117/151
11=
+n cuanto al documento de ayuda generado, se puede ver en el siguiente gr"!ico
una muestra de como nos presenta las propiedades del
Del mismo modo, estos comentarios F8L pueden brindar m"s in!ormación, como
por ejemplo en los m$todos, se puede describir los argumentos de entrada, la
salida, e incluso colocar un ejemplo de aplicación# 3odo esto eportado al
documento de ayuda#
A continuación se muestra un ejemplo del código de los comentarios F8L y del
archivo de ayuda, que adicionalmente deja epresada la declaración en algunos
lenguajes de Dot2+3#
Dibujo 2: Propiedades del '5 % &'()!: 58uda )enerada con DocumentF; .0
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 118/151
11/
Dibujo *: -todo !aluar % &'()!: ,harpDeelop 2.2
Dibujo : 58uda: -todo !aluar % &'()!: 58uda )enerada con DocumentF; .0
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 119/151
11
8.3 Clase CAPA
La capa clase contiene todas las !uncionalidades de una capa de la red neuronal,
y esta maneja todas las neuronas de una !orma global# +s decir, en primerainstancia se piensa en crear una clase 2+%9E2A que contenga el algoritmo de
proceso y aprendizaje, y que un vector de objetos de tipo 2+%9E2A sea una
capa# 2o obstante en el presente trabajo se decidió usar una clase *A&A que
maneje todas las !uncionalidades de proceso y aprendizaje de todas las neuronas
de dicha capa; desapareciendo de cierta !orma la individualidad de la neurona#
Dibujo : lase 5P5 % &'()!: ,harpDeelop 2.2
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 120/151
11
8.$ Clase CapaColeccion
+sta capa nace de la necesidad de poder mani!estar las capas ocultas, puesto
que estas pueden estar entre 5 o un nmero alto# Así es que se crea una claseque, con la ayuda de la clase Collection del 0*L del 6rame7or1, administra todo
lo re!erente a una lista o colección din"mica, es decir, tener los m$todos Add,
*lear, etc#
*abe recalcar que esta estructura de herencia es nueva, y que al menos hasta
ahora, no se ha visto en otro lenguaje de programación# Y es que no solo se
hereda la clase Collection, sino en la misma declaración de clase, se indica la
clase de la cual se va a hacer la colección, siendo en este caso la clase *A&A#
Dibujo 6: lase apaollection % &'()!: ,harpDeelop 2.2
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 121/151
126
8.% Clase +aluador5trin(
+sta capa cumple un papel especí!ico y no indispensable en el sistema#
+ntre las !unciones de trans!erencia que eisten, tenemos la opción *%'3E8,
que se encarga de dar una ventana a que el %suario &rogramador para quepueda personalizar su !unción de trans!erencia# +ntonces para lograrlo, se crea
esta clase que permite crear una !unción virtual en tiempo de ejecución# +sto es,
que mientras se est" ejecutando el programa, se puede escribir en una cadena de
teto una !unción, compilarla y usarla#
Jracias a esta clase que permite evaluar como código un 'tring, se puede crear
una !unción virtual donde se deje espacio para que el %suario &rogramador cree
una !unción matem"tica a gusto y la ingrese dentro de la propiedad
formula;Custom de la clase *A&A#
Dibujo 7: lase !aluador,tring % &'()!:
,harpDeelop 2.2
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 122/151
121
8.8 Clase *AFisor
+s la clase m"s etensa del sistema, y se encarga de crear una representación
gr"!ica de la red neuronal# +sta se instancia como un control normal, y entre laspropiedades solicita se indique que red neuronal se desea visualizar# 3eniendo
que tener previamente ya una instancia de 92A#
Dibujo 9: lase '5G+isor % &'()!: ,harpDeelop 2.2
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 123/151
122
+ste control se hereda de la clase 5serControl del 0*L del 6rameor1, y
sobrecarga el m$todo nPaint del mismo para lograr la mejor !orma de
gra!icación# &uesto que el m$todo nPaint se ejecuta autom"ticamente cuando el
control requiere dibujarse, dando mucha !acilidad de hacerlo al heredar tambi$n el
objeto Jraphics o Lienzo del control# 3oda esta in!ormación de como dibujar en un
control s ella puede encontrar en el capítulo 4; donde se especi!ica la creación de
controles y el manejo del JD(G, puesto que absolutamente todos los gr"!icos de
este visor, son creados con el JD(G#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 124/151
123
@ CAPITULO II: +jemplo de Aplicación /OC sico0
@.1 Introducción
&ara poder mostrar el correcto !uncionamiento de los controles para redes
neuronales creados en el presente trabajo, es necesario darle un aplicativo real#
&or esta razón, a continuación se presenta un peque-o ejemplo de aplicación de
uno de los m"s comunes usos de las redes neuronales, que es un E*9
<9econocimiento ptico de *aracteres, por sus siglas en ingl$s=#
+l uso de redes neuronales para el reconocimiento de caracteres es muy usado
actualmente principalmente por la característica de J+2+9AL(]A*(2 de una
red neuronal, la cual permite ingresar un patrón aproimado a la letra, y la red
determinar" el grado de aproimación a cada una de las muestras de
entrenamiento# +sto nos brinda la opción de ingresar un patrón con cierto grado
de error, inevitable a la hora de trabajar con im"genes#
&ara una demostración simple, este E*9 va a reconocer las cinco vocales del
al!abeto espa-ol, es decirQ A, +, (, E, %# De una muestra gr"!ica al car"cter A'*((
correspondiente a la letra#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 125/151
124
@.2 AdBuisición de la ocal
Dada la orientación acad$mica/demostrativa de este E*9, la adquisición de la
imagen se da por medio de una 7eb*A8, conectada al computador, que debecaptar cualquier imagen de una vocal de color negro escrita en mano imprenta en
maysculas en !ondo blanco#
Luego de capturar una imagen est"tica de la ebcam, se procede a binarizar la
imagen pudiendo seleccionar manualmente el umbral para ajustarse de mejor
manera a la imagen requerida#
%na vez tenida la imagen, se debe separar la letra de entre toda la imagen
capturada#
3eniendo la imagen de la letra lista, se procede a parametrizar la imagen y
obtener así una muestra num$rica para la red neuronal#
Dibujo <: 5dHuisici3n de la ocal % &'()!: Propia del autor
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 126/151
125
La parametrización de la letra, se da por medio de una matriz HC que se
ajusta a toda la imagen, y dependiendo de los pieles negros en cada cajón
de la matriz, este toma un valor de para negro, y 5 para blanco, teniendo
al !inal una matriz de 5 y correspondiente a la imagen# Dicha matriz,
epresa en orden las C entradas binarias de la red neuronal a usarse para
el reconocimiento#
Dibujo 0: parametriIaci3n de la ocal %
&'()!: Propia del autor
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 127/151
12=
@.3 edG*euronal Arti#icial
Los pasos a seguir para entrenar una red neuronal para el reconocimiento de
vocales es el siguienteQ
● Ebtener las muestras de cada vocal parametrizadas como se indica
anteriormente#
Letra AQ
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
Letra +Q
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
Letra (Q
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
Letra EQ
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
Letra %Q
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
● *rear un objeto de tipo 92A, y un control 92A)>isor en una aplicación en
*. , tal como muestra el manual de usuario aneo en la presente tesis#
● 6ijar como nmero de entradas de la red C, puesto que son C los
nmeros de la matriz HC resultante de la parametrización#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 128/151
12/
● 6ijar como nmero de salidas de la red neuronal C, puesto que se requiere
nicamente distinguir C tipos de letras, las vocales#
● 2o !ijar ninguna capa oculta, puesto que se debe siempre empezar sin
ninguna capa oculta, y en caso de ser necesarias, ir aument"ndolas#
● Dejar el resto de valores por de!ecto, es decir, sin uso de neuronas
auiliares 0(A', con la !unción de trans!erencia 'igmoide, etc#
● *orrer el proceso de entrenamiento tal como muestra el manual de usuario
aneo a la presente tesis, con los valores deQ
L9 Z 5,
8omento Z 5,B
+rror 8ínimo Z 5,555
+n este caso, la red neuronal termina su proceso de entrenamiento !"cilmente
luego de 45 555 iteraciones# &or lo cual se da por terminado el E*9, listo para
consultar con cualquier letra parametrizada#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 129/151
12
@.$ Conclusiones del OC
● &ara hacer un reconocedor de m"s letras, por ejemplo todas las
consonantes y vocales del al!abeto espa-ol, es necesario incrementar laresolución de la letra, es decir incrementar la matriz de HC a una con
mayor calidad, por ejemplo una 45C, que daría un nmero de entradas
de 55#
● +l uso de una capa oculta no !ue necesario, puesto que la red neuronal
logro converger a una solución con tan solo dos capas# Y esto resulta
lógico, puesto que cada neurona de salida se especializa en un solo patrón
de entradas <letra=, sin inter!erir con las dem"s#
● +n el caso de querer representar la letra reconocida en !ormato binario,
como el código A'*((, es indispensable usar una o m"s capas ocultas,
puesto que una letra a!ecta a varias salidas ahora, y esto hace que la
in!ormación de la capa de salida tenga que ser compartida entre sí#
● &ara lograr un reconocedor de teto, el principio de reconocer es el mismo,
es decir, letra por letra# La di!erencia va a estar en el pre/procesamiento de
la imagen, la cual debe seleccionar autom"ticamente letra por letra de todo
un teto continuo, siendo este un problema m"s de visión arti!icial#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 130/151
12
H CAPITULO III: Conclusiones & ecomendaciones
H.1 Conclusiones
● +l lenguaje de programación *. mostró ser un ecelente candidato para el
desarrollo de todo tipo de herramientas, brindando un ecelente equilibrio
entre !acilidad de sintais, velocidad y alcance !uncional#
● +n el desarrollo de herramientas, la creación de componentes y controles
<clases en DLL= son la mejor !orma de trabajar, puesto que nos brinda una
ecelente estructura organizativa, una muy buena documentación y
velocidad de desarrollo al usar código reciclado#
● +ncapsular los distintos códigos probados en una DLL nos brinda muchas
!acilidades como sonQ protección de código, compatibilidad entre lenguajes,
velocidad de compilación, etc#
● +l uso del motor gr"!ico JD(G que nos brinda la tecnología Dot2+3 resultó
ser muy liviana y r"pida, siendo la mejor !orma de mostrar una inter!az
gr"!ica para nuestros controles# Y así !acilitar el uso y comunicación entre
el programador y las herramientas#
● %sar una estructura F8L como el objeto Data'et propio de Dot2+3 para
ser de puente universal con todo tipo de almacenamiento de datos, es de
vital importancia cuando se crea una herramienta de propósito general#
&uesto que la tecnología F8L se ha convertido en un est"ndar en cuanto a
portabilidad de datos se re!iere#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 131/151
136
● +l uso de punteros es una ecelente !orma de ganar velocidad en los
procesos, no obstante hay que usarlos con mucho cuidado y no abusar de
los tama-os de memoria que se congelan#
● *uando de procesos costosos en tiempo se hablan, es indispensable el
uso de hilos <3hreads=# +n la practica, el uso de esta herramienta brinda
una transparencia a la hora de trabajar con normalidad en todo el sistema,
mientras un proceso se sigue ejecutando en otro hilo#
● +l traspaso de un modelamiento matem"tico a uno in!orm"tico,
especí!icamente el de programación, resulta bastante complejo de muchas
!ormas# &uesto que en el transcurso de este trabajo, el traspaso de las
!órmulas matem"ticas a código resultaba ambiguo, m"s que en la !órmula
en sí, en el orden de aplicar uno u otro proceso# +videnciando una !alta de
documentación al respecto, puesto que todos los tetos de in!ormación de
redes neuronales, muestran el camino o la solución matem"tica y
aconsejan el uso de so!tare dedicado como el 8atLab para su uso
in!orm"tico#
● La representación gr"!ica de la red neuronal es e!iciente cuando se trabaja
con redes relativamente peque-as, en donde se pueda apreciar sin ningn
problema las distintas neuronas y las coneiones entre ellas# 'i se requiere
usar una red mucho m"s grande, no se recomienda el uso de la inter!az
gr"!ica#
● +l algoritmo de bac1propagation es algo lento para llegar a converger a
una respuesta, no obstante permite alcanzar niveles de agrupación o
separación muy altos y precisos#
● %na adecuada documentación del código usando estructuras F8L, resulta
de mucha utilidad a la hora de usar un control o componente# Las distintas
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 132/151
131
ayudas que nos brinda nuestro (D+ !avorito, nos van mostrando la
documentación de !orma din"mica, !acilitando signi!icativamente el
desarrollo de un sistema#
● +l uso correcto de las propiedades en un control o componente nos
permiten usar la ventana de propiedades de nuestro (D+ en tiempo de
dise-o, ganando mucha velocidad a la hora desarrollar un sistema#
● Al encapsular un código en una DLL, se pierde todo acceso que no sea
de!inido al mismo, por este motivo, es de principal importancia dejar todos
los accesos posibles, tanto propiedades y m$todos que !uncionan como
entradas, así como los eventos que !uncionan como salidas o respuestas
del comportamiento de una clase#
● %na red neuronal no siempre llega a un resultado satis!actorio# +ste
depende de muchos !actores, en especial la con!iguración de la propia red#
+s decir, nmero de neuronas, nmero de capas, !unción de trans!erencia,
y dem"s# &or este motivo, la creación de este control es nicamente la
mitad del camino, de ahí parte toda la ciencia atr"s del uso y con!iguración
de las redes neuronales para la solución de problemas#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 133/151
132
H.2 ecomendaciones
+n!ocado hacia el 5suario Programador Q
● La inicialización de los pesos antes de entrenar una red es de vital
importancia# 'egn algunas pruebas que se hicieron, se aconseja colocarvalores muy cercanos a cero y con cierto equilibrio, es decir, que todos los
pesos est$n balanceados sin llegar a que en un lado de la red los pesos
tengan valores muy altos y al otro lado muy bajos#
● 'e debe analizar con mucho cuidado la !orma de representar las entradas
de una red# &or ejemplo, se puede epresar en una sola neurona un
nmero grande, o en muchas el mismo nmero en binario, o en
headecimal# Dependiendo de la importancia y variación que este nmero
va a tener en la red, se debe aprovechar lo mejor posible la in!ormación y
desglosarla en varias entradas#
● +l nmero de neuronas de salida tambi$n deben ser estudiadas,
analizando la mejor !orma de dispersar la in!ormación# Así una de lasmejores !ormas usada casi siempre, es las salidas binarias en conjunto o
en solitario, es decir, en solitario cuando se tiene una neurona por cada
salida deseada, y en conjunto cuando se aplica la combinación binaria
num$rica#
● Las capas ocultas resultan lo m"s complicado de resolver en cuanto a la
con!iguración se re!iere# 'e recomienda empezar sin ninguna capa oculta,
para que cada salida este linealmente epresada por una !unción de todas
las entradas# 'i lo vemos desde este punto de vista, la in!ormación de cada
salida est" completamente separada una de la otra# &ero si se requiere
que la in!ormación no trabaje por separado y m"s bien se busca
combinarlas, es necesario una capa oculta que entrevera la in!ormación#
● De la misma manera, el nmero de neuronas en cada capa oculta es un
dilema cubierto nicamente por la eperiencia del dise-ador# 2o obstante
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 134/151
133
se puede aconsejar usar un nmero medio entre las entradas y salidas de
la red# *onsejo en el que coinciden casi todos los autores#
● +n cuanto a la !unción de trans!erencia se re!iere, la que m"s se usa es lasigmoide, sea tangencial o logarítmica# 2o obstante, cuando se requiere
una respuesta proporcional entre las entradas y las salidas, es mejor usar
la !unción lineal# Y cuando las eigencias del sistema así lo requieran, el
uso de la !unción gauss nos brinda mucha eactitud pero poca !leibilidad
al ingresar entradas que no han sido entrenadas previamente#
● 'e recomienda siempre tener un visor del error mientras la red se entrena#
+sto es de muchísima utilidad a la hora de probar una con!iguración,
puesto que con la curva del error se puede concluir un valor erróneo de la
taza de aprendizaje, o del momento; así como tambi$n se puede ver una
!alta de capas ocultas o dem"s par"metros#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 135/151
134
ILIO!A,JA
LibrosQ
● 2i1ola \# \asabov, 6oundations o! 2eural 2etor1s, 6uzzy 'ystems, and\noledge +ngineeringM, 'egunda +dición, BB?, 8assachusetts (nstituteo! 3echnology, ^ ('02 5C?C5?HKH _
● 9ol! +c1mille, 2eural netor1s <*omputer science=I *ongresses, BB5,%niversidad de 8ichigan, ^ ('02 5WWW??W55B _
● Oos$ 9# Rilera I >ictor O# 8artínez, 9edes 2euronales Arti!iciales#6undamentos, modelos y aplicacionesM, 4555, AL6AE8+JA Jrupo editor, ^('02 BH5C5CHB _
● 9# 9ojas# 7eural 7etwor<s: = 4stematic $ntroduction> 'pringer, BBK^ ('02 /CW5/K5C5C/ _
%9LsQ
● ?tt,%777.+i(&osot.(o+$&*ss,ass,&*ss2666ul66,'(gat*s8*not*,&.+s,
● ?tt,%+s'n2.+i(&osot.(o+*s*sn*t&a+*7o&8aa5=239*nus:.as,
● httpQIIes#i1ipedia#orgIi1iI#2+3
● httpQIIen#i1ipedia#orgIi1iI8icroso!t)#2+3)6rameor1
● httpQII#monogra!ias#comItrabajos4IredneuroIredneuro#shtml
● httpQIIes#i1ipedia#orgIi1iI9edes)neuronales)arti!iciales
● httpQIIohm#utp#edu#coIneuronalesI*apitulo4I0ac1propagationI9egla0#htm
●
httpQIIes#i1ipedia#orgIi1iI9ed)neuronal
● httpQIIes#i1ipedia#orgIi1iI2eurona
● httpQIIen#i1ipedia#orgIi1iIJraphics)Device)(nter!ace
● httpQIImsdn#microso!t#comIlibraryIde!ault#asp`urlZIlibraryIen/ usIgdicppIJD(&lusIaboutJD(&lus#asp
● httpQII#elguille#in!oIcolaboraIpunto2+3ItutJD(Iindice#htm
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 136/151
135
1K A*+O: 9anual de Usuario
1K.1 Introducción:
+l namespace (A)92A, o!rece dos componentes para el uso de redes
neuronales arti!iciales# +l primer componente 92A, es en sí una red neuronal
arti!icial multi/perceptrón con el algoritmo de aprendizaje denominado
0ac1&ropagation o &ropagación para atr"s# Y el componente 92A)>isor es el
encargado de mostrar una !orma visual de la 92A, así, en el visor se muestra de
!orma gr"!ica cada una de las neuronas, sus pesos, capas, bias, etc#Dichos controles se encuentran encapsulados en un archivo DLL, por lo que
resulta indispensable tener un programa que lo use como re!erencia# +s por este
motivo que el presente trabajo est" en!ocado a un usuario programador y 2E a un
usuario !inal#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 137/151
13=
1K.2 A(re(ar los controles de IAF*A
%na vez creado cualquier proyecto bajo la tecnología Dot2+3, ya sea en
>isual 0asic o en *., siendo estos dos los m"s conocidos# >amos a usar laherramienta gr"!ica del dise-ador de nuestro (D+, como el que nos presenta el
8icroso!t >isual 'tudio 455C# Y seguimos los siguientes pasosQ
● +n la barra de herramientas en tiempo de dise-o, hacer clic derecho y
seleccionar la opción que diceQ +legir (temsM o *hosee (temsM
Dibujo 1: =arra de erramientas % &'()!: Propia del 5utorJ e?traKdo de -,. +isual
,tudio 200
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 138/151
13/
● +n la ventana que aparece, podemos elegir cualquier componente o
control del 6rame7or1 #2+3 o un componente *E8# +n nuestro caso
debemos seleccionar 0roser####M o +aminar###M, donde debemos elegir el
archivoQ IA_RNA?d11J y damos clic en E\#
● Los tres componentes del (A)92A#dll se encuentran ahora en nuestra
barra de herramientas con los siguientes gr"!icosQ
Dibujo 2: +entana de selecci3n de componentes % &'()!: Propia del
5utorJ e?traKdo de -,. +isual ,tudio 200
Dibujo *: (conos de los componentes % &'()!: Propia
del 5utorJ e?traKdo de -,. +isual ,tudio 200
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 139/151
13
● %na vez que los controles se encuentran en la barra de herramientas,
basta con arrastrarlas a un !ormulario para que el dise-ador de nuestro
(D+, se encargue del código que re!erencia el DLL#
1K.3 Con#i(urar la *A
La con!iguración de la 92A no es m"s que establecer las propiedades del
mismo, ya sea desde código o desde la barra de propiedades que nos o!rece
cualquier (D+ en su etapa de dise-o#
+n el caso de la propiedad Ecultas, la colección de capas se muestra en otra
ventana donde se puede agregar, modi!icar o eliminar cuantas capas se
requieran#
Dibujo : Propiedades del componente '5 % &'()!: Propia del
5utorJ e?traKdo de -,. +isual ,tudio 200
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 140/151
13
D5"11s d 6"d" =ro=id"d
● C"="E/5r"d"_/u.ro< +s el nmero de neuronas en la capa de entrada#
● C"="S"1id"_/u.ro< +s el nmero de neuronas en la capa de salida#
● C"="S"1id"_5i=oFT< +s el tipo de !unción de trans!erencia de las neuronas
de la capa de salida, los cuales est"n de!inidos por el enum
unction?ransfer;?pe detallado m"s adelante#
● C"="S"1id"_For.u1"Cus5o.< +sta propiedad es usada cuando el tipo de
!unción de trans!erencia es !ijada como *%'3E8, y detalla en !orma de
stringM la !unción de trans!erencia a usarse, teniendo como argumento, lasuma del producto de todos los pesos y valores de entrada, denominado
por la mayoría de autores con la letra (M# &or ejemploQ
*apa'alida)6ormula*ustom Z 8ath#'in<(=M
● C"="S"1id"_9IAS< +sta propiedad establece si la capa de salida va a
tener una neurona auiliar denominada 0(A'
●
Nu.I5r"6io/s_E0/5o< +s el nmero de iteraciones a cumplirse paraque se genere el evento evento;$teracion del control#
Dibujo : Propiedad &cultas % &'()!: Propia del 5utorJ e?traKdo de -,.
+isual ,tudio 200
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 141/151
146
● O6u15"s< +sta propiedad como ya vimos es una colección de capas, que
permite !ijar a su vez propiedades por cada capa oculta que se agregue,
estas propiedades sonQ 0ias, 6ormula)*ustom, 3ipo63, 2umero2euronas;
que son eactamente iguales a las propiedades de la capa de salida, sino
que aplicadas a cada una de las capas ocultas#
Fu/65io/Tr"/s4r_T:=< +s un enum que describe los tipos de !unción de
trans!erencia que se puede aplicar a una capa de neuronas#
● Es6"1ó/?& +s la !unción de trans!erencia típica, que de!ine una salida
binaria !ijada en un umbral que casi siempre es 5#
● Li/"1?& +s la !unción de trans!erencia que pasa el valor sin procesar, de
esta !orma epresa una proporción directa representada por una linea#
● Sig.oid Log"rK5.i6"?& +s la !unción de trans!erencia que nace de la
necesidad de usar el escalón como !unción continua para ser derivada y
así ser usada en el algoritmo de 0ac1&ropagation#
Dibujo 6: #" !scal3n % &'()!: Propia
del 5utor
Dibujo 7: #" Lineal % &'()!: Propia del
5utor
Dibujo 9: #" ,igmoide logarKtmica %
&'()!: Propia del 5utor
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 142/151
141
● Sig.oid T"/g/6i"1?& +s una !unción de trans!erencia id$ntica a la
anterior pero con su límite in!erior en menos uno#
● C".="/" d G"uss& +s una !unción de trans!erencia que brinda una
salida activa muy eigente gracias a su !orma en campana de gauss#
● Cus5o.?& +s la !unción de trans!erencia que permite personalizar la
!órmula#
Dibujo <: #" ,igmoide "angencial % &'()!:
Propia del 5utor
Dibujo 60: #" )auss % &'()!: Propia del
5utor
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 143/151
142
1K.$ Con#i(urar el isor
+l control para visualizar una 92A, est" heredado de un %ser*ontrol y por lo
tanto sus propiedades cubren todos los niveles de herencia del control,centr"ndose las particulares de este control en tres grupos de propiedades#
3eniendo por separado a la propiedad 9ed)2euronal que es la que establece
cual red neuronal se va a visualizar#
1K.$.1 Capas
+n este grupo se establecen los colores de las neuronas que van a verse
en cada capa#
■ Co1or9IAS< +s el color que va a tomar el tri"ngulo que representa a
la neurona auiliar 0(A'#
■ Co1orE/5r"d"< +s el color que va a tomar todas las neuronas de la
capa de entrada
■ Co1orO6u15"s< +s el color que va a tomar todas las neuronas de las
capas ocultas#
■ Co1orS"1id"< +s el color que va a tomar todas las neuronas de la
capa de salida
■ Co1orSi.bo1o< +s el color que va a tomar el símbolo interno de
cada neurona que representa la !unción de trans!erencia#
1K.$.2 Pesos
Aquí se establecen los par"metros para los pesos o coneiones <lineas=,
entre valores m"imos y mínimos que se ajustara un gradiente de color#
■ Co1orPsoM"H< +s el color que va a tomar la coneión cuando el
valor del peso sea mayor o igual a la propiedad @alorPesoaA #
■ Co1orPsoMi/< +s el color que va a tomar la coneión cuando el
valor del peso sea menor o igual a la propiedad @alorPesoin#
■ V"1orPsoM"H< +s el valor tomado como m"imo para asignar el
color de la propiedad *olor PesoaA #
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 144/151
143
■ V"1orPsoMi/< +s el valor tomado como mínimo para asignar el
color de la propiedad *olor Pesoin#
1K.$.3 Tama=os
+n este grupo de propiedades se establecen los valores de apariencia adibujarse#
■ A/6>oCo/Hio/s< +s el ancho en pieles de las coneiones
<lineas= a dibujarse, normalmente el valor es #
■ Co1orFo/5< +s el color que va a tener el resto del teto, como los
valores de entrada y salida#
■
Fu/5TH5o< +s la !uente de teto a usarse para mostrar losvalores de entrada y salida#
■ Nuro/"T"."o< +s el di"metro en pieles que tendr" el circulo
que representa a cada una de las neuronas#
■ N.roD6i."1s< +s el nmero de decimales que van a usarse
para representar los valores de las salidas# >alor entre 5 para
adelante#
Dibujo 61: onigurar el '5G+isor % &'()!: Propia del 5utor
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 145/151
144
1K.% +ntrenamiento
%na vez teniendo una 92A con!igurada, sea que esta tenga o no un control
92A)>isor asociado, se puede empezar con el proceso de entrenamiento#
+l entrenamiento de la red neuronal se da por medio de un m$todo del
componente 92A llamado Entrenar , el cual requiere C argumentos para trabajarQ
● 8uestras de entrada
● 8uestras de salida
Las muestras, tanto de entradas como de salidas deben ser epresadas en un
doble vector de tipo DE%0L+# &ara esto vamos a tener un ejemplo donde la redneuronal tenga neuronas de entrada y 4 de salida# Y vamos a epresar W
muestras#
Ent&a'a 1 Ent&a'a 2 Ent&a'a 3 !ali'a 1 !ali'a 2
u*st&a 1 2 5 / 1 6
u*st&a 2 3 4 = 1 6
u*st&a 3 5 4 6 6 1
u*st&a 4 4 1 6 1
Donde cada muestra va a ser un vector de tipo DE%0L+, y todas las muestras,
tanto de entradas como de salidas van a estar representadas por un vector de los
vectores de entrada, es decir un doble vector#
●
L9 <Learning 9ate= o 3aza de aprendizaje es un valor entre 5 y quede!ine la velocidad de aprendizaje que va a tener la red neuronal,
generalmente se empieza con un nivel alto, sea un 5#H o 5#? y se lo baja
progresivamente a medida que el entrenamiento !inalice# E simplemente se
lo deja con un valor medio, sea 5#C o 5#K
● 8omento es un valor que de!ine una tendencia hacia una dirección, este
valor ayuda a que la red neuronal no caiga en un oscilamiento perpetuo#
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 146/151
145
● 8ínimo +rror es un valor requerido como meta, al cumplirse un error menor
o igual a este, el proceso de entrenamiento se da por !inalizado#
+l entrenamiento se procesa internamente por medio de un hilo di!erente al
proceso de la aplicación, y noti!ica a este su avance por medio de un evento
llamado evento)(teracion que se dispara al cumplir cuantas iteraciones se
especi!iquen en la propiedad 2um(teraciones)+vento del componente 92A#
Dicho evento, entrega en sus argumentos el conteo de las iteraciones y el error
que lleva el proceso de entrenamiento# +sto es clave para poder mostrar de una!orma gr"!ica el avance del entrenamiento al programador#
'ou-l*W XW X u*st&as_Ent&a'a n*7 'ou-l*W4XS 4 u*st&as '* *nt&a'a
'ou-l*W XW X u*st&as_!ali'a n*7 'ou-l*W4XS 4 u*st&as '* sali'a
u*st&as_Ent&a'aW6X n*7 'ou-l*W3X 2@ 5@ /US u*st&a 1
u*st&as_Ent&a'aW1X n*7 'ou-l*W3X 3@ 4@ =US u*st&a 2
u*st&as_Ent&a'aW2X n*7 'ou-l*W3X 5@ 4@ 6US u*st&a 3
u*st&as_Ent&a'aW3X n*7 'ou-l*W3X 4@ @ 1US u*st&a 4
u*st&as_!ali'aW6X n*7 'ou-l*W2X 1@ 6 US u*st&a 1
u*st&as_!ali'aW1X n*7 'ou-l*W2X 1@ 6 US u*st&a 2u*st&as_!ali'aW2X n*7 'ou-l*W2X 6@ 1 US u*st&a 3
u*st&as_!ali'aW3X n*7 'ou-l*W2X 6@ 1 US u*st&a 4
Ent&*na& (on un LR 6.= @ o+*nto '* 6.1 un E&&o& +0ni+o a 6.666661
&na1.Ent&*na&9u*st&as_Ent&a'a@ u*st&as_!ali'a@ 6.=@ 6.1@ 6.666661:S
3digo 10: !jem de entrenamiento % &'()!: Propia del autor
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 147/151
14=
&ara detener el proceso de entrenamiento, basta con ejecutar el m$todo
*ancelar+ntrenamiento#
6inalmente se puede concluir que el proceso de entrenamiento de una red
neuronal depende en su mayor parte del programador que la est$ supervisando,
teniendo a su disposición todas las herramientas para que pueda observar el
comportamiento de su red, y así determinar cambios en los par"metros de
entrenamiento o dise-o en la estructura de la red#
3eniendo un resultado satis!actorio del proceso de entrenamiento, es necesario
poder almacenar de alguna !orma los pesos de la red neuronal, que despu$s de
todo son los que almacenan la eperiencia del entrenamiento, pudiendo decir de
alguna !orma que los pesos son la memoria de nuestro peque-o cerebro <92A=#
&ara esto, tenemos dos !ormas de almacenar los pesosQ
Enlaa& *l *v*nto
&na1.*v*nto_It*&a(ion B n*7 RNA.'*l*ga'o_it*&a(ion9t?is.&na1_*v*nto_It*&a(ion:S
Ev*nto It*&a(i)n
,&ivat* voi' &na1_*v*nto_It*&a(ion9int int*&a(@ 'ou-l* *&&o&:
...........................................
U
3digo 11: !jem del eento iteraci3n % &'()!: Propia del autor
Can(*la *l ,&o(*so '* *nt&*na+i*nto
&na1.Can(*la&Ent&*na+i*nto9 :S
3digo 12: Detener el entrenamiento % &'()!: Propia del autor
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 148/151
14/
● Obj5o D"5"S5< +l componente 92A tiene un m$todo llamado getData4et
y uno llamado setData4et , que nos entrega o recibe un objeto Data'et con
los pesos y estructura de la red, dicho objeto es usado en la tecnología
Dot2+3 como una base de datos virtual escrita en el lenguaje F8L,
pudiendo ser utilizada para importar o eportar a cualquier base de datos
soportada por Dot2+3#
● Ar6>i0o d "1."6/".i/5o< &ara no tener que usar obligatoria menteuna base de datos, el componente 92A tiene los m$todos Juardar y Abrir,
los cuales guardan y recuperan de un archivo plano toda la estructura y
pesos de una determinada red neuronal#
Gua&'a la *st&u(tu&a ,*sos '* la
&*' n*u&onal *n *l a&(?ivo *s,*(ii(a'o
&na1.Gua&'a&9ZC%[[&*'1.+lZ:S
R*(u,*&a la *st&u(tu&a ,*sos '* la
&*' n*u&onal '*l a&(?ivo *s,*(ii(a'o
&na1.A-&i&9ZC%[[&*'1.+lZ:S
3digo 1: !jemplo del uso de ichero % &'()!: Propia del
autor
Data!*t 'atas*t1 n*7 Data!*t9:S
Gua&'a& *n ;as* '* Datos la *st&u(tu&a ,*sos '* la RNA
'atas*t1 &na1.g*tData!*t9:S
!HlDataA'a,t*&1.#,'at*9'atas*t1:S
R*stau&a& '*s'* una ;as* '* Datos la *st&u(tu&a ,*sos '* la RNA
!HlDataA'a,t*&1.Fill9'atas*t1:S
&na1.!*tData!*t9'atas*t1:S
3digo 1*: !jemplo de uso con =DD % &'()!: Propia del autor
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 149/151
14
1K.8 Consulta
&ara el proceso de consulta de la red neuronal, se debe tener ya una instancia de
92A con su estructura y pesos de entrenamiento, así que se pueden tomar varios
caminos para llegar a este punto# &or ejemplo, se puede consultar en la mismaaplicación del entrenamiento, o se puede guardar los pesos en un archivo o base
de datos y crear otra aplicación de consulta donde nicamente se restaure la red
neuronal previamente entrenada y usarla para consultas, siendo este ltimo la
!orma m"s comn de hacerlo#
(ndependientemente de como se llegue a tener la 92A entrenada, el proceso de
consulta es muy simple, basta con ejecutar el m$todo #valuar de la 92A,
envi"ndole como argumento el vector de entradas de tipo DE%0L+#
&or ejemplo, si deseamos consultar a la red neuronal entrenada anteriormente
<ver *ódigo .=, se procedería a simplemente de!inir el vector de la entrada y
ejecutar el m$todo #valuar , cuyo resultado ser" el vector de salida# 2o obstante,
como en la mayoría de los casos, el objetivo de la consulta es tener nicamente
una neurona ganadora, el componente 92A posee una propiedad que se
actualiza despu$s de ejecutar una evaluación o consulta con el índice de la
neurona ganadora#
Adicionalmente, es posible hacer una consulta directa por medio del control visor
de redes neuronales, y la consulta se e!ecta en tiempo de ejecución en lainter!az gr"!ica del visor#
<*(to& '* *nt&a'a
'ou-l*W X Ent&a'a n*7 'ou-l*W3X 2@ 5@ /US
Evalua&
&na1.Evalua&9Ent&a'a:S
N*u&ona gana'o&aint Gan'o&a &na1.In'*a!ali'aS
3digo 1: !jem de consulta % &'()!: Propia del autor
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 150/151
14
&ara cambiar los valores de entrada de la red en este modo gr"!ico, basta en
hacer clic con el ratón encima del valor de entrada y aparecer" un cuadro de
edición donde se puede alterar el valor# &ara salir de este modo de edición, basta
con hacer clic !uera del cuadro#
%na vez cambiados los valores de entrada, se puede acceder al men contetual
del visor haciendo clic secundario <típicamente derecho= encima del control y
seleccionar la primera opción que diceQ &rocesarM# *abe resaltar que desde estemen es posible ejecutar varias tareas, como !ijar pesos aleatorios, guardar y
restaurar desde un !ichero la estructura y pesos de la red asociada al visor, etc#
Dibujo 62: ambiar alores de entrada desde el isor % &'()!:
Propia del autor
8/18/2019 Tesis Redes Neuronales Inteligencia Artificial
http://slidepdf.com/reader/full/tesis-redes-neuronales-inteligencia-artificial 151/151
156
Dibujo 6*: -en conte?tual del isor % &'()!: Propia del autor