¿Cómo es el aprendizaje automático de IBM Watson mejor que las bibliotecas de código abierto?

Hace dos años estaba interesado en ver lo que implica el desarrollo de aplicaciones móviles, así que escribí una especie de aplicación de álbum de fotos de aspecto horrible que clasificó sus fotos por objetos contenidos en las fotos. Hoy en día puedes usar herramientas como CoreML para hacerlo tú mismo, pero en ese entonces la única forma razonable de hacer visión por computadora es del lado del servidor. Me inscribí para una prueba gratuita de IBM Watson para hacer esa clasificación de objetos del lado del servidor.

La interfaz de Watson era muy simple para trabajar. Le envía una solicitud de publicación HTTP (codifica su clave API y la imagen en sí) y le devuelve una cadena JSON legible por humanos que contiene lo que solicitó. Es el tipo de cosa que funciona en el primer intento. Y si usted es el tipo de desarrollador de aplicaciones que no conoce ni se preocupa por los modelos que se utilizan, le complacerá no haber especificado qué modelo usar: simplemente dijo cuáles son sus datos.

Pero hace dos años, el clasificador de objetos predeterminado no tenía un rendimiento impresionante. La precisión era cualitativamente peor de lo que razonablemente esperarías con un clasificador típico de la era 2015 en Imagenet, mi memoria es “generalmente el objeto no está en el top 5”. Watson probablemente ha mejorado desde entonces, pero en ese momento uno tendría que construir su propio conjunto de datos para que Watson le brinde mejores resultados que una suposición aproximada. Lo cual, por cierto, es bastante fácil de hacer con la API de Watson: puede crear un nombre de conjunto de datos asociado con su clave API, enviarle el conjunto de datos e IBM capacitará los modelos que estén usando en él.

Entonces, si está usando Watson, está gastando dinero en hacer que IBM maneje la visión por computadora por usted. Si necesita un control detallado, o si no desea que IBM observe imágenes privadas, o si necesita funcionar sin conexión a Internet, o si no desea tratar directamente con dinero o relaciones comerciales, eso descarta a Watson. Pero si esas preocupaciones no importan y buscas la máxima comodidad, es una buena herramienta.

El método real es probablemente similar. Todos los métodos populares de código abierto preforman de manera muy comparable. El truco es: datos de entrenamiento. IBM gastó miles de millones para adquirir y organizar un buen conjunto de capacitación. Nunca lo compartirán, ya que podría competir con los resultados de su garaje si tuviera su conjunto de entrenamiento.

Ahora, cómo combinan datos de varias entradas es muy bueno. El aprendizaje automático es solo un optimizador (por ejemplo, determina qué mirar en una imagen para que las imágenes de entrada coincidan correctamente con los diagnósticos conocidos). Watson es de varias etapas. Para cada píxel, use múltiples modalidades (MRI, CT, PET, etc. de imágenes alineadas) para ayudar a detectar si hay un tumor. Luego, etiquételo y para cada objeto de consulta de datos de tumor que describa al paciente completo (por ejemplo, análisis de sangre con concentraciones de proteínas indicadoras de tumor). Luego obtenga informes médicos y luego lea las palabras clave que podrían ser binarias (p. Ej., El paciente es fumador) o no (fumó durante 20 años). Finalmente, para cada tumor (solo un ejemplo, cualquier enfermedad puede ir aquí) en el paciente combina sus resultados de imágenes con otras mediciones y descriptores de los informes. Ahora optimice todos los pasos (reducción de datos en niveles u objetos, combinación de datos, diagnóstico) de forma simultánea o iterativa (creo que es simultáneo). Todo esto podría hacerlo utilizando cualquier marco sólido de aprendizaje automático. Solo necesito datos de entrenamiento y tiempo / creatividad.