Llegamos a ustedes gracias a:



Reportajes y análisis

Primer vistazo: El Cloud Machine Learning de Google se eleva

[19/08/2016] En la carta del 2016 del fundador de Google, el CEO Sundar Pichai citó la inversión a largo plazo de Google en el aprendizaje automático y la inteligencia artificial, IA. "Es lo que le permite usar su voz para buscar información", explicó, "para traducir la web de un idioma a otro, para filtrar el spam de su bandeja de entrada, para buscar 'abrazos' en sus fotos y en ver imágenes de personas que se abrazan ... para resolver muchos de los problemas que encontramos en la vida diaria. Es lo que nos ha permitido construir productos que mejoran con el tiempo, por lo que cada vez es más útil y de mucha ayuda".

Además de usar el aprendizaje automático para sus propios productos, Google ha lanzado varios servicios de aprendizaje automático aplicado -para la visión, el habla, el lenguaje natural, y la traducción- y ha abierto el código de su paquete de aprendizaje automático escalable TensorFlow. Un servicio adicional basado en TensorFlow, la Cloud Machine Learning Platform, todavía está en una fase cerrada de prueba alfa. Espero hacer reseñas de Cloud Machine Learning Platform y de Tensor Flow a finales de este año.

En esta vista previa, vamos a echar un vistazo de cerca a las APIs de Cloud Vision, Cloud Speech, Cloud Natural Language y Cloud Translate de Google, y los compararé con los servicios pre-entrenados competitivos de HPE, IBM y Microsoft. Mientras que Amazon y Databricks también compiten en la predicción del aprendizaje automático de nube, no ofrecen las APIs pre-entenadas.

Las cuatro APIs de aprendizaje automático de Google son gestionadas por Google Cloud Platform Console, y todas tienen las interfaces REST; algunas también tienen interfaces RPC. Hay tres opciones de autenticación; cuál usar depende de la API y el caso de uso.

A pesar de que es bastante fácil construir llamadas REST de clientes en cualquier idioma que soporten peticiones y respuestas HTTP, Google puede suministrar bibliotecas de cliente para C#, Dart, Go, Java, JavaScript (navegador), Node.js, Objective-C, PHP, Python, y Ruby, dependiendo de la API. Hice la mayor parte de mi experimentación en Python, y utilicé los formularios HTML suministrados para la construcción y prueba de llamadas REST.

API Cloud Natural Language

El procesamiento del lenguaje natural es una gran parte de la "salsa secreta" que hace tan popular al motor de búsqueda Google. Pregunte "¿qué lugares debería visitar en China", y Google Search analizará sintácticamente su intención para mostrarle artículos sobre destinos de viaje populares en la China continental en la parte superior de la lista de resultados.

También le mostrará consultas relacionadas, tales como "visa para visitar" y "¿es seguro visitar China?". Tenga en cuenta que el procesamiento de lenguaje natural ha extraído el verbo "visitar" y el objeto "China", y distinguió el país China, de la República de China (Taiwán) y de la vajilla de porcelana. Se ha utilizado el análisis de sintaxis e identificación de identidad para encontrar las consultas populares "cercanas" en su base de datos histórica.

Las calificaciones son un aspecto importante de la tienda de Google Play. Millones de calificaciones en una escala del uno al cinco son acompañadas por comentarios -por ejemplo, "Excelente aplicación con una calificación de cinco estrellas, o "muy buggy y difícil saber quién está en la foto" con una calificación de dos estrellas en la misma aplicación. Piense en estas opiniones como un gran conjunto de datos a utilizar para entrenar una red neuronal de procesamiento de lenguaje natural para el análisis de los sentimientos.

Estamos buscando una sesión terminal en la que he utilizado un programa de muestra de Python para llamar a la API Google Cloud Natural Language para encontrar las entidades en un párrafo de mi cuento "Aventura".

La API Natural Language, actualmente en fase beta abierta, le da acceso al reconocimiento de identidad de Google, para los motores de análisis de los sentimientos, y anotación de texto (análisis sintáctico) para texto. El reconocimiento de entidades y anotaciones de texto se admiten en inglés, español y japonés; el análisis de los sentimientos solo en inglés. Puede incrustar texto en su llamada a la API o leer un archivo de texto de un segmento de Google Cloud Storage.

El servicio de reconocimiento de entidad identifica personas, organizaciones, lugares y otros puntos mencionados en el texto. El servicio de análisis de sentimientos mira un bloque de texto y decide en qué medida es positivo o negativo, y se calcula una intensidad o magnitud del sentimiento. Las anotaciones de texto analizan partes del discurso y proporcionan árboles de análisis sintáctico de dependencia de las relaciones entre las palabras.

Como se puede ver en la figura anterior, el servicio Entity Recognition tiende a encontrar entidades que tienen los artículos de Wikipedia y devuelve el URI de los artículos. El código Python básico utilizado se muestra en la figura siguiente.

Haven OnDemand incluye servicios de análisis de gráficos (también en vista previa) entrenados en contra de Wikipedia Inglés; Estos son similares al reconocimiento de identidad de Google. Watson Concept Expansion y Concept Insights son similares a las anotaciones de texto de Google y el reconocimiento de entidades. La API Cortana Entity Linking de Microsoft es similar a Google Entity Recognition, su API de análisis lingüístico es similar a las anotaciones de texto de Google, y su API Text Analytics incluye el análisis de opiniones, la extracción de palabras clave, y la detección de tema para el texto en inglés.

Este es el código Python básico para llamar al servicio de análisis de identidades. Como se puede ver, se trata de una solicitud y respuesta básicas. La llamada para obtener el servicio incorpora la autenticación en la solicitud.
API Google Cloud Natural Language

API Cloud Speech

"Google, ¿qué edad tiene el puente de Brooklyn?"

La mayoría de los usuarios de teléfonos inteligentes Android, y las personas que hacen búsquedas de voz en Google a través de Chrome, están familiarizados con ese patrón. La API 'voz' de Google Cloud, actualmente en fase beta abierta, expone el motor detrás de la transcripción de voz utilizado en Google Now, la búsqueda por voz de Google, y Google Translate para las empresas que desean habilitar la voz en sus propios sitios y aplicaciones.

La API Speech, o de voz, de Google Cloud, proporciona una conversión de voz a texto; no convierte de texto a voz. Maneja aproximadamente unas 80 lenguas y sus variantes, y esa selección es pesado en variantes, incluyendo nueve localizaciones de inglés de Australia a los Estados Unidos, 18 localizaciones de español, y 15 localizaciones de árabe.

No hay detección automática de idioma en la API; es necesario establecer con precisión el código de idioma para el altavoz (en lugar de la ubicación) para obtener un buen reconocimiento. Por ejemplo, un sudafricano o de Zimbabwe con un acento muy marcado, que viven en los Estados Unidos y que habla inglés, es más probable que consiga un buen reconocimiento usando el código de idioma en-ZA que el código en-US.

Eso es coherente con la experiencia que tienen las personas no solo con la búsqueda de voz de Google, sino también con Apple Siri, Microsoft Cortana, y las aplicaciones que utilizan los motores de reconocimiento de terceros tales como Nuance NDEV. Si está escribiendo una aplicación que utiliza la API de voz de nube, probablemente desee omitir el código de idioma del sistema, pero ofrecer una interfaz para cambiar el código de idioma para la aplicación.

La API de voz de Google tiene ambas APIs batch síncronas y asíncronas para transcribir audio almacenado y enunciados completos, y una API de streaming para reconocer la voz en vivo. Maneja audios largos en bach, junto con expresiones cortas, y ofrece tanto REST (nonstreaming solamente) y las API RPC.

Puede incrustar el audio en su llamada de servicio o apuntar a un punto GCP que contiene un archivo de audio. Además de un código de idioma, la configuración de reconocimiento que acompaña el audio especifica la codificación de audio, la frecuencia de muestreo, el número máximo de alternativas de regreso, ya sea que se utilice un filtro de profanidad, y un contexto de voz.

La API Google Cloud Speech devuelve una transcripción y la probabilidad de que sea correcta después de procesar un bit de sonido, normalmente en formato FLAC. Cloud Speech puede trabajar de forma interactiva en tiempo real o en modo 'nonstreaming'.
API Google Cloud Speech

Cloud Speech adopta sugerencias de palabras que amplían su ya amplio vocabulario y aumentan la probabilidad de un reconocimiento correcto de las palabras esperadas. También hace reconocimiento de comandos. El contexto de voz opcional contiene una lista de hasta 50 frases con un máximo de 100 caracteres cada uno. Puede usar esto para juegos controlados por voz, y se puede combinar con la API Natural Language.

Las codificaciones de audio soportadas incluyen FLAC (recomendado), LINEAR16, MULAW, AMR, y AMR_WB. Tenga en cuenta que los formatos de música con pérdida como AAC y MP3 no son compatibles debido a que la precisión del reconocimiento disminuye con la compresión. Solo es compatible el audio en mono.

Precios de Google Cloud Machine Learning

  • API Cloud Natural Language: Su precio está en función de características por cada mil registros, que van desde 25 centavos a dos dólares, dependiendo de la función y la cantidad. Los primeros 50 mil registros por mes son gratis
  • API Cloud Speech: Sies centavos de dólar por 15 segundos; los primeros 60 minutos por mes son gratis.
  • API Cloud Translate: 20 dólares por un millón de caracteres de texto para traducir, más 20 dólares por un millón de caracteres de texto para la detección de idioma
  • API Cloud Vision: Tiene precios por función y caen con un mayor uso; los precios van desde 60 centavos por cada mil funciones a cinco dólares por mil funciones; las primeras mil solicitudes por mes son gratis
  • El almacenamiento en la nube (por gigabyte al mes): Almacenamiento Estándar, 2,6 centavos de dólares; almacenamiento de disponibilidad reducida y duradera (DRA, por sus siglas en inglés), dos centavos de dólar; almacenamiento Nearline, un centavo de dólar.

Como se puede imaginar, Cloud Speech se basa en grandes conjuntos de formación obtenidos del servicio de búsqueda por voz de Google. Eso implica que ha aprendido una gran gama de variaciones regionales. Por ejemplo, el idioma inglés de EE.UU. incluye diversos dialectos, a partir de un acento de Georgia a Nueva Inglaterra donde omiten la R ("Pahk the Cah"), a los distintivos acentos de Guyland ("Eyoo gawt it") y Filadelfia ("D'Youse desee wudder ?"). Google Speech también ha aprendido a manejar el ruido de, por ejemplo, los coches que pasan, y, de hecho, Google recomienda que no se intente filtrar el audio del ruido antes de enviarlo para el reconocimiento de voz.

HPE Haven OnDemand puede reconocer 21 idiomas y sus variantes, incluyendo conjuntos de datos de banda ancha y telefonía para los idiomas más comunes -por ejemplo, la telefonía español de América. Haven OnDemand puede extraer audio de video, así como archivos de audio, pero no es compatible con el reconocimiento sincrónico o en vivo.

Watson de IBM puede reconocer ocho idiomas y variantes en calidad de banda ancha, así como seis con calidad de telefonía. En el plan estándar, utilizar modelos de telefonía cuesta el doble que utilizar modelos de banda ancha. La transcripción de audio entrante se envía continuamente al cliente con un mínimo de retraso, y se corrige a medida que escucha más.

El reconocimiento de voz de Microsoft Bing es compatible con 28 idiomas y variantes. La transmisión en tiempo real es compatible con Android, iOS y Windows cuando se utiliza la biblioteca de cliente adecuada. Si se entrena un modelo de servicio inteligente de comprensión del lenguaje (LUIS, por sus siglas en inglés), también puede recibir información estructurada sobre el reconocimiento de voz para analizar la intención del hablante e impulsar nuevas medidas por la aplicación.

API Google Translate

El sitio web y la aplicación de Google Translate, o traductor, han sido populares desde hace años. En los primeros días, los traductores bilingües a menudo se reían a carcajadas de los intentos de Google en la traducción automática. Con los años, sin embargo, los traductores humanos han tenido la oportunidad de corregir los errores cometidos por el traductor automático, y muchas de las correcciones se han incorporado en el corpus de traducción. Como resultado, la traducción automática de Google ha mejorado considerablemente, aunque la calidad varía todavía de un idioma a otro.

La API Google Translate es un servicio empresarial de pago para la traducción de grandes cantidades de texto. Es compatible con 90 idiomas, por lo que se pueden hacer miles de traducciones entre lenguas, aunque no se admiten todas las traducciones entre idiomas. Sin embargo, puede consultar la API con el fin de obtener una lista de códigos de idioma ISO639-1 en formato JSON y una lista de objetivos compatibles para cualquier fuente dada de idioma.

Si no sabe el idioma fuente de identidad, puede dejar de lado el código de idioma de origen y la API intentará reconocerlo. La detección de idioma cuesta lo mismo, 20 dólares por millón de caracteres, como la traducción de idiomas.

Aquí estamos probando el par 'inglés al ruso' en la API Translate. La frase en inglés "Bien, pan ruso negro" se traduce en un libro de texto de frases rusas que utiliza todas las terminaciones de adjetivos. Solo la colocación de "???????" (en ruso) al final de la frase difiere de la versión de libros de texto de la frase.
Google Translate

Más allá de eso, la API de traducción es sencilla. Suministre los códigos fuente y el idioma de destino, las cadenas de origen que desee, su clave de API, y opcionalmente especifique el formato de salida. Las opciones incluyen HTML o texto sin formato, impresión bonita (mediante sangrías y saltos de línea), y el suministro de una función de devolución de llamada.

En muchos casos, como en el ejemplo anterior, la traducción será de alta calidad. En otros, como el ejemplo a continuación, la traducción fallará espectacularmente.

A modo de comparación, Haven OnDemand puede identificar actualmente 85 idiomas y realizar el análisis de opiniones sobre ellos, pero no puede traducirlos. Azure Cognitive Services puede detectar sentimientos y frases clave en cuatro idiomas, pero no puede hacer traducciones, aunque las traducciones de Bing son casi tan comunes en la web como las de Google.

Aquí se intenta traducir Génesis 1:2 del hebreo al inglés. Una traducción aceptable sería algo parecido a "Y la tierra estaba desordenada y vacía, y las tinieblas estaban sobre la faz del abismo; y el espíritu de Dios se movía sobre la faz de las aguas". La traducción de la máquina, " Y Hartz, Hith Tho y Bho, y HSC, upon-Fni fosa.; Y dios Roh, Mrhft upon-Fni Hmim", es absurda. Curiosamente, algunas de las frases que componen esta línea del hebreo bíblico se traducen bien por la API cuando se aíslan, por ejemplo "????????????", tohú v'bohu, un poco como el inglés "al revés", se traduce correctamente como "caos". Honestamente creo que Google Translate lo haría bien con esta línea. (Sí, el hebreo es un lenguaje completamente compatible.) Creo que fue confundido por la gramática al comienzo de la línea; un ser humano habría juntado las palabras correctamente, pero la máquina no pudo.
Google Translate

API Cloud Vision

La API Cloud Vision de Google es un servicio ML entrenado para la categorización de las imágenes y la extracción de diversas características. Puede clasificar imágenes en miles de categorías pre-entrenadas, que van desde objetos genéricos y los animales que se encuentran en la imagen (como un gato), a las condiciones generales (por ejemplo, oscuridad), a puntos de referencia específicos (Torre Eiffel, el Gran Cañón), e identificar propiedades generales de la imagen, como sus colores dominantes. Puede aislar las caras, a continuación, aplicar análisis geométricos (orientación facial y puntos de referencia) y emocionales a las caras, aunque no reconoce caras como pertenecientes a personas específicas. La API Vision también puede leer y extraer texto de imágenes en 10 idiomas, identificar los logotipos de los productos, y detectar contenido para adulto, violento y médico.

Puede construir una solicitud JSON para la API Cloud Vision que contiene la imagen (en formato base64) o los puntos de la imagen (en un segmento de Google Cloud Storage). La solicitud también debe contener una lista de las características que desea extraer, junto con el número máximo de elementos a regresar para cada función. Puede solicitar el procesamiento de imágenes múltiples en una sola llamada, pero se arriesga a encontrarse con la limitación de tamaño total.

Me las arreglé para encajar en el límite de tamaño para las imágenes individuales en la primera JPEG que probé en el servicio. Ingenuamente tomé un JPEG de alta calidad APS-C DSLR que había exportado de mi catálogo de Lightroom y traté de catalogarla utilizando una etiqueta para el uso de código Python (revisado en GitHub) desde el tutorial de detección de etiquetas Google. Después de luchar y resolver algunos problemas de autenticación, obtuve un misterioso error 400 con "Solicitud de admisión denegada". Tras una consulta de correo electrónico a mis contactos en Google, se me sugirió verificar las 'Buenas Prácticas', para encontrar el servicio 'Vision'; mi archivo era de 6MB, y el límite es de 4MB. Generé otra versión con una menor calidad JPEG que pesó menos de 4MB, y esta vez tuve la etiqueta correcta del servicio.

Visión Explorer es una demostración de la API de Google Cloud Vision que procesa 80 mil imágenes de Wikimedia Commons para extraer todas las características que la API Visión puede producir. En este caso particular, la API etiquetó con éxito la imagen como "arquitectura" con una probabilidad del 75%, e "iluminación" y "oscuridad" con probabilidades más bajas. También reconoce las caras de las estatuas en el friso y caracteriza cada una de ellas.
Google Cloud Vision

Google sugiere varias aplicaciones de la API Visión. Una de ellas es para catalogar su colección de imágenes, porque no todo el mundo añade fielmente etiquetas de palabras clave a todas sus imágenes, y no todos los servicios de fotos en la nube retienen los datos EXIF de las imágenes cargadas. Otra es la de detectar y moderar contenido ofensivo en imágenes. (No, no traté de probar eso yo mismo. Google tiene mucha experiencia filtrando material ofensivo de las búsquedas de imágenes.)

Otras aplicaciones sugeridas incluyen tareas como la búsqueda de su logotipo en las imágenes de los medios de comunicación social, la detección de las emociones de las caras en las imágenes, y la extracción automática del texto de imágenes seleccionadas. Si quisiera ir más allá, es posible que recolecte todo el texto que no está en inglés en el servicio Cloud Translate y analizar el sentimiento de todo el texto OCR'd mediante la API Cloud Natural Language.

Entre la competencia, Haven OnDemand ofrece cuatro servicios de análisis de imagen: el reconocimiento de códigos de barras, detección de rostros, reconocimiento de logotipo de la empresa, y de OCR. La API Cloud Vision no hace reconocimiento de códigos de barras, pero devuelve más información acerca de las caras detectadas, reconoce muchos más elementos que solo logotipos, y tiene una aplicación OCR más madura. (OCR de HPE se encuentra todavía en la fase de vista previa.)

IBM Bluemix ofrece un servicio de reconocimiento visual de Watson que hace clasificación general, detección de rostros, extracción de texto (inglés solamente, beta), y el entrenamiento visual y etiquetado. Cloud Vision de Google es mejor en los tres primeros (y ofrece más capacidades en esas áreas), pero no hace el entrenamiento. La capacitación visual es algo que se puede hacer ahora con Google TensorFlow y debería ser capaz de hacerlo con la Cloud Machine Learning Platform cuando se encuentre a disposición del público.

Cognitive Services de Microsoft Azure tiene las API Face, de cara, y Emotion, de emoción, que se encuentran actualmente en vista previa. La API Face hace la detección de rostros, verificación, identificación, agrupación y búsqueda de caras similares; la API Emotion clasifica el estado de ánimo de las caras detectadas por la API Face. Estas dos APIs juntas proporcionan un subconjunto similar de capacidades a Cloud Vision de Google.

El aprendizaje automático a su servicio

Como hemos visto, las cuatro APIs de aprendizaje automático de Google -las API en beta de procesamiento de lenguaje natural y de habla-a-texto y las API de traducción de idiomas y clasificación de la visión- se basan en motores que tienen una larga historia de producción al utilizar Google, con millones de peticiones atendidas por los servicios orientados al consumidor. En la mayoría de los casos, una determinada característica de la API Cloud Machine Learning funcionará tan bien o mejor que las API competitivas de HPE, IBM y Microsoft, y tendrá más opciones.

Por ejemplo, Cloud Speech de Google (en beta) transcribe más de 80 idiomas y variantes; su competidor más cercano, Speech Recognition de Microsoft Bing, soporta 28 idiomas y variantes. ¿La exactitud? bueno, va a depender tanto de las condiciones como del servicio, pero mi experiencia con búsqueda por voz de Google y Cortana da una ligera inclinación hacia el lado de Google.

Sin embargo, como dicen los anuncios de vehículos en letra pequeña, su experiencia puede variar. Si está considerando el uso de las APIs de procesamiento de lenguaje natural, de voz a texto, traducción, o de visión, vale la pena probar Google Machine Learning Services en sus aplicaciones y en sus datos.

El costo en dólares de ponerlas en práctica es mínimo debido a las asignaciones mensuales de servicio gratuito. El esfuerzo para probarlos es bastante bajo. Aprendí a utilizar las cuatro APIs y los tres tipos de autenticación en un fin de semana, y solo tuve un problema técnico, que habría podido evitar si hubiera leído la documentación de las mejores prácticas antes de probar la API de visión.