{"id":323528,"date":"2021-12-08T21:22:00","date_gmt":"2021-12-08T18:22:00","guid":{"rendered":"https:\/\/inform.com.de\/?p=323528"},"modified":"2021-12-07T19:36:45","modified_gmt":"2021-12-07T16:36:45","slug":"en-palabras-simples-sobre-el-complejo-que-son-las-redes-neuronales-escribir-una-red-neuronal-feedforward-desde-cero","status":"publish","type":"post","link":"https:\/\/inform.com.de\/es\/en-palabras-simples-sobre-el-complejo-que-son-las-redes-neuronales-escribir-una-red-neuronal-feedforward-desde-cero\/","title":{"rendered":"En palabras simples sobre el complejo: \u00bfqu\u00e9 son las redes neuronales? Escribir una red neuronal feedforward desde cero."},"content":{"rendered":"<h2>\u00bfQu\u00e9 es una red neuronal?<\/h2>\n<p>Como saben, nuestro cerebro es algo complejo. La coordinaci\u00f3n de su trabajo se produce a trav\u00e9s de neuronas, c\u00e9lulas nerviosas con ramas que se extienden desde ellas. Al entrelazarse entre s\u00ed, las neuronas forman una red neuronal, un intrincado mecanismo que determina toda la diversidad de la psique humana. Esta es la ra\u00edz de nuestra autoconciencia, el sentimiento de nosotros como individuos, guiados por nuestros deseos y aspiraciones interiores.<\/p>\n<p>Si ocurre un mal funcionamiento en el trabajo de las neuronas, la persona cambia m\u00e1s all\u00e1 del reconocimiento. Dependiendo de la gravedad de la lesi\u00f3n, los cambios van desde signos leves de comportamiento desviado hasta el cese del funcionamiento normal del cuerpo. El da\u00f1o cerebral suele ser fatal.<\/p>\n<p>Pero hoy no hablaremos de biolog\u00eda, porque no solo el sistema de nuestro cerebro se llama redes neuronales, sino tambi\u00e9n un complejo programa inform\u00e1tico con principios operativos similares. Como la materia gris, es fractal, es decir, consta de muchos programas m\u00e1s simples que forman una especie de simbiosis.<\/p>\n<p>Mientras funciona, la red neuronal aprende, gana experiencia y se vuelve m\u00e1s perfecta. As\u00ed, estamos ante un organismo digital real, que se prev\u00e9 que alg\u00fan d\u00eda supere a su creador.<\/p>\n<h2>C\u00f3mo aparecieron las redes neuronales<\/h2>\n<p>La aparici\u00f3n del concepto de redes neuronales artificiales se remonta a los a\u00f1os 40 del siglo anterior. En particular, est\u00e1 asociado con los cient\u00edficos McCulloch y Pitts, que intentaron simular los procesos del cerebro. Tambi\u00e9n propusieron la idea de crear un sistema de autoaprendizaje dise\u00f1ado para realizar diversas operaciones l\u00f3gicas. El problema era que las tecnolog\u00edas de esa \u00e9poca estaban lejos de las de hoy, y los inventores no lograron materializar plenamente sus ideas.<\/p>\n<p>(Warren McCulloch y Walter Pitts)<\/p>\n<p>Su trabajo fue continuado por el fisi\u00f3logo canadiense Donald Hebb, y en 1949 se present\u00f3 al mundo el primer algoritmo para calcular ANN. Durante los siguientes 10 a\u00f1os, sirvi\u00f3 de base para el desarrollo de otros cient\u00edficos, hasta que, finalmente, en 1958, Frank Rosenblatt cre\u00f3 el parceptron, una tecnolog\u00eda que imita el trabajo de nuestro cerebro. Para su \u00e9poca, esta novedad fue incre\u00edble. Cient\u00edficos sovi\u00e9ticos y estadounidenses se unieron al trabajo, quienes tambi\u00e9n hicieron una contribuci\u00f3n significativa a la investigaci\u00f3n.<\/p>\n<p>A finales del siglo XX y principios del siglo XXI, la tecnolog\u00eda dio un gran salto, lo que sirvi\u00f3 como un buen incentivo para una actividad cient\u00edfica m\u00e1s intensiva, y en 2007, el cient\u00edfico inform\u00e1tico Jeffrey Hinton ide\u00f3 un algoritmo de aprendizaje profundo para redes neuronales, que ahora se utiliza ampliamente. en veh\u00edculos aut\u00f3nomos.<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea3d9471a.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\"  title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea3d9471a.jpg\" alt=\"En palabras simples sobre el complejo: \u00bfqu\u00e9 son las redes neuronales? Escribir una red neuronal feedforward desde cero.\" ><\/a><\/p>\n<p>(Geoffrey Hinton)<\/p>\n<h3>Un poco de historia<\/h3>\n<p>Por primera vez, el concepto de redes neuronales artificiales (ANN) surgi\u00f3 al intentar simular los procesos del cerebro. El primer gran avance en esta \u00e1rea puede considerarse la creaci\u00f3n del modelo de red neuronal McCulloch-Pitts en 1943. Los cient\u00edficos desarrollaron por primera vez un modelo de neurona artificial. Tambi\u00e9n propusieron la construcci\u00f3n de una red de estos elementos para realizar operaciones l\u00f3gicas. Pero lo m\u00e1s importante es que los cient\u00edficos han demostrado que dicha red es capaz de aprender.<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea3e7c52e.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\"  title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea3e7c52e.jpg\" alt=\"En palabras simples sobre el complejo: \u00bfqu\u00e9 son las redes neuronales? Escribir una red neuronal feedforward desde cero.\" ><\/a><\/p>\n<p>El siguiente paso importante fue el desarrollo por Donald Hebb del primer algoritmo para computar ANN en 1949, que se convirti\u00f3 en fundamental durante las siguientes d\u00e9cadas. En 1958, Frank Rosenblatt desarroll\u00f3 el parceptron, un sistema que imita los procesos del cerebro. En un momento, la tecnolog\u00eda no ten\u00eda an\u00e1logos y sigue siendo fundamental en las redes neuronales. En 1986, casi simult\u00e1neamente, independientemente unos de otros, los cient\u00edficos estadounidenses y sovi\u00e9ticos mejoraron significativamente el m\u00e9todo fundamental de ense\u00f1ar el <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9C%D0%BD%D0%BE%D0%B3%D0%BE%D1%81%D0%BB%D0%BE%D0%B9%D0%BD%D1%8B%D0%B9_%D0%BF%D0%B5%D1%80%D1%86%D0%B5%D0%BF%D1%82%D1%80%D0%BE%D0%BD_%D0%A0%D1%83%D0%BC%D0%B5%D0%BB%D1%8C%D1%85%D0%B0%D1%80%D1%82%D0%B0\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">perceptr\u00f3n multicapa<\/a>. En 2007, las redes neuronales experimentaron un renacimiento. El cient\u00edfico inform\u00e1tico brit\u00e1nico <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A5%D0%B8%D0%BD%D1%82%D0%BE%D0%BD,_%D0%94%D0%B6%D0%B5%D1%84%D1%84%D1%80%D0%B8\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Jeffrey Hinton<\/a> desarroll\u00f3 por primera vez un algoritmo de aprendizaje profundo para redes neuronales multicapa, que ahora, por ejemplo, se utiliza para operar veh\u00edculos no tripulados.<\/p>\n<h3>Brevemente sobre los principales<\/h3>\n<p>En el sentido general de la palabra, las redes neuronales son modelos matem\u00e1ticos que funcionan seg\u00fan el principio de redes de c\u00e9lulas nerviosas en un organismo animal. Las ANN se pueden implementar en soluciones tanto programables como de hardware. Para facilitar la percepci\u00f3n, una neurona se puede representar como una determinada c\u00e9lula, que tiene muchos orificios de entrada y un orificio de salida. El n\u00famero de se\u00f1ales entrantes que se transforman en salientes determina el algoritmo de c\u00e1lculo. Los valores efectivos se alimentan a cada entrada de neurona, que luego se propagan a lo largo de las conexiones interneuronales (sinopsis). Las sinapsis tienen un par\u00e1metro: el peso, por lo que la informaci\u00f3n de entrada cambia cuando se pasa de una neurona a otra. La forma m\u00e1s sencilla de imaginar c\u00f3mo funcionan las redes neuronales puede representarse con el ejemplo de la mezcla de colores. Las neuronas azul, verde y roja tienen diferentes pesos.<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea3f7db4e.png\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea3f7db4e.png\" alt=\"En palabras simples sobre el complejo: \u00bfqu\u00e9 son las redes neuronales? Escribir una red neuronal feedforward desde cero.\" ><\/a><\/p>\n<p>La red neuronal en s\u00ed misma es un sistema de muchas de estas neuronas (procesadores). Individualmente, estos procesadores son bastante simples (mucho m\u00e1s simples que un procesador de computadora personal), pero cuando se conectan a un sistema grande, las neuronas son capaces de realizar tareas muy complejas.<\/p>\n<p>Dependiendo del \u00e1rea de aplicaci\u00f3n, una red neuronal se puede interpretar de diferentes formas, por ejemplo, desde el punto de vista del aprendizaje autom\u00e1tico, una RNA es un m\u00e9todo de reconocimiento de patrones. Desde un punto de vista matem\u00e1tico, este es un problema de m\u00faltiples par\u00e1metros. Desde el punto de vista de la cibern\u00e9tica, es un modelo de control adaptativo de la rob\u00f3tica. Para la inteligencia artificial, ANN es un componente fundamental para modelar la inteligencia natural utilizando algoritmos computacionales.<\/p>\n<p>La principal ventaja de las redes neuronales sobre los algoritmos de c\u00e1lculo convencionales es su capacidad para aprender. En el sentido general de la palabra, aprender consiste en encontrar los coeficientes de acoplamiento correctos entre neuronas, as\u00ed como en generalizar datos e identificar dependencias complejas entre se\u00f1ales de entrada y salida. De hecho, el entrenamiento exitoso de una red neuronal significa que el sistema podr\u00e1 identificar el resultado correcto bas\u00e1ndose en datos que no est\u00e1n presentes en el conjunto de entrenamiento.<\/p>\n<h2>Aplicaci\u00f3n de redes neuronales<\/h2>\n<p>El rango de aplicaci\u00f3n de las redes neuronales es incre\u00edblemente amplio y solo est\u00e1 limitado por nuestra imaginaci\u00f3n. Enumeremos algunos de ellos:<\/p>\n<ul>\n<li>Sistemas de control de transporte autom\u00e1tico. Pilotos autom\u00e1ticos.<\/li>\n<li>La Internet. Asistentes de voz, navegadores inteligentes, programas de traducci\u00f3n.<\/li>\n<li>Econom\u00eda y empresa. Previsi\u00f3n de tipos de cambio, programas de contabilidad modernos, robots comerciales, programas de evaluaci\u00f3n de riesgos, gesti\u00f3n de m\u00e1quinas de producci\u00f3n, control de calidad, etc.<\/li>\n<li>Medicamento. M\u00e9todos modernos de diagn\u00f3stico, an\u00e1lisis de la efectividad del tratamiento, procesamiento de im\u00e1genes m\u00e9dicas.<\/li>\n<li>Rob\u00f3tica. Planificaci\u00f3n de rutas, reconocimiento de voz y gestos.<\/li>\n<li>Seguridad. Gesti\u00f3n de sistemas de videovigilancia y alarma.<\/li>\n<li>Juegos de ordenador y entretenimiento. Bots inteligentes, programas anal\u00edticos para ajedrez y otros juegos.<\/li>\n<li>Arte. Creaci\u00f3n de pinturas, libros y otros artefactos culturales.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4177889.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4177889.jpg\" alt=\"En palabras simples sobre el complejo: \u00bfqu\u00e9 son las redes neuronales? Escribir una red neuronal feedforward desde cero.\" ><\/a><\/p>\n<h3>Situaci\u00f3n actual<\/h3>\n<p>Y no importa cu\u00e1n prometedora sea esta tecnolog\u00eda, hasta ahora las RNA todav\u00eda est\u00e1n muy lejos de las capacidades del cerebro y el pensamiento humanos. Sin embargo, las redes neuronales ya se est\u00e1n utilizando en muchas \u00e1reas de la actividad humana. Hasta ahora, no pueden tomar decisiones altamente intelectuales, pero pueden reemplazar a una persona donde antes se necesitaba. Entre las numerosas \u00e1reas de aplicaci\u00f3n de la ANN, se pueden destacar: la creaci\u00f3n de sistemas de autoaprendizaje de procesos productivos, veh\u00edculos no tripulados, sistemas de reconocimiento de im\u00e1genes, sistemas de seguridad inteligente, rob\u00f3tica, sistemas de monitoreo de calidad, interfaces de interacci\u00f3n de voz, sistemas de anal\u00edtica y mucho m\u00e1s. Este uso generalizado de las redes neuronales, entre otras cosas, se debe a la aparici\u00f3n de diversas formas de acelerar el aprendizaje de las redes neuronales nerviosas.<\/p>\n<p>Hoy en d\u00eda, el mercado de las redes neuronales es enorme: miles de millones y miles de millones de d\u00f3lares. Como muestra la pr\u00e1ctica, la mayor\u00eda de las tecnolog\u00edas de redes neuronales de todo el mundo difieren poco entre s\u00ed. Sin embargo, el uso de redes neuronales es una empresa muy costosa que, en la mayor\u00eda de los casos, solo pueden afrontar las grandes empresas. Para el desarrollo, entrenamiento y prueba de redes neuronales, se requiere una gran potencia inform\u00e1tica, es obvio que los grandes actores del mercado de TI tienen suficiente de esto. Entre las principales empresas que lideran el desarrollo en esta \u00e1rea se encuentran Google DeepMind, Microsoft Research, IBM, Facebook y Baidu.<\/p>\n<p>Por supuesto, todo esto es bueno: las redes neuronales se est\u00e1n desarrollando, el mercado est\u00e1 creciendo, pero hasta ahora la tarea principal no se ha resuelto. La humanidad no ha logrado crear una tecnolog\u00eda que se acerque en capacidades al cerebro humano. Echemos un vistazo a las principales diferencias entre el cerebro humano y las redes neuronales artificiales.<\/p>\n<h3>\u00bfPor qu\u00e9 las redes neuronales todav\u00eda est\u00e1n lejos del cerebro humano?<\/h3>\n<p>La diferencia m\u00e1s importante, que cambia fundamentalmente el principio y la eficiencia del sistema, es la diferente transmisi\u00f3n de se\u00f1ales en las redes neuronales artificiales y en la red biol\u00f3gica de neuronas. El caso es que en la RNA las neuronas transmiten valores que son valores reales, es decir, n\u00fameros. En el cerebro humano se transmiten impulsos con una amplitud fija, y estos impulsos son casi instant\u00e1neos. Por lo tanto, existen varias ventajas para la red humana de neuronas.<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea437f470.png\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea437f470.png\" alt=\"En palabras simples sobre el complejo: \u00bfqu\u00e9 son las redes neuronales? Escribir una red neuronal feedforward desde cero.\" ><\/a><\/p>\n<p>Primero, las l\u00edneas de comunicaci\u00f3n en el cerebro son mucho m\u00e1s eficientes y econ\u00f3micas que en las RNA. En segundo lugar, el circuito de impulsos asegura la simplicidad de la implementaci\u00f3n de la tecnolog\u00eda: basta con utilizar circuitos anal\u00f3gicos en lugar de complejos mecanismos computacionales. En \u00faltima instancia, las redes de impulsos est\u00e1n protegidas de las interferencias ac\u00fasticas. Los n\u00fameros efectivos est\u00e1n sujetos a ruido, lo que aumenta la probabilidad de errores.<\/p>\n<h2>Perspectivas de las redes neuronales<\/h2>\n<p>El movimiento ludita comenz\u00f3 a principios del siglo XIX. Esta palabra se us\u00f3 para describir a las personas que participaban en protestas contra la urbanizaci\u00f3n. Con la industrializaci\u00f3n de la sociedad, cuando las m\u00e1quinas-herramienta comenzaron a reemplazar gradualmente a los trabajadores, muchas personas se quedaron sin trabajo y extremadamente insatisfechas con su situaci\u00f3n. \u00a1Imag\u00ednense el impacto que habr\u00edan experimentado si supieran que en un par de cientos de a\u00f1os las m\u00e1quinas podr\u00e1n hablar e incluso moverse de forma independiente!<\/p>\n<p>Mientras tanto, estos tiempos han llegado, y hoy tambi\u00e9n hay retrogrados que temen que la rob\u00f3tica y el desarrollo de la tecnolog\u00eda en general puedan jugar una broma cruel con la gente. Despu\u00e9s de todo, si las m\u00e1quinas ya son capaces de realizar tantas tareas en la actualidad, en el futuro ocupar\u00e1n todos los trabajos, lo que har\u00e1 que las personas sean innecesarias. Y esta posici\u00f3n solo la confirman las valoraciones de expertos que de vez en cuando predicen la inminente desaparici\u00f3n de una determinada profesi\u00f3n.<\/p>\n<p>Este puesto tiene derecho a existir, pero no es del todo correcto, ya que con el tiempo no solo desaparecen las profesiones antiguas, sino que tambi\u00e9n aparecen otras nuevas. S\u00ed, hay un orden de magnitud menos pastores y cazadores que antes, pero han aparecido programadores y comercializadores. En momentos decisivos de la historia, la econom\u00eda se reorienta, eliminando lo innecesario y dotando generosamente a los demandados.<\/p>\n<p>La creciente influencia de las redes neuronales artificiales es obvia, y es probable que pronto est\u00e9n literalmente en todas partes, pero tener miedo de esto significa rechazar la propia naturaleza humana, que consiste en el deseo de descubrimiento y logro.<\/p>\n<h2>Creaci\u00f3n de bloques neuronales.<\/h2>\n<p>Primero, debe decidir cu\u00e1les son los componentes b\u00e1sicos de una red neuronal, las <strong>neuronas<\/strong>. La neurona toma datos de entrada, realiza ciertas <strong>operaciones matem\u00e1ticas con ellos<\/strong> y luego genera el resultado. Una neurona con dos entradas se ve as\u00ed:<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/12\/fed4726d9a0d92019fee18550c1d79a0-1.png\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/12\/fed4726d9a0d92019fee18550c1d79a0-1.png\" alt=\"En palabras simples sobre el complejo: \u00bfqu\u00e9 son las redes neuronales? Escribir una red neuronal feedforward desde cero.\" ><\/a><\/p>\n<p>Aqu\u00ed est\u00e1n pasando tres cosas. Primero, cada entrada se multiplica por el peso (en el diagrama est\u00e1 marcado en <strong>rojo<\/strong> ):<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea460c31b.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea460c31b.jpg\" alt=\"En palabras simples sobre el complejo: \u00bfqu\u00e9 son las redes neuronales? Escribir una red neuronal feedforward desde cero.\" ><\/a><\/p>\n<p>Luego, todas las entradas ponderadas se suman junto con el desplazamiento <code>b<\/code>(indicado en <strong>verde<\/strong> en el diagrama ):<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea46be05a.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea46be05a.jpg\" alt=\"En palabras simples sobre el complejo: \u00bfqu\u00e9 son las redes neuronales? Escribir una red neuronal feedforward desde cero.\" ><\/a><\/p>\n<p>Finalmente, la cantidad se transfiere a trav\u00e9s de la funci\u00f3n de activaci\u00f3n (marcada en <strong>amarillo<\/strong> en el diagrama ):<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea477ea32.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea477ea32.jpg\" alt=\"En palabras simples sobre el complejo: \u00bfqu\u00e9 son las redes neuronales? Escribir una red neuronal feedforward desde cero.\" ><\/a><\/p>\n<p>La funci\u00f3n de activaci\u00f3n se utiliza para conectar entradas no relacionadas a una salida que tiene una forma simple y predecible. Como regla general, la funci\u00f3n <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A1%D0%B8%D0%B3%D0%BC%D0%BE%D0%B8%D0%B4%D0%B0\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">sigmoidea<\/a> se toma como la funci\u00f3n de activaci\u00f3n utilizada :<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4848293.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4848293.jpg\" alt=\"En palabras simples sobre el complejo: \u00bfqu\u00e9 son las redes neuronales? Escribir una red neuronal feedforward desde cero.\" ><\/a><\/p>\n<p><strong>La funci\u00f3n sigmoidea<\/strong> solo genera n\u00fameros en un rango <code>(0, 1)<\/code>. Puede pensar en ello como una compresi\u00f3n de <code>(\u2212\u221e, +\u221e)<\/code>a <code>(0, 1)<\/code>. Se vuelven grandes n\u00fameros negativos <code>~0<\/code>y grandes n\u00fameros positivos <code>~1<\/code>.<\/p>\n<h2>Un ejemplo simple de trabajar con neuronas en Python<\/h2>\n<p>Supongamos que tenemos una <strong>neurona con dos entradas<\/strong> que usa una funci\u00f3n de <strong>activaci\u00f3n sigmoidea<\/strong> y tiene los siguientes par\u00e1metros:<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea491789f.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea491789f.jpg\" alt=\"En palabras simples sobre el complejo: \u00bfqu\u00e9 son las redes neuronales? Escribir una red neuronal feedforward desde cero.\" ><\/a><\/p>\n<p><code>w = [0,1]<\/code>Es solo una forma de escribir <code>w1 = 0, w2 = 1<\/code>en forma vectorial. Asignemos una entrada con un valor a la neurona <code>x = [2, 3]<\/code>. Para una representaci\u00f3n m\u00e1s compacta, se utilizar\u00e1 el <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A1%D0%BA%D0%B0%D0%BB%D1%8F%D1%80%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">producto escalar<\/a>.<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea49c304f.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea49c304f.jpg\" alt=\"En palabras simples sobre el complejo: \u00bfqu\u00e9 son las redes neuronales? Escribir una red neuronal feedforward desde cero.\" ><\/a><\/p>\n<p>Dado que la entrada fue <code>x = [2, 3]<\/code>, la salida ser\u00e1 igual <code>0.999<\/code>. Eso es todo. Este proceso de <strong>pasar los datos de entrada<\/strong> para recibir la salida se denomina feedforward.<\/p>\n<h2>Construyendo una neurona desde cero en Python<\/h2>\n<p>Comencemos a implementar la neurona. Esto requerir\u00e1 el uso de NumPy. Es una poderosa biblioteca computacional de Python que usa operaciones matem\u00e1ticas:<\/p>\n<table>\n<tbody>\n<tr>\n<td>\n<div>\n<p><span><span>uno<\/span><\/span><\/p>\n<p><span><span>2<\/span><\/span><\/p>\n<p><span><span>3<\/span><\/span><\/p>\n<p><span><span>cuatro<\/span><\/span><\/p>\n<p><span><span>cinco<\/span><\/span><\/p>\n<p><span><span>6<\/span><\/span><\/p>\n<p><span><span>7<\/span><\/span><\/p>\n<p><span><span>ocho<\/span><\/span><\/p>\n<p><span><span>nueve<\/span><\/span><\/p>\n<p><span><span>10<\/span><\/span><\/p>\n<p><span><span>once<\/span><\/span><\/p>\n<p><span><span>12<\/span><\/span><\/p>\n<p><span><span>13<\/span><\/span><\/p>\n<p><span><span>catorce<\/span><\/span><\/p>\n<p><span><span>quince<\/span><\/span><\/p>\n<p><span><span>diecis\u00e9is<\/span><\/span><\/p>\n<p><span><span>17<\/span><\/span><\/p>\n<p><span><span>Dieciocho<\/span><\/span><\/p>\n<p><span><span>diecinueve<\/span><\/span><\/p>\n<p><span><span>veinte<\/span><\/span><\/p>\n<p><span><span>21<\/span><\/span><\/p>\n<p><span><span>22<\/span><\/span><\/p>\n<p><span><span>23<\/span><\/span><\/p>\n<p><span><span>24<\/span><\/span><\/p>\n<p><span><span>25<\/span><\/span><\/p>\n<p><span><span>26<\/span><\/span><\/p>\n<p><span><span>27<\/span><\/span><\/p>\n<\/div>\n<\/td>\n<td>\n<div>\n<p><span><span><span>importar <\/span><\/span><\/span><span><span><span>numpy <\/span><\/span><span><span>como <\/span><\/span><span><span>np<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><\/p>\n<p><span><span><span>def <\/span><\/span><\/span><span><span><span>sigmoide <\/span><\/span><span><span>( <\/span><\/span><span><span>x <\/span><\/span><span><span>) <\/span><\/span><span><span>:<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><\/p>\n<p><span><\/span><span><span><span># Nuestra funci\u00f3n de activaci\u00f3n: f (x) = 1 \/ (1 + e ^ (- x))<\/span><\/span><\/span><\/p>\n<p><span><\/span><span><span><span>return <\/span><\/span><\/span><span><span><span>1 <\/span><\/span><span><span>\/ <\/span><\/span><span><span>( <\/span><\/span><span><span>1 <\/span><\/span><span><span>+ <\/span><\/span><span><span>np <\/span><\/span><span><span>. <\/span><\/span><span><span>exp <\/span><\/span><span><span>( <\/span><\/span><span><span>&#8211; <\/span><\/span><span><span>x <\/span><\/span><span><span>) <\/span><\/span><span><span>)<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><\/p>\n<p><span><span><span>clase <\/span><\/span><\/span><span><span><span>Neuron <\/span><\/span><span><span>:<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><\/p>\n<p><span><\/span><span><span><span>def <\/span><\/span><\/span><span><span><span>__init__ <\/span><\/span><span><span>( <\/span><\/span><span><span>self <\/span><\/span><span><span>, <\/span><\/span><span><span>ponderaciones <\/span><\/span><span><span>, <\/span><\/span><span><span>sesgo <\/span><\/span><span><span>) <\/span><\/span><span><span>:<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><\/p>\n<p><span><\/span><span><span><span>yo <\/span><\/span><\/span><span><span><span>. <\/span><\/span><\/span><span><span><span>pesos <\/span><\/span><\/span><span><span><span>= <\/span><\/span><span><span>pesos<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><\/p>\n<p><span><\/span><span><span><span>yo <\/span><\/span><\/span><span><span><span>. <\/span><\/span><\/span><span><span><span>sesgo <\/span><\/span><\/span><span><span><span>= <\/span><\/span><span><span>sesgo<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><\/p>\n<p><span><\/span><span><span><span>def <\/span><\/span><\/span><span><span><span>feedforward <\/span><\/span><span><span>( <\/span><\/span><span><span>auto <\/span><\/span><span><span>, <\/span><\/span><span><span>entradas <\/span><\/span><span><span>) <\/span><\/span><span><span>:<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><\/p>\n<p><span><\/span><span><span><span># Ingrese datos de peso, agregue compensaci\u00f3n<\/span><\/span><\/span><\/p>\n<p><span><\/span><span><span><span># y posterior uso de la funci\u00f3n de activaci\u00f3n<\/span><\/span><\/span><\/p>\n<p><span><\/span><span><span><span>total <\/span><\/span><\/span><span><span><span>= <\/span><\/span><span><span>np <\/span><\/span><span><span>. <\/span><\/span><span><span>dot <\/span><\/span><span><span>( <\/span><\/span><span><span>auto <\/span><\/span><span><span>. <\/span><\/span><span><span>pesos <\/span><\/span><span><span>, <\/span><\/span><span><span>entradas <\/span><\/span><span><span>) <\/span><\/span><span><span>+ <\/span><\/span><span><span>auto <\/span><\/span><span><span>. <\/span><\/span><span><span>parcialidad<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><\/p>\n<p><span><\/span><span><span><span>volver <\/span><\/span><\/span><span><span><span>sigmoidea <\/span><\/span><span><span>( <\/span><\/span><span><span>total <\/span><\/span><span><span>)<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><\/p>\n<p><span><span><span>pesos <\/span><\/span><\/span><span><span><span>= <\/span><\/span><span><span>np <\/span><\/span><span><span>. <\/span><\/span><span><span>matriz <\/span><\/span><span><span>( <\/span><\/span><span><span>[ <\/span><\/span><span><span>0 <\/span><\/span><span><span>, <\/span><\/span><span><span>1 <\/span><\/span><span><span>] <\/span><\/span><span><span>) <\/span><\/span><span><span># w1 = 0, w2 = 1<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><\/p>\n<p><span><span><span>sesgo <\/span><\/span><\/span><span><span><span>= <\/span><\/span><span><span>4 <\/span><\/span><span><span># b = 4<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><\/p>\n<p><span><span><span>n <\/span><\/span><\/span><span><span><span>= <\/span><\/span><span><span>Neurona <\/span><\/span><span><span>( <\/span><\/span><span><span>pesos <\/span><\/span><span><span>, <\/span><\/span><span><span>sesgo <\/span><\/span><span><span>)<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><\/p>\n<p><span><span><span>x <\/span><\/span><\/span><span><span><span>= <\/span><\/span><span><span>np <\/span><\/span><span><span>. <\/span><\/span><span><span>matriz <\/span><\/span><span><span>( <\/span><\/span><span><span>[ <\/span><\/span><span><span>2 <\/span><\/span><span><span>, <\/span><\/span><span><span>3 <\/span><\/span><span><span>] <\/span><\/span><span><span>) <\/span><\/span><span><span># x1 = 2, x2 = 3<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><\/p>\n<p><span><span><span>print <\/span><\/span><\/span><span><span><span>( <\/span><\/span><\/span><span><span><span>n <\/span><\/span><\/span><span><span><span>. <\/span><\/span><\/span><span><span><span>feedforward <\/span><\/span><\/span><span><span><span>( <\/span><\/span><\/span><span><span><span>x <\/span><\/span><\/span><span><span><span>) <\/span><\/span><\/span><span><span><span>) <\/span><\/span><\/span><span><span><span># 0.9990889488055994<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><\/p>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u00bfReconoces los n\u00fameros? Este es el mismo ejemplo discutido anteriormente. La respuesta recibida esta vez tambi\u00e9n es igual <code>0.999<\/code>.<\/p>\n<h2>Un ejemplo de recolecci\u00f3n de neuronas en una red neuronal<\/h2>\n<p><strong>Una red neuronal<\/strong> es esencialmente un grupo de <strong>neuronas interconectadas<\/strong>. Una red neuronal simple se ve as\u00ed:<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/12\/0e2c31c441e9cdc4eb35c1c746dc5651-1.png\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/12\/0e2c31c441e9cdc4eb35c1c746dc5651-1.png\" alt=\"En palabras simples sobre el complejo: \u00bfqu\u00e9 son las redes neuronales? Escribir una red neuronal feedforward desde cero.\" ><\/a><\/p>\n<p>En la capa introductoria de la red, hay dos entradas: <code>x1<\/code>y <code>x2<\/code>. Hay dos neutrones en la capa oculta <code>h1<\/code>y <code>h2<\/code>. Hay una neurona en la capa de salida &#8211; <code>\u043e1<\/code>. Tenga en cuenta que las entradas para <code>\u043e1<\/code>son resultados de salida <code>h1<\/code>y <code>h2<\/code>. As\u00ed <strong>es como se construye la red neuronal<\/strong>.<\/p>\n<blockquote>\n<p><strong>Una capa oculta<\/strong> es cualquier capa entre la capa de entrada y la capa de salida, que son la primera y la \u00faltima capa, respectivamente. Puede haber varias capas ocultas.<\/p>\n<\/blockquote>\n<h2>Entrenamiento de redes neuronales<\/h2>\n<p>Salida <strong>\u0177 de una<\/strong> red neuronal simple de dos capas:<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4b5814e.png\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4b5814e.png\" alt=\"En palabras simples sobre el complejo: \u00bfqu\u00e9 son las redes neuronales? Escribir una red neuronal feedforward desde cero.\" ><\/a><\/p>\n<p>En la ecuaci\u00f3n anterior, los pesos W y los sesgos b son las \u00fanicas variables que afectan la salida \u0177.<\/p>\n<p>Naturalmente, los valores correctos para los pesos y los sesgos determinan la precisi\u00f3n de las predicciones. El proceso de ajuste fino de ponderaciones y sesgos de los datos de entrada se conoce como entrenamiento de redes neuronales.<\/p>\n<p>Cada iteraci\u00f3n del proceso de formaci\u00f3n consta de los siguientes pasos<\/p>\n<ul>\n<li>calcular la salida prevista \u0177 denominada propagaci\u00f3n hacia adelante<\/li>\n<li>Actualizaci\u00f3n de ponderaciones y sesgos denominada retropropagaci\u00f3n.<\/li>\n<\/ul>\n<p>El siguiente gr\u00e1fico secuencial ilustra el proceso:<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4c1cc09.png\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4c1cc09.png\" alt=\"En palabras simples sobre el complejo: \u00bfqu\u00e9 son las redes neuronales? Escribir una red neuronal feedforward desde cero.\" ><\/a><\/p>\n<h3>Distribuci\u00f3n directa<\/h3>\n<p>Como vimos en el gr\u00e1fico anterior, la propagaci\u00f3n hacia adelante es solo un c\u00e1lculo simple, y para una red neuronal b\u00e1sica de 2 capas, la salida de la red neuronal viene dada por:<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4b5814e.png\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4b5814e.png\" alt=\"En palabras simples sobre el complejo: \u00bfqu\u00e9 son las redes neuronales? Escribir una red neuronal feedforward desde cero.\" ><\/a><\/p>\n<p>Agreguemos un avance a nuestro c\u00f3digo Python para hacer esto. Tenga en cuenta que, para simplificar, hemos asumido que las compensaciones son 0.<\/p>\n<p>Sin embargo, necesitamos una forma de evaluar la \u00abbondad\u00bb de nuestros pron\u00f3sticos, es decir, qu\u00e9 tan lejos est\u00e1n nuestros pron\u00f3sticos). <strong>La funci\u00f3n de p\u00e9rdida<\/strong> nos permite hacer precisamente eso.<\/p>\n<h3>Funci\u00f3n de p\u00e9rdida<\/h3>\n<p>Hay muchas funciones de p\u00e9rdida disponibles, y la naturaleza de nuestro problema deber\u00eda dictar nuestra elecci\u00f3n de funci\u00f3n de p\u00e9rdida. En este art\u00edculo, usaremos la <strong>suma de los cuadrados de los errores<\/strong> como funci\u00f3n de p\u00e9rdida.<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4dd5677.png\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4dd5677.png\" alt=\"En palabras simples sobre el complejo: \u00bfqu\u00e9 son las redes neuronales? Escribir una red neuronal feedforward desde cero.\" ><\/a><\/p>\n<p>La suma de los errores al cuadrado es el promedio de la diferencia entre cada valor predicho y el valor real.<\/p>\n<p><strong>El objetivo del entrenamiento es encontrar un conjunto de pesos y sesgos que minimice la funci\u00f3n de p\u00e9rdida.<\/strong><\/p>\n<h3>Propagaci\u00f3n hacia atr\u00e1s<\/h3>\n<p>Ahora que hemos medido nuestro error de pron\u00f3stico (p\u00e9rdidas), necesitamos encontrar una manera de <strong>propagar el error<\/strong> y actualizar nuestros pesos y sesgos.<\/p>\n<p>Para averiguar la cantidad apropiada a corregir por ponderaciones y sesgos, necesitamos conocer la derivada de la funci\u00f3n de p\u00e9rdida con respecto a las ponderaciones y sesgos.<\/p>\n<p>Recuerde del an\u00e1lisis que la <strong>derivada de una funci\u00f3n es la tangente de la pendiente de la funci\u00f3n.<\/strong><\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4e9fbda.png\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4e9fbda.png\" alt=\"En palabras simples sobre el complejo: \u00bfqu\u00e9 son las redes neuronales? Escribir una red neuronal feedforward desde cero.\" ><\/a><\/p>\n<p>Si tenemos una derivada, simplemente podemos actualizar los pesos y los sesgos increment\u00e1ndolos \/ disminuy\u00e9ndolos (ver diagrama anterior). A esto se le llama <strong>descenso de gradiente<\/strong>.<\/p>\n<p>Sin embargo, no podemos calcular directamente la derivada de la funci\u00f3n de p\u00e9rdida con respecto a los pesos y sesgos, ya que la ecuaci\u00f3n de la funci\u00f3n de p\u00e9rdida no contiene pesos ni sesgos. Por lo tanto, necesitamos una regla de la cadena para ayudar en el c\u00e1lculo.<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4fe692d.png\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4fe692d.png\" alt=\"En palabras simples sobre el complejo: \u00bfqu\u00e9 son las redes neuronales? Escribir una red neuronal feedforward desde cero.\" ><\/a><\/p>\n<p>\u00a1Fuh! Era engorroso, pero nos permiti\u00f3 obtener lo que necesitamos: la derivada (pendiente) de la funci\u00f3n de p\u00e9rdida con respecto a los pesos. Ahora podemos ajustar los pesos en consecuencia.<\/p>\n<p>Agreguemos la funci\u00f3n de retropropagaci\u00f3n a nuestro c\u00f3digo Python:<\/p>\n<h2>Derivadas parciales<\/h2>\n<p>Se pueden calcular derivadas parciales, por lo que se sabe cu\u00e1l fue la contribuci\u00f3n al error para cada peso. La necesidad de derivados es obvia. Imagine una red neuronal que intenta encontrar la velocidad \u00f3ptima para un veh\u00edculo aut\u00f3nomo. Si el autom\u00f3vil detecta que va m\u00e1s r\u00e1pido o m\u00e1s lento que la velocidad requerida, la red neuronal cambiar\u00e1 la velocidad, acelerando o desacelerando el autom\u00f3vil. \u00bfQu\u00e9 est\u00e1 acelerando \/ desacelerando al mismo tiempo? Derivadas de velocidad.<\/p>\n<p>Veamos la necesidad de derivadas parciales con un ejemplo.<\/p>\n<p>Suponga que se les pide a los ni\u00f1os que lancen un dardo a un objetivo mientras apuntan al centro. Aqu\u00ed est\u00e1n los resultados:<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea51122d6.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea51122d6.jpg\" alt=\"En palabras simples sobre el complejo: \u00bfqu\u00e9 son las redes neuronales? Escribir una red neuronal feedforward desde cero.\" ><\/a><\/p>\n<p>Ahora, si encontramos un error general y simplemente lo restamos de todos los pesos, resumiremos los errores cometidos por cada uno. Entonces, digamos que el ni\u00f1o golpe\u00f3 demasiado bajo, pero les pedimos a todos los ni\u00f1os que se esfuercen por golpear el objetivo, entonces esto conducir\u00e1 a la siguiente imagen:<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea51cbdd8.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea51cbdd8.jpg\" alt=\"En palabras simples sobre el complejo: \u00bfqu\u00e9 son las redes neuronales? Escribir una red neuronal feedforward desde cero.\" ><\/a><\/p>\n<p>El error de varios ni\u00f1os puede disminuir, pero el error total sigue aumentando.<\/p>\n<p>Habiendo encontrado las derivadas parciales, averiguamos los errores correspondientes a cada peso por separado. Si corrige selectivamente los pesos, puede obtener lo siguiente:<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea528fe3a.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea528fe3a.jpg\" alt=\"En palabras simples sobre el complejo: \u00bfqu\u00e9 son las redes neuronales? Escribir una red neuronal feedforward desde cero.\" ><\/a><\/p>\n<h2>Hiperpar\u00e1metros<\/h2>\n<p>Se utiliza una red neuronal para automatizar la selecci\u00f3n de caracter\u00edsticas, pero algunos par\u00e1metros se configuran manualmente.<\/p>\n<h3>Tasa de aprendizaje<\/h3>\n<p>La tasa de aprendizaje es un hiperpar\u00e1metro muy importante. Si la tasa de aprendizaje es demasiado baja, incluso despu\u00e9s de entrenar la red neuronal durante mucho tiempo, estar\u00e1 lejos de obtener resultados \u00f3ptimos. Los resultados se ver\u00e1n as\u00ed:<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea534e6eb.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea534e6eb.jpg\" alt=\"En palabras simples sobre el complejo: \u00bfqu\u00e9 son las redes neuronales? Escribir una red neuronal feedforward desde cero.\" ><\/a><\/p>\n<p>Por otro lado, si la tasa de aprendizaje es demasiado alta, la red responder\u00e1 muy r\u00e1pidamente. El resultado es el siguiente:<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea540f66b.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea540f66b.jpg\" alt=\"En palabras simples sobre el complejo: \u00bfqu\u00e9 son las redes neuronales? Escribir una red neuronal feedforward desde cero.\" ><\/a><\/p>\n<h2>Redes neuronales profundas<\/h2>\n<p>El aprendizaje profundo es una clase de algoritmos de aprendizaje autom\u00e1tico que aprenden a comprender los datos de manera m\u00e1s profunda (de manera m\u00e1s abstracta). Los algoritmos populares para redes neuronales de aprendizaje profundo se presentan en el siguiente diagrama.<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea55368b9.png\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea55368b9.png\" alt=\"En palabras simples sobre el complejo: \u00bfqu\u00e9 son las redes neuronales? Escribir una red neuronal feedforward desde cero.\" ><\/a><\/p>\n<p>Algoritmos de redes neuronales populares (<a href=\"http:\/\/www.asimovinstitute.org\/neural-network-zoo\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">http:\/\/www.asimovinstitute.org\/neural-network-zoo<\/a> )<\/p>\n<p>M\u00e1s formalmente en aprendizaje profundo:<\/p>\n<ul>\n<li>Se utiliza una cascada (canalizaci\u00f3n, como un flujo transmitido secuencialmente) de una pluralidad de capas de procesamiento (no lineales) para extraer y transformar caracter\u00edsticas;<\/li>\n<li>Basado en el estudio de caracter\u00edsticas (presentaci\u00f3n de informaci\u00f3n) en datos sin aprendizaje supervisado. Las funciones de nivel superior (que est\u00e1n en las \u00faltimas capas) se obtienen de las funciones de nivel inferior (que est\u00e1n en las capas de las capas iniciales);<\/li>\n<li>Explora vistas en capas que corresponden a diferentes niveles de abstracci\u00f3n; Los niveles forman una jerarqu\u00eda de presentaci\u00f3n.<\/li>\n<\/ul>\n<h2>Entrene la red neuronal usando funciones XOR<\/h2>\n<p>\u00bfPor qu\u00e9 es tan interesante la funci\u00f3n XOR? Simplemente porque no puede ser obtenido por una neurona: 0 ^ 0 = 0, 0 ^ 1 = 1, 1 ^ 0 = 1, 1 ^ 1 = 0. Sin embargo, se obtiene f\u00e1cilmente aumentando el n\u00famero de neuronas. Intentaremos entrenar una red con 3 neuronas en la capa oculta y 1 salida (ya que solo tenemos una salida). Para hacer esto, necesitamos crear una matriz de vectores X e Y con datos de entrenamiento y la propia red neuronal:<\/p>\n<pre><code>\/\/ \u043c\u0430\u0441\u0441\u0438\u0432 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 Vector[] X = { new Vector(0, 0), new Vector(0, 1), new Vector(1, 0), new Vector(1, 1) }; \/\/ \u043c\u0430\u0441\u0441\u0438\u0432 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 Vector[] Y = { new Vector(0.0), \/\/ 0 ^ 0 = 0 new Vector(1.0), \/\/ 0 ^ 1 = 1 new Vector(1.0), \/\/ 1 ^ 0 = 1 new Vector(0.0) \/\/ 1 ^ 1 = 0 }; Network network = new Network(new int[]{2, 3, 1}); \/\/ \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0441\u0435\u0442\u044c \u0441 \u0434\u0432\u0443\u043c\u044f \u0432\u0445\u043e\u0434\u0430\u043c\u0438, \u0442\u0440\u0435\u043c\u044f \u043d\u0435\u0439\u0440\u043e\u043d\u0430\u043c\u0438 \u0432 \u0441\u043a\u0440\u044b\u0442\u043e\u043c \u0441\u043b\u043e\u0435 \u0438 \u043e\u0434\u043d\u0438\u043c \u0432\u044b\u0445\u043e\u0434\u043e\u043c <\/code><\/pre>\n<p>Luego comenzamos a entrenar con los siguientes par\u00e1metros: tasa de aprendizaje &#8211; 0.5, n\u00famero de \u00e9pocas &#8211; 100000, valor de error &#8211; 1e-7:<\/p>\n<pre><code>network.Train(X, Y, 0.5, 1e-7, 100000); \/\/ \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u0435\u0442\u0438 <\/code><\/pre>\n<p>Despu\u00e9s del entrenamiento, veamos los resultados realizando un pase directo para todos los elementos:<\/p>\n<pre><code>for (int i = 0; i <\/code><\/pre>\n<div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/lastici.ru\" class=\"external external_icon\">lastici.ru<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Estamos hablando de redes neuronales: presentaci\u00f3n f\u00e1cil de informaci\u00f3n compleja para que incluso un ni\u00f1o pueda entender. Estudiamos la base y profundizamos en el tema desde cero.<\/p>\n","protected":false},"author":1,"featured_media":413743,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[252,164,362,428,329,319,285],"tags":[],"class_list":["post-323528","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-diverso","category-investigar","category-negocio","category-ordenador","category-para-los-hombres","category-para-mujeres","category-tecnologias"],"_links":{"self":[{"href":"https:\/\/inform.com.de\/es\/wp-json\/wp\/v2\/posts\/323528","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/inform.com.de\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/inform.com.de\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/inform.com.de\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/inform.com.de\/es\/wp-json\/wp\/v2\/comments?post=323528"}],"version-history":[{"count":0,"href":"https:\/\/inform.com.de\/es\/wp-json\/wp\/v2\/posts\/323528\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/inform.com.de\/es\/wp-json\/wp\/v2\/media\/413743"}],"wp:attachment":[{"href":"https:\/\/inform.com.de\/es\/wp-json\/wp\/v2\/media?parent=323528"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/inform.com.de\/es\/wp-json\/wp\/v2\/categories?post=323528"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/inform.com.de\/es\/wp-json\/wp\/v2\/tags?post=323528"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}