Menú
Está libre
registrarse
el principal  /  Firmware/ Redes neuronales en palabras sencillas. En palabras simples sobre el complejo: ¿qué son las redes neuronales? Historia de las redes neuronales

Redes neuronales en palabras sencillas. En palabras simples sobre el complejo: ¿qué son las redes neuronales? Historia de las redes neuronales

James Loy, tecnología de Georgia. Una guía para principiantes, después de la cual puede crear su propia red neuronal en Python.

Motivación: enfocándose en experiencia personal Al aprender el aprendizaje profundo, decidí construir una red neuronal desde cero sin una biblioteca de aprendizaje compleja como. Creo que es importante que un científico de datos principiante comprenda la estructura interna.

¡Este artículo contiene lo que he aprendido y espero que también te sea útil! Otros artículos relacionados útiles:

¿Qué es una red neuronal?

La mayoría de los artículos sobre redes neuronales trazan paralelismos con el cerebro al describirlos. Es más fácil para mí describir Redes neuronales como una función matemática que asigna una entrada determinada a un resultado deseado sin entrar en detalles.

Las redes neuronales se componen de los siguientes componentes:

  • capa de entrada, x
  • cantidad arbitraria capas ocultas
  • capa de salida, ŷ
  • colocar escamas y desplazamientos entre cada capa W y B
  • selección para cada capa oculta σ ; en este trabajo usaremos la función de activación de Sigmoid

El siguiente diagrama muestra la arquitectura de una red neuronal de dos capas (tenga en cuenta que la capa de entrada generalmente se excluye cuando se cuenta el número de capas en la red neuronal).

Crear una clase de red neuronal en Python parece simple:

Entrenamiento de redes neuronales

Producción ŷ red neuronal simple de dos capas:

En la ecuación anterior, los pesos W y los sesgos b son las únicas variables que afectan la salida ŷ.

Naturalmente, los valores correctos para los pesos y los sesgos determinan la precisión de las predicciones. Proceso sintonia FINA los pesos y sesgos de la entrada se conocen como.

Cada iteración del proceso de formación consta de los siguientes pasos

  • calcular la salida prevista ŷ denominada propagación hacia adelante
  • actualización de ponderaciones y sesgos llamados

El siguiente gráfico secuencial ilustra el proceso:

Distribución directa

Como vimos en el gráfico anterior, la propagación hacia adelante es solo un cálculo simple, y para una red neuronal básica de 2 capas, la salida de la red neuronal viene dada por:

Agreguemos feedforward a nuestro código Python para hacer esto. Tenga en cuenta que, para simplificar, hemos asumido que las compensaciones son 0.

Sin embargo, necesitamos una forma de evaluar la "bondad" de nuestros pronósticos, es decir, qué tan lejos están nuestros pronósticos). Función de pérdida simplemente nos permite hacerlo.

Función de pérdida

Hay muchas funciones de pérdida disponibles, y la naturaleza de nuestro problema debería dictar nuestra elección de función de pérdida. En este trabajo usaremos suma de cuadrados de errores como una función de pérdida.

La suma de los errores al cuadrado es el promedio de la diferencia entre cada valor predicho y el valor real.

El objetivo del entrenamiento es encontrar un conjunto de pesos y sesgos que minimice la función de pérdida.

Retropropagación

Ahora que hemos medido nuestro error de pronóstico (pérdida), necesitamos encontrar una manera propagando el error de vuelta y actualizar nuestras ponderaciones y sesgos.

Para averiguar la cantidad apropiada a corregir por ponderaciones y sesgos, necesitamos conocer la derivada de la función de pérdida con respecto a las ponderaciones y sesgos.

Recuerde del análisis que la derivada de la función es la pendiente de la función.

Si tenemos una derivada, simplemente podemos actualizar los pesos y los sesgos incrementándolos / disminuyéndolos (ver diagrama anterior). Se llama .

Sin embargo, no podemos calcular directamente la derivada de la función de pérdida con respecto a los pesos y sesgos, ya que la ecuación de la función de pérdida no contiene pesos ni sesgos. Por lo tanto, necesitamos una regla de la cadena para ayudar en el cálculo.

¡Fuh! Fue engorroso, pero nos permitió obtener lo que necesitamos: la derivada (pendiente) de la función de pérdida con respecto a los pesos. Ahora podemos ajustar los pesos en consecuencia.

Agreguemos la función de retropropagación a nuestro código Python:

Comprobando el funcionamiento de la red neuronal

Ahora que tenemos nuestro código Python completo para realizar la propagación hacia adelante y hacia atrás, echemos un vistazo a nuestra red neuronal con un ejemplo y veamos cómo funciona.


El juego de pesas perfecto

Nuestra red neuronal necesita aprender el conjunto ideal de pesos para representar esta función.

Entrenemos una red neuronal para 1500 iteraciones y veamos qué sucede. Al observar el gráfico de pérdida de iteración a continuación, podemos ver claramente que la pérdida disminuye monótonamente al mínimo. Esto es consistente con el algoritmo de descenso de gradientes del que hablamos anteriormente.

Veamos la predicción final (salida) de la red neuronal después de 1500 iteraciones.

¡Lo hicimos! Nuestro algoritmo de propagación hacia adelante y hacia atrás mostró una red neuronal exitosa y las predicciones convergen en valores reales.

Tenga en cuenta que existe una ligera diferencia entre las predicciones y los valores reales. Esto es deseable porque evita el sobreajuste y permite que la red neuronal generalice mejor los datos invisibles.

Reflexiones finales

Aprendí mucho en el proceso de escribir mi propia red neuronal desde cero. Si bien las bibliotecas de aprendizaje profundo como TensorFlow y Keras permiten la construcción de redes profundas sin comprender completamente el funcionamiento interno de una red neuronal, me parece útil para los aspirantes a científicos de datos obtener una comprensión más profunda de ellas.

He invertido mucho de mi tiempo personal en este trabajo¡y espero que te sea de utilidad!


Muchos de los términos en las redes neuronales están relacionados biológicamente, así que comencemos por el principio:

El cerebro es algo complejo, pero también se puede dividir en varias partes y operaciones principales:

El agente causal puede ser interno(como una imagen o una idea):

Ahora echemos un vistazo a lo básico y simplificado. partes cerebro:


El cerebro generalmente es como una red cableada.

Neurona- la unidad básica de cálculo en el cerebro, recibe y procesa señales químicas de otras neuronas y, dependiendo de una serie de factores, no hace nada o genera un impulso eléctrico, o un potencial de acción, que luego envía señales a los vecinos. unos a través de sinapsis atado neuronas:

Sueños, recuerdos, movimientos autorreguladores, reflejos y en general todo lo que piensas o haces, todo sucede gracias a este proceso: millones, o incluso miles de millones de neuronas trabajan en diferentes niveles y crean conexiones que crean varios subsistemas paralelos y representan un biológico. neural neto.

Por supuesto, todas estas son simplificaciones y generalizaciones, pero gracias a ellas podemos describir un simple
red neuronal:

Y para describirlo formalizado mediante un gráfico:

Se requiere alguna aclaración aquí. Los círculos son neuronas y las líneas son las conexiones entre ellas,
y, para no complicarnos en esta etapa, interrelaciones representan el movimiento directo de información de izquierda a derecha... Primera neurona en este momento activo y atenuado. También le asignamos un número (1 si funciona, 0 si no). Los números entre neuronas muestran peso comunicación.

Los gráficos anteriores muestran el momento en el tiempo de la red, para una visualización más precisa, debe dividirlo en intervalos de tiempo:

Para crear su propia red neuronal, debe comprender cómo los pesos afectan a las neuronas y cómo se entrenan las neuronas. Tomemos un conejo (conejo de prueba) como ejemplo y pongámoslo en las condiciones de un experimento clásico.

Cuando se les dirige una corriente de aire segura, los conejos, como los humanos, parpadean:

Este comportamiento se puede dibujar con gráficos:

Como en el diagrama anterior, estos gráficos muestran solo el momento en que el conejo siente la respiración y, por lo tanto, nosotros codificación soplar como booleano. Además, calculamos si la segunda neurona está disparando en función del valor de peso. Si es igual a 1, entonces se activa la neurona sensorial, parpadeamos; si el peso es menor que 1, no parpadeamos: la segunda neurona tiene límite- 1.

Introduzcamos un elemento más: seguro señal de sonido:

Podemos modelar el interés de los conejos de esta manera:

La principal diferencia es que el peso es ahora cero así que no obtuvimos un conejo parpadeante, bueno, al menos no todavía. Ahora le enseñaremos al conejo a parpadear cuando se le ordene, mezclando
irritantes (pitidos y aliento):

Es importante que estos eventos tengan lugar en diferentes momentos. épocas, en los gráficos se verá así:

El sonido en sí no hace nada, pero el flujo de aire aún hace que el conejo parpadee, y lo mostramos a través de los pesos multiplicados por los estímulos (en rojo).

Capacitación El comportamiento complejo se puede simplificar como un cambio gradual de peso entre neuronas vinculadas a lo largo del tiempo.

Para entrenar al conejo, repite los pasos:

Para los primeros tres intentos, los circuitos se verán así:

Tenga en cuenta que el peso del estímulo sonoro aumenta después de cada repetición (resaltado en rojo), este valor ahora es arbitrario; elegimos 0.30, pero el número puede ser cualquier cosa, incluso negativo. Después de la tercera repetición, no notará un cambio en el comportamiento del conejo, pero después de la cuarta repetición, sucederá algo sorprendente: el comportamiento cambiará.

Eliminamos la exposición con aire, ¡pero el conejito aún parpadea cuando escucha el pitido! Nuestro último diagrama puede explicar este comportamiento:

Entrenamos al conejo para que respondiera al sonido parpadeando.


En un experimento real de este tipo, pueden ser necesarias más de 60 repeticiones para lograr el resultado.

Ahora dejaremos el mundo biológico del cerebro y los conejos e intentaremos adaptar todo lo que
aprendí a crear una red neuronal artificial. Primero, intentemos hacer una tarea sencilla.

Digamos que tenemos una máquina de cuatro botones que dispensa comida cuando se presiona la correcta.
botones (bueno, o energía si eres un robot). La tarea es averiguar qué botón da la recompensa:

Podemos representar (esquemáticamente) lo que hace el botón cuando se presiona así:

Es mejor resolver este problema en su totalidad, así que veamos todos los resultados posibles, incluido el correcto:


Haga clic en el tercer botón para obtener su cena.

Para reproducir una red neuronal en código, primero necesitamos hacer un modelo o gráfico con el que podamos mapear la red. Aquí hay un gráfico que se ajusta a la tarea y también muestra bien su contraparte biológica:

Esta red neuronal simplemente recibe la información de entrada; en este caso, será la percepción de qué botón se presionó. A continuación, la red reemplaza la información de entrada con pesos y extrae una inferencia basada en la adición de la capa. Suena un poco confuso, pero veamos cómo se representa el botón en nuestro modelo:


Tenga en cuenta que todos los pesos son 0, por lo que la red neuronal, como un bebé, está completamente vacía pero completamente interconectada.

Por lo tanto, asociamos el evento externo con la capa de entrada de la red neuronal y calculamos el valor en su salida. Puede que coincida o no con la realidad, pero ignoraremos esto por ahora y comenzaremos a describir la tarea de una manera comprensible por computadora. Comencemos ingresando los pesos (usaremos JavaScript):

Var entradas =; var pesos =; // Por conveniencia, estos vectores se pueden llamar
El siguiente paso es crear una función que recopile los valores y pesos de entrada y calcule el valor de salida:

Función evaluarNeuralNetwork (inputVector, weightVector) (var result = 0; inputVector.forEach (function (inputValue, weightIndex) (layerValue = inputValue * weightVector; result + = layerValue;)); return (result.toFixed (2));) / / Puede parecer complejo, pero todo lo que hace es hacer coincidir los pares de peso / entrada y agregar el resultado
Como era de esperar, si ejecutamos este código, obtenemos el mismo resultado que en nuestro modelo o gráfico ...

EvaluateNeuralNetwork (entradas, pesos); // 0.00
Ejemplo en vivo: Neural Net 001.

El siguiente paso para mejorar nuestra red neuronal será una forma de verificar su propia salida o los valores resultantes comparables a la situación real.
codifiquemos primero esta realidad específica en una variable:

Para detectar inconsistencias (y cuántas), agregaremos una función de error:

Error = Realidad - Salida de red neuronal
Con él, podemos evaluar el rendimiento de nuestra red neuronal:

Pero lo que es más importante, ¿qué pasa con las situaciones en las que la realidad es beneficiosa?

Ahora sabemos que nuestro modelo de red neuronal no está funcionando (y sabemos cuánto), ¡genial! Esto es genial porque ahora podemos usar la función de error para controlar nuestro aprendizaje. Pero todo esto tendrá sentido si redefinimos la función de error de la siguiente manera:

Error = Salida deseada- Salida de red neuronal
Una discrepancia imperceptible pero tan importante, que muestra tácitamente que
utilizar los resultados obtenidos previamente para compararlos con acciones futuras
(y para entrenamiento, como veremos más adelante). Esto también existe en la vida real, lleno de
patrones repetitivos, por lo que puede convertirse en una estrategia evolutiva (bueno, en
en la mayoría de los casos).

Var entrada =; var pesos =; var deseadoResultado = 1;
Y una nueva función:

Función evaluarNeuralNetError (deseado, actual) (return (deseado - actual);) // Después de evaluar tanto la red como el error obtendríamos: // "Salida de la red neuronal: 0.00 Error: 1"
Ejemplo en vivo: Neural Net 002.

Resumamos el resultado intermedio... Empezamos con una tarea, la hicimos modelo simple en forma de una red neuronal biológica y consiguió una forma de medir su rendimiento en comparación con la realidad o el resultado deseado. Ahora tenemos que encontrar una manera de corregir la inconsistencia, un proceso que puede verse como aprendizaje tanto para las computadoras como para los humanos.

¿Cómo entrenar una red neuronal?

La base para el aprendizaje de redes neuronales tanto biológicas como artificiales es la repetición.
y algoritmos de aprendizaje así que trabajaremos con ellos por separado. Empecemos con
algoritmos de entrenamiento.

En la naturaleza, los algoritmos de aprendizaje se entienden como cambios físicos o químicos.
características de las neuronas después de los experimentos:

Una ilustración dramática de cómo dos neuronas cambian con el tiempo en el código y nuestro modelo de algoritmo de aprendizaje significa que simplemente cambiaremos algo con el tiempo para hacer nuestra vida más fácil. Por lo tanto, agreguemos una variable para indicar el grado de facilidad de vida:

Var learningRate = 0,20; // Cuanto mayor sea el valor, más rápido será el proceso de aprendizaje :)
¿Y qué diferencia hace eso?

Esto cambiará los pesos (¡como un conejo!), Especialmente el peso de la salida que queremos obtener:

Cómo codificar un algoritmo de este tipo es su elección, en aras de la simplicidad agrego el factor de aprendizaje al peso, aquí está como una función:

Función learn (inputVector, weightVector) (weightVector.forEach (function (weight, index, weights) (if (inputVector> 0) (weights = weight + learningRate;)));)
Cuando se usa, esta función de entrenamiento simplemente agregará nuestro factor de entrenamiento al vector de peso neurona activa, antes y después de la ronda de aprendizaje (o repetición) los resultados serán los siguientes:

// Vector de peso original: // Salida de red neuronal: 0.00 Error: 1 aprendizaje (entrada, pesos); // Nuevo vector de peso: // Salida neural neural: 0,20 Error: 0,8 // Si no es obvio, la salida de la red neuronal es cercana a 1 (salida de un pollo); eso es lo que queríamos, por lo que podemos concluir que nos estamos moviendo en la dirección correcta
Ejemplo en vivo: Neural Net 003.

Bien, ahora que vamos en la dirección correcta, la última pieza de este rompecabezas será la implementación. repeticiones.

No es tan difícil, en la naturaleza simplemente hacemos lo mismo una y otra vez, y en el código solo especificamos el número de repeticiones:

Var ensayos = 6;
Y la implementación de la función del número de repeticiones en nuestra red neuronal de entrenamiento se verá así:

Tren de funciones (ensayos) (para (i = 0; i< trials; i++) { neuralNetResult = evaluateNeuralNetwork(input, weights); learn(input, weights); } }
Bueno, nuestro informe final:

Salida neural neural: 0,00 Error: 1,00 Vector de peso: Salida neta neural: 0,20 Error: 0,80 Vector de peso: Salida neta neural: 0,40 Error: 0,60 Vector de peso: Salida neta neural: 0,60 Error: 0,40 Vector de peso: Salida neta neural: Error 0,80 : 0,20 Vector de peso: Neural Salida neta: 1,00 Error: 0,00 Vector de peso: // ¡Cena de pollo!
Ejemplo en vivo: Neural Net 004.

Ahora tenemos un vector de peso que dará solo un resultado (pollo para la cena) si el vector de entrada coincide con la realidad (presionando el tercer botón).

Entonces, ¿qué es tan genial que acabamos de hacer?

En eso caso específico nuestra red neuronal (después del entrenamiento) puede reconocer los datos de entrada y decir, lo que conducirá al resultado deseado (todavía necesitamos programar situaciones específicas):

Además, es un modelo escalable, juguete y herramienta para nuestro entrenamiento contigo. Pudimos aprender algo nuevo sobre el aprendizaje automático, las redes neuronales y la inteligencia artificial.

Precaución para los usuarios:

  • No se proporciona el mecanismo para almacenar los pesos estudiados, por lo que esta red neuronal olvidará todo lo que sabe. Al actualizar o volver a ejecutar el código, se necesitan al menos seis reintentos exitosos para que la red aprenda completamente si cree que una persona o una máquina presionará los botones en un orden aleatorio ... Esto llevará algún tiempo.
  • Las redes biológicas para aprender cosas importantes tienen una tasa de aprendizaje de 1, por lo que solo se necesitará una repetición exitosa.
  • Existe un algoritmo de aprendizaje que se parece mucho a las neuronas biológicas, con un nombre llamativo: regla de widroff-hoff, o entrenamiento de widroff-hoff.
  • Los umbrales de neuronas (1 en nuestro ejemplo) y los efectos de sobreajuste (con un gran número de repeticiones, el resultado será mayor que 1) no se tienen en cuenta, pero son de naturaleza muy importante y son responsables de grandes y complejos bloques de comportamiento. respuestas. También lo son los pesos negativos.

Notas y bibliografía para lectura adicional

He tratado de evitar las matemáticas y los términos duros, pero si está interesado, hemos construido un perceptrón, que se define como un algoritmo de aprendizaje supervisado (aprendizaje supervisado) para clasificadores dobles, algo difícil.

La estructura biológica del cerebro no es un tema fácil, en parte debido a su inexactitud, en parte debido a su complejidad. Mejor empezar con Neurociencia (Purves) y Neurociencia Cognitiva (Gazzaniga). Modifiqué y adapté el ejemplo del conejito de Gateway to Memory (Gluck), que también es una gran guía para el mundo de los gráficos.

Otro gran recurso, Introducción a las redes neuronales (Gurney), se adaptará a todas sus necesidades de inteligencia artificial.

¡Ahora en Python! Gracias a Ilya Andshmidt por proporcionar la versión de Python:

Entradas = pesos = resultado_deseado = 1 tasa_de_aprendizaje = 0.2 pruebas = 6 def evaluar_neural_neural (matriz_de_entrada, matriz_de_peso): resultado = 0 para i en el rango (len (matriz_de_entrada)): layer_value = input_array [i] * weight_array [i] resultado + = layer_value print ("evaluar_neural_network:" + str (resultado)) print ("pesos:" + str (pesos)) devolver resultado def evaluar_error (deseado, actual): error = deseado - actual print ("evaluar_error:" + str (error) ) return error def learn (input_array, weight_array): print ("aprendiendo ...") for i in range (len (input_array)): if input_array [i]> 0: weight_array [i] + = learning_rate def train (pruebas ): para i en el rango (pruebas): resultado_net_neural = red_neural_evaluar (entradas, pesos) aprender (entradas, pesos) entrenar (pruebas)
¡Ahora adelante! Por esta versión agradezco a Kieran Mahir.

Importación principal del paquete ("fmt" "matemáticas") func main () (fmt.Println ("Creando entradas y pesos ...") entradas: = float64 (0.00, 0.00, 1.00, 0.00) pesos: = float64 (0.00, ( para yo: = 1; yo< trials; i++ { weights = learn(inputs, weights, learningRate) output:= evaluate(inputs, weights) errorResult:= evaluateError(desired, output) fmt.Print("Output: ") fmt.Print(math.Round(output*100) / 100) fmt.Print("\nError: ") fmt.Print(math.Round(errorResult*100) / 100) fmt.Print("\n\n") } } func learn(inputVector float64, weightVector float64, learningRate float64) float64 { for index, inputValue:= range inputVector { if inputValue >0.00 (weightVector = weightVector + learningRate)) return weightVector) func evaluar (inputVector float64, weightVector float64) float64 (result: = 0.00 para index, inputValue: = range inputVector (layerValue: = inputValue * weightVector result = result + layerValue) return result ) func evaluError (deseado float64, actual float64) float64 (retorno deseado - actual)

Puedes ayudar y transferir algunos fondos para el desarrollo del sitio.

 

Las redes neuronales están de moda ahora, y por una buena razón. Con su ayuda, puede, por ejemplo, reconocer objetos en imágenes o, a la inversa, dibujar las pesadillas de Salvador Dalí. Gracias a las convenientes bibliotecas, las redes neuronales más simples se crean en solo un par de líneas de código, y no se necesitará más para apelar a la inteligencia artificial de IBM.

Teoría

Los biólogos aún no saben exactamente cómo funciona el cerebro, pero cómo funciona elementos individuales el sistema nervioso está bien estudiado. Consiste en neuronas, células especializadas que intercambian señales electroquímicas entre sí. Cada neurona tiene muchas dendritas y un axón. Las dendritas se pueden comparar con las entradas a través de las cuales los datos ingresan a la neurona, mientras que el axón sirve como salida. Las conexiones entre las dendritas y los axones se denominan sinapsis. No solo transmiten señales, sino que también pueden cambiar su amplitud y frecuencia.

Las transformaciones que ocurren a nivel de neuronas individuales son muy simples, pero incluso las redes neuronales muy pequeñas son capaces de mucho. Toda la variedad de comportamientos del gusano Caenorhabditis elegans (movimiento, búsqueda de alimento, diversas reacciones a estímulos externos y mucho más) están codificados en solo trescientas neuronas. ¡Y bien gusanos! Incluso las hormigas tienen suficientes 250.000 neuronas, y lo que hacen está definitivamente más allá del poder de las máquinas.

Hace casi sesenta años, el investigador estadounidense Frank Rosenblatt intentó crear sistema informático, dispuestos a imagen y semejanza del cerebro, sin embargo, las posibilidades de su creación eran extremadamente limitadas. Desde entonces, el interés en las redes neuronales ha aumentado repetidamente, pero una y otra vez resultó que la potencia informática no es suficiente para ninguna red neuronal avanzada. Mucho ha cambiado a este respecto durante la última década.

Cerebro electromecánico con motor

El coche de Rosenblatt se llamaba Mark I Perceptron. Fue diseñado para el reconocimiento de imágenes, una tarea que las computadoras aún hacen tan mal. El Mark I fue equipado con un parecido a la retina del ojo: una matriz cuadrada de 400 fotocélulas, veinte verticalmente y veinte horizontalmente. Las fotocélulas se conectaron aleatoriamente a modelos electrónicos de neuronas y, a su vez, a ocho salidas. Rosenblatt usó potenciómetros como sinapsis que conectan neuronas electrónicas, fotocélulas y salidas. Al entrenar el perceptrón, 512 motores paso a paso giraban automáticamente las perillas del potenciómetro, ajustando el voltaje en las neuronas según la precisión del resultado en la salida.

Así es como funciona una red neuronal en pocas palabras. Una neurona artificial, como una real, tiene varias entradas y una salida. Cada entrada tiene un factor de ponderación. Al cambiar estos coeficientes, podemos entrenar la red neuronal. La dependencia de la señal de salida de las señales de entrada está determinada por la llamada función de activación.

En el perceptrón de Rosenblatt, la función de activación suma los pesos de todas las entradas a las que llegó una lógica y luego compara el resultado con un valor umbral. Su desventaja fue que un ligero cambio en uno de los factores de ponderación con este enfoque puede tener un impacto desproporcionadamente grande en el resultado. Esto dificulta el aprendizaje.

Las redes neuronales modernas suelen utilizar funciones de activación no lineales como sigmoide. Además, las viejas redes neuronales tenían muy pocas capas. Hoy en día, una o más capas ocultas de neuronas suelen estar ubicadas entre la entrada y la salida. Aquí es donde ocurre toda la diversión.

Para facilitar la comprensión de lo que está en juego, eche un vistazo a este diagrama. Es una red neuronal de retroalimentación con una capa oculta. Cada círculo corresponde a una neurona. A la izquierda están las neuronas de la capa de entrada. A la derecha está la neurona de la capa de salida. En el medio hay una capa oculta con cuatro neuronas. Las salidas de todas las neuronas en la capa de entrada están conectadas a cada neurona en la primera capa oculta. A su vez, las entradas de la neurona de la capa de salida están conectadas a todas las salidas de las neuronas de la capa oculta.

No todas las redes neuronales están diseñadas de esta manera. Por ejemplo, existen (aunque menos comunes) redes en las que la señal de las neuronas se alimenta no solo a la siguiente capa, como la red de alimentación de nuestro circuito, sino también en la dirección opuesta. Estas redes se denominan recurrentes. Las capas completamente conectadas también son solo una de las opciones, e incluso tocaremos una de las alternativas.

Práctica

Entonces, intentemos construir la red neuronal más simple con nuestras propias manos y descubramos cómo funciona en el camino. Usaremos Python con la biblioteca Numpy (podríamos haberlo hecho sin Numpy, pero con Numpy, el álgebra lineal requerirá menos esfuerzo). Este ejemplo se basa en el código de Andrew Trask.

Necesitamos funciones para calcular el sigmoide y su derivada:

La continuación está disponible solo para los participantes

Opción 1. Únase a la comunidad del "sitio" para leer todos los materiales del sitio

La membresía en la comunidad durante el período especificado le abrirá el acceso a TODOS los materiales de Hacker, aumentará su descuento acumulativo personal y le permitirá acumular una puntuación Xakep profesional.

En la primera mitad de 2016, el mundo se enteró de muchos desarrollos en el campo de las redes neuronales: Google (el jugador de red en el camino AlphaGo), Microsoft (varios servicios para identificación de imágenes), startups MSQRD, Prisma y otros demostraron sus algoritmos.

A marcadores

Los editores del sitio dicen para qué sirven las redes neuronales, para qué sirven, por qué capturaron el planeta en este momento, y no años antes o después, cuánto dinero se puede ganar con ellas y quiénes son los principales actores del mercado. Los expertos de MIPT, Yandex, Mail.Ru Group y Microsoft también compartieron sus puntos de vista.

¿Qué son las redes neuronales y qué tareas pueden resolver?

Las redes neuronales son una de las direcciones en el desarrollo de sistemas de inteligencia artificial. La idea es simular lo más fielmente posible el funcionamiento del sistema nervioso humano, es decir, su capacidad para aprender y corregir errores. Esto es caracteristica principal cualquier red neuronal: es capaz de aprender y actuar de forma independiente sobre la base de la experiencia previa, cada vez cometiendo menos y menos errores.

La red neuronal imita no solo la actividad, sino también la estructura del sistema nervioso humano. Una red de este tipo consta de una gran cantidad de elementos computacionales individuales ("neuronas"). En la mayoría de los casos, cada "neurona" se refiere a una capa específica de la red. Los datos de entrada se procesan secuencialmente en todas las capas de la red. Los parámetros de cada "neurona" pueden cambiar dependiendo de los resultados obtenidos en los conjuntos anteriores de datos de entrada, cambiando así el orden de todo el sistema.

Andrey Kalinin, jefe de búsqueda de Mail.ru en Mail.Ru Group, señala que las redes neuronales son capaces de resolver los mismos problemas que otros algoritmos de aprendizaje automático, la única diferencia está en el enfoque del aprendizaje.

Todas las tareas que las redes neuronales pueden resolver están relacionadas de alguna manera con el aprendizaje. Entre las principales áreas de aplicación de las redes neuronales se encuentran la previsión, la toma de decisiones, el reconocimiento de patrones, la optimización, el análisis de datos.

Vlad Shershulsky, director de programas de cooperación tecnológica de Microsoft en Rusia, señala que las redes neuronales ahora se utilizan ampliamente: “Por ejemplo, muchos sitios de Internet grandes las utilizan para hacer que las reacciones al comportamiento de los usuarios sean más naturales y útiles para su audiencia. Las redes neuronales son el núcleo de la mayoría sistemas modernos reconocimiento y síntesis de voz, así como reconocimiento y procesamiento de imágenes. Se utilizan en algunos sistemas de navegación, ya sean robots industriales o coches autónomos. Los algoritmos basados ​​en redes neuronales protegen los sistemas de información de ataques maliciosos y ayudan a identificar contenido ilegal en la red ".

A corto plazo (5-10 años), cree Shershulsky, las redes neuronales se utilizarán aún más ampliamente:

Imagine una cosechadora agrícola, cuyos actuadores están equipados con múltiples cámaras de video. Toma cinco mil fotografías por minuto de cada planta en su franja de trayectoria y, utilizando una red neuronal, analiza si es una maleza, si está infectada con una enfermedad o plagas. Y trata a cada planta de forma individual. ¿Ficción? Ya no. Y en cinco años puede convertirse en la norma. - Vlad Shershulsky, Microsoft

El jefe del laboratorio de sistemas neuronales y aprendizaje profundo en el Centro de Sistemas Vivos del Instituto de Física y Tecnología de Moscú, Mikhail Burtsev, ofrece un mapa tentativo del desarrollo de redes neuronales para 2016-2018:

  • sistemas de reconocimiento y clasificación de objetos en imágenes;
  • interfaces de interacción de voz para Internet de las cosas;
  • sistemas de seguimiento de la calidad del servicio en los centros de llamadas;
  • sistemas de resolución de problemas (incluidos los predictores de tiempo) Mantenimiento), anomalías, amenazas ciberfísicas;
  • sistemas inteligentes de vigilancia y seguridad;
  • reemplazo por bots de algunas de las funciones de los operadores de los centros de llamadas;
  • sistemas de análisis de video;
  • sistemas de autoaprendizaje que optimizan la gestión del flujo de materiales o la ubicación de objetos (en almacenes, transporte);
  • sistemas de control inteligentes y de autoaprendizaje para procesos y dispositivos de producción (incluidos los robóticos);
  • la aparición de sistemas de traducción universales "sobre la marcha" para conferencias y uso personal;
  • la aparición de bots-consultores apoyo técnico o asistentes personales, en funciones cercanas a una persona.

Grigory Bakunov, Director de Difusión de Tecnología de Yandex, cree que la base para la difusión de las redes neuronales en los próximos cinco años será la capacidad de dichos sistemas para tomar varias decisiones: “Lo principal que las redes neuronales están haciendo por una persona es para salvarlo de la toma de decisiones innecesarias. Por lo tanto, se pueden usar en casi todas partes donde una persona viva no toma decisiones demasiado intelectuales. Es esta habilidad la que se explotará durante los próximos cinco años, reemplazando la toma de decisiones humana con un simple autómata ".

Por qué las redes neuronales se han vuelto tan populares en este momento

Los científicos han estado desarrollando redes neuronales artificiales durante más de 70 años. El primer intento de formalizar la red neuronal se remonta a 1943, cuando dos científicos estadounidenses (Warren McCulloch y Walter Pitts) presentaron un artículo sobre el cálculo lógico de las ideas humanas y la actividad neuronal.

Sin embargo, hasta hace poco, dice Andrey Kalinin de Mail.Ru Group, la velocidad de las redes neuronales era demasiado baja para ser ampliamente utilizada y, por lo tanto, dichos sistemas se usaban principalmente en desarrollos relacionados con la visión por computadora, y otros algoritmos se usaban en otras áreas. aprendizaje automático.

Una parte laboriosa y que requiere mucho tiempo del proceso de desarrollo de la red neuronal es entrenarlo. Para que la red neuronal resuelva correctamente las tareas asignadas, se requiere que "ejecute" su operación en decenas de millones de conjuntos de datos de entrada. Es con la aparición de diversas tecnologías de aprendizaje acelerado que Andrei Kalinin y Grigory Bakunov asocian la expansión de las redes neuronales.

Lo principal que ha sucedido ahora es que han aparecido varios trucos que te permiten crear redes neuronales que son mucho menos susceptibles de reentrenamiento.- Grigory Bakunov, Yandex

“En primer lugar, existe una gran variedad de imágenes etiquetadas (ImageNet) de acceso público de las que puede aprender. En segundo lugar, las tarjetas de video modernas permiten entrenar y usar redes neuronales cientos de veces más rápido. En tercer lugar, han aparecido redes neuronales prefabricadas y preparadas que reconocen imágenes, a partir de las cuales puede crear sus aplicaciones sin tardar mucho en preparar la red neuronal para el trabajo. Todo esto proporciona un desarrollo muy poderoso de las redes neuronales en el área del reconocimiento de patrones ”, dice Kalinin.

¿Cuál es el volumen del mercado de redes neuronales?

“Es muy fácil de contar. Puede tomar cualquier área que utilice mano de obra poco calificada, por ejemplo, operadores de centros de llamadas, y simplemente restar todos los recursos humanos. Yo diría que estamos hablando de un mercado multimillonario, incluso dentro de un solo país. Es fácil comprender cuántas personas en el mundo se dedican a trabajos poco cualificados. Entonces, incluso de una manera muy abstracta, creo que estamos hablando de un mercado de cien mil millones de dólares en todo el mundo ”, dice Grigory Bakunov, Director de Difusión de Tecnología de Yandex.

Según algunas estimaciones, más de la mitad de las profesiones estarán automatizadas: este es el volumen máximo en el que se puede aumentar el mercado de algoritmos de aprendizaje automático (y redes neuronales en particular) - Andrey Kalinin, Mail.Ru Group

“Los algoritmos de aprendizaje automático son el siguiente paso en la automatización de cualquier proceso, en el desarrollo de cualquier software... Por lo tanto, el mercado al menos coincide con todo el mercado del software, pero más bien lo supera, porque es posible crear nuevas soluciones inteligentes que son inaccesibles para el software antiguo ”, continúa Andrey Kalinin, director de búsqueda de Mail.ru en Mail.Ru Group. .

Por qué los desarrolladores de redes neuronales crean aplicaciones móviles para el mercado masivo

En los últimos meses, varios proyectos de entretenimiento de alto perfil que utilizan redes neuronales han aparecido en el mercado a la vez; este también es un servicio de video popular que red social Facebook y Aplicaciones rusas para procesamiento de imágenes (inversiones del Grupo Mail.Ru en junio) y otros.

Las habilidades de sus propias redes neuronales fueron demostradas tanto por Google (la tecnología AlphaGo venció al campeón en Go; en marzo de 2016, la corporación subastó 29 pinturas dibujadas por redes neuronales, etc.) y Microsoft (el proyecto CaptionBot, que reconoce imágenes en imágenes y les genera automáticamente subtítulos; el proyecto WhatDog, que determina la raza de un perro a partir de una fotografía; el servicio HowOld, que determina la edad de una persona en la imagen, etc.), y Yandex (en junio, el equipo creó un servicio para reconocer automóviles en imágenes en la aplicación Auto.ru; álbum; en mayo creó el proyecto LikeMo.net para dibujar al estilo de artistas famosos).

Estos servicios de entretenimiento se crean más bien no para resolver problemas globales a los que están dirigidas las redes neuronales, sino para demostrar las capacidades de una red neuronal y realizar su entrenamiento.

“Los juegos son un rasgo característico de nuestro comportamiento como especie. Por un lado, casi todos los escenarios típicos del comportamiento humano se pueden simular en situaciones de juego y, por otro lado, los creadores de juegos y, especialmente, los jugadores pueden disfrutar mucho del proceso. También hay un aspecto puramente utilitario. Un juego bien diseñado no solo brinda satisfacción a los jugadores: mientras juegan, entrenan un algoritmo de red neuronal. Después de todo, las redes neuronales se basan en aprender con el ejemplo ”, dice Vlad Shershulsky de Microsoft.

“En primer lugar, esto se hace para mostrar las capacidades de la tecnología. Realmente no hay otra razón. Si hablamos de Prisma, entonces está claro por qué lo hicieron. Los chicos han construido una especie de canalización que les permite trabajar con imágenes. Para demostrarlo, eligieron una forma de peinado bastante sencilla. ¿Por qué no? Esto es solo una demostración de los algoritmos ”, dice Grigory Bakunov de Yandex.

Andrey Kalinin de Mail.Ru Group tiene una opinión diferente: “Por supuesto, es impresionante desde el punto de vista del público. Por otro lado, no diría que los productos de entretenimiento no se puedan aplicar a áreas más útiles. Por ejemplo, la tarea de estilizar imágenes es extremadamente relevante para una serie de industrias (diseño, juegos de computadora, la animación son solo algunos ejemplos), y el uso completo de las redes neuronales puede optimizar significativamente el costo y los métodos de creación de contenido para ellas ".

Principales actores en el mercado de redes neuronales

Como señala Andrei Kalinin, en general, la mayoría de las redes neuronales presentes en el mercado difieren poco entre sí. “Las tecnologías son aproximadamente las mismas para todos. Pero el uso de redes neuronales es un placer que no todo el mundo puede permitirse. Para entrenar de forma independiente una red neuronal y llevar a cabo muchos experimentos en ella, necesita grandes conjuntos de entrenamiento y una flota de máquinas con costosas tarjetas de video. Obviamente, estas oportunidades existen para grandes compañias", Él dice.

Entre los principales actores del mercado, Kalinin menciona a Google y su división Google DeepMind, que creó la red AlphaGo, y Google Brain. Microsoft tiene sus propios desarrollos en esta área, los está manejando el laboratorio de investigación de Microsoft. Las redes neuronales están siendo creadas por IBM, Facebook (una división de Facebook AI Research), Baidu (Baidu Institute of Deep Learning) y otros. Se está haciendo mucho desarrollo en las universidades técnicas de todo el mundo.

Grigory Bakunov, Director de Difusión de Tecnología de Yandex, señala que también se encuentran desarrollos interesantes en el campo de las redes neuronales entre las nuevas empresas. “Me acordaría, por ejemplo, de la empresa ClarifAI. Esta es una pequeña puesta en marcha, una vez realizada por personas de Google. Ahora son quizás los mejores del mundo para identificar el contenido de una imagen ". Estas nuevas empresas incluyen MSQRD, Prisma y otras.

En Rusia, no solo las nuevas empresas, sino también las grandes empresas de tecnología se dedican al desarrollo en el campo de las redes neuronales; por ejemplo, el holding Mail.Ru Group utiliza redes neuronales para procesar y clasificar textos en la búsqueda y analizar imágenes. La compañía también está llevando a cabo un desarrollo experimental relacionado con bots y sistemas de diálogo.

Yandex también participa en la creación de sus propias redes neuronales: “Básicamente, estas redes ya se utilizan para trabajar con imágenes, con sonido, pero también estamos explorando sus capacidades en otras áreas. Ahora estamos haciendo muchos experimentos en el uso de redes neuronales al trabajar con texto ". Los desarrollos se llevan a cabo en universidades: Skoltech, MIPT, Universidad Estatal de Moscú, HSE y otras.

En la primera mitad de 2016, el mundo se enteró de muchos desarrollos en el campo de las redes neuronales: Google (el jugador de red en el camino AlphaGo), Microsoft (varios servicios para identificación de imágenes), startups MSQRD, Prisma y otros demostraron sus algoritmos.

A marcadores

Los editores del sitio dicen para qué sirven las redes neuronales, para qué sirven, por qué capturaron el planeta en este momento, y no años antes o después, cuánto dinero se puede ganar con ellas y quiénes son los principales actores del mercado. Los expertos de MIPT, Yandex, Mail.Ru Group y Microsoft también compartieron sus puntos de vista.

¿Qué son las redes neuronales y qué tareas pueden resolver?

Las redes neuronales son una de las direcciones en el desarrollo de sistemas de inteligencia artificial. La idea es simular lo más fielmente posible el funcionamiento del sistema nervioso humano, es decir, su capacidad para aprender y corregir errores. Esta es la característica principal de cualquier red neuronal: es capaz de aprender y actuar de forma independiente sobre la base de la experiencia previa, cometiendo cada vez menos errores.

La red neuronal imita no solo la actividad, sino también la estructura del sistema nervioso humano. Una red de este tipo consta de una gran cantidad de elementos computacionales individuales ("neuronas"). En la mayoría de los casos, cada "neurona" se refiere a una capa específica de la red. Los datos de entrada se procesan secuencialmente en todas las capas de la red. Los parámetros de cada "neurona" pueden cambiar dependiendo de los resultados obtenidos en los conjuntos anteriores de datos de entrada, cambiando así el orden de todo el sistema.

Andrey Kalinin, jefe de búsqueda de Mail.ru en Mail.Ru Group, señala que las redes neuronales son capaces de resolver los mismos problemas que otros algoritmos de aprendizaje automático, la única diferencia está en el enfoque del aprendizaje.

Todas las tareas que las redes neuronales pueden resolver están relacionadas de alguna manera con el aprendizaje. Entre las principales áreas de aplicación de las redes neuronales se encuentran la previsión, la toma de decisiones, el reconocimiento de patrones, la optimización, el análisis de datos.

Vlad Shershulsky, director de programas de cooperación tecnológica de Microsoft en Rusia, señala que las redes neuronales ahora se utilizan en todas partes: “Por ejemplo, muchos sitios grandes de Internet las utilizan para hacer que las reacciones al comportamiento de los usuarios sean más naturales y útiles para su audiencia. Las redes neuronales están en el corazón de la mayoría de los sistemas modernos de reconocimiento y síntesis de voz, así como del reconocimiento y procesamiento de imágenes. Se utilizan en algunos sistemas de navegación, ya sean robots industriales o coches autónomos. Los algoritmos basados ​​en redes neuronales protegen los sistemas de información de ataques maliciosos y ayudan a identificar contenido ilegal en la red ".

A corto plazo (5-10 años), cree Shershulsky, las redes neuronales se utilizarán aún más ampliamente:

Imagine una cosechadora agrícola, cuyos actuadores están equipados con múltiples cámaras de video. Toma cinco mil fotografías por minuto de cada planta en su franja de trayectoria y, utilizando una red neuronal, analiza si es una maleza, si está infectada con una enfermedad o plagas. Y trata a cada planta de forma individual. ¿Ficción? Ya no. Y en cinco años puede convertirse en la norma. - Vlad Shershulsky, Microsoft

El jefe del laboratorio de sistemas neuronales y aprendizaje profundo en el Centro de Sistemas Vivos del Instituto de Física y Tecnología de Moscú, Mikhail Burtsev, ofrece un mapa tentativo del desarrollo de redes neuronales para 2016-2018:

  • sistemas de reconocimiento y clasificación de objetos en imágenes;
  • interfaces de interacción de voz para Internet de las cosas;
  • sistemas de seguimiento de la calidad del servicio en los centros de llamadas;
  • sistemas para identificar problemas (incluida la predicción del tiempo de mantenimiento), anomalías, amenazas ciberfísicas;
  • sistemas inteligentes de vigilancia y seguridad;
  • reemplazo por bots de algunas de las funciones de los operadores de los centros de llamadas;
  • sistemas de análisis de video;
  • sistemas de autoaprendizaje que optimizan la gestión del flujo de materiales o la ubicación de objetos (en almacenes, transporte);
  • sistemas de control inteligentes y de autoaprendizaje para procesos y dispositivos de producción (incluidos los robóticos);
  • la aparición de sistemas de traducción universales "sobre la marcha" para conferencias y uso personal;
  • la aparición de bots-consultores de soporte técnico o asistentes personales, en funciones cercanas a una persona.

Grigory Bakunov, Director de Difusión de Tecnología de Yandex, cree que la base para la difusión de las redes neuronales en los próximos cinco años será la capacidad de dichos sistemas para tomar varias decisiones: “Lo principal que las redes neuronales están haciendo por una persona es para salvarlo de la toma de decisiones innecesarias. Por lo tanto, se pueden usar en casi todas partes donde una persona viva no toma decisiones demasiado intelectuales. Es esta habilidad la que se explotará durante los próximos cinco años, reemplazando la toma de decisiones humana con un simple autómata ".

Por qué las redes neuronales se han vuelto tan populares en este momento

Los científicos han estado desarrollando redes neuronales artificiales durante más de 70 años. El primer intento de formalizar la red neuronal se remonta a 1943, cuando dos científicos estadounidenses (Warren McCulloch y Walter Pitts) presentaron un artículo sobre el cálculo lógico de las ideas humanas y la actividad neuronal.

Sin embargo, hasta hace poco, dice Andrey Kalinin de Mail.Ru Group, la velocidad de las redes neuronales era demasiado baja para ser ampliamente utilizada y, por lo tanto, dichos sistemas se usaban principalmente en desarrollos relacionados con la visión por computadora, y otros algoritmos se usaban en otras áreas. aprendizaje automático.

Una parte laboriosa y que requiere mucho tiempo del proceso de desarrollo de la red neuronal es entrenarlo. Para que la red neuronal resuelva correctamente las tareas asignadas, se requiere que "ejecute" su operación en decenas de millones de conjuntos de datos de entrada. Es con la aparición de diversas tecnologías de aprendizaje acelerado que Andrei Kalinin y Grigory Bakunov asocian la expansión de las redes neuronales.

Lo principal que ha sucedido ahora es que han aparecido varios trucos que te permiten crear redes neuronales que son mucho menos susceptibles de reentrenamiento.- Grigory Bakunov, Yandex

“En primer lugar, existe una gran variedad de imágenes etiquetadas (ImageNet) de acceso público de las que puede aprender. En segundo lugar, las tarjetas de video modernas permiten entrenar y usar redes neuronales cientos de veces más rápido. En tercer lugar, han aparecido redes neuronales prefabricadas y preparadas que reconocen imágenes, a partir de las cuales puede crear sus aplicaciones sin tardar mucho en preparar la red neuronal para el trabajo. Todo esto proporciona un desarrollo muy poderoso de las redes neuronales en el área del reconocimiento de patrones ”, dice Kalinin.

¿Cuál es el volumen del mercado de redes neuronales?

“Es muy fácil de contar. Puede tomar cualquier área que utilice mano de obra poco calificada, por ejemplo, operadores de centros de llamadas, y simplemente restar todos los recursos humanos. Yo diría que estamos hablando de un mercado multimillonario, incluso dentro de un solo país. Es fácil comprender cuántas personas en el mundo se dedican a trabajos poco cualificados. Entonces, incluso de una manera muy abstracta, creo que estamos hablando de un mercado de cien mil millones de dólares en todo el mundo ”, dice Grigory Bakunov, Director de Difusión de Tecnología de Yandex.

Según algunas estimaciones, más de la mitad de las profesiones estarán automatizadas: este es el volumen máximo en el que se puede aumentar el mercado de algoritmos de aprendizaje automático (y redes neuronales en particular) - Andrey Kalinin, Mail.Ru Group

“Los algoritmos de aprendizaje automático son el siguiente paso en la automatización de cualquier proceso, en el desarrollo de cualquier software. Por lo tanto, el mercado al menos coincide con todo el mercado del software, pero más bien lo supera, porque es posible crear nuevas soluciones inteligentes que son inaccesibles para el software antiguo ”, continúa Andrey Kalinin, director de búsqueda de Mail.ru en Mail.Ru Group. .

Por qué los desarrolladores de redes neuronales crean aplicaciones móviles para el mercado masivo

En los últimos meses, aparecieron en el mercado varios proyectos de entretenimiento de alto perfil que utilizan redes neuronales: este es el popular servicio de video, que es la red social Facebook, y aplicaciones rusas para procesar imágenes (en junio, las inversiones de Mail .Ru Group) y otros.

Las habilidades de sus propias redes neuronales fueron demostradas tanto por Google (la tecnología AlphaGo venció al campeón en Go; en marzo de 2016, la corporación subastó 29 pinturas dibujadas por redes neuronales, etc.) y Microsoft (el proyecto CaptionBot, que reconoce imágenes en imágenes y les genera automáticamente subtítulos; el proyecto WhatDog, que determina la raza de un perro a partir de una fotografía; el servicio HowOld, que determina la edad de una persona en la imagen, etc.), y Yandex (en junio, el equipo creó un servicio para reconocer automóviles en imágenes en la aplicación Auto.ru; álbum; en mayo creó el proyecto LikeMo.net para dibujar al estilo de artistas famosos).

Estos servicios de entretenimiento se crean más bien no para resolver problemas globales a los que están dirigidas las redes neuronales, sino para demostrar las capacidades de una red neuronal y realizar su entrenamiento.

“Los juegos son un rasgo característico de nuestro comportamiento como especie. Por un lado, casi todos los escenarios típicos del comportamiento humano se pueden simular en situaciones de juego y, por otro lado, los creadores de juegos y, especialmente, los jugadores pueden disfrutar mucho del proceso. También hay un aspecto puramente utilitario. Un juego bien diseñado no solo brinda satisfacción a los jugadores: mientras juegan, entrenan un algoritmo de red neuronal. Después de todo, las redes neuronales se basan en aprender con el ejemplo ”, dice Vlad Shershulsky de Microsoft.

“En primer lugar, esto se hace para mostrar las capacidades de la tecnología. Realmente no hay otra razón. Si hablamos de Prisma, entonces está claro por qué lo hicieron. Los chicos han construido una especie de canalización que les permite trabajar con imágenes. Para demostrarlo, eligieron una forma de peinado bastante sencilla. ¿Por qué no? Esto es solo una demostración de los algoritmos ”, dice Grigory Bakunov de Yandex.

Andrey Kalinin de Mail.Ru Group tiene una opinión diferente: “Por supuesto, esto es impresionante desde el punto de vista del público. Por otro lado, no diría que los productos de entretenimiento no se puedan aplicar a áreas más útiles. Por ejemplo, la tarea de estilizar imágenes es extremadamente relevante para varias industrias (el diseño, los juegos de computadora, la animación son solo algunos ejemplos), y el uso completo de las redes neuronales puede optimizar significativamente el costo y los métodos de creación de contenido para ellas. "

Principales actores en el mercado de redes neuronales

Como señala Andrei Kalinin, en general, la mayoría de las redes neuronales presentes en el mercado difieren poco entre sí. “Las tecnologías son aproximadamente las mismas para todos. Pero el uso de redes neuronales es un placer que no todo el mundo puede permitirse. Para entrenar de forma independiente una red neuronal y realizar muchos experimentos en ella, necesita grandes conjuntos de entrenamiento y una flota de máquinas con costosas tarjetas de video. Obviamente, las grandes empresas tienen esas oportunidades ”, dice.

Entre los principales actores del mercado, Kalinin menciona a Google y su división Google DeepMind, que creó la red AlphaGo, y Google Brain. Microsoft tiene sus propios desarrollos en esta área, los está manejando el laboratorio de investigación de Microsoft. Las redes neuronales están siendo creadas por IBM, Facebook (una división de Facebook AI Research), Baidu (Baidu Institute of Deep Learning) y otros. Se está haciendo mucho desarrollo en las universidades técnicas de todo el mundo.

Grigory Bakunov, Director de Difusión de Tecnología de Yandex, señala que también se encuentran desarrollos interesantes en el campo de las redes neuronales entre las nuevas empresas. “Me acordaría, por ejemplo, de la empresa ClarifAI. Esta es una pequeña puesta en marcha, una vez realizada por personas de Google. Ahora son quizás los mejores del mundo para identificar el contenido de una imagen ". Estas nuevas empresas incluyen MSQRD, Prisma y otras.

En Rusia, no solo las nuevas empresas, sino también las grandes empresas de tecnología se dedican al desarrollo en el campo de las redes neuronales; por ejemplo, el holding Mail.Ru Group utiliza redes neuronales para procesar y clasificar textos en la búsqueda y analizar imágenes. La compañía también está llevando a cabo un desarrollo experimental relacionado con bots y sistemas de diálogo.

Yandex también participa en la creación de sus propias redes neuronales: “Básicamente, estas redes ya se utilizan para trabajar con imágenes, con sonido, pero también estamos explorando sus capacidades en otras áreas. Ahora estamos haciendo muchos experimentos en el uso de redes neuronales al trabajar con texto ". Los desarrollos se llevan a cabo en universidades: Skoltech, MIPT, Universidad Estatal de Moscú, HSE y otras.