¿Cómo entrenan algunas aplicaciones los algoritmos de aprendizaje automático en tiempo real en su teléfono?

Estoy escribiendo esta respuesta usando una aplicación de teclado en un dispositivo móvil. Esta aplicación utiliza la técnica de aprendizaje automático ANN para entrenar localmente en el dispositivo con mis palabras escritas . Esto aprende las palabras y el contexto en el que las uso. Esta aplicación es SwiftKey Neural.

La capacitación de modelos de aprendizaje automático necesita algunos datos mínimos. porque muy pocos datos pueden conducir a un modelo menos generalizado.
Entonces el entrenamiento en tiempo real significaría

[1] Entrenamiento después de un intervalo de tiempo. Por ejemplo, cada 1 hora o 1 día

o

[2] Después de haber recopilado los datos mínimos requeridos para la capacitación. Por ejemplo, 1000 conjuntos de datos para el entrenamiento inicial O 100 conjuntos de datos para la actualización incremental del modelo.

Por lo tanto, las aplicaciones desencadenarían capacitación para cumplir con los criterios mencionados anteriormente o cualquier criterio personalizado.
La ventaja de la capacitación local es brindar una experiencia personalizada a cada usuario. mientras que el desafío es la disponibilidad de datos menores (porque los datos de solo 1 usuario).

Extractos del blog de SwiftKey Neural.

El lanzamiento de SwiftKey Neural Alpha es un gran avance, ya que marca la primera vez que este tipo de tecnología de modelo de lenguaje se ha diseñado específicamente para operar localmente en un teclado de teléfono inteligente, un gran desafío dadas las limitaciones de recursos.

Editar: ahora Google tiene una patente para el servicio de aprendizaje automático nativo en dispositivos móviles.

http://www.google.co.in/patents/…

Los teléfonos inteligentes modernos tienen una buena potencia de procesamiento, aunque una rápida tasa de agotamiento de la batería. En principio, puede escribir una aplicación que pueda entrenar a un modelo en su teléfono; sin embargo, consumirá toda tu memoria muy rápido. Además, dependiendo de qué tan computacionalmente extenso sea su programa, puede ser un problema acceder a otras aplicaciones. Por lo tanto, en un escenario del mundo real, mantienes el ‘modelo’ en la aplicación (o un servidor) que se aprende sin conexión en otro lugar en un servidor. Los teléfonos inteligentes se utilizan principalmente como dispositivos de detección, que recopilan datos e información relevante y los transfieren a un servidor (a través de conexión inalámbrica, bluetooth, etc.) y ese servidor a su vez puede aprender modelos sobre una gran cantidad de datos. Una vez que el modelo se valida, prueba y verifica, puede transferirse a un teléfono inteligente o mantenerse en el servidor. Luego, el teléfono inteligente puede detectar los datos y, según su modelo, puede emitir alertas o lo que quiera hacer con él. Sin embargo, el monitoreo continuo aún matará su memoria, pero la tasa de agotamiento será menor en varias órdenes en comparación con el caso en el que entrena su modelo en el teléfono.

Las aplicaciones no entrenan modelos en su teléfono. Recopilan los datos de su teléfono y los envían a sus servidores basados ​​en la nube. Luego usan esos datos para generar predicciones para usted, basadas en un modelo previamente entrenado o entrenar a un nuevo modelo. La mayoría de las veces este proceso ocurre muy rápidamente y, por lo tanto, aparece en tiempo real.

También me gustaría señalar que ninguna compañía de aplicaciones formará un modelo separado para los datos generados solo por su teléfono. El modelo de capacitación consiste en encontrar patrones que se puedan aplicar a la base de clientes a granel. En la mayoría de los casos, sus datos son solo 1 línea de observación en todo el conjunto de datos que contiene millones de filas.


El entrenamiento de algoritmos de aprendizaje automático no tiene que ser tan intensivo en términos de computación. Y los teléfonos modernos son en realidad bastante potentes. En muchos casos, se trata más de conservar la batería que cualquier otra limitación informática.

Muchos algoritmos de aprendizaje automático, en particular todos los modelos basados ​​en SGD, se pueden entrenar de forma incremental. Por lo tanto, mejorará gradualmente el modelo haciendo pequeños ajustes a medida que ingresen nuevos datos. Nunca gaste mucho tiempo y energía en el entrenamiento.