Aprendizaje automático y desarrollo móvil

Como regla general, un científico de datos tiene una vaga idea del desarrollo móvil, y los desarrolladores de aplicaciones móviles no participan en el aprendizaje automático. Andrei Volodin , ingeniero de Prisma AI, vive en la unión de estos dos mundos y les dijo a los presentadores de podcast Podlodka cómo se siente.

Aprovechando el momento, Stas Tsyganov (Tutu.ru) y Gleb Novik (Tinkoff Bank), en primer lugar, dejaron en claro de una vez por todas que nadie está entrenando redes neuronales en dispositivos móviles . Y también descubrí que en el aprendizaje automático, desafortunadamente, no hay magos; discutió técnicas modernas como aprendizaje profundo, aprendizaje por refuerzo y redes de cápsulas.

Como resultado, ya que Podlodka es un programa de audio sobre desarrollo móvil, se acercaron a ella y descubrieron cómo funciona todo para dispositivos móviles.

La siguiente es la versión de texto de esta conversación, y la entrada del podcast está aquí .

Acerca de Andrei Volodin, cocos2d y Fiber2d


GLEB: Cuéntanos un poco sobre ti. Que estas haciendo

ANDREW: Soy un desarrollador móvil, pero hago muy poco en el desarrollo clásico de iOS. Mis responsabilidades prácticamente no incluyen trabajar con UIKit. Soy el desarrollador principal del motor de juegos Cocos2d bastante popular en GitHub. Por el momento, soy ingeniero de GPU en Prisma. Mis responsabilidades incluyen la integración de redes neuronales en tarjetas de video y trabajar con realidad aumentada, en particular, con el kit VR.

GLEB: ¡Genial! Especialmente interesante sobre cocos2d. Que yo sepa, este marco apareció hace mucho tiempo.

ANDREW: Sí, alrededor de 2009.

GLEB: ¿Lo usaste desde el principio?

ANDREW: No. Me convertí en el desarrollador principal solo en 2015. Antes de eso, era un contribuidor principal. Apportable, que financió el desarrollo, se declaró en quiebra, las personas que recibieron el dinero para el desarrollo se fueron y yo me convertí en el líder. Ahora soy administrador en el foro y ayudo a los recién llegados con algunos problemas. Las últimas versiones las he publicado. Es decir, soy el mantenedor principal en este momento.

GLEB: ¿Pero cocos2d sigue vivo?

ANDREW: Lo más probable es que no, principalmente debido al hecho de que está escrito en Objective-C, y hay mucho legado. Por ejemplo, apoyo mis juguetes antiguos escritos con su uso, otros desarrolladores, mis proyectos heredados. De los motores actuales se puede escuchar sobre Fiber2d. Este es también mi proyecto.

Fiber2d es el primer motor de juegos Swift que se transfiere a Android. Lanzamos un juego escrito completamente en Swift tanto en iOS como en Android. Sobre esto también se puede encontrar en Github. Este es el próximo hito en el desarrollo de la comunidad cocos2d.

Sobre el aprendizaje automático en los dedos


GLEB: Comencemos a avanzar gradualmente hacia nuestro tema hoy. Hoy hablaremos sobre el aprendizaje automático y todo lo que lo rodea , conectado y desconectado con teléfonos móviles. Primero, descubramos de qué se trata el aprendizaje automático. Trataremos de explicar todo lo posible con los dedos, porque no todos los desarrolladores móviles están familiarizados con él. ¿Puedes decirnos qué es?

ANDREW: Basado en la definición clásica, el aprendizaje automático es una búsqueda de patrones en un conjunto de datos . Un ejemplo clásico son las redes neuronales, que ahora son muy populares. Entre ellos hay redes relacionadas con la clasificación. Un ejemplo simple de la tarea de clasificación es determinar lo que se muestra en la imagen: hay algún tipo de imagen, y queremos entender qué es: un perro, un gato u otra cosa.

Escribir esto con código estándar es muy difícil porque no está claro cómo hacerlo. Por lo tanto, se utilizan modelos matemáticos, que se denominan aprendizaje automático. Se basan en el hecho de que ciertos patrones se extraen de una gran cantidad de ejemplos, y luego, usando estos patrones, es posible hacer predicciones con cierta precisión sobre nuevos ejemplos que no estaban en el conjunto de datos original. Esto es, en pocas palabras.

GLEB: En consecuencia, ¿está aprendiendo una historia sobre cambiar un modelo utilizando un conjunto de datos de capacitación?

ANDREW: Durante el entrenamiento, el modelo, como regla, permanece constante. Es decir, eliges algún tipo de arquitectura y la aprendes. Si tomamos por ejemplo las redes neuronales, que no se limitan a todo el aprendizaje automático, inicialmente, en términos generales, todos los pesos son ceros u otros valores idénticos. A medida que alimentamos nuestros datos al marco de aprendizaje, los pesos cambian un poco con cada nuevo ejemplo, y al final se vierten en una máquina entrenada.

STAS: El objetivo final de este modelo es proporcionar rápidamente algunos datos que no provienen de la muestra de capacitación, ¿obtener rápidamente el resultado?

ANDREW: Sí, pero no se trata solo de velocidad. Por ejemplo, algunas tareas no se pueden resolver de manera diferente; por ejemplo, el ejemplo de clasificación es muy no trivial. Antes de que se dispararan las redes de clasificación, no había ninguna solución para comprender lo que se muestra en la imagen. Es decir, en algunas áreas esta es una tecnología directamente revolucionaria.

Sobre el trabajo manual y el aprendizaje automático


STAS: Hace poco le dije a mi abuela qué es el aprendizaje automático. Inicialmente pensó que el aprendizaje automático es cuando una máquina le enseña a alguien. Comencé a explicarle que, de hecho, por el contrario, estamos tratando de enseñarle a la máquina para que luego realice algún tipo de tarea.

Presenté los problemas que resuelve el aprendizaje automático. La mayoría de ellos, antes de que se disparara el aprendizaje automático, eran realizados por personas. Además, esto no se consideró un trabajo poco calificado, pero no de alta tecnología, digamos que sí. Estas son las operaciones más simples que una persona puede realizar en gran medida. ¿Te imaginas eso?

ANDREW: Eso también se puede decir. De hecho, ahora aún se necesita ese trabajo, pero solo para preparar conjuntos de datos para el aprendizaje automático. De hecho, en algunas áreas, por ejemplo, en medicina, el aprendizaje automático hace posible suavizar un poco las tareas de rutina y facilitar un poco el proceso. Pero no siempre No diría que el aprendizaje automático se centra en facilitar el trabajo tonto. A veces hace un trabajo bastante intelectual.

STAS: ¿Puedes dar un ejemplo de ese trabajo intelectual?

ANDREW: Por ejemplo, nuestra aplicación Prisma, muchos probablemente la usaron (¡esto no es un anuncio!) No se puede decir que se trata de un trabajo intelectual y la gente a menudo redibuja la imagen en imágenes, y la red neuronal lo hace: le das una imagen normal y obtienes algo nuevo . Además, uno puede discutir si es hermoso o no, pero el hecho es indiscutible de que es algo que una persona no puede hacer, o lleva una cantidad enorme de tiempo.

Sobre la historia


GLEB: Sí, creo que este es un gran ejemplo. Probablemente valga la pena echar un vistazo a la historia. ¿Cuánto tiempo se ha desarrollado este tema? Me parece que casi desde los inicios de la programación, al menos hace mucho, mucho tiempo.

ANDREW: Sí, en general, la mayoría de los conceptos que ahora se aplican ya se desarrollaron en los años 90. Naturalmente, ahora han aparecido nuevos algoritmos y la calidad de los algoritmos ha mejorado. Y aunque existe la sensación de que un repentino interés en el aprendizaje automático surgió de la nada, de hecho, la gente ha estado interesada en él durante mucho tiempo.

El progreso en las primeras etapas se debió al hecho de que estos son en su mayoría modelos matemáticos, y las matemáticas se han estabilizado durante mucho tiempo en términos de descubrimientos.

La explosión actual se debe únicamente al hecho de que las capacidades de hierro a nuestro alrededor han crecido significativamente , principalmente debido al uso de tarjetas de video. Debido al hecho de que hoy podemos hacer una gran computación paralela, han aparecido nuevas tecnologías: aprendizaje automático, criptomonedas, etc.

En su mayor parte, el interés actual y, en general, la ola actual están relacionados con el hecho de que simplemente se hizo posible . Estos cálculos podrían hacerse antes, pero catastróficamente largos. Ahora les lleva un tiempo bastante razonable, por lo que todos comenzaron a usarlo.

Sobre el hierro


STAS: Actualmente estoy tomando un curso, y allí, incluido, necesito entrenar todo tipo de modelos. Entreno a algunos de ellos en mi MacBook de trabajo. Sí, en algunos casos, tiene que esperar, tal vez 5 minutos, y los modelos no son los mejores, la precisión promedio es de alrededor del 85%, pero lo principal es que funcionan. Está claro que en la batalla quieres tener este porcentaje mejor y tal vez para la producción no sea del todo adecuado.

ANDREW: Sí, tales modelos probablemente no sean muy interesantes. Lo más probable es que esto se deba a las predicciones más simples, etc. En realidad, por ejemplo, una muestra de entrenamiento puede pesar 90 GB, y todo esto puede tomar una semana para aprender. ¡Empresas como Nvidia se jactan de que ahora han lanzado una nueva tarjeta gráfica especial de Tesla y puedes entrenar a Inception V3 en 24 horas! Esto se considera un avance directo, porque antes tardó varias semanas.

Cuantos más conjuntos de datos y más compleja sea la estructura del modelo, más tiempo llevará aprender . Pero el rendimiento no es el único problema. En principio, si realmente lo necesita, puede esperar un mes. El problema está relacionado con la inferencia: cómo aplicar esta red neuronal más adelante. Es necesario que durante su uso también muestre buenos resultados en términos de rendimiento.

STAS: Porque, en particular, quiero que todo funcione en dispositivos móviles y que funcione rápidamente.

ANDREW: No creo que inicialmente comenzó a desarrollarse con miras a trabajar en aplicaciones móviles. Tal auge comenzó en algún lugar en 2011, y de todos modos, estas fueron soluciones de escritorio. Pero ahora el verdadero interés de la comunidad está respaldado por el hecho de que en los iPhones, incluido, se ha hecho posible lanzar redes que funcionan en tiempo real.

GLEB: Stas, dijiste que el resultado final depende de la potencia de tu tarjeta de video y, en general, del sistema. Es decir, ¿no funciona de otra manera?

ANDREW: Esto no es así, pero no estoy seguro de que el modelo sea entrenado en una máquina de baja potencia.

GLEB: Por cierto, recuerdo, hace 5 años, cuando solo había un auge en las redes neuronales, nuestros maestros dijeron que todo lo nuevo es solo un viejo olvido. Todo ya estaba en los años 70-80 y no funcionará, desde entonces no funcionó. Probablemente, todavía estaban equivocados.

ANDREW: Sí Para algunas tareas, el aprendizaje automático ahora se ha disparado muy duro. Objetivamente, se puede decir que funcionan.

Sobre el aprendizaje profundo


GLEB: Hay algo tan de moda: el aprendizaje profundo. ¿Cuál es su diferencia de lo que hablamos para esto?

ANDREW: No diría que hay diferencias. Hay solo algunos subconjuntos de aprendizaje automático, y hay una gran cantidad de ellos. Debe comprender que lo que se llama aprendizaje profundo es esa parte del aprendizaje automático que comúnmente se conoce como redes neuronales . Se llama profundo porque hay muchas capas en las redes neuronales, y cuantas más capas, más profunda es la red neuronal. De esto vino el nombre.

Pero hay otros tipos de aprendizaje automático. Por ejemplo, el aprendizaje automático basado en árboles se ha utilizado con éxito para el seguimiento de rostros hasta ahora porque es mucho más rápido que las neuronas. También se usa para clasificar, mostrar anuncios y más.

Es decir, el aprendizaje profundo no es otra cosa. Esto es en realidad un subconjunto de aprendizaje automático que incluye una tonelada de todo. Solo el aprendizaje profundo se ha convertido en el más popular hoy en día.

Sobre la teoría de las redes neuronales.


STAS: Quería hablar un poco sobre la teoría de las redes neuronales, lo intentaré más fácilmente. Dijiste que tienen muchas capas. En teoría, si tenemos una capa, y hay algunos objetos ubicados en el plano, con la ayuda de una capa podemos dividir este plano en dos partes, ¿verdad?

ANDREW: No, en realidad no.

STAS: ¿Qué nos da una gran cantidad de capas, si están en los dedos?

ANDREW: ¿Qué es una red neuronal? Vamos a aclararlo. Esta es solo una función matemática que toma un conjunto de números como entrada y también proporciona un conjunto de números como salida, eso es todo.

Que hay adentro Ahora las más populares son las redes convolucionales dentro de las cuales tiene lugar la convolución: simplemente hay muchas multiplicaciones de matrices entre sí, los resultados se suman, estas operaciones se realizan en cada capa. Además, entre las capas existe la llamada activación, que solo permite que las redes neuronales sean profundas.

Dado que la combinación de transformaciones lineales es una transformación lineal, después de hacer 10 capas lineales, todavía se pueden representar como una capa lineal. Para que las capas no colapsen, entre ellas hay ciertas acciones matemáticas que hacen que la función no sea lineal. Esto es necesario para aumentar el número de parámetros.

En términos generales, una red neuronal es solo una gran variedad de números, que luego se aplican de alguna manera a nuestros datos, por ejemplo, a una imagen. Pero una imagen, también un conjunto de números, es solo una serie de píxeles. Cuando entrenamos la red, consideramos, por ejemplo, 15 millones de parámetros (cada número es un parámetro separado), que pueden desplazarse ligeramente un poco hacia la izquierda, un poco hacia la derecha con la ayuda de algunas heurísticas. Gracias a una cantidad tan enorme de parámetros, se obtienen resultados geniales.

Se necesita un entrenamiento profundo precisamente para que haya muchos de estos parámetros, y todo no se colapse en una sola capa.

GLEB: Parece más o menos claro.

ANDREW: El aprendizaje profundo es un subconjunto del aprendizaje automático. Pero por alguna razón, surgió una exageración sobre este tema, especialmente hace algún tiempo de todas las grietas, creo que se podría escuchar sobre el aprendizaje profundo. No sé si está justificado o no.

GLEB: Creo que tal popularidad se debe al hecho de que da resultados impresionantes.

Sobre tareas


STAS: Con la ayuda de las redes neuronales, puede resolver la mayoría de los problemas del aprendizaje automático, ¿verdad?

ANDREW: Sí

STAS: Entonces, ¿qué tareas se pueden resolver con métodos de aprendizaje automático?

ANDREW: En realidad, este es un tema delicado, porque en realidad necesitas dejar de idealizar y romantizar lo que está sucediendo. Como dije, no hay inteligencia artificial allí. Este es un modelo puramente matemático y una función matemática que multiplica algo, etc.

Por el lado, parece que ahora el aprendizaje automático se ha estancado un poco en ciertas categorías de tareas. Esto, por ejemplo, la clasificación (un ejemplo del que hablamos al principio), el seguimiento de los objetos y su segmentación. El último está en nuestra aplicación Sticky AI: selecciona a una persona y se elimina el fondo. También hay segmentación médica biológica cuando, por ejemplo, se detectan células cancerosas. Hay redes generativas que aprenden de números aleatorios, y luego pueden crear algo nuevo. Hay tareas de Transferencia de estilo y otras.

Pero por el momento no hay una plataforma e infraestructura convenientes para usar el aprendizaje automático. Por ejemplo, tiene un problema que usted, como persona, puede resolver fácilmente, pero como programador, no puede resolverlo debido a su complejidad y porque no puede simplemente escribir un algoritmo imperativo. Pero al mismo tiempo, tampoco es posible entrenar una red neuronal principalmente porque hay un problema con la escasez de datos. Para entrenar una neurona, necesita grandes conjuntos de datos con muchos ejemplos, además de muy formalizados, descritos en una determinada regulación, etc. Además, necesita la arquitectura de esta red neuronal.

Es decir, primero debe formalizar los datos de entrada en forma de números , hacer la arquitectura del modelo en sí, luego formalizar los datos de salida en forma de números, de alguna manera interpretarlos. Para hacer esto, necesita un aparato matemático bastante poderoso y, en general, una comprensión de cómo funciona todo. Por lo tanto, ahora me parece que el uso de neuronas fuera de compañías especializadas como la nuestra está disminuyendo un poco.

Algunas tareas que no se resolvieron antes, las neuronas aprendieron a resolver muy bien. Pero no existe tal cosa que las neuronas vinieron y resolvieron todo el espectro de problemas no resueltos.

GLEB: ¿En qué áreas ve problemas globales para los cuales las redes neuronales generalmente no son adecuadas?

ANDREW: Es difícil responder de inmediato. Nos enfrentamos a tareas en las que estamos trabajando y en las que no es posible entrenar una red neuronal. Por ejemplo, ahora la industria del juego está muy interesada en aprender, e incluso hay algunas neuronas que tienen inteligencia artificial. Pero, por ejemplo, esto aún no se usa en los juegos AAA, porque de todos modos, en este momento es imposible entrenar la inteligencia artificial de un soldado abstracto para que se comporte como una persona para que parezca natural. Es dificil

Sobre Dota


STAS: ¿Has oído que la inteligencia artificial ya está ganando en Dota?

ANDREW: Sí, pero sigue siendo un poco diferente. Dota es un juego bastante matemático, se puede describir. No quiero ofender a nadie, pero esto es, de hecho, como las damas: el juego es el mismo. Hay ciertas reglas, y solo juegas con ellas.

Pero al mismo tiempo, todavía hay dificultades para crear algún tipo de comportamiento natural, asociado principalmente con una pequeña cantidad de datos y un pequeño número de ingenieros que pueden hacerlo.

Por ejemplo, en Google, los ingenieros están utilizando redes neuronales para entrenar a un modelo humano en 3D a caminar, solo para que se mueva. Siempre se ve horrible, la gente no camina así.

Sobre TensorFlow


STAS: Usted dijo que ahora, de hecho, no hay una manera fácil y económica de resolver los problemas de aprendizaje automático sin comprender el aprendizaje automático. En cualquier caso, resulta que esto debe ser confundido. Me gustaría saber sobre TensorFlow. Parece que Google está tratando de asegurarse de que incluso las personas que no están muy familiarizadas con esto y que no tengan una gran experiencia puedan resolver algunos problemas simples. Dime qué es TensorFlow y cómo crees que es posible.

ANDREW: Vamos en orden. TensorFlow no es realmente la cosa más fácil de todas . Este es uno de los llamados marcos de aprendizaje más populares: un marco de aprendizaje de propósito general, no necesariamente una neurona. Este no es el marco de más alto nivel disponible. Existe, por ejemplo, Keras, que es una abstracción de nivel superior en TensorFlow. Allí puede hacer lo mismo con mucho menos código.

Las tareas típicas se resuelven de manera bastante simple, porque, en particular, Github ya está lleno de ejemplos y repositorios. Digamos que si su empresa realiza una búsqueda de imágenes para una librería, entonces, en principio, todo está bien para usted. Usted va a Github, hay ejemplos de cómo puede tomar características de la imagen, escribe una búsqueda de características, ¡ya está!

De hecho, este es el caso con una gran cantidad de tareas. , . - , , , , , , TensorFlow — . , .

: , Google , ?

: , , , . , , , . , , .



: , . ? -, .

: . — « , , ». , .

: , , , , . ? , , 15 - iOS , - . , . , .

: — , , - . — — . . , , R&D , : «, !» — - , , , 0,5%: «, , !» . , .

: , , - , , . ? . , — , 70%. , , . , . , , .

: , , , . , . , - , . .

: , .



: , . .



: , ? , , , — ?

: , , . , .

-, , . , computer science. , .

. , 500 Python, . . . , . , , .

, . - , . , .

: , Python - , , C++? , .

: , . - learning , , TensorFlow, TensorFlow. ,

— , TensorFlow. TensorFlow — 1 — , , .

. , iOS . , learning , , Caffe, Torch, TensorFlow ., .

, , , . R&D - , . . () : « !» — , . C++.

:

  • , . , .
  • .



: . , , .

: , ? , ?

: , . , — . : , , : «, , — », - . , , -, - . , . .

. , , , .

: Google , Google Street Maps. , .

: , - .

Data Scientist


: . , — , , ?

: , .

: , , , , data scientist'. , - . . , , . — !

, . , -, . .

: hype train.

: , , data scientist . , .

: , . - data scientist'?

: . , . , , , Git- . Data scientist - , . , code review, unit- — . , .

: , , .

: , , - , , Kaffe 2, PyTorch — ! : « Data scientist TensorFlow».

GPU-


. , , , Swift, UI-kit, . , , .

, - , . , . , , . enterprise.

- , , , . , , . , .

: , . GPU - . , — . , Junior GPU . , , .



: — .

: , ?

: , , - .

: — ?

: , , -, - .

: , ?

: . , , , , . Macbook Air. — - , , .

, Nvidia Titan , . , .



: ? , Nvidia , . , , . ?

: print , . NIPS, , , . , , . - , — , .

. ONNX , . . , . , , . , - , . .



: , . , , , ?

: , . , . , . , — , ..

, . , . — , , . . , , . , , .

reinforcement training


: . , , , , AlphaGo. , , , reinforcement training.

: Reinforcement training — . , . , , , . , , . , . Reinforcement training , , , , : « !»

, AlphaGo — , . , . , , . , . AlphaGo , reinforcement training, , .

, , , , .

: , 10 170 — . , AlphaGo . , . , , , . — , - !

, , , . , , . , !



STAS: Quiero preguntar sobre algoritmos genéticos. Según la descripción, parece que los algoritmos genéticos también pueden atribuirse al aprendizaje por refuerzo. Tal como los imagino, hay una generación, tomamos cada sujeto individual en una generación, realiza alguna tarea, evaluamos sus acciones y luego, en base a estas estimaciones, seleccionamos los mejores. Luego, entrecruzamos sus propiedades específicas, creamos una nueva generación, agregamos un poco de mutación y ahora tenemos una nueva generación. Y repetimos estas operaciones, tratando de aumentar la utilidad final de cada miembro específico de esta generación. Esto parece tener sentido. ¿Se considera esto entrenamiento de refuerzo o no?

ANDREW: No, los algoritmos genéticos siguen siendo algo diferentes.

STAS: ¿Se relacionan con el aprendizaje automático?

ANDREW: Yo no diría eso. No lo tomaré ahora, pero pasamos los algoritmos genéticos en la universidad, como todos los demás, y me parece que esto es algo más simple y más no regulado o algo, en resumen, imperativo. Es decir, se sabe de antemano que lo que se ingresará, tal será la salida. Sin embargo, en el aprendizaje automático, las cosas son algo diferentes: hay cierta probabilidad, precisión de las predicciones y todo con ese espíritu.

Tal vez me corregirán las personas que entienden la terminología mejor que yo, pero desde lo alto de mi cabeza diría que no.

STAS: ¿Resulta que los algoritmos genéticos no se usan para resolver la mayoría de los problemas reales?

ANDREW: Sí, en su mayoría son más algorítmicos y en la práctica rara vez me he reunido con ellos.

Sobre las redes de cápsulas


GLEB: Hay otro subconjunto de aprendizaje automático: las llamadas redes de cápsulas. De nuevo, no profundicemos demasiado. Cuéntame en pocas palabras qué es y por qué existe esta tendencia ahora.

ANDREW: Este es un tema realmente súper nuevo, solo tiene unos pocos meses. Jeffrey Hinton publicó un artículo y dijo que las redes convolucionales actuales son un camino a ninguna parte, y ofrecemos una nueva visión de cómo se desarrollará esto. La comunidad aceptó esta declaración de manera ambigua y se dividió en dos campos: algunos dicen que es una exageración exagerada, otros, una gran cosa y todo eso.

Pero si explica con los dedos, ¿cómo funcionan las redes de convolución? Tomemos, por ejemplo, las neuronas que trabajan con imágenes. Hay una convolución: una columna de matrices que recorre la imagen con algún paso, como si la escaneara. En cada iteración de tal paso, toda esta convolución se aplica a esta pieza, y cada convolución se convierte en un nuevo píxel condicional, pero de una dimensión mucho mayor, esta operación se repite para todas las cuadrículas.

Pero el problema con las redes convolucionales es que todos los datos que llegan a la primera capa llegan al final, tal vez no en su totalidad, pero todos afectan y todos alcanzan la etapa final. En términos generales, si necesita determinar alguna parte de la imagen, por ejemplo, un gato, no necesita escanear toda la imagen. Es suficiente en algún momento localizar la zona donde es más probable que se encuentre el gato, y considerarla solo a ella, como lo hace una persona.

Así es como funcionan las redes de cápsulas. No me comprometeré a explicar de manera experta su interior, sino por lo que entendí: hay ciertos árboles dentro de las redes de cápsulas, y cada cápsula posterior recibe solo los datos relevantes para la entrada. Es decir, a través de ellos no se pasa todo, todo lo que inicialmente aceptamos para la entrada, y con cada nueva capa (no sé cómo se puede decir en la terminología de las redes capsulares) solo se procesan los datos que realmente se necesitan, solo datos importantes . Esta es la diferencia clave entre redes convolucionales y capsulares.

GLEB: Suena interesante, pero no lo entiendo del todo. ¿Se trata solo de las imágenes en cuestión?

ANDREW: No, eso es todo. Usé las imágenes solo para explicar. La idea clave es esta: no manejemos todos los datos y todas las características, sino solo aquellas que sean relevantes para la siguiente capa.

Más sobre juegos


STAS: ¿Escuchaste que después de que los muchachos de AlphaGo derroten a todos en StarCraft?

ANDREW: Obligado a decepcionarte, pero realmente no sigo esto. No es que los eSports fueran interesantes para mí, pero ya está quedando claro en qué se encuentra el futuro. Por ejemplo, ya hay startups que están entrenadas para jugar Dota. Ellos, como entrenador personal, analizan cómo juegas y dicen que donde no eres lo suficientemente bueno, tienen sus propios datos entrenados en partidos de deportes electrónicos. Hay nuevas empresas para apostar que predicen quién ganará, y más.

Mucha gente está trabajando en esta área ahora, principalmente porque está girando mucho dinero en ella. Pero personalmente, no me interesa por completo, así que desafortunadamente no sigo las noticias y las tendencias.

STAS: ¿Cuál crees que es la dificultad de crear buena inteligencia artificial específicamente para juegos estratégicos? ¿Entiendo correctamente que, básicamente, esta es una gran cantidad de opciones?

ANDREW: Sí De hecho, ya discutimos este punto cuando expliqué que la inteligencia artificial todavía no se usa en los juegos AAA, pero al mismo tiempo está en AlphaGo y, posiblemente, en otro lugar.

El juego de ir con toda su complejidad consiste en el hecho de que en cada paso simplemente colocas una ficha para delinear una piedra, y el juego StarCraft es algo muy complejo. Allí puede enviar sus unidades a lo largo de un número virtualmente ilimitado de trayectorias, construir diferentes conjuntos de sus construcciones, etc. Todo esto es un parámetro.

Además, la dificultad radica en el hecho de que las redes neuronales no siempre piensan como una persona. Cuando, por ejemplo, construimos una unidad, recordamos esto. Pero muchas neuronas corren cada vez. Por supuesto, hay redes recursivas que pueden recordar sus logros pasados. En particular, se utilizan para la traducción y la información textual, cuando a medida que se genera la oración, la neurona utiliza cada vez más datos.

Hay grandes dificultades con el hecho de que toda la cantidad de información y opciones deben formalizarse, es decir, encontrar un conjunto de datos para el entrenamiento que de alguna manera responda adecuadamente a las acciones de tu oponente, que también puede ser un millón, a diferencia de jugar un juego de o ajedrez

STAS: Ya veo, hay muchos parámetros.

GLEB: Pero no entiendo qué, está claro que DotA tiene menos parámetros, pero sigue siendo el mismo en el sentido de que se envió a cualquier lugar, etc.

STAS: Aquí Andrei se redujo al hecho de que, en primer lugar, tienes una unidad y la cantidad de opciones es mucho menor.

ANDREW: Para ser honesto, nunca he jugado un segundo Dota en mi vida, pero en el original, que yo sepa, este es un juego súper determinista. Hay 3 corredores y torres que deben ser destruidos.

GLEB: Sí, pero en StarCraft, aunque no juego en absoluto, también hay algunas formas y las mismas unidades. Usted dice que hay muchos de ellos, pero lo más probable es que siempre se manejen en lotes. Es decir, aproximadamente lo mismo resulta.

STAS: Aún debes organizar correctamente cada unidad por separado durante la batalla. En el momento en que no se toman en un paquete, pero comienzan a organizarse, hay inmediatamente más parámetros.

ANDREW: Tu problema es que piensas en estas categorías: pon una unidad, etc., pero todo el tiempo olvidas que una neurona es solo una matriz, números que se multiplican. Allí debe formalizar, por ejemplo, cosas como tareas. Digamos que hay un mapa para StarCraft y hay algún tipo de tarea en él, no importa si derrotas a un jugador u otra cosa. Todo esto debe presentarse en forma de primitivas matemáticas, y esto es precisamente lo más difícil.

Si realmente fuera inteligencia artificial, la brecha entre Dota y StarCraft sería mínima. StarCraft puede ser un poco más complicado en mecánica, pero sigue siendo lo mismo. Pero debido al hecho de que operamos con números, es más difícil formalizar.

Sobre las redes de aprendizaje mutuo


STAS: Tengo la última pregunta que quiero hacer antes de ir a nuestro teléfono móvil. No sé cómo se llama correctamente, pero hay una forma en que una red neuronal esencialmente sigue a otra e intenta encontrar patrones.

ANDREW: No me comprometeré a explicar ahora cómo funciona, pero sé con certeza que hay algoritmos súper geniales que a veces escucho en el trabajo cuando dos redes neuronales aprenden a expensas entre sí. Esta área de experiencia ya es completamente inaccesible para mí, pero todo suena genial. Hasta donde yo sé, esto se usa para redes generativas. Lamentablemente, no puedo decir más.

STAS: bien. Usted dio las palabras clave más importantes, el resto es Gleb y los lectores buscarán fácilmente en Google.

Acerca de los teléfonos móviles (Apple)


GLEB: Pasemos a los teléfonos celulares a los que hemos estado yendo por mucho tiempo. En primer lugar, ¿qué podemos hacer cuando hablamos de aprendizaje automático en dispositivos móviles?

ANDREW: Por cierto, ¿tienes un podcast para desarrolladores de iOS?

GLEB: No somos un podcast de iOS. Si, Stas?

STAS: Sí, para desarrolladores móviles. ¿Por qué la pregunta?

ANDREW: Solo porque la situación es muy diferente. Apple, en virtud del hecho de que siempre ha sido bueno en la integración de software y hardware, y es famoso por ello, está muy elegante enganchado a un tren de bombo entrenado en máquinas.

En 2014, Apple presentó la API de gráficos metálicos. Se le cosieron cosas, por ejemplo, sombreadores de computadora, etc. Todo esto permitió con el advenimiento de iOS 10 incluir en el marco de Metal Performance Shaders muchas capas, activaciones y otros operadores de redes neuronales, en particular redes neuronales convolucionales.

Simplemente dio un gran impulso, porque, por regla general, los cálculos en una tarjeta de video son muchas veces más rápidos que en un procesador central. Cuando Apple tuvo la oportunidad de leer en tarjetas de video móviles, y rápidamente, no hubo necesidad de escribir sus propios operadores matemáticos, etc. Disparó directamente muy duro. Y un año después lanzaron CoreML (hablaremos un poco más adelante).

Apple tenía una muy buena base. No sé si tuvieron esa visión, o si coincidieron, pero ahora son objetivamente líderes en la industria del aprendizaje automático en dispositivos móviles.

Acerca de los teléfonos móviles (Android)


Lo que funciona relativamente bien y genial en tiempo real en iOS, desafortunadamente, no funciona tan bien en Android. Esto se debe no solo al hecho de que Android apesta. Hay otros factores, en primer lugar, el hecho de que Android tiene una infraestructura muy diversa: hay dispositivos débiles, hay dispositivos fuertes, no se puede entender todo.

Si Metal es compatible con todos los dispositivos iOS, entonces en Android ya es más complicado: en algún lugar OpenGL es compatible con una versión, en otro lugar, en algún lugar no es compatible en absoluto. En algún lugar hay Vulkan, en otro lugar no está. Todos los fabricantes tienen sus propios controladores, que, por supuesto, no están optimizados de ninguna manera, sino que simplemente admiten mínimamente el estándar. Incluso sucede que ejecuta algunas redes neuronales en Android en la GPU, y funcionan a la misma velocidad que en la CPU, porque trabajar con memoria compartida es muy ineficiente y todo eso.

En Android, las cosas están mal en este momento. Esto es bastante sorprendente, porque Google es uno de los líderes, pero un poco caído en este sentido. En Android, existe claramente una falta de implementación de alta calidad de las capacidades del aprendizaje automático moderno.

Para nosotros, por ejemplo, incluso en la aplicación, no todas las funciones funcionan de la misma manera. Lo que funciona rápido en iOS es más lento en Android, incluso en dispositivos emblemáticos de potencia comparable. En este sentido, en este momento, Android como plataforma está cayendo.

Sobre CoreML


STAS: Dado que dijeron sobre CoreML, probablemente sería correcto decir sobre TensorFlow Lite.

ANDREW: CoreML es en realidad un caballo oscuro. Cuando salió el año pasado, todos dijeron: "¡Guau, genial!" Pero luego quedó claro que esto es solo una pequeña envoltura sobre Metal. Las empresas que se dedican seriamente al aprendizaje automático, incluida la nuestra, han tenido sus propias soluciones durante mucho tiempo. Por ejemplo, nuestras soluciones de prueba mostraron mejores resultados que CoreML en términos de velocidad y otros parámetros.

Pero el principal problema con CoreML era que no se podía personalizar. A veces sucede que necesita una capa compleja en una red neuronal, que no está, por ejemplo, en Metal, y necesita escribirla usted mismo. En CoreML, no era posible incrustar sus capas, por lo que tuvo que degradar a Metal al nivel inferior y escribir todo usted mismo.

Recientemente, CoreML agregó esto, y ahora este marco se ha vuelto más interesante. Si usted es un desarrollador que no tiene nada relacionado con el aprendizaje automático en la empresa o en la aplicación, puede ejecutar algunas neuronas en dos líneas y ejecutarlas rápidamente en la GPU. Los resultados, que muestran pruebas de rendimiento para CoreML, son comparables a las soluciones personalizadas y Metal desnudo.

Es decir, CoreML funciona bastante bien. Está un poco húmedo, tiene errores, pero cada mes está mejorando. Apple está implementando activamente actualizaciones, no de la forma en que estamos acostumbrados, que las actualizaciones de los marcos de Apple se lanzan una vez al año o en versiones semi-principales de iOS. CoreML se está actualizando activamente, en este sentido, todo es genial.

TensorFlow Lite proporciona un convertidor en CoreML, CatBoost también admite un convertidor en CoreML. En resumen, Apple hizo todo bien de nuevo. Lanzaron un convertidor de código abierto y dijeron: "Vamos a escribir todos los convertidores en CoreML", y muchos marcos de aprendizaje lo respaldaron.

Al principio hubo cierto escepticismo sobre CoreML, en la última WWDC la pregunta más común para los desarrolladores de CoreML fue: “¿Por qué no permiten la descarga de modelos de Internet? ¿Por qué no los dejas encriptar? Fue posible obtener estos modelos y, al parecer, robar propiedad intelectual.

Ahora todo se ha reparado, se ha agregado funcionalidad y, por el momento, CoreML es definitivamente la plataforma líder en este sentido.

STAS: ¿Puedes hablar sobre esto con más detalle? Resulta que ahora ya no puede almacenar el modelo, sino simplemente cargarlo desde algún lugar.

ANDREW: Sí, ya es posible. Anteriormente, cuando preguntamos sobre esto, los desarrolladores sonrieron y dijeron: "Solo miren los encabezados". Realmente había diseñadores que podían transferir archivos y todo se uniría.

Pero los modelos CoreML en su interior son bastante interesantes. En realidad, son binarios ordinarios que almacenan pesos, pero además se generan archivos rápidos, que luego crean clases implícitas. Utiliza estas clases en su aplicación, y los compiladores compilan este modelo en algunos archivos.

Ahora, usando ciertos hacks y enfoques, es posible hacer que este modelo sea portátil. Puede proteger su propiedad intelectual mediante encriptación y aligerar el peso de la aplicación.

En general, CoreML ahora se mueve en la dirección correcta. No todo se puede hacer legalmente desde el punto de vista de App Review, no todo se puede hacer fácilmente, sin hacks, pero se nota cómo los desarrolladores mejoran el marco.

STAS: ¡Genial! Quería agregar que CoreML parece una solución típica. Relativamente hablando, es conveniente cuando quieres hacer algo simple usando el aprendizaje automático en tu aplicación. Parece que si esta es una tarea típica, Apple intentó hacer que esta ruta sea lo más simple posible, si encuentra un modelo, conjunto de datos y más. Esta es solo una historia sobre un problema típico, porque para ellos, probablemente, todo ya está listo.

ANDREW: Para tareas típicas, ¡esto es generalmente súper! Sin hipérbole: realmente se necesitan dos líneas de código para ejecutar el modelo. En este sentido, sí, es muy bueno, especialmente para desarrolladores independientes o empresas que no tienen un departamento de I + D en el personal, pero que también quieren agregar algo genial.

Pero esto no es tan interesante, porque las tareas típicas se resolvieron en Github y con Metal, podría copiar este código y ponerlo en la granja, aunque un poco más complicado.

Es importante que ahora este marco se esté moviendo no solo hacia las tareas cotidianas clásicas, sino también hacia soluciones integradas. ¡Esto es realmente genial!

Acerca de la capacitación en teléfonos móviles


GLEB: ¿Dices que después del advenimiento de Metal fue posible entrenar modelos en teléfonos móviles?

ANDREW: No, la capacitación en teléfonos móviles nunca fue posible. No tiene sentido, solo puedes ejecutarlo. Si así lo digo, hice una reserva. En los teléfonos móviles, por supuesto, nadie enseña nada.

STAS: Tampoco escuché nada sobre el entrenamiento en un teléfono móvil.

GLEB: Tampoco escuché, pero lo pensé. Por supuesto, parece intuitivamente que esto es algo extraño. Pero definitivamente no hay tareas interesantes, ¿cuándo sería relevante?

ANDREW: Es difícil imaginarlos. Si hay algo así, solo se distribuye el aprendizaje. Incluso hay artículos científicos sobre cómo hacer esto, pero según tengo entendido, ¿se pregunta cómo aprender de los datos recopilados en el mismo teléfono? Es solo que incluso si recolectas tanto (lo que no sucederá), tomará tanto tiempo aprender que nunca terminará, y nadie trasladará el código de entrenamiento a las plataformas móviles, ¿por qué? La capacitación siempre se realiza en servidores y la inferencia en dispositivos.

STAS: Pero finalmente resulta así. Si es una empresa, quiere tener algo así, necesita datos y puede recopilarlos de sus usuarios, es decir, cargarlos periódicamente usted mismo.

ANDREW: Sí, pero funciona un poco diferente. Recopila datos de todos los usuarios en un lugar en su servidor activo, entrena allí y luego envía de vuelta el modelo terminado. Pero no para que todos en casa enseñen algo.

STAS: Por otro lado, el teléfono móvil se calentaría, y en el invierno sería relevante, pero por muy, probablemente, mucho tiempo.

Sobre teléfonos móviles y el futuro


GLEB: ¿Hay otras cosas interesantes en términos de aplicar el aprendizaje automático a dispositivos móviles? Hablamos de lo que ya tenemos ahora. Sería interesante mirar un poco hacia el futuro, por lo que generalmente nos gustaría recibir en nuestras plataformas móviles algunos superalimentos, superesoluciones.

: , , performance — , , . , - , .

. , style- , . .

CoreML . , , . , , : , , — , Android, iOS, . , , iOS Android.

, , , , — Android, iOS, Github . - — Uber , Horovod. Apple — , . , , , , — .

, . , , , — , , - . , .



: , , ? , , ? .

: , — (M. Bishop. Pattern Recognition and Machine Learning. Christopher. Springer. 2006), - . , , 3D , , - . . , — , — .

, , , . , -, , Andrew Ng Coursera. , .

, , , — MNIST. Hello World, .

, , , , - , . - , , , .

: ?

: advanced- Andrew Ng! , , Kaggle, , . , , — Data Scientist.

— , , , . , — R&D . , . . , , .

. , Kaggle, - — 90% .

Resumen


: . , , , , .

  • , — . , , — .
  • .
  • .
  • - .
  • , , , .
  • , . , , , - - !
  • — , , CoreML — , .

, .

, AppsConf 2018 , 8 9 .

80 , Call for Papers — 3 . , , .

Source: https://habr.com/ru/post/es416477/


All Articles