“Hoy fue revelado un prototipo de computadora que se espera, sea capaz de hablar, caminar, ver, escribir, reproducirse y ser consciente de su existencia”.
Allá por 1958, cuando aun cuando no existía internet y una computadora era algo más pesada que un elefante, el New York Times publicaba un artículo que contenía la frase del encabezado. La frase hacía referencia al perceptrón, un dispositivo que imitaba el comportamiento biológico de una neurona. Las expectativas eran enormes. Si se había logrado construir una “neurona” ¿Cuánto tiempo se tardaría en llegar a un cerebro? ¿Un año? ¿Dos? ¿Diez?
Bueno, la realidad era algo más compleja. No alcanza con poner miles de neuronas juntas para lograr un dispositivo que “piense”. Las conexiones entre las neuronas son muy importantes (y complicadas). ¿Cómo conecto las neuronas? ¿Cómo logro que procesen la información al estar conectadas? ¿Cómo logro que “aprendan”? Hoy, 60 años después, aún estamos lejos de lograr un “cerebro”, pero hemos avanzado mucho. Hoy podemos conectar muchísimas neuronas, podemos hacer que “aprendan”, que tomen decisiones y resuelvan problemas. En este artículo, quiero contarles acerca de esta capacidad de conectar muchísimas neuronas que, sin entrar en tecnicismos, es lo que llamamos Deep Learning.
El Deep Learning (DL) nació hace algo más de una década y año tras año fue ganando protagonismo a través de sus logros. A su corta edad, ya le gano al campeón mundial (humano) de Go [1], aprendió a manejar autos por sí solo [2], puede diagnosticar cáncer de piel [3] y detectar autismo [4]. Y hasta puede pintar imitando a Picasso o Van Gogh en sus ratos libres.[5]
Con todos estos logros, es difícil no ilusionarse con este nuevo concepto, pero no olvidemos el ejemplo del perceptrón ¿Puede el DL hacer todas las cosas que se mencionan más arriba o aún estamos muy lejos de eso? ¿Es realmente una herramienta tan poderosa?
Una gran ventaja que tenemos como usuarios hoy en día, es que podemos acceder no solo a las herramientas que nos ofrece el DL, sino también a los datos necesarios para entrenar modelos complejos, testearlos y verificar que realmente solucionan los problemas que nos planteamos.
Entonces, no hace falta que me crean que el DL es una herramienta muy poderosa, ¡verifiquémoslo! Les propongo esto: tomemos un problema, pensemos como el DL podría ayudarnos, y resolvámoslo juntos usando las herramientas de SAS, ¿Me acompañan?
Un problema concreto: Malaria
Para más de la mitad de la población mundial, los mosquitos son mucho más que solo una molestia. Muchas enfermedades infecciosas tienen complejos ciclos de vida que incluyen al mosquito como vector. El parásito de la Malaria, por ejemplo, utiliza al mosquito para infectar a unas 200 millones de personas por año. De este gran número de infectados, más de 400.000 mueren a causa de esta enfermedad.
El diagnóstico y tratamiento tempranos son fundamentales en la lucha contra la malaria, ya que atenúan la incidencia de la enfermedad, reducen sus efectos mortales y contribuyen a prevenir su transmisión. Analicemos en detalle cómo es el proceso de diagnóstico:
El método de diagnóstico más utilizado es el análisis de sangre mediante microscopía. En dicho análisis se extrae una muestra de sangre, que es analizada por un técnico, el cual cuenta el número de glóbulos rojos infectados sobre un total de 5000 células (protocolo OMS). Esta tarea puede significar una carga de trabajo muy importante (unos 85 minutos) para el personal médico, lo cual se convierte en un grave problema durante brotes epidémicos. El tiempo y recursos empleados podrían ser optimizados si contáramos con un programa que permita clasificar, de manera efectiva, imágenes sanas e infectadas.
Este problema fue planteado y abordado hace más de una década utilizando algoritmos de Machine Learning tradicionales [6], logrando un resultado aceptable, pero con una efectividad por debajo del 90%. Por otra parte, también surgieron limitaciones inherentes a la toma de imágenes (iluminación, ángulo, etc.), por lo que era necesario contar con personal capacitado para la toma de estas.
Los algoritmos de DL resuelven de manera eficiente estos problemas, logrando efectividades mayores e independizándose de los problemas mencionados. En particular, las redes neuronales convolucionales (CNN, por sus siglas en inglés, Convolutional Neural Networks) son un tipo de modelo de DL que demostró en los últimos años ser muy efectivo en la clasificación de imágenes.
¿Es posible utilizar este tipo de redes para diagnosticar malaria de una manera efectiva? Un grupo de investigación del NIH, llevó a cabo un proyecto para evaluar esta posibilidad. El proyecto consistió en la toma de 28000 imágenes de células (sanas e infectadas), el entrenamiento de distintas redes y su posterior evaluación. Los resultados obtenidos fueron realmente buenos, logrando en algunos casos un accuracy de hasta casi un 96% (es decir, de cada 100 imágenes, la red clasificó 96 correctamente).[7]
Estos resultados indican que sería posible utilizar algoritmos de DL para lograr una mejora en la detección de malaria. ¿Qué tan difícil es entrenar estos modelos? ¿Son reproducibles estos resultados? Utilizando las herramientas de DL disponibles en SAS Viya y las imágenes obtenidas y clasificadas por el grupo de investigación del NIH, vamos a proceder a contestar estas preguntas.
Armando los modelos
Las imágenes fueron tomadas de muestras de sangre de unas 50 personas sanas y unas 150 personas infectadas. Un total de 27558 imágenes de células fueron segmentadas y luego clasificadas por un especialista. La imagen I muestra ejemplos de células sanas e infectadas.
Las imágenes ya segmentadas y clasificadas pueden ser descargadas de acá.
Para realizar el entrenamiento y la evaluación de los modelos de DL, utilizamos las herramientas disponibles en SAS Viya con la ayuda de DLPy.
En particular, utilizamos 3 modelos de CNN:
- AlexNet: Es un modelo que gano el concurso “the ImageNet Large Scale Visual Recognition Challenge (ILSVRC)” impulsando el uso de las CNNs en la clasificación de imágenes.
- VGG16: desarrollado por el grupo de investigación “Visual Geometric Group” de la Universidad de Oxford y obtuvo muy buenos resultados en el ILSVRC de 2014.
- ResNet: Es uno de los modelos más utilizados en la actualidad, gano el ILSVRC 2015 introduciendo considerables mejoras respecto a modelos anteriores.
La imagen II ilustra cómo es el proceso de carga, entrenamiento y evaluación de modelos utilizando DLPy. Pero ¿Cómo entrenamos los modelos? ¿Qué significa “entrenar” un modelo? ¿Cómo lo evaluó?
Veamos un poco más en detalle algunos puntos importantes del proceso:
En primer lugar, las imágenes son cargadas y divididas en 2 grupos, un grupo de entrenamiento (train) y otro de testeo (test).
Las imágenes train son utilizadas para entrenar los modelos. ¿Qué significa esto? El entrenamiento consta de “mostrarle” las imágenes a la red, e indicarle si se trata de células sanas o infectadas. Durante este proceso, ciertos algoritmos modifican parámetros de la red, y de esta forma la red “aprende” cuáles son las características de las células sanas y cuales las características de células infectadas. Una vez “aprendido” esto, podemos mostrarle una imagen que nunca vio y “preguntarle” si se trata de una célula sana o infectada. Si hicimos las cosas bien, la red nos responderá correctamente la gran mayoría de las veces.
El último paso es mostrarle a la red muchas imágenes que nunca vio (imágenes de test) para que sean clasificadas, esto nos permite obtener ciertas métricas que nos indican que tan bien funciona la red y permiten comparar el funcionamiento de distintas redes. La métrica utilizada en este caso fue el accuracy, que es la proporción de imágenes clasificadas correctamente sobre el total de imágenes.
Resultados
Luego de algunas horas de entrenamiento, los modelos ya están listos. En poco menos de un minuto, la red procesa las 3000 imágenes de test y puedo calcular el accuracy para cada caso. Los resultados se muestran en la tabla I.
Modelo |
Accuracy NIH | Accuracy SAS |
AlexNet |
0.944 | 0.945 |
VGG-16 | 0.959 |
0.951 |
ResNet-50 | 0.959 |
0.967 |
Tabla I: Métricas obtenidas para distintos modelos
Podemos ver que los valores obtenidos utilizando DLPy son similares a los obtenidos por el grupo de investigación del NIH. Esto significa que logramos replicar el resultado, y no solo eso, ¡los resultados son muy buenos! La tasa de error en la clasificación de las células es muy baja, lo que permitiría utilizar estos modelos como herramienta para disminuir los tiempos de diagnóstico.
Con este ejemplo queda demostrado que el DL puede ser utilizado para resolver un problema real y concreto. Más allá de este caso en particular, hay una infinidad de problemas que podrían ser tratados usando DL. Lo bueno es que tanto el material como las herramientas están disponibles para que los usemos, para que seamos creativos, para que solucionemos problemas reales. Usar el Deep Learning para cambiar nuestras vidas, solo depende de nosotros.
[1] Silver, D., Huang, A., Maddison, C. J., Guez, A., Sifre, L., van den Driessche, G., … Hassabis, D. (2016). Mastering the game of Go with deep neural networks and tree search. Nature, 529(7587), 484–489
[2] Bojarski, M., Testa, D. D., Dworakowski, D., Firner, B., Flepp, B., Goyal, P., Jackel, L. D., Monfort, M., Muller, U., Zhang, J., Zhang, X., Zhao, J. & Zieba, K. (2016). End to End Learning for Self-Driving Cars.
[3] Esteva, A., Kuprel, B., Novoa, R. A., Ko, J., Swetter, S. M., Blau, H. M., & Thrun, S. (2017). Dermatologist-level classification of skin cancer with deep neural networks. Nature, 542(7639), 115–118.
[4] Heinsfeld, A. S., Franco, A. R., Craddock, R. C., Buchweitz, A., & Meneguzzi, F. (2018). Identification of autism spectrum disorder using deep learning and the ABIDE dataset
[5] Gatys, L., Ecker, A. and Bethge, M. (2019). A Neural Algorithm of Artistic Style. [online]arXiv.org. Available at: https://arxiv.org/abs/1508.06576 [Accessed 10 Jan. 2019].
[6] Ross, N. E., Pritchard, C. J., Rubin, D. M., & Dusé, A. G. (2006). Automated image processing method for the diagnosis and classification of malaria on thin blood smears. Medical & Biological Engineering & Computing, 44(5), 427–436. https://doi.org/10.1007/s11517-006-0044-2
[7] Rajaraman, S., Antani, S. K., Poostchi, M., Silamut, K., Hossain, M. A., Maude, R. J., … Thoma, G. R. (2018). Pre-trained convolutional neural networks as feature extractors toward improved malaria parasite detection in thin blood smear images. PeerJ, 6, e4568