PROYECTO INTEGRADOR DE LA CARRERA
INGENIERIA MECANICA
ROBUSTEZ DE LAS REDES NEURONALESPROFUNDAS PARA CLASIFICAR IMAGENES
MEDICAS
Matıas Alejandro KlosterAlumno
Dr. Mato GermanDirector
Dr. Curiale Ariel HernanCo-director
Miembros del JuradoDr. Colavecchia Flavio Darıo (CNEA)Ing. Rovere Luis (Fundacion Intecnus)
10 de Junio de 2019
Gerencia de Fısica - Centro Atomico Bariloche
Instituto BalseiroUniversidad Nacional de Cuyo
Comision Nacional de Energıa AtomicaArgentina
A mi familia
A mis amigos
Y a todas esas personas que me hacen feliz
Indice de contenidos
Indice de contenidos v
Resumen vii
Abstract ix
1. Introduccion 1
2. Marco teorico 5
3. Generacion y deteccion de ejemplos adversariales 15
4. Resultados 21
4.1. Ataque y defensa en imagenes de MNIST y CIFAR-10 . . . . . . . . . . 21
4.2. Ataque y defensa en imagenes de retinopatıa diabetica . . . . . . . . . 28
4.3. Robustez . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5. Conclusiones 35
A. Proyecto y diseno 37
B. Ataque y defensa en imagenes de retinopatıa diabetica 39
Agradecimientos 45
Bibliografıa 47
v
Resumen
En esta tesis se aborda el problema de clasificacion automatica de imagenes utilizan-
do tecnicas de redes neuronales profundas. Estas tecnicas permiten lograr resultados
comparables con los del sistema visual humano, pero presentan limitaciones tales como
ser vulnerables a ejemplos adecuadamente elegidos. Estos ejemplos, son llamados ejem-
plos adversariales y se pueden construir de diversas maneras a partir de una imagen
natural. Los ejemplos adversariales son clasificados erroneamente por la red, pero son
visualmente indistinguibles de las imagenes naturales
Luego de un estudio exhaustivo de dicha problematica, se realiza la generacion de
ejemplos adversariales sobre dos bases de datos ampliamente conocidas. Luego, dada
una imagen se implementa un algoritmo que detecta si la misma es natural o adversarial,
tomando nota de la precision del metodo.
Por ultimo, se realizaron las mismas pruebas sobre una base de datos de imagenes
de una patologıa denominada retinopatıa diabetica, en donde la red neuronal utilizada
categoriza la imagen segun la gravedad de la enfermedad o la ausencia de la misma. La
deteccion de las imagenes adversariales de retinopatıa diabetica utilizando el metodo
propuesto en este estudio presenta un error de 3.8 %.
vii
Abstract
This thesis approaches the problem of automatic image classification using deep
neural network techniques. These techniques achieve results comparable with those
of the human visual system, but they present limitations such as being vulnerable
to properly chosen examples. These examples, are called adversarial examples and
can be constructed in various ways from a natural image. Adversarial examples are
erroneously classified by the network, but are visually indistinguishable from natural
images.
After an exhaustive study of this problem, adversarial examples are generated on
the basis of two widely known databases. Then, given an image, an algorithm is
implemented that detects if it is natural or adversarial, taking note of the precision of
the method.
Finally, the same tests were performed on a database of images of a pathology called
diabetic retinopathy, where the neuronal network categorizes the image according to the
severity of the disease or its absence. The detection of diabetic retinopathy adversarial
images using the method proposed in this study presents an error of 3.8%.
ix
Capıtulo 1
Introduccion
Inteligencia artificial (IA) es un termino muy utilizado hoy en dıa, sin embargo,
la comunidad cientıfica no logra llegar a un consenso en su definicion. No obstante,
podrıa decirse que la mayorıa de los investigadores coinciden en la esencia del concepto.
Algunos de los ejemplos con los que se podrıa definir la IA son:
“La ciencia e ingenio de hacer maquinas inteligentes, especialmente programas
de computo inteligentes” - John McCarthy 1956
“La interesante tarea de lograr que las computadoras piensen” - John Haugeland
1985
“El arte de crear maquinas con capacidad de realizar funciones que realizadas
por personas requieren inteligencia” - Raymond Kurzweil 1990
Alan Turing, considerado el padre de la inteligencia artificial (IA), fue el primero
en proporcionar una definicion operacional y satisfactoria de la misma en su trabajo
titulado “Computing Machinery and Intelligence” en 1950. En lugar de proponer una
lista larga y quiza controvertida de cualidades necesarias para obtener inteligencia
artificialmente, el sugirio una prueba basada en la incapacidad de diferenciar entre
entidades inteligentes indiscutibles y seres humanos. El computador supera la prueba
si un evaluador humano no es capaz de distinguir si las respuestas, a una serie de
preguntas planteadas, son de una persona o no [1] (pag 3). A dicha prueba se la conoce
como el test de Turing y demostro ser de gran importancia en la filosofıa de la IA.
Es cada vez mas difıcil ignorar el papel que juega la IA en nuestras vidas cotidia-
nas. Por ejemplo, dicha tecnologıa esta presente en los asistentes personales, vehıculos
autonomos, deteccion de fraudes, publicidad personalizada, diagnostico de imagenes
medicas, toma de decisiones, biometricas y automatizacion de procesos roboticos, en-
tre otras aplicaciones.
En los ultimos anos se han propuesto diferentes enfoques basados en IA para resolver
tareas especıficas. Los mismos han demostrado obtener una precision sorprendente,
1
2 Introduccion
logrando resultados comparables con el ser humano en algunas tareas. Por ejemplo
en el area de reconocimiento, localizacion y deteccion de objetos [2], diagnostico de
enfermedades medicas tales como cancer de mama [3], cancer de piel [4], retinopatıa
diabetica (RD) [5] y demas. Dichos enfoques se basan en su mayorıa en tecnicas de
Machine Learning (ML) y redes neuronales o Deep Learning (DL).
Al utilizar las herramientas mencionadas para el caso particular de imagenes medi-
cas, se puede brindar un soporte cuantitativo en un diagnostico medico. Esto se realiza
con el fin de asistir al profesional, ofrecer una mejor calidad en los resultados y contri-
buir con los avances tecnologicos aplicados al campo de la medicina.
A pesar de la enorme cantidad de aplicaciones que tiene la IA, y en especial las
tecnicas de Deep Learning hoy en dıa, Szegedy et al. [6] realizan un descubrimiento
intrigante: varios modelos de ML, entre ellos las redes neuronales de ultima generacion,
son vulnerables a confundirse en la resolucion de su tarea. En el caso particular de
reconocimiento de imagenes, las redes neuronales pueden clasificar de manera erronea
una imagen que sea ligeramente diferente a una extraıda de la distribucion de datos.
En este sentido, se puede definir ejemplo o imagen adversarial a aquellas que presenten
esta caracterıstica, y por otro lado, se denomina imagen natural a las que son extraıdas
del conjunto de datos original.
Las imagenes naturales y adversariales pueden ser muy similares e incluso casi
indistinguibles para el ser humano. Para tener una mejor idea de esto, en la Figura 1.1
se observa una imagen de un panda, su perturbacion y por ultimo la imagen adversarial
correspondiente la cual es categorizada como un gibon (un tipo de mono).
(a) Imagen natural clasificadacomo “panda”.
(b) Perturbacion con un fac-tor de 0.007 para una mejor vi-sualizacion.
(c) Imagen adversarial cla-sificada erroneamente como“gibon” (un tipo de mono).
Figura 1.1: Generacion de un ejemplo adversarial a partir de la imagen de un panda (a)clasificada de forma correcta. Al sumar dicha imagen con una perturbacion inteligentementeelegida (b) se obtiene una imagen adversarial (c) la cual es clasificada erroneamente. Dichoejemplo fue extraıdo de Goodfellow et al. [7] y Szegedy et al. [6] aplicado a la red GoogleNetutilizando la base de datos ImageNet.
Este punto debil podrıa ser utilizado por terceros con fines maliciosos tales como
ocultamiento/robo de identidad. De hecho, redes sociales actuales como Facebook, apli-
3
caciones como Google Fotos y muchos sistemas de vigilancia, utilizan modelos de ML.
En el ambito clınico, es cada vez mas frecuente que los sistemas de diagnostico asistido
por computador utilicen este tipo de tecnologıa, existiendo la posibilidad de obtener
un diagnostico o analisis erroneo frente a pequenas perturbaciones. Por ejemplo, di-
cha perturbacion puede ocurrir por causas de ruido o efecto de un artefacto. Dichas
consideraciones hacen pensar que el estudio de los ejemplos adversariales merece in-
vestigacion adicional. Mas aun, serıa de gran interes poder desarrollar metodos para
poder discriminar los ejemplos adversariales de las imagenes naturales.
En este estudio se realiza particular enfasis en imagenes de la enfermedad retino-
patıa diabetica. La misma, afecta alrededor de 93 millones de personas y es la principal
causa de ceguera en la poblacion en edad de trabajar del mundo desarrollado [8].
Objetivo y metodologıa propuesta
Dada la importancia que tiene estudiar y comprender los ejemplos adversariales
en el area de la medicina, el principal objetivo de este trabajo consiste en estudiar el
impacto que tienen los mismos sobre la clasificacion de imagenes medicas referidas a
la enfermedad retinopatıa diabetica.
Ademas, se busca la discriminacion entre imagenes de tipo adversarial y natural, a
traves de una metodologıa que sea robusta.
Para lograr los objetivos propuestos en este trabajo se propone la siguiente meto-
dologıa:
Estudio del estado del arte. Como primer paso, se busca establecer el marco
teorico concerniente al trabajo a realizar.
• Se realiza un estudio exhaustivo sobre diferentes tecnicas de IA [1], ML [9]
[10] y redes neuronales. Poniendo foco en las nuevas tecnicas de DL para el
reconocimiento de patrones [11].
• Estudio de los conceptos basicos en torno de los ejemplos adversariales [6]
[7], su generacion [12] y deteccion [13] en diversos contextos.
Herramientas computacionales. Con el fin de lograr los objetivos propuestos,
resulta fundamental establecer un marco de trabajo en el cual se pueden integrar
facilmente los distintos desarrollos que se presentan a lo largo de este texto. Para
esto es necesario el estudio y aprendizaje de diferentes bibliotecas y entornos
de programacion. A continuacion, se da informacion sobre las herramientas a
utilizar:
• Se utiliza Conda [14] como sistema de gestion de paquetes y ademas todos
los algoritmos utilizados se encuentran escritos en Python.
4 Introduccion
• Se utiliza NVIDIA CUDA (cuDNN) [15] como librerıa de redes neuronales
profundas aceleradas en la GPU.
• Se emplea Keras [16] como API de redes neuronales funcionando sobre Ten-
sorFlow [17] y ejecutandose en la GPU.
Desarrollo de los metodos propuestos
• Se realiza el desarrollo, entrenamiento y validacion de redes neuronales para
la clasificacion de imagenes de distintas bases de datos.
• Desarrollo e implementacion de un prototipo capaz de generar ejemplos
adversariales en base a imagenes extraıdas del conjunto de datos original.
Estas ultimas son denominadas imagenes naturales.
• Desarrollo e implementacion de un metodo capaz de detectar si una imagen
dada es un natural o adversarial, realizando las pruebas correspondientes y
tomando nota de la precision del metodo utilizado.
• Validacion de los metodos propuestos
Capıtulo 2
Marco teorico
En este capıtulo se busca establecer el marco teorico correspondiente con el fin de
poder comprender la naturaleza de los ejemplos adversariales, para esto se introducen
con mas detalle algunos conceptos importantes de la IA.
Machine Learning (ML)
Machine learning, tambien llamado aprendizaje automatico o aprendizaje de maqui-
nas es un area de la inteligencia artificial. Se podrıa definir a las tecnicas de ML como
aquellas que son capaces de aprender a partir de la experiencia, es decir, de los datos
suministrados para luego poder mejorar, describir y predecir resultados. A medida que
el algoritmo toma datos de entrenamiento, es posible producir modelos mas precisos
basados en esos datos. Algunos ejemplos de ML son regresion lineal o logıstica, sin em-
bargo, la principal dificultad que estos presentan es que dependen de la representacion
de las caracterısticas de los datos de entrada, como elegirlas adecuadamente no es un
problema trivial. En este punto es donde adquieren ventaja las redes neuronales, las
cuales infieren las caracterısticas relevantes directamente de los datos en crudo. Las
redes neuronales seran explicadas luego.
Enfoques para abordar ML
Dependiendo de la naturaleza del problema, como puede ser el tipo y volumen de
datos a tratar, existen diferentes enfoques de ML tales como aprendizaje supervisado y
no supervisado [10] (pag 14). En ambos casos, es importante que el modelo resultante
sea capaz de generalizar el comportamiento que sirva para un conjunto mas amplio, en
principio, infinito.
Aprendizaje supervisado. En este tipo de aprendizaje se requiere de un conjunto
de datos de los cuales ya se conoce la respuesta esperada que tendrıa que entregar el
5
6 Marco teorico
algoritmo de ML. Por ejemplo, si se desea detectar perros y gatos de imagenes utilizan-
do tecnicas de ML basadas en aprendizaje supervisado, se debe contar con una base
de datos de imagenes de perros y gatos, y que cada imagen tenga su respuesta corres-
pondiente. Cuando la etiqueta o “respuesta” del sistema es continua, el problema es de
regresion, por otro lado, cuando la etiqueta posee un numero finito de posibilidades, el
problema es de clasificacion [10] (pag 15) tal como el ejemplo de deteccion de perros y
gatos. Este tipo de aprendizaje es el utilizado a lo largo de este estudio.
Aprendizaje no supervisado. A diferencia del anterior, este enfoque se utiliza
cuando se posee un conjunto de datos que no esta etiquetado. Muchas veces, esta
imposibilidad por tener el valor esperado se presenta por razones de tiempo, costo y/o
desconocimiento, y es aquı donde el aprendizaje no supervisado es fundamental. El
algoritmo de ML, debera ser capaz, segun los patrones que encuentre en los datos, de
entender el significado que poseen los mismos para resolver una tarea en particular
[10] (pags 15-16).
Tipos de tecnicas de ML
La comprension de diferentes clases de algoritmos de aprendizaje automatico es
esencial para elegir correctamente el metodo adecuado.
Algunas de las tecnicas mas utilizadas en la bibliografıa para resolver diversas tareas
son arbol de decisiones, algoritmos geneticos, reduccion de la dimensionalidad, regresion
lineal y redes neuronales artificiales entre otras. Estas ultimas, gracias a los avances
tecnologicos de las GPU, mostraron una precision comparable e incluso mejor a la del
ser humano en algunas tareas tales como reconocimiento de imagenes [18]. Por estas
razones nos centraremos en describir de forma detallada las redes neuronales.
Redes neuronales artificiales
El cerebro humano es superior a una computadora digital en muchas tareas. Ademas
tiene diversas caracterısticas que serıan deseables en los sistemas artificiales [11] (pag 1):
Robusto y tolerante a fallos. Las celulas nerviosas en el cerebro mueren todos los
dıas sin afectar su desempeno significativamente.
Robusto frente a informacion incompleta, ruidosa o inconsistente.
Puede tratar con informacion borrosa, probabilıstica, ruidosa o inconsistente.
Altamente paralelo.
Pequeno, compacto y disipa muy poca energıa.
Solo en las tareas basadas principalmente en la aritmetica simple el ordenador
7
supera al cerebro, esta es la motivacion real de la comunidad cientıfica para el estudio
de las redes neuronales [11] (pag 1).
Las redes neuronales artificiales son sistemas que tuvieron su inspiracion inicial en
el funcionamiento de su homologo biologico. La unidad basica de las mismas es la neu-
rona artificial tambien basada en una neurona biologica, la cual recibe un conjunto de
estımulos cuyo nivel depende del peso sinaptico entre la neurona que emite el estımulo
y la que lo recibe. Es decir, en el modelo simplificado la neurona recibe un conjunto
de entradas x ponderadas por un vector de pesos interno e inherente a cada neurona
w. Finalmente el resultado de esta operacion es el argumento de una funcion llamada
funcion de activacion, y, si el valor es superior a algun umbral (tıpicamente 0), los
neurona es disparada y toma el valor de activacion (tıpicamente 1); de forma contraria,
toma el valor de desactivacion (tıpicamente -1) dando ası la salida de la neurona.
En la Figura 2.1 se puede observar un diagrama basico de una neurona biologica y
de una neurona artificial.
(a) Neurona biologica, en la cual se basala neurona artificial y se observa la clarasimilitud de las mismas. Imagen extraıday modificada de [11] (pag 2).
(b) Neurona artificial o perceptron deunidad unica, en donde se aprecia las en-tradas xi, los pesos de la neurona wi, sufuncion de activacion y la salida y.
Figura 2.1: Esquemas basicos de una neurona biologica y artificial.
Cabe mencionar que si bien la funcion de activacion se describio utilizando un
valor de umbral, la forma general de la misma es cualquier funcion analıtica, algunas
de las mas utilizadas son: softmax, relu, tanh, lineal y sigmoide entre otras [16]. En
particular, la funcion de activacion softmax posee la caracterıstica que todas sus salidas
son positivas y la suma de las mismas es igual a uno. Por tanto, en un problema de
clasificacion, al utilizar softmax como funcion de activacion en la ultima capa de una
red neuronal, cada valor de salida corresponde a la probabilidad de que la entrada
corresponda a esta clase.
Por otro lado, se puede pensar que una red neuronal, la cual no es mas que una cierta
cantidad de neuronas interconectadas entre sı, puede aprender parametros de las senales
de entrada para producir una salida deseada. A continuacion, se nombran algunos de
los tipos de redes neuronales artificiales existentes, comenzando por el perceptron, la
mas sencilla de las redes neuronales.
8 Marco teorico
Perceptron. La definicion de perceptron fue presentada por Rosenblatt [19] en
donde explica entre otras cosas su funcionamiento basico y como se realiza la actua-
lizacion de los pesos internos del mismo. El mismo consta de una sola capa de nodos
de salida (Figura 2.2a) en donde cada uno de estos nodos o neuronas sigue el modelo
simplificado descripto anteriormente (Figura 2.1b). Algunos autores usan el termino
perceptron para referirse a las redes que constan de solamente una de estas unidades.
La limitacion que presenta un perceptron de unidad unica es que los elementos que se
desea categorizar deben poder separarse mediante un hiperplano, de hecho, en el ano
1969 en la monografıa titulada “Perceptrons” [20], Marvin Minsky y Seymour Papert
demostraron que un perceptron de unidad unica es incapaz de aprender una funcion
XOR, o mas generalmente, cualquier funcion que no sea linealmente separable.
Las limitaciones de un perceptron simple sirvieron de motivacion para la evolucion
de dicho concepto. Al introducir capas de neuronas ocultas, es decir capas que no son
la entrada ni la salida de la red neuronal, se consigue la representacion de funciones
linealmente separables. Basandose en esta idea se obtiene el denominado perceptron
multicapa, el cual sera explicado a continuacion.
Perceptron multicapa. Es una clase de redes que, como su nombre lo indica,
consta de multiples perceptrones organizados por capas, siendo estas: la capa de en-
trada, la de salida y un cierto numero de capas ocultas. Cada neurona en una capa
tiene su salida dirigida solamente a las neuronas de la capa siguiente (Figura 2.2b),
de hecho las redes que poseen esta caracterıstica son llamadas de tipo feed forward y
el perceptron multicapa es un caso particular de ellas. Ademas, si se cumple que cada
neurona de una capa esta conectada a todas las neuronas de la siguiente capa, se dice
que la capa es de tipo densa. Por otro lado, existe el teorema de aproximacion universal
que establece que cada funcion continua que mapea un intervalo de numeros reales a un
intervalo de salida puede ser aproximada tanto como se desee utilizando un perceptron
multicapa con solo una capa oculta [21]. Esta caracterıstica es la que permite superar
la limitacion del perceptron simple previamente mencionada.
(a) Perceptron. (b) Perceptron multicapa.
Figura 2.2: Ejemplos de un perceptron y un perceptron multicapa. Imagenes extraıdas de[11] (pag 90).
Las redes neuronales precisan de un metodo para aprender correctamente sus pesos
9
con el fin de aproximar una funcion deseada, esto se logro gracias a la tecnica de
backpropagation la cual sera explicada a continuacion.
Backpropagation. Dicho algoritmo es esencial para el proceso de aprendizaje o
actualizacion de pesos internos en las redes neuronales actuales. Fue inventado varias
veces de forma independiente por Bryson y Ho (1969) [22], Werbos (1974) [23], Par-
ker (1985) [24] y Rumelhart, Hinton y Williams (1986) [25]. Por otro lado, Le Cun
(1985) [26] propuso un enfoque que guardaba una estrecha relacion con los demas
[11] (pag 115). El metodo backpropagation da una receta para cambiar los pesos inter-
nos de una red neuronal de tipo feed forward, con el fin de aprender la correcta funcion
o clasificacion para cierto conjunto de pares entrada-salida.
Se define una funcion de costo o perdida, la cual se desea minimizar. Dicha funcion
es una medida de la diferencia entre la salida obtenida y la salida deseada para un
cierto conjunto de pares entrada-salida.
Un metodo algo “ingenuo” para minimizar la funcion de costo, es variar de a un
parametro de la red por vez, y en cada variacion, tomar nota del comportamiento de la
funcion error. Este metodo implica recalcular la funcion de costo cada vez que se realice
una variacion de un parametro de la red. Dado que las redes neuronales pueden contener
decenas de millones de parametros, la minimizacion de la funcion error utilizando este
metodo tomarıa mucho tiempo
La clave del metodo backpropagation es utilizar gradiente descendiente para minimi-
zar la funcion de costo utilizando la regla de la cadena. La funcion que implementa una
red neuronal es una composicion de funciones. La derivada respecto a cada parametro
de una de estas funciones puede ser evaluada como un producto de derivadas de las
funciones que aparecen entre la funcion a derivar y la salida de la red. Este producto
puede ser realizado de manera natural por un procedimiento iterativo. Las derivadas
de las funciones de una dada capa pueden ser calculadas en termino de las deriva-
das de las funciones de las capas posteriores. Este procedimiento permite calcular el
gradiente de la funcion de costo utilizando una sola presentacion de los patrones de
entrada. Ademas este procedimiento tiene la ventaja de ser altamente paralelizable. Se
recomienda al lector consultar en Hertz [11, sec. 6.1] para mayor informacion.
Red neuronal convolucional. La historia de las mismas comienza con la inven-
cion del neocognitron [27], basado en los descubrimientos realizados por Hubel y Wiesel
[28] [29] los cuales llevaron a un mejor entendimiento sobre el funcionamiento de las
neuronas de la corteza visual de algunos seres vivos.
Dichas neuronas responden segun el estımulo de cierta region del campo de vision,
a diferencia de las capas densas las cuales tienen en cuenta toda la capa anterior
para computar su salida. Por ultimo, LeCun et al. [30] fueron los primeros en utilizar
backpropagation para aprender correctamente los coeficientes de una red convolucional.
La misma tenia como finalidad la deteccion de numeros manuscritos.
10 Marco teorico
La esencia de las redes neuronales convolucionales, como su nombre lo indica, reside
en las capas de tipo convolucional. Cada capa completa comparte los pesos y funcion
de activacion, el conjunto de los pesos de una capa se denomina kernel. El mismo se
trata de una matriz mas pequena que la matriz de entrada y ademas cada kernel es util
identificar caracterısticas relevantes al problema. En la Figura 2.3 se observa a modo
esquematico como se extraen rasgos cada vez mas abstractos de una imagen.
Salida(ej. identidad del objeto)PersonaAuto Animal
partes del objeto
contornos y esquinas
bordes
Inf. de entrada(ej. pixels)
Figura 2.3: Se muestran los diferentes rasgos ex-traıdos de una imagen para ciertas capas de una redneuronal convolucional. Imagen extraıda de [31] (pag 6)
Como primer paso para obtener la salida de una capa de tipo convolucional, se
realiza la multiplicacion de cada elemento del kernel con su correspondiente elemento
de la matriz de entrada. Una vez obtenidos todos los productos se realiza la suma de los
mismos obteniendo ası la salida de la capa convolucional, ver Figura 2.4, o en caso de
que exista una funcion de activacion, se obtiene el argumento de la misma. Los valores
del kernel son los parametros a aprender por la red, utilizando una modificacion del
metodo de backpropagation [32].
Figura 2.4: Ejemplo esquematico de una operacion de con-volucion con sus correspondientes dimensiones.
En la Figura 2.4 se resalta que la profundidad de la matriz de entrada y del kernel
deben ser iguales. Ademas, en el ejemplo mostrado se cuenta con un solo kernel, por
11
lo que la profundidad de la salida es de uno. En caso de poseer un cierto numero de
kernels, la profundidad de la salida sera dicho numero, en donde cada kernel detectara
cierta caracterıstica de la imagen o dato de entrada.
Se suele decir que los kernels representan una caracterıstica o feature relevante para
resolver el problema. Por lo tanto, la salida de una capa convolucional es la respuesta
de las neuronas a una caracterıstica dada cuando se presenta una imagen o dato de
entrada. En la Figura 2.5 se muestra un esquema de una red neuronal convolucional.
Figura 2.5: Ejemplo de una red convolucional extraıdo de [32]
Otros tipos de redes neuronales. Existe una gran variedad de tipos de redes
neuronales como por ejemplo las redes neuronales recurrentes (RNN) y long/short term
memory (Figura 2.6). Si bien estas redes tambien se utilizan para el reconocimiento de
patrones en imagenes, el estudio de las mismas queda fuera del alcance de este trabajo.
Para mayor informacion sobre las mismas y otros tipos de redes neuronales artificiales,
consultar en [11].
Figura 2.6: Algunos ejemplos de tipos de redes neuronales, a la de-recha se muestra una red neuronal recurrente y a la izquierda una redneuronal de tipo LSTM. Imagenes extraıdas de [33].
Deep learning (DL)
Si bien existen diversas definiciones de este concepto, se trata una red neuronal con
mas de una capa, en donde se puede pensar que cada capa le corresponde a un nivel
de abstraccion cada vez mas profundo.
Con las tecnicas mencionadas hasta ahora, puede realizarse una red neuronal arti-
ficial, que tenga como fin la correcta categorizacion de un cierto conjunto de imagenes
12 Marco teorico
como puede observarse en la Figura 2.7. En lo que resta de este capıtulo se prosigue
al estudio de los ejemplos adversariales previamente mencionados, para luego, realizar
las pruebas correspondientes.
Figura 2.7: Modelo de caja negra de un algoritmo deDeep Learning, el cual categoriza imagenes pertenecien-tes a la base de datos CIFAR-10.
Ejemplos adversariales
Como ya se menciono previamente, algunos modelos de Machine Learning, inclu-
yendo las redes neuronales artificiales mostraron clasificar de manera erronea y con alta
confianza, algunos ejemplos a los cuales se agrego una perturbacion pequena pero inte-
ligentemente elegida para que esto ocurra. Es decir, estos modelos tienden a clasificar
de forma erronea ejemplos que son levemente diferentes a otros que clasifican de forma
correcta. En la Figura 2.8 se muestra una imagen natural categorizada como “ballena”
que al sumarle una cierta perturbacion se obtiene una imagen adversarial categorizada
como “tortuga”, dichas imagenes fueron extraıdas de [12].
(a) Imagen natural clasificadacomo “ballena”.
(b) Perturbacion. (c) Imagen adversarial clasifi-cada como “tortuga”.
Figura 2.8: Generacion de un ejemplo adversarial a partir de la imagen de una ballena (a)clasificada de forma correcta. Al sumar dicha imagen con una perturbacion inteligentementeelegida (b) se obtiene una imagen adversarial (c) la cual es clasificada erroneamente. Dichoejemplo fue extraıdo de Moosavi et al. [12].
13
El descubrimiento de estos ejemplos se le atribuye a Szegedy et al. [6]. Por algun
tiempo la existencia de los mismos fue un misterio y algunas explicaciones sugerıan que
la causa era la no linealidad de las redes neuronales profundas. Sin embargo, Goodfe-
llow et al. [7] propone en cambio que la vulnerabilidad a los ejemplos adversariales es
una consecuencia de la naturaleza lineal de las redes neuronales. Ademas, sugiere que
la alta dimensionalidad de la entrada permite realizar pequenos cambios en algunas
dimensiones, de tal forma que la red neuronal lo clasifique de forma erronea, pero la
imagen sea casi indistinguible de la original por el ojo humano.
Actualmente, en la bibliografıa se han propuesto diversos metodos para generar
ejemplos adversariales. Por ejemplo, Su et al. [34] propone una forma de generar ejem-
plos adversariales modificando solamente un pixel de la imagen. Por otro lado, Moosavi
et al. [12] utiliza un metodo denominado DeepFool (Figura 2.8). Este ultimo es la base
para el ataque propuesto en este estudio, el cual sera explicado luego.
Capıtulo 3
Generacion y deteccion de ejemplos
adversariales
En este capıtulo se explican detalladamente los metodos propuestos para la gene-
racion de ejemplos adversariales (ataque) y la deteccion de los mismos (defensa).
Ataque a utilizar
El metodo propuesto para la generacion de los ejemplos adversariales (ataque) se
basa en la tecnica DeepFool propuesta en Moosavi et al. [12].
Sea x una imagen y f una funcion que representa a la red neuronal con n entradas y
c salidas o categorıas f : Rn → Rc. Por ultimo, k(x) = arg maxk(fk(x)) se corresponde
con la clase mas probable, la salida de la red neuronal y ademas se cumple que k(x) ∈[0; c].
Para llevar a cabo el ataque se realiza la siguiente metodologıa. Partiendo de la
imagen x0 se calcula la clase mas probable k(x0) (la clase actual) y la segunda clase
mas probable l(x0) (la clase objetivo). Luego, al definir f ′(x) = fl(x) − fk(x0)(x) se
puede ver que las imagenes x que satisfagan f ′(x) = 0 se encuentran en la frontera de
decision de la red neuronal. Por tanto, el objetivo es encontrar un cero de esta funcion,
de forma grafica se busca algun punto sobre la lınea naranja de la Figura 3.1. Para
ello, se propone el metodo de Newton-Raphson multidimensional tal como se realiza
en Moosavi et al. [12].
En el Algoritmo 3.1 se muestran los pasos utilizados para generar un ejemplo ad-
versarial. En el mismo se comienza con una imagen inicial x0 y luego de cierto numero
de iteraciones se obtiene una perturbacion r tal que al ser sumada a x0 se consigue el
ejemplo adversarial buscado de forma tal que k(x0) 6= k(x0 + r).
Dado que se busca cruzar la frontera de decision, y no solo encontrar un cero de la
funcion f ′(x), se modifica el metodo de Newton-Raphson anadiendo un factor (1 + η)
15
16 Generacion y deteccion de ejemplos adversariales
con η > 0 tal como se muestra en el Algoritmo 3.1. Se recomienda al lector consultar en
Moosavi et al. [12] para obtener mayor informacion sobre este proceso. Se debe tener
en cuenta que el algoritmo explicado previamente presenta algunas diferencias con el
mismo.
Algoritmo 3.1: Utilizado para generar un ejemplo adversarial.
Entrada: imagen x , c l a s i f i c a d o r f
Salida: pe r tu rbac i on r
x0 = x
i = 0
η = 0.01
l = arg maxl 6=k(x0)(fl(x))
while: k(xi) = k(x0) do:
ω′(xi) = ∆fl(xi)−∆fk(x0)(xi)
f ′(xi) = fl(xi)− fk(x0)(xi)
ri(xi) =|f ′|
‖ω′‖22
ω′
xi+1 = xi + ri(1 + η)
i = i+ 1
end while
return r =∑
i ri
Figura 3.1: Grafica en donde se observa Rn en un plano. Esto implica que cada puntodel mismo representa una imagen (x). Por otro lado se observa una superficie que simbolizaa la funcion f ′(x). La curva F muestra los puntos x que cumplen que f ′(x) = 0. Ademas,el hiperplano en color verde es la linealizacion de f ′(x) alrededor de algun punto, y la lıneanaranja representa los puntos en lo que este hiperplano toma valor nulo. Por este motivo,si dos puntos o imagenes xA y xB se encuentran en zonas diferentes delimitadas por lafrontera indicada con linea naranja, las imagenes pertenecen a categorıas distintas, es decirk(xA) 6= k(xB). Imagen extraıda de [12]
Por ultimo, se cuantifica la diferencia entre la imagen adversarial y la natural me-
diante el indicador ρadv de la siguiente forma:
17
ρadv =1
NV
∑x∈V
∥∥r(x)∥∥2
‖x‖2(3.1)
donde NV representa el numero de imagenes del conjunto de validacion V, y x una ima-
gen en particular, siendo r(x) la mınima perturbacion necesaria para que clasificacion
de x sea diferente de (x+ r(x)).
Defensa a utilizar
Por otro lado, se denomina defensa al metodo utilizado para detectar si un ejemplo
dado es adversarial o natural. Carlini y Wagner, muestran en su trabajo [13] la dificultad
de realizar esta deteccion. En dicho trabajo, analizan diez estrategias diferentes para
identificar cual de ellas obtiene mejores resultados en cuanto a detecciones. La estrategia
que mejor resultado obtuvo es la que llaman “Dropout randomization”, en el cual
Feinman et al. [35] proponen medir la incertidumbre de una red frente a una cierta
entrada. Para ello, se agrega aleatoriedad a la red, esperando que las imagenes naturales
o normales sean categorizadas de igual forma pese a dicho factor aleatorio. Por otro
lado, se espera que la prediccion de las imagenes adversariales no siempre sea la misma.
La estrategia de defensa propuesta en este trabajo sigue una idea similar, aunque
presenta algunas diferencias tales como el metodo utilizado para agregar aleatoriedad
a la red (Feinman el al. [35] utilizan Dropout). En particular la estrategia de defensa
propuesta por este estudio, se puede resumir de la siguiente forma:
1. Se define una red a la cual llamaremos “red original” que funcione correctamente
para una tarea dada, sea clasificacion o regresion. Se asume que la red clasifica
de forma adecuada las entradas x, es decir a su correspondiente clase k(x).
2. Se realiza una copia de la red anterior, pero a esta se agrega ruido en algunos de
los argumentos de las funciones de activacion de las neuronas de la red, a dicha
red la llamaremos “red con ruido”. Se asume que las entradas x son clasificadas
a su correspondiente clase k∗(x).
3. Se toma una imagen natural xnat que sea correctamente clasificada por la “red
original”, por tanto dicha clase es k(xnat)
4. Se genera una imagen adversarial xadv partiendo de la imagen natural anterior
(es decir xadv = xnat + r(xnat)). Luego se coloca dicha imagen adversarial como
entrada a la “red original”, por tanto dicha clase es k(xadv)
5. Se toma nuevamente la imagen natural pero esta vez se la coloca en la entrada
de la “red con ruido” denotando a la clase predicha por la red como k∗(xnat).
Notar que este proceso puede repetirse y que la clase k∗(xnat) dada por la red no
18 Generacion y deteccion de ejemplos adversariales
sea la misma, aprovechando esta caracterıstica, se repite el proceso M veces y se
calcula un parametro p asociado a la imagen natural:
p(xnat) =M∑i=1
k∗(xnat) == k(xnat)
M(3.2)
6. Se repite el paso anterior pero esta vez con la imagen adversarial xadv, es decir
que si ahora denotamos a la salida entregada por la “red con ruido” para la
imagen adversarial k∗(xadv) se obtiene que el parametro p asociado a la imagen
adversarial es:
p(xadv) =M∑i=1
k∗(xadv) == k(xadv)
M(3.3)
7. Al repetir los pasos 5 y 6 para una gran cantidad de imagenes se puede formar un
histograma distinguiendo entre las imagenes naturales y adversariales, esperando
obtener algo parecido a la siguiente imagen.
0.0 0.2 0.4 0.6 0.8 1.0p(x)
Núm
ero
de im
ágen
es
Umbr
alNaturalAdversarial
Figura 3.2: Histograma a modo de ejemplo donde se observa el nume-ro de imagenes en funcion del parametro p de las mismas, luego de haberrealizado los pasos 5 y 6 una gran cantidad de veces.
En esta instancia se puede establecer un valor crıtico o umbral para el cual
una imagen que presente un parametro menor al umbral sea considerada imagen
adversarial, mientras que si da mayor se la considera una imagen natural. Por
tanto, una vez definido un valor de umbral se obtiene la variable error, la cual
es el porcentaje de veces que la defensa fallara al detectar si una imagen dada es
natural o adversarial.
error =fp+ fn
Nimgs
(3.4)
donde fp y fn son la cantidad de falsos positivos y falsos negativos respecti-
vamente, y Nimgs es la cantidad de imagenes totales utilizadas para realizar el
19
histograma mostrado en la Figura 3.2.
Ademas existe un valor de umbral optimo (umbralopt), el cual minimice la varia-
ble error, definida como minError. Notar que dados dos histogramas (uno natural
y uno adversarial) pueden obtenerse facilmente los valores de (umbralopt y minE-
rror).
8. En este estudio se colocan dos magnitudes de ruido diferentes, el primer tipo
de ruido se encuentra en la ultima capa convolucional de la red, mientras que
el segundo tipo se encuentra en la ante ultima capa densa (no se coloca en la
ultima debido a que esta es la salida de la red). Estos dos tipos de ruido son
gaussianos, se encuentran en los argumentos de las funciones de activacion de
las capas correspondientes y poseen una desviacion estandar de magnitud ruidoC
para la capa convolucional y ruidoD para la capa densa. Notese que para cada
par de valores elegidos (ruidoC,ruidoD) se obtiene un umbralopt y un minError
por lo que se puede probar con una gran cantidad de valores (ruidoC,ruidoD) y
seleccionar el mejor de los umbralopt denominado umbraloptOpt y el mınimo de los
minError denominado minMinError. Ambos obtenidos con los ruidos ruidoCopt
y ruidoDopt.
Capıtulo 4
Resultados
En la primer parte de este capıtulo (Seccion 4.1) se realizan como primer paso,
pruebas del ataque y defensa propuestas previamente sobre dos bases de datos muy es-
tudiadas hoy en dıa, las cuales son MNIST y CIFAR10. Ambas son grandes colecciones
de imagenes ampliamente utilizadas para las tareas de entrenamiento, comprobacion y
validacion en DL.
Luego, en la segunda parte del capıtulo (Seccion 4.2) se repite la misma metodologıa
para la base de datos de imagenes de RD.
4.1. Ataque y defensa en imagenes de MNIST y
CIFAR-10
A continuacion, se comentan algunas de las caracterısticas principales de las de las
bases de datos a utilizar.
MNIST. La base de datos MNIST, cuyo significado es “Modified National Institute
of Standards and Technology”, es una coleccion de imagenes con una dimension de
28×28 de dıgitos manuscritos (del 0 al 9). Dicha base de datos contiene 60000 imagenes
para entrenamiento y 10000 para validacion. En la Figura 4.1a puede verse una muestra
de la misma.
CIFAR-10. La base de datos CIFAR-10, cuyo significado es “Canadian Institute
For Advanced Research”, es una coleccion de imagenes a color con una dimension de
32×32 correspondientes a 10 categorıas las cuales son: avion, auto, pajaro, gato, ciervo,
perro, rana, caballo, barco y camion. Existen 6000 imagenes por clase. En la Figura
4.1b puede verse una muestra de la misma.
Previo a la clasificacion de las imagenes, se define la precision, tambien llamada
“accuracy” en ingles. La misma, indica la probabilidad de que la red clasifique de ma-
nera correcta una imagen dada. Se la define como el numero de imagenes correctamente
clasificadas sobre el numero total de imagenes.
21
22 Resultados
Con el fin de obtener una red neuronal que clasifique correctamente las imagenes
deseadas para cada base de datos mencionada, se procede a definir el modelo a utilizar
para mas tarde poder entrenar a dicha red. En la Figura 4.2 se muestran las arqui-
tecturas de red utilizadas y luego, en la Figura 4.3 se introduce la precision de las
mismas.
Es necesario mencionar que modificando los parametros de la red y/o la arquitectura
de la misma, la precision del conjunto de datos de entrenamiento y validacion puede
ser mejorada. Debido a que el enfoque de este proyecto es la generacion y en caso de
que sea posible, la discriminacion entre los ejemplos adversariales y los naturales, se
decidio no dedicar gran cantidad de tiempo en la modificacion de las redes tratadas
para mejorar la precision de las mismas. Es decir, basta con que las redes neuronales
clasifiquen medianamente bien, esto es, que clasifiquen con una precision similar a las
opciones encontradas en la literatura.
Clase0
Clase1
Clase2
Clase3
Clase4
Clase5
Clase6
Clase7
Clase8
Clase9
(a) MNIST.
Claseavión
Claseauto
Clasepájaro
Clasegato
Claseciervo
Claseperro
Claserana
Clasecaballo
Clasebarco
Clasecamión
(b) CIFAR-10.
Figura 4.1: Muestra de las imagenes de la bases de datos MNIST y CIFAR-10, en donde serealiza una discriminacion segun la categorıa a la cual pertenecen.
4.1 Ataque y defensa en imagenes de MNIST y CIFAR-10 23
InputLayerinput:
output:
(None, 28, 28, 1)
(None, 28, 28, 1)
Conv2Dinput:
output:
(None, 28, 28, 1)
(None, 26, 26, 32)
Conv2Dinput:
output:
(None, 26, 26, 32)
(None, 24, 24, 32)
MaxPooling2Dinput:
output:
(None, 24, 24, 32)
(None, 8, 8, 32)
Conv2Dinput:
output:
(None, 8, 8, 32)
(None, 6, 6, 16)
Flatteninput:
output:
(None, 6, 6, 16)
(None, 576)
Denseinput:
output:
(None, 576)
(None, 576)
Denseinput:
output:
(None, 576)
(None, 10)
(a) MNIST.
InputLayerinput:
output:
(None, 32, 32, 3)
(None, 32, 32, 3)
Conv2Dinput:
output:
(None, 32, 32, 3)
(None, 32, 32, 32)
Conv2Dinput:
output:
(None, 32, 32, 32)
(None, 30, 30, 32)
MaxPooling2Dinput:
output:
(None, 30, 30, 32)
(None, 15, 15, 32)
Conv2Dinput:
output:
(None, 15, 15, 32)
(None, 15, 15, 64)
Conv2Dinput:
output:
(None, 15, 15, 64)
(None, 13, 13, 64)
MaxPooling2Dinput:
output:
(None, 13, 13, 64)
(None, 6, 6, 64)
Conv2Dinput:
output:
(None, 6, 6, 64)
(None, 6, 6, 16)
Flatteninput:
output:
(None, 6, 6, 16)
(None, 576)
Denseinput:
output:
(None, 576)
(None, 576)
Denseinput:
output:
(None, 576)
(None, 10)
(b) CIFAR10.
Figura 4.2: Modelos de redes neuronales artificiales utilizados para la clasificacion de lasimagenes de las bases de datos MNIST y CIFAR-10. En cada capa se especifica el tipo de lamisma, el tamano de entrada (input) y el tamano de salida (output). “None” hace referencia alnumero de imagenes a utilizar. Despues de cada capa se utiliza relu como funcion de activacion,excepto en la salida en donde se utiliza softmax para ası obtener las probabilidades de que unaimagen pertenezca a las diversas categorıas.
0 2 4 6 8 10 12 14Época
0.94
0.95
0.96
0.97
0.98
0.99
1.00
Prec
isión
MNI
ST
Precisión obtenida (val) = 0.993
EntrenamientoValidación
(a) Base de datos MNIST - Se obtuvo 0.993de precision sobre el conjunto de validacion.
0 10 20 30 40 50Época
0.4
0.5
0.6
0.7
0.8
Prec
isión
CIF
AR10
Precisión obtenida (val) = 0.795
EntrenamientoValidación
(b) Base de datos CIFAR10 - Se obtuvo 0.795de precision sobre el conjunto de validacion.
Figura 4.3: Precision obtenida del conjunto de datos de entrenamiento y validacion en funciondel numero de epocas para cada base de datos.
24 Resultados
Ademas de la precision, existe otro indicador denominado “matriz de confusion”
que nos brinda mas informacion sobre el comportamiento de la red neuronal, cada
columna de la matriz representa el numero de predicciones de cada clase, mientras que
cada fila representa a las instancias en la clase real. En el caso ideal, la misma deberıa
ser una matriz nula excepto en los elementos de la diagonal principal.
En los casos en que la base de datos no esta balanceada, es decir que una clase tiene
mayor cantidad de ejemplos que otra, el clasificador puede tener facilmente un sesgo
hacia la clase mayoritaria. Siguiendo con este ejemplo, puede darse el caso de que la
precision de la red sea alta, pero solo sea una consecuencia del sesgo del clasificador
hacia una categorıa mayoritaria, por lo que en este caso la matriz de confusion es de
gran utilidad para advertirnos de este problema de sesgo. En este caso, ambas bases
de datos, MNIST y CIFAR-10, se encuentran balanceadas. Esto puede verse en que la
cantidad de imagenes por fila es constante para cada matriz de confusion (Tabla 4.1).
(a) Base de datos MNIST (b) Base de datos CIFAR10
Tabla 4.1: Matriz de confusion calculada sobre el conjunto de validacion para cada base dedatos.
De las matrices de confusion se observa en ambos casos que para cada fila (clase
real) el mayor elemento con una diferencia notable, es el perteneciente a la diagonal,
indicador de que las redes clasifican correctamente.
Ataque (generacion de ejemplos adversariales)
Al tomar una imagen natural xnat perteneciente al conjunto de datos y categorizada
como k(xnat), se puede generar una imagen adversarial xadv a partir de la misma
utilizando el metodo explicado en la Seccion 3. De esta forma, la red categoriza a
esta imagen como k(xadv) 6= k(xnat). En la Figura 4.4 se muestran algunos ejemplos
adversariales junto con la imagen natural de la cual fueron obtenidos para ambas bases
de datos.
4.1 Ataque y defensa en imagenes de MNIST y CIFAR-10 25
Imagennatural
Perturbación(x50)
Imagenadversarial
"7" "3"
"2" "1"
"1" "7"
"0" "6"
"4" "9"
(a) Base de datos MNIST.
Imagennatural
Perturbación(x50)
Imagenadversarial
"barco" "auto"
"gato" "rana"
"barco" "rana"
"ciervo" "avión"
"rana" "pájaro"
(b) Base de datos CIFAR10.
Figura 4.4: Para cada base de datos se muestra: a la izquierda la imagen original, en el centrola perturbacion multiplicada por 50 para permitir una mejor observacion y a la derecha la imagenadversarial, es decir la suma de las dos anteriores. Ademas, en la parte superior de cada imagense muestra la categorıa arrojada por la red.
Se puede observar que algunos de los ejemplos adversariales del MNIST, podrıan
incluso ser confundidos por un ser humano, como es el caso del “0” clasificado como un
“6” en la Figura 4.4a. Sin embargo, esto no ocurre en lo absoluto para el CIFAR-10.
Estas observaciones, sugieren que la causa de estas diferencias entre las bases de datos,
sea que el MNIST es una base de datos mas simple, permitiendo a la red neuronal
aprender a realizar una mejor categorizacion. Esto implica que para “enganar” a dicha
red, se necesita alcanzar magnitudes de perturbacion que sean mas apreciables. En
algunos casos, la magnitud de la perturbacion puede incluso molestar a la clasificacion
realizada por un humano.
Por otro lado y para obtener mas informacion acerca de la generacion de los ejemplos
adversariales, se define el concepto de matriz de distribucion de ejemplos adversariales,
en la cual cada fila representa el numero de imagenes con su clase natural o real,
mientras que cada columna representa el numero de imagenes con su clase adversarial.
En la Tabla 4.2 se muestran dos matrices de distribucion de ejemplos, una para cada
base de datos. En ellas se puede observar que al generar ejemplos adversariales de un
grupo de imagenes pertenecientes a una misma clase, la distribucion de las clases de los
26 Resultados
ejemplos adversariales sera mayoritariamente a una o dos clases, o lo que es equivalente,
en la mayorıa de las filas se observa que uno o dos valores son considerablemente
mayores al resto. Un ejemplo de esto, es que al tomar una imagen natural del MNIST
correspondiente al dıgito “1” y generar su correspondiente imagen adversarial, es muy
probable que esta sea clasificada como un dıgito “4”. Algo sorprendente a observar
es que el “4” no es precisamente el dıgito mas similar al “1”, pero sin embargo el
hiperplano que separa dichas clases parece ser el que mas cerca esta. Es decir, no
necesariamente existe una correspondencia directa con la forma de los bordes, sino que
hay otras caracterısticas que la red aprende en las cuales pueden ser similares.
(a) Base de datos MNIST. (b) Base de datos CIFAR10.
Tabla 4.2: Para cada base de datos se muestra la matriz de distribucion de ejemplos adversaria-les, cada una esta hecha en base a los resultados arrojados por la red solo teniendo en cuenta lasimagenes clasificadas correctamente. El total de imagenes (clasificadas correctas + clasificadasincorrectas) para cada base de datos es de 1000.
Defensa (distincion entre ejemplo natural y adversarial)
Esta seccion tiene como objetivo implementar la defensa explicada en la Seccion 3.
Por tanto, se desea obtener las magnitudes de ruido optimas (ruidoCopt y ruidoDopt)
para ası poder utilizar un valor de umbral (umbraloptOpt) para distinguir entre una
imagen natural y adversarial con un error mınimo (minMinError).
Debido a que las magnitudes de ruido optimas son desconocidas, se realiza un primer
intento de defensa con ruidoC = 0.02 y ruidoD = 0.2, los cuales fueron definidos de
forma aleatoria. Los histogramas obtenidos se muestran en la Figura 4.5. En los mismos,
puede verse un comportamiento similar con el esperado, mostrado en la Figura 3.2.
El proximo paso, consiste en determinar las magnitudes optimas de los ruidos
(ruidoCopt y ruidoDopt). Para esto, se prueban diversos pares de valores ruidoC y
ruidoD de forma sistematica y en cada uno de ellos se toma nota del minError ob-
tenido. En la Figura 4.6 se muestran los valores de minError donde su magnitud esta
representada en color.
4.1 Ataque y defensa en imagenes de MNIST y CIFAR-10 27
0.0 0.2 0.4 0.6 0.8 1.0p(x)
Núm
ero
de im
ágen
es MNISTminError = 0.047
ruidoC = 0.02 ; ruidoD = 0.2
NaturalAdversarial
(a) Base de datos MNIST.
0.0 0.2 0.4 0.6 0.8 1.0p(x)
Núm
ero
de im
ágen
es CIFAR10minError = 0.029
ruidoC = 0.02 ; ruidoD = 0.2
NaturalAdversarial
(b) Base de datos CIFAR10.
Figura 4.5: Histogramas obtenidos con el fin de realizar el primer intento de defensa, es decirque se eligieron las magnitudes de ruido (ruidoC, ruidoD) de forma aleatoria, en este caso sedecidio elegir: ruidoC = 0.02 ; ruidoD = 0.2.
0.0 0.4 0.8 1.2 1.6 2.0 2.4ruidoD
0.0
0.4
0.8
1.2
1.6
2.0
2.4
ruid
oC
1e 1 minMinError = 0.003
10 3
10 2
10 1
0.0 0.4 0.8 1.2 1.6 2.0 2.4ruidoD
0.0
0.4
0.8
1.2
1.6
2.0
2.4ru
idoC
1e 1 minMinError = 0.015
10 3
10 2
10 1
0.0 0.4 0.8 1.2 1.6 2.0 2.4ruidoD 1e 1
0.0
0.4
0.8
1.2
1.6
2.0
2.4
ruid
oC
1e 2 minMinError = 0.044
10 3
10 2
10 1
0.0 0.4 0.8 1.2 1.6 2.0 2.4ruidoD 1e 1
0.0
0.4
0.8
1.2
1.6
2.0
2.4
ruid
oC
1e 2 minMinError = 0.008
10 3
10 2
10 1
0.0 0.4 0.8 1.2 1.6 2.0 2.4ruidoD 1e 2
0.0
0.4
0.8
1.2
1.6
2.0
2.4
ruid
oC
1e 3 minMinError = 0.094
10 3
10 2
10 1
0.0 0.4 0.8 1.2 1.6 2.0 2.4ruidoD 1e 2
0.0
0.4
0.8
1.2
1.6
2.0
2.4
ruid
oC
1e 3 minMinError = 0.008
10 3
10 2
10 1
Figura 4.6: En cada grafico se muestra el minError en funcion de la magnitud de los ruidosconvolucional y denso (ruidoC,ruidoD) introducidos en la red neuronal. Ademas para cada graficose muestra el mınimo de los minError, es decir minMinError. Esto se realiza para las bases dedatos MNIST (columna izquierda) y CIFAR-10 (columna derecha), por otro lado en cada filase muestran los resultados para diferentes rangos de ruido. La magnitud minError carece desentido cuando ruidoC=ruidoD=0, por lo que la magnitud mostrada en dicho punto es falsa y lecorresponde al minMinError de ese grafico.
28 Resultados
De los graficos mostrados se obtiene el valor minMinError con su correspondiente
par de valores (ruidoCopt, ruidoDopt) para cada base de datos mostrados en la Tabla 4.3.
Base de datos minMinError ruidoCopt ruidoDopt
MNIST 0.003 0.0 1.2
CIFAR-10 0.008 0.4× 10−2 0.2× 10−1
Tabla 4.3: Mınimo valor de minError obtenido con su correspon-diente par de valores ruidoC y ruidoD para las bases de datos MNISTy CIFAR-10.
Podemos concluir que la defensa distingue si una imagen dada es natural o ad-
versarial con error del 0.3 % y 0.8 % para las bases de datos MNIST y CIFAR10 res-
pectivamente. Para realizar una validacion de la defensa, puede verse que al colocar
las magnitudes de ruidos optimas ruidoCopt y ruidoDopt se obtienen los histogramas
mostrados en la Figura 4.7. En los mismos, se observa para ambas bases de datos, una
clara diferencia en la distribucion del parametro p(x) entre las imagenes naturales y
adversariales.
0.0 0.2 0.4 0.6 0.8 1.0p(x)
0
50
100
150
200
250
300
Núm
ero
de im
ágen
es MNISTminError = 0.003
ruidoC = 0 ; ruidoD = 1.2
NaturalAdversarial
(a) Base de datos MNIST.
0.0 0.2 0.4 0.6 0.8 1.0p(x)
0
50
100
150
200
250
Núm
ero
de im
ágen
es CIFAR10minError = 0.008
ruidoC = 0.0002 ; ruidoD = 0.018
NaturalAdversarial
(b) Base de datos CIFAR10.
Figura 4.7: Histogramas obtenidos luego de elegir las magnitudes de ruido optimas las cualesminimizan la variable minError.
4.2. Ataque y defensa en imagenes de retinopatıa
diabetica
Como ya se menciono anteriormente, una vez obtenida la metodologıa que permite
discriminar entre un ejemplo natural y uno adversarial para las bases de datos MNIST
y CIFAR-10, se procede a repetir los mismos pasos para la base de datos de imagenes
retinopatıa diabetica esperando obtener resultados similares.
En la Figura 4.8, puede verse una pequena muestra de la base de datos a utilizar, la
misma fue descargada de Kaggle.com [8]. A diferencia de las dos bases de datos tratadas
anteriormente, esta no esta balanceada, lo que significa que las clases no contienen la
4.2 Ataque y defensa en imagenes de retinopatıa diabetica 29
misma cantidad de imagenes. En la Figura 4.9, se observa el considerable desbalance en
la distribucion de las clases, debido a esto se procede a trabajar solo con 708 ejemplos
de cada clase y luego en la etapa de entrenamiento realizar data augmentation [16] con
el fin de compensar el reducido numero de imagenes para entrenar la red neuronal.
Clase 0Sin RD
Clase 1RD leve
Clase 2RD moderada
Clase 3RD severa
Clase 4RD proliferativa
Figura 4.8: Muestra de las imagenes de la basede datos de imagenes de RD, en donde se realizauna discriminacion segun la categorıa a la cualpertenecen.
0 1 2 3 4Clase
Núm
ero
de im
ágen
es
25810
24435292
873 708
Figura 4.9: Histograma en donde se muestrala distribucion de las clases de la base de datosde RD.
Red utilizada y desempeno obtenido
En la Figura 4.10 se muestra el modelo utilizado y luego en la Figura 4.11 se muestra
el valor de la precision obtenida en funcion del numero de epocas.
Como puede verse en la Figura 4.11 se obtiene un valor para el conjunto de datos
de validacion que parece ser relativamente bajo de precision aun teniendo en cuenta
que existen 5 clases. Ademas, en la matriz de confusion de la Tabla 4.4 se observa que
los elementos de la diagonal principal son los mayores en su fila, salvo la clase “0”.
Por otro lado, en la competencia propuesta por Kaggle [8] el puntaje se mide uti-
lizando el indicador “kappa quadratic weighting”. Nuestro valor de kappa calculado
utilizando la matriz de confusion de la Tabla 4.4 a traves de [36] es de κ = 0.62. Al
comparar este valor con los valores de “kappa quadratic weighting” de la tabla de cla-
sificaciones de la competencia de Kaggle [8] se obtiene que en la situacion hipotetica
de haber competido y logrado dicho puntaje, se hubiese obtenido el puesto 50 de 662.
Debido a que el objetivo de este trabajo es hacer enfasis en la deteccion de una imagen
adversarial, se decide continuar con el estudio de la defensa explicada en la Seccion 3.
30 Resultados
InputLayerinput:
output:
(None, 200, 300, 3)
(None, 200, 300, 3)
Conv2Dinput:
output:
(None, 200, 300, 3)
(None, 200, 300, 32)
MaxPooling2Dinput:
output:
(None, 200, 300, 32)
(None, 100, 150, 32)
Conv2Dinput:
output:
(None, 100, 150, 32)
(None, 98, 148, 64)
MaxPooling2Dinput:
output:
(None, 98, 148, 64)
(None, 49, 74, 64)
Conv2Dinput:
output:
(None, 49, 74, 64)
(None, 47, 72, 128)
MaxPooling2Dinput:
output:
(None, 47, 72, 128)
(None, 23, 36, 128)
Conv2Dinput:
output:
(None, 23, 36, 128)
(None, 21, 34, 256)
MaxPooling2Dinput:
output:
(None, 21, 34, 256)
(None, 10, 17, 256)
Conv2Dinput:
output:
(None, 10, 17, 256)
(None, 8, 15, 512)
MaxPooling2Dinput:
output:
(None, 8, 15, 512)
(None, 4, 7, 512)
Conv2Dinput:
output:
(None, 4, 7, 512)
(None, 2, 5, 512)
MaxPooling2Dinput:
output:
(None, 2, 5, 512)
(None, 1, 2, 512)
Flatteninput:
output:
(None, 1, 2, 512)
(None, 1024)
Denseinput:
output:
(None, 1024)
(None, 1024)
Denseinput:
output:
(None, 1024)
(None, 1024)
Denseinput:
output:
(None, 1024)
(None, 5)
Figura 4.10: Modelo de red neuronal artificialutilizada para la clasificacion de las imagenes de labase de datos de imagenes de RD. En cada capa seespecifica el tipo de la misma, el tamano de entra-da (input) y el tamano de salida (output). “None”hace referencia al numero de imagenes a utilizar.Despues de cada capa convolucional o densa se uti-liza relu como funcion de activacion excepto a lasalida de la red, en donde se utiliza la funcion soft-max. Ademas, entre cada capa convolucional y unMaxPool existe un BatchNormalization.
0 50 100 150 200 250 300Época
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
Prec
isión
RD
Precisión obtenida (val) = 0.452
EntrenamientoValidación
Figura 4.11: Precision obtenida del conjunto dedatos de entrenamiento y validacion en funcion delnumero de epocas. Se obtuvo 0.475 de precisionsobre el conjunto de validacion.
Tabla 4.4: Matriz de confusion calculada sobreel conjunto de validacion.
4.2 Ataque y defensa en imagenes de retinopatıa diabetica 31
Ataque (generacion de ejemplos adversariales)
En la Figura 4.12 se muestran algunos ejemplos adversariales junto con la imagen
natural de RD de la cual fueron obtenidos.
Por otro lado, en la Tabla 4.5 se muestra la matriz de distribucion de ejemplos
adversariales. De dicha matriz, se puede realizar una conclusion importante, y es que
al tomar una imagen de una cierta clase k(xnat) y generar su imagen adversarial con
clase k(xadv) se ve que el valor mas probable de k(xadv) es k(xnat) − 1 o k(xnat) + 1.
Esto puede verse facilmente en la matriz de distribucion mencionada, debido a que los
mayores valores de la misma le corresponden a los que se encuentran proximos a la
diagonal principal. La consecuencia practica de esto es que, si la defensa no detecta un
ejemplo adversarial generado por el ataque propuesto en este estudio, el grado de la
enfermedad sera confundido con un grado de magnitud similar.
Imagennatural
Perturbación(x1000)
Imagenadversarial
"Sin RD" "RD proliferativa"
"RD leve" "RD moderada"
"RD moderada" "RD proliferativa"
"RD severa" "RD moderada"
"RD proliferativa" "RD leve"
Figura 4.12: Para la base de datos de image-nes de RD se muestra: a la izquierda la imagenoriginal, en el centro la perturbacion multiplica-da por 1000 para permitir una mejor observaciony a la derecha la imagen adversarial, es decir lasuma de las dos anteriores. Ademas, en la partesuperior de cada imagen se muestra la categorıaarrojada por la red.
Tabla 4.5: Para la base de datos de imagenes deRD se muestra la matriz de distribucion de ejem-plos adversariales, la cual esta hecha en base a losresultados arrojados por la red solo teniendo encuenta las imagenes clasificadas correctamente. Eltotal de imagenes (clasificadas correctas + clasifi-cadas incorrectas) para cada base de datos es de1000.
Defensa (distincion entre ejemplo natural y adversarial)
Tal como en el caso de las bases de datos MNIST y CIFAR-10, se desea obtener
las magnitudes de ruido optimas (ruidoCopt y ruidoDopt) y ası poder utilizar un valor
de umbral (umbraloptOpt) para distinguir entre una imagen natural y adversarial con el
mınimo error (minMinError).
32 Resultados
Nuevamente, se realiza un primer intento de defensa con ruidoC = 0.02 y rui-
doD = 0.2, elegidos de forma aleatoria. Los histogramas obtenidos se muestran en la
Figura 4.13, en donde se observa un comportamiento similar con el esperado, tal como
se mostro en la Figura 3.2.
0.0 0.2 0.4 0.6 0.8 1.0p(x)
Núm
ero
de im
ágen
es RDminError = 0.062
ruidoC = 0.02 ; ruidoD = 0.2
NaturalAdversarial
Figura 4.13: Histograma obtenido con el fin de realizar el primerintento de defensa, es decir que se eligieron las magnitudes de ruido(ruidoC y ruidoD) de forma aleatoria, en este caso se decidio elegir:ruidoC = 0.02 ; ruidoD = 0.2.
Nuevamente, para establecer las magnitudes optimas ruidoCopt y ruidoDopt se prue-
ban diversos pares de valores ruidoC y ruidoD de forma sistematica y para cada uno
de ellos se toma nota del minError obtenido, en la Figura 4.14 se muestran los valores
de minError en donde su magnitud esta representada en color.
0.0 0.4 0.8 1.2 1.6 2.0 2.4ruidoD
0.0
0.4
0.8
1.2
1.6
2.0
2.4
ruid
oC
1e 1 minMinError = 0.038
10 3
10 2
10 1
0.0 0.4 0.8 1.2 1.6 2.0 2.4ruidoD 1e 1
0.0
0.4
0.8
1.2
1.6
2.0
2.4
ruid
oC
1e 2 minMinError = 0.05
10 3
10 2
10 1
0.0 0.4 0.8 1.2 1.6 2.0 2.4ruidoD 1e 2
0.0
0.4
0.8
1.2
1.6
2.0
2.4
ruid
oC
1e 3 minMinError = 0.111
10 3
10 2
10 1
Figura 4.14: En cada grafico se muestra el minError en funcion de la magnitud de los ruidosconvolucional y denso (ruidoC,ruidoD) introducidos en la red neuronal, ademas para cada graficose muestra el mınimo de los minError, es decir minMinError. En cada fila se muestran losresultados para diferentes rangos de ruido.
4.3 Robustez 33
De los graficos mostrados se obtiene el valor minMinError con su correspondiente
par de valores (ruidoCopt, ruidoDopt) mostrados en la Tabla 4.6.
Base de datos minMinError ruidoCopt ruidoDopt
RD 0.038 0.0 0.4
Tabla 4.6: Mınimo valor de minError obtenido con su co-rrespondiente par de valores ruidoC y ruidoD para la base dedatos RD.
Podemos concluir que la defensa distingue si una imagen dada es natural o adversa-
rial con un error del 3.8 %. Ademas puede verse que al colocar las magnitudes de ruidos
optimas ruidoCopt y ruidoDopt se obtiene el histograma mostrado en la Figura 4.15. En
el mismo, se observa una clara diferencia en la distribucion del parametro p(x) entre
las imagenes naturales y adversariales.
0.0 0.2 0.4 0.6 0.8 1.0p(x)
0
20
40
60
80
100
120
Núm
ero
de im
ágen
es RDminError = 0.038
ruidoC = 0 ; ruidoD = 0.4
NaturalAdversarial
Figura 4.15: Histograma obtenido luego de elegir las magnitudes de ruidooptimas las cuales minimizan la variable minError.
4.3. Robustez
Hasta el momento, se obtuvo el error de clasificacion que se obtendrıa con la defensa
propuesta sobre las bases de datos MNIST, CIFAR-10 y RD. Con estos datos, se podrıa
concluir sobre cual de ellas se obtiene un mejor rendimiento en la defensa, sin embargo,
al realizar dicha comparacion no se tiene en cuenta sobre la similitud entre los ejemplos
adversariales y sus correspondientes ejemplos naturales de los cuales proceden. Ya que,
cuanto mas similares sean los ejemplos adversariales a los ejemplos naturales mejor es
el ataque, y es de esperar que sea mas difıcil detectar uno de otro, por lo que la defensa
en principio tendrıa mas error (un mayor minError).
34 Resultados
Dicho esto, se calcula el indicador ρadv definido en 3.1 para cada base de datos
mostrando los resultados en la Tabla 4.7 junto con algunos resultados obtenidos de
Moosavi et al. [12] con el fin de mostrar que las magnitudes ρadv obtenidas en este
estudio son similares a las del paper mencionado.
Base de datos Clasificador Error validacion ρadv minMinError
MNIST
LeNet* 1 % 2.0× 10−1 -
FC500* 1.7 % 1.1× 10−1 -
Propio 0.7 % 1.9× 10−1 0.003
CIFAR-10
NIN* 11.5 % 2.3× 10−2 -
LeNet* 22.6 % 3.0× 10−2 -
Propio 20.0 % 1.0× 10−2 0.008
RD Propio 54.8 % 3.3× 10−4 0.038
Tabla 4.7: En la tabla se muestra el error en categorizacion sobre el conjunto de validacion,el indicador ρadv con el fin de cuantificar la robustez de la cada red y minMinError solo para elcaso de las redes explicadas a lo largo de este estudio.*: los datos de las filas correspondientes fueron extraıdos de Moosavi et al. [12]
Capıtulo 5
Conclusiones
Se resolvio el problema de categorizacion de imagenes sobre tres bases de datos
diferentes, las cuales son MNIST, CIFAR-10 y RD. Las tres redes neuronales utiliza-
das (una para cada base de datos) son de tipo feed forward con las primeras capas
convolucionales y luego capas densas.
Con una simple observacion puede notarse que existe una diferencia en la compleji-
dad entre las bases de datos mencionadas. MNIST es la base de datos mas simple de las
tres, le sigue CIFAR-10 y por ultimo, las imagenes de RD requieren de un profesional
para su correcta clasificacion y presentan una complejidad alta, a tal punto que existen
diferentes competencias avocadas a encontrar soluciones a esta problematica. Esta di-
ferencia de dificultades se ve reflejada en la precision obtenida por las redes neuronales
para clasificar dichas imagenes. Las precisiones obtenidas fueron: 0.993 (MNIST), 0.795
(CIFAR-10) y 0.452 (RD).
Generacion de ejemplos adversariales. Sobre las tres bases de datos recien men-
cionadas se generaron satisfactoriamente ejemplos adversariales basados en el metodo
DeepFool.
La similitud entre las imagenes adversariales y naturales de un conjunto de datos
es representada por un parametro denominado ρadv. Cuanto menor sea el mismo, mas
similitud existe entre las imagenes. Al comparar el parametro ρadv obtenido en este
estudio con los que se obtienen en la bibliografıa, se observaron resultados similares al
mejor de los ataques (DeepFool), es decir, el que menor ρadv presento.
Deteccion de ejemplos adversariales. En este estudio se propuso y se desarrollo
un metodo con el fin de distinguir entre una imagen natural y una adversarial, es
decir, una defensa. Al realizar la implementacion de la misma para la base de datos de
imagenes de retinopatıa diabetica se encuentra que el error obtenido al realizar dicha
tarea es de 3.8 %, el cual es mayor que el obtenido para las bases de datos MNIST
(0.3 %) y CIFAR-10 (0.8 %). En otras palabras, la defensa propuesta en este estudio
35
36 Conclusiones
implementada sobre imagenes de RD, discrimina imagenes naturales de adversariales
de forma satisfactoria el 96.2 % de los casos.
Dependencia del error de la defensa con ρadv. El parametro ρadv es menor para
la base de datos de RD comparado con las bases de datos MNIST y CIFAR-10. Esto
significa que la similitud entre una imagen de RD natural y su correspondiente imagen
adversarial es mayor que para el caso MNIST y CIFAR-10, por lo que es de esperar que
la discriminacion que sea mas difıcil de realizar, sea entre una imagen natural de RD
y su imagen adversarial. En efecto, de los datos generados en este estudio, se observa
que cuanto menor es la magnitud ρadv, mayor sera la probabilidad de error al detectar
un ejemplo natural de uno adversarial. Dicho de otra forma, cuanto mas similares sean
las imagenes adversariales de las naturales, mas difıcil sera distinguir una de otra.
Comportamiento de la defensa al modificar el ruido. Para realizar la imple-
mentacion de la defensa propuesta y desarrollada en este estudio, es necesario introducir
ruido en la red neuronal. De hecho, se necesita de un ruido en una capa tipo convo-
lucional y/o un ruido en una capa tipo densa. Al variar ambas magnitudes de ruido
de forma sistematica, para tres redes neuronales distintas y tomar nota del error de
deteccion de la defensa para cada par de ruidos elegidos, no se observa un patron de
comportamiento. Debido a esto, se necesita realizar las mismas pruebas para cada red
neuronal en la que se desee implementar la defensa propuesta.
Trabajo a futuro Con el objetivo de tener mas informacion sobre la defensa expli-
cada en este estudio, se propone realizar un contraataque a la misma, es decir, que el
atacante tenga informacion de la defensa implementada e intente enganarla.
Apendice A
Proyecto y diseno
Para la realizacion de este proyecto, el alumno dedico mas de doscientas horas a
“Practicas Profesionales Supervisadas” en el Departamento de Fısica Medica del Centro
Atomico Bariloche, bajo la supervision del Dr. German Mato y el Dr. Ariel Hernan
Curiale. Se adjunta la planilla de horarios correspondiente.
Por otro lado, el alumno dedico mas de doscientas horas a actividades de “Proyecto
y Diseno”, en las cuales se realizo el desarrollo del software con el que se llevo a cabo el
entrenamiento, el ataque y la defensa de las redes neuronales detalladas en este trabajo.
Parte de este software se muestra en el Apendice B.
37
Apendice B
Ataque y defensa en imagenes de
retinopatıa diabetica
En el Algoritmo B.1 se muestra la implementacion del ataque y defensa sobre la
red neuronal que clasifica imagenes de retinopatıa diabetica. Previo a la ejecucion de
dicho codigo, la red neuronal ya debe estar entrenada. Ademas, se hace referencia a la
funcion min error, la cual se muestra en el Algoritmo B.2.
Algoritmo B.1: Ataque y defensa para las imagenes de retinopatıa diabetica.
1 from f u t u r e import p r i n t f un c t i o n
2 from keras . models import Sequent i a l
3 from keras . l a y e r s import Dense , Act ivat ion , F latten
4 from keras . l a y e r s import Convolution2D , MaxPooling2D
5 from keras . u t i l s import np u t i l s
6 from keras import backend as K
7 from keras . models import load model
8 from keras . l a y e r s . normal i za t ion import BatchNormalization
9 from keras . op t im i z e r s import Adam
10 import numpy as np
11 import sys , os
12 import pandas as pd
13 from PIL import Image
14 import t en so r f l ow as t f
15 s e s s = t f . I n t e r a c t i v e S e s s i o n ( )
16 from matp lo t l ib . t i c k e r import MaxNLocator
17 from min error import min error
18
19 seed = 100
20 thisFi leName = os . path . basename ( sys . argv [ 0 ] ) . s p l i t ( ” . ” ) [ 0 ]
21
22 Nimages by c lass = 708
23
24 ba t ch s i z e = 32
25 nb c l a s s e s = 5
26 nb epoch = 300
27 l r = 1e−328 data augmentation = True
29
30 porcTrain = .8
31
32 da t a f o l d e r=os . path . abspath ( os . cu rd i r )+’ /data/ t r a i n sma l l 2 0 0 300 ’
33 l a b e l s d i r =os . path . abspath ( os . cu rd i r )+’ /data/ t r a i nLabe l s . csv ’
34
35 pa t i en t s = pd . r ead csv ( l a b e l s d i r )
36
37 pa t i e n t s 0 = pa t i en t s [ pa t i en t s [ ’ l e v e l ’ ]==0][ ’ image ’ ] . va lues
38 pa t i e n t s 1 = pa t i en t s [ pa t i en t s [ ’ l e v e l ’ ]==1][ ’ image ’ ] . va lues
39 pa t i e n t s 2 = pa t i en t s [ pa t i en t s [ ’ l e v e l ’ ]==2][ ’ image ’ ] . va lues
40 pa t i e n t s 3 = pa t i en t s [ pa t i en t s [ ’ l e v e l ’ ]==3][ ’ image ’ ] . va lues
41 pa t i e n t s 4 = pa t i en t s [ pa t i en t s [ ’ l e v e l ’ ]==4][ ’ image ’ ] . va lues
39
40 Ataque y defensa en imagenes de retinopatıa diabetica
42
43 seed +=1
44 np . random . seed ( seed )
45 np . random . s h u f f l e ( p a t i e n t s 0 )
46
47 seed +=1
48 np . random . seed ( seed )
49 np . random . s h u f f l e ( p a t i e n t s 1 )
50
51 seed +=1
52 np . random . seed ( seed )
53 np . random . s h u f f l e ( p a t i e n t s 2 )
54
55 seed +=1
56 np . random . seed ( seed )
57 np . random . s h u f f l e ( p a t i e n t s 3 )
58
59 seed +=1
60 np . random . seed ( seed )
61 np . random . s h u f f l e ( p a t i e n t s 4 )
62
63 pa t i e n t s 0 = pa t i e n t s 0 [ : Nimages by c lass ]
64 pa t i e n t s 1 = pa t i e n t s 1 [ : Nimages by c lass ]
65 pa t i e n t s 2 = pa t i e n t s 2 [ : Nimages by c lass ]
66 pa t i e n t s 3 = pa t i e n t s 3 [ : Nimages by c lass ]
67 pa t i e n t s 4 = pa t i e n t s 4 [ : Nimages by c lass ]
68
69 l a b e l 0 = np . z e ro s ( pa t i e n t s 0 . s i z e , dtype=np . u int8 )
70 l a b e l 1 = np . ones ( pa t i e n t s 1 . s i z e , dtype=np . u int8 )
71 l a b e l 2 = 2 ∗ np . ones ( pa t i e n t s 2 . s i z e , dtype=np . u int8 )
72 l a b e l 3 = 3 ∗ np . ones ( pa t i e n t s 3 . s i z e , dtype=np . u int8 )
73 l a b e l 4 = 4 ∗ np . ones ( pa t i e n t s 4 . s i z e , dtype=np . u int8 )
74
75 nt ra in = round( p a t i e n t s 0 . s i z e ∗ porcTrain )
76
77 names tra in = np . hstack ( [ p a t i e n t s 0 [ : n t ra in ] , p a t i e n t s 1 [ : n t ra in ] ,
78 pa t i e n t s 2 [ : n t ra in ] , p a t i e n t s 3 [ : n t ra in ] , p a t i e n t s 4 [ : n t ra in ] ] )
79
80 names test = np . hstack ( [ p a t i e n t s 0 [ n t ra in : ] , p a t i e n t s 1 [ n t ra in : ] ,
81 pa t i e n t s 2 [ n t ra in : ] , p a t i e n t s 3 [ n t ra in : ] , p a t i e n t s 4 [ n t ra in : ] ] )
82
83 l a b e l t r a i n = np . hstack ( [ l a b e l 0 [ : n t ra in ] , l a b e l 1 [ : n t ra in ] ,
84 l a b e l 2 [ : n t ra in ] , l a b e l 3 [ : n t ra in ] , l a b e l 4 [ : n t ra in ] ] )
85
86 l a b e l t e s t = np . hstack ( [ l a b e l 0 [ n t ra in : ] , l a b e l 1 [ n t ra in : ] ,
87 l a b e l 2 [ n t ra in : ] , l a b e l 3 [ n t ra in : ] , l a b e l 4 [ n t ra in : ] ] )
88
89 i d t r a i n = np . arange ( names tra in . s i z e )
90 i d t e s t = np . arange ( names test . s i z e )
91
92 seed +=1
93 np . random . seed ( seed )
94 np . random . s h u f f l e ( i d t r a i n )
95
96 seed +=1
97 np . random . seed ( seed )
98 np . random . s h u f f l e ( i d t e s t )
99
100 names tra in = names tra in [ i d t r a i n ]
101 l a b e l t r a i n = l a b e l t r a i n [ i d t r a i n ]
102
103 names test = names test [ i d t e s t ]
104 l a b e l t e s t = l a b e l t e s t [ i d t e s t ]
105
106 X test = [ ]
107 for i in range ( names test . s i z e ) :
108 fname = os . path . j o i n ( da ta f o l d e r , names test [ i ]+ ’ . jpeg−smal l ’ )
109 I = np . array ( Image .open( fname ) )
110 I = I / 255
111 X test . append ( I )
112
113 X test = np . array ( X tes t ) . astype ( f loat )
114
115 img channels = I . shape [−1]
116 img rows , img co l s = I . shape [ : 2 ]
117
118 i f K. image dim order ing ( ) == ’ t f ’ :
119 input shape = ( img rows , img co l s , img channels )
120 else :
121 a s s e r t False , ”Must use Tensorf low backend”
41
122
123 Y tra in = np u t i l s . t o c a t e g o r i c a l ( l a b e l t r a i n , nb c l a s s e s )
124 Y test = np u t i l s . t o c a t e g o r i c a l ( l a b e l t e s t , n b c l a s s e s )
125
126 i f os . path . i s f i l e ( os . path . abspath ( os . cu rd i r )+”/genData/”+thisFi leName+”−model . h5” ) and os .
path . i s f i l e ( os . path . abspath ( os . cu rd i r )+”/genData/”+thisFi leName+”−h i s t o r y . p i c k l e ” ) :
127 model=load model ( os . path . abspath ( os . cu rd i r )+”/genData/”+thisFi leName+”−model . h5” ,
compile=False )
128 f i l ename = open( os . path . abspath ( os . cu rd i r )+”/genData/”+thisFi leName+”−h i s t o r y . p i c k l e ” ,
” rb” )
129 else :
130 a s s e r t False , ”Must generate model f i r s t ”
131
132 from DenseNoise import DenseNoise
133 from Convolut iona lNoise import Conv2DNoise
134
135 dxPlot , dyPlot = 0 .2 , 0 .02
136 yPlot , xPlot = np . mgrid [ s l i c e (−0.01 , 0 . 26 , dyPlot ) ,
137 s l i c e (−0.1 , 2 .6 , dxPlot ) ]
138 zPlot=np . z e ro s ( ( np . s i z e ( xPlot , 0 ) , np . s i z e ( xPlot , 1 ) ) )
139 my xTicks = xPlot [ 0 , : ]
140 my xTicks = my xTicks [0 : −1 ] + dxPlot /2
141 my yTicks = yPlot [ : , 0 ]
142 my yTicks = my yTicks [0 : −1 ] + dyPlot /2
143 tota lDots = (np . s i z e ( xPlot , 0 )−1) ∗ (np . s i z e ( xPlot , 1 )−1)
144 iDots = 0
145 ceroS imult = 0
146 minMinError = 2
147
148 for i xP l o t in range (0 , np . s i z e ( xPlot , 0 )−1) :
149 for i yP l o t in range (0 , np . s i z e ( xPlot , 1 )−1) :
150 iDots = iDots + 1
151 sigmanoiseP=0.1
152 sigmanoiseD = xPlot [ i xP lo t , i yP l o t ] + dxPlot /2
153 sigmanoiseC = yPlot [ i xP lo t , i yP l o t ] + dyPlot /2
154
155 i f sigmanoiseD==0 and sigmanoiseC==0:
156 ceroS imult = 1
157 ceroS imult xIndex = i xP l o t
158 ceroS imult yIndex = i yP l o t
159 continue
160
161 model1 = Sequent i a l ( )
162
163 model1 . add ( Convolution2D (32 , (3 , 3) , padding=’ same ’ ,
164 input shape=input shape ) )
165 model1 . add ( Act ivat ion ( ’ r e l u ’ ) )
166 model1 . add ( BatchNormalization ( ) )
167 model1 . add (MaxPooling2D ( p o o l s i z e =(2 , 2) ) )
168
169 model1 . add ( Convolution2D (64 , (3 , 3) ) )
170 model1 . add ( Act ivat ion ( ’ r e l u ’ ) )
171 model1 . add ( BatchNormalization ( ) )
172 model1 . add (MaxPooling2D ( p o o l s i z e =(2 , 2) ) )
173
174 model1 . add ( Convolution2D (128 , (3 , 3) ) )
175 model1 . add ( Act ivat ion ( ’ r e l u ’ ) )
176 model1 . add ( BatchNormalization ( ) )
177 model1 . add (MaxPooling2D ( p o o l s i z e =(2 , 2) ) )
178
179 model1 . add ( Convolution2D (256 , (3 , 3) ) )
180 model1 . add ( Act ivat ion ( ’ r e l u ’ ) )
181 model1 . add ( BatchNormalization ( ) )
182 model1 . add (MaxPooling2D ( p o o l s i z e =(2 , 2) ) )
183
184 model1 . add ( Convolution2D (512 , (3 , 3) ) )
185 model1 . add ( Act ivat ion ( ’ r e l u ’ ) )
186 model1 . add ( BatchNormalization ( ) )
187 model1 . add (MaxPooling2D ( p o o l s i z e =(2 , 2) ) )
188
189 model1 . add (Conv2DNoise (512 , (3 , 3 ) , s igmanoise=sigmanoiseC ) )
190 model1 . add ( Act ivat ion ( ’ r e l u ’ ) )
191 model1 . add ( BatchNormalization ( ) )
192 model1 . add (MaxPooling2D ( p o o l s i z e =(2 , 2) ) )
193
194 model1 . add ( Flatten ( ) )
195 model1 . add (Dense (1024) )
196 model1 . add ( Act ivat ion ( ’ r e l u ’ ) )
197
198 model1 . add ( DenseNoise (1024 , s igmanoise=sigmanoiseD ) )
42 Ataque y defensa en imagenes de retinopatıa diabetica
199 model1 . add ( Act ivat ion ( ’ r e l u ’ ) )
200
201 model1 . add (Dense ( nb c l a s s e s ) )
202 model1 . add ( Act ivat ion ( ’ softmax ’ ) )
203
204 opt = Adam( l r=l r , decay = 2 ∗ l r / nb epoch )
205 model1 . compile ( l o s s=’ c a t e g o r i c a l c r o s s e n t r o py ’ ,
206 opt imize r=opt ,
207 metr i c s =[ ’ accuracy ’ ] )
208
209 weights = model . g e t we ight s ( )
210 model1 . s e t we i gh t s ( weights )
211
212 from t en so r f l ow . python . ops . p a r a l l e l f o r import j acob ian as t f j a c o b i a n
213 from t en so r f l ow . python . ops . p a r a l l e l f o r import batch jacob ian as t f b a t ch j a c ob i an
214
215 jacob ian = t f j a c o b i a n (model . l a y e r s [ −1 ] . input , model . l a y e r s [ 0 ] . input , u s e p f o r=
False )
216 batch jacob ian = t f b a t ch j a c ob i an (model . l a y e r s [ −1 ] . input , model . l a y e r s [ 0 ] . input ,
u s e p f o r=False )
217
218 c l a s e =[”No DR” , ”Mild DR” , ”Moderate DR” , ”Severe DR” , ” Pro l i f e r a t i v e DR ” ]
219
220 i s u c c=0
221 nidx=300
222 eta =0.01
223 maxiter=100
224 n i t e r =300
225 n i dx r e a l=0
226
227 igood 10=np . z e ro s ( shape=(nidx ) )
228 igood 11=np . z e ro s ( shape=(nidx ) )
229 robust = np . z e ro s ( shape=(nidx ) )
230 robust adver= np . z e ro s ( shape=(nidx ) )
231 robust 0 = np . z e ro s ( shape=(nidx ) )
232 robus t adver 0= np . z e ro s ( shape=(nidx ) )
233 l 2=np . z e ro s ( shape=(nidx ) )
234
235 for idx in range ( nidx ) :
236 img0 = np . squeeze ( X tes t [ idx ] )
237 img = img0 . reshape ( (1 , img rows , img co l s , img channels ) )
238
239 laye r output = s e s s . run (model . l a y e r s [ −1 ] . input , f e e d d i c t={model . input : img})240
241 iout=np . a r g s o r t ( l aye r output [ 0 ] ) [ nb c l a s s e s −1]
242 i ob j=np . a r g s o r t ( l aye r output [ 0 ] ) [ nb c l a s s e s −2]
243
244 i f np . argmax ( Y test [ idx ] ) != iout :
245 continue
246
247 i ter=0
248 iadv=−1249 while iadv != i ob j and iter<maxiter :
250 l aye r output = s e s s . run (model . l a y e r s [ −1 ] . input , f e e d d i c t={model . input :
img})251 iout=np . a r g s o r t ( l aye r output [ 0 ] ) [ nb c l a s s e s −1]
252 grad = s e s s . run ( batch jacob ian , f e e d d i c t={model . input : img})253 dgrad=grad [ : , iout , . . . ] − grad [ : , i ob j , . . . ]
254 norm2=np . dot ( dgrad . f l a t t e n ( ) , dgrad . f l a t t e n ( ) )
255 de l ta output=laye r output [ 0 ] [ i ou t ]− l aye r output [ 0 ] [ i o b j ]
256 X adver = img − (1+eta )∗ de l ta output ∗dgrad/norm2
257 laye r output = s e s s . run (model . l a y e r s [ −1 ] . input , f e e d d i c t={model . input :
X adver })258 iadv=np . a r g s o r t ( l aye r output [ 0 ] ) [ nb c l a s s e s −1]
259 img=X adver
260 i ter += 1
261 i f i o b j == iadv :
262 i s u c c=i su c c+1
263 aa=np .sum( ( X tes t [ idx : idx+1]−X adver ) ∗∗2)264 bb=np .sum( X tes t [ idx : idx +1]∗∗2)265 l 2 [ n i d x r e a l ]=np . sq r t ( aa/bb)
266 for i in range ( n i t e r ) :
267 img0 = np . squeeze ( X tes t [ idx ] )
268 img = img0 . reshape ( (1 , img rows , img co l s , img channels ) )
269 laye r output1 = s e s s . run (model1 . l a y e r s [ −1 ] . input , f e e d d i c t={model1 .
input : img})270 iout1=np . a r g s o r t ( l aye r output1 [ 0 ] ) [ nb c l a s s e s −1]
271 igood 10 [ n i dx r e a l ]+=np . eye ( nb c l a s s e s , nb c l a s s e s ) [ i ou t ] [ i out1 ]
272
273 img0 = np . squeeze ( X adver )
43
274 img adver = img0 . reshape ( (1 , img rows , img co l s , img channels ) )
275 laye r output1 = s e s s . run (model1 . l a y e r s [ −1 ] . input , f e e d d i c t={model1 .
input : img adver })276 iout1=np . a r g s o r t ( l aye r output1 [ 0 ] ) [ nb c l a s s e s −1]
277 igood 11 [ n i dx r e a l ]+=np . eye ( nb c l a s s e s , nb c l a s s e s ) [ iadv ] [ i out1 ]
278
279 robust [ n i d x r e a l ]= igood 10 [ n i dx r e a l ] / n i t e r
280 robust adver [ n i d x r e a l ]= igood 11 [ n i dx r e a l ] / n i t e r
281
282 n i dx r e a l += 1
283
284 l 2 = l2 [ 0 : n i d x r e a l ]
285 robust = robust [ 0 : n i d x r e a l ]
286 robust adver = robust adver [ 0 : n i d x r e a l ]
287
288 minError = min er ror ( robust , robust adver )
289
290 i f (minError<minMinError ) :
291 robus t be s t = np . copy ( robust )
292 robus t adve r be s t = np . copy ( robust adver )
293 minMinError = minError
294
295 zPlot [ i xP lo t , i yP l o t ] = minError
296
297 i f ceroS imult == 1 :
298 zPlot [ ceroSimult xIndex , ceroS imult yIndex ] = np . amax( zPlot )
299
300 zPlot = zPlot [ :−1 , :−1]
301 l e v e l s = MaxNLocator ( nbins=100) . t i c k v a l u e s ( zPlot .min( ) , zPlot .max( ) )
302 #xPlot , yP l o t and zP l o t are used to c r e a t e t h e co lorGraph
303 np . savetxt ( os . path . abspath ( os . cu rd i r )+”/genData/”+thisFi leName+”−co lorGraph xPlot . csv ” ,
xPlot , d e l im i t e r=” , ” , fmt=” %10.5 f ” )
304 np . savetxt ( os . path . abspath ( os . cu rd i r )+”/genData/”+thisFi leName+”−co lorGraph yPlot . csv ” ,
yPlot , d e l im i t e r=” , ” , fmt=” %10.5 f ” )
305 np . savetxt ( os . path . abspath ( os . cu rd i r )+”/genData/”+thisFi leName+”−co lorGraph zPlot . csv ” ,
zPlot , d e l im i t e r=” , ” , fmt=” %10.5 f ” )
306 #r o b u s t b e s t and r o b u s t a d v e r b e s t are used to c r e a t e t h e h i s togram
307 np . savetxt ( os . path . abspath ( os . cu rd i r )+”/genData/”+thisFi leName+”−r obus t be s t . csv ” ,
robust bes t , d e l im i t e r=” , ” , fmt=” %10.5 f ” )
308 np . savetxt ( os . path . abspath ( os . cu rd i r )+”/genData/”+thisFi leName+”−r obus t adve r be s t . csv ” ,
robus t adver bes t , d e l im i t e r=” , ” , fmt=” %10.5 f ” )
Algoritmo B.2: Funcion min error.
1 def min error ( robust , robust adver ) :
2 import numpy as np
3 from s c ipy import s t a t s
4 nb = robust . shape [ 0 ]
5 r e s = s t a t s . cumfreq ( robust , numbins=nb , d e f a u l t r e a l l i m i t s =(0 , 1) )
6 r e s adve r = s t a t s . cumfreq ( robust adver , numbins=nb , d e f a u l t r e a l l i m i t s =(0 , 1) )
7 f a l s e c l a s i f=nb−r e s adve r [0 ]+ r e s [ 0 ]
8 i=np . a r g s o r t ( f a l s e c l a s i f ) [ 0 ]
9 return f a l s e c l a s i f [ i ] / (2∗nb)
Agradecimientos
El fin de esta tesis y la culminacion de mi carrera de grado, cierra un perıodo
importante en mi vida. Voy a intentar nombrar y agradecer a todas las personas e
instituciones que me ayudaron a que esto sea posible.
A la universidad Nacional del Comahue, por brindarme de muchas herramientas
en mis primeros dos anos de ingenierıa. Muchısimas gracias al Instituto Balseiro, por
darme la posibilidad de formarme como profesional en un lugar como el Centro Atomico
Bariloche, rodeado de personas apasionadas en lo que hacen.
A German y Ariel, por darme la oportunidad de hacer este proyecto, por acompanar-
me hasta el final y por la inmensa paciencia, dedicacion y buena onda que tuvieron en
todo momento.
A mis profesores y ayudantes. Serıa una lista muy larga, pero les agradezco a cada
uno de los que, por mas pequeno que haya sido el detalle, dieron su tiempo para
responderme una duda con mucha pasion y dedicacion.
A Graciela, por el gran apoyo academico y amabilidad dentro del IB, principalmente
en un momento muy difıcil en mi vida debido a una tragedia familiar.
A los mecanicos IB16, un curso al que voy a extranar muchısimo. Gracias por las
risas, las charlas, las comidas juntos, los viajes, las juntadas a estudiar y porque aun
habiendo ciertos momentos de desesperacion pre-parciales, pre-finales y otros, siempre
voy a recordar a mi etapa del IB con una sonrisa. A mucha otra gente del CAB, princi-
palmente a Mati Lorenz por ser una increıble persona, un gran amigo y mi companero
de cuarto, y a Dana que pasamos de ser personas que se saludaban en la cafeterıa, a
ser super amigos, aun teniendo en cuenta que no te gustan Los Simpsons ni Messi :p
A mi familia en general, por haberme hecho sentir muy feliz y querido desde siempre.
Gracias por apoyarme y darme animos en todas las ideas y proyectos que tuve (y que
seguire teniendo, ası que preparense, jaja). Espero hacerles sentir todo lo lindo, o por
lo menos una parte, de lo que ustedes me hacen sentir a mi todos los dıas.
A mi papa, por ser tan buen consejero y companero, por incentivar mi curiosidad
desde que tengo memoria, por explicar todo con tanta paciencia y por mostrarme la
inmensa voluntad y fuerza que puede tener alguien en momentos difıciles.
A vos viejita, sos por lejos la persona mas generosa y amable que conozco, no hablo
de la virtud sino de la facilidad con la que se puede amarte. Seguı siempre con tus
45
46 Agradecimientos
cantos inadvertidos, con tus comentarios “raros” sobre futbol, con tus notitas, y con
todos esos detalles que te hacen ser como sos.
A mis super hermanos Ber, Eri, Lu y Fer (aunque ya no estes), por cuidarme
y haberme dado tanto amor desde chiquito, por ensenarme infinidad de cosas, por
escucharme, por darme consejos de hermanos y por saber que con un llamado o juntada,
puedo contar para lo que sea con ustedes. Los tenga cerca o lejos, siempre me siento
muy acompanado.
A Julio, por los muchos momentos compartidos, los cuales siempre recuerdo con
una sonrisa.
A Nahue, Andi y Fede, mis enormes (y chiquitines) amigos de la secundaria, gracias
por hacerme tener tan lindos recuerdos de todas las juntadas, desde los tiempos del
CTS hasta hoy, y espero que muchas mas.
Me conozco desde hace mucho tiempo, y se que me tengo que haber olvidado de
alguien, a esa gente, perdon.
Por ultimo y sin ser egocentrico, un recordatorio/consejo para mi yo del futuro:
espero seguir poniendole ganas a todo lo que hago, espero seguir enfrentando nuevos
proyectos para lograr metas (pequenas o grandes), espero aprender mucho de los errores
y disfrutar del camino que decida seguir.
Bibliografıa
[1] Russell, S. J., Norvig, P. Inteligencia Artificial: un enfoque moderno. 2 edicion.
Prentice Hall, 2008. 1, 3
[2] Sermanet, P., Eigen, D., Zhang, X., Mathieu, M., Fergus, R., LeCun, Y. Overfeat:
Integrated recognition, localization and detection using convolutional networks.
arXiv preprint arXiv:1312.6229, 2013. 2
[3] Wu, Y., Giger, M. L., Doi, K., Vyborny, C. J., Schmidt, R. A., Metz, C. E. Artificial
neural networks in mammography: application to decision making in the diagnosis
of breast cancer. Radiology, 187 (1), 81–87, 1993. 2
[4] Esteva, A., Kuprel, B., Novoa, R. A., Ko, J., Swetter, S. M., Blau, H. M., et al.
Dermatologist-level classification of skin cancer with deep neural networks. Nature,
542 (7639), 115, 2017. 2
[5] Pratt, H., Coenen, F., Broadbent, D. M., Harding, S. P., Zheng, Y. Convolutional
neural networks for diabetic retinopathy. Procedia Computer Science, 90, 200–205,
2016. 2
[6] Szegedy, C., Zaremba, W., Sutskever, I., Bruna, J., Erhan, D., Goodfellow, I.,
et al. Intriguing properties of neural networks. arXiv preprint arXiv:1312.6199,
2013. 2, 3, 13
[7] Goodfellow, I. J., Shlens, J., Szegedy, C. Explaining and harnessing adversarial
examples. arXiv preprint arXiv:1412.6572, 2014. 2, 3, 13
[8] Diabetic retinopathy detection - kaggle. URL
https://www.kaggle.com/c/diabetic-retinopathy-detection. Accedido 25-05-
2019. 3, 28, 29
[9] James, G., Witten, D., Hastie, T., Tibshirani, R. An introduction to statistical
learning, tomo 112. Springer, 2013. 3
[10] Hurwitz, J., Kirsch, D. Machine learning for dummies - IBM limited edition. John
Wiley & Sons, Inc, 2018. 3, 5, 6
47
48 Bibliografıa
[11] Hertz, J. A. Introduction to the theory of neural computation. CRC Press, 2018.
3, 6, 7, 8, 9, 11
[12] Moosavi-Dezfooli, S.-M., Fawzi, A., Frossard, P. Deepfool: a simple and accurate
method to fool deep neural networks. En: Proceedings of the IEEE conference on
computer vision and pattern recognition, pags. 2574–2582. 2016. 3, 12, 13, 15, 16,
34
[13] Carlini, N., Wagner, D. Adversarial examples are not easily detected: Bypassing
ten detection methods. En: Proceedings of the 10th ACM Workshop on Artificial
Intelligence and Security, pags. 3–14. ACM, 2017. 3, 17
[14] Conda documentation. URL https://docs.conda.io/projects/conda/en/latest. Ac-
cedido 23-05-2019. 3
[15] NVIDIA. Nvida cudnn — nvidia developer. URL
https://developer.nvidia.com/cudnn. Accedido 23-05-2019. 4
[16] Keras. URL https://keras.io/. Accedido 23-05-2019. 4, 7, 29
[17] Google. Tensorflow. URL https://www.tensorflow.org. Accedido 23-05-2019. 4
[18] He, K., Zhang, X., Ren, S., Sun, J. Delving deep into rectifiers: Surpassing human-
level performance on imagenet classification. En: Proceedings of the IEEE inter-
national conference on computer vision, pags. 1026–1034. 2015. 6
[19] Rosenblatt, F. The perceptron: a probabilistic model for information storage and
organization in the brain. Psychological review, 1958. 8
[20] Minsky, M., Papert, S. Perceptron: an introduction to computational geometry.
The MIT Press, Cambridge, expanded edition, 19 (88), 2, 1969. 8
[21] Cybenko, G. Approximation by superpositions of a sigmoidal function. Mathe-
matics of control, signals and systems, 2 (4), 303–314, 1989. 8
[22] Bryson, A. E., Ho, Y. C. Applied Optimal Control. New York: Blaisdell, 1969. 9
[23] Werbos, P., J. (Paul John, P. Beyond regression : new tools for prediction and
analysis in the behavioral sciences. Ph.D. Thesis, Harvard University, 1974. 9
[24] Parker, D. Technical report tr-47 , center for computational research in economics
and management science, massachusetts institute of technology, cambridge. MA,
1985. 9
Bibliografıa 49
[25] Rumelhart, D. E., Hinton, G. E., Williams, R. J. Learning internal representa-
tions by error propagation. Inf. tec., California Univ San Diego La Jolla Inst for
Cognitive Science, 1985. 9
[26] LeCun, Y. Une procedure d’apprentissage ponr reseau a seuil asymetrique. Pro-
ceedings of Cognitiva 85, pags. 599–604, 1985. 9
[27] Fukushima, K. Neocognitron: A self-organizing neural network model for a mecha-
nism of pattern recognition unaffected by shift in position. Biological cybernetics,
36 (4), 193–202, 1980. 9
[28] Hubel, D. H., Wiesel, T. N. Receptive fields of single neurones in the cat’s striate
cortex. The Journal of physiology, 148 (3), 574–591, 1959. 9
[29] Hubel, D. H., Wiesel, T. N. Receptive fields and functional architecture of monkey
striate cortex. The Journal of physiology, 195 (1), 215–243, 1968. 9
[30] LeCun, Y., Boser, B., Denker, J. S., Henderson, D., Howard, R. E., Hubbard,
W., et al. Backpropagation applied to handwritten zip code recognition. Neural
computation, 1 (4), 541–551, 1989. 9
[31] Goodfellow, I., Bengio, Y., Courville, A. Deep Learning. MIT Press, 2016. http:
//www.deeplearningbook.org. 10
[32] LeCun, Y., Bottou, L., Bengio, Y., Haffner, P., et al. Gradient-based learning
applied to document recognition. Proceedings of the IEEE, 86 (11), 2278–2324,
1998. 10, 11
[33] The mostly complete chart of neural networks. URL
https://towardsdatascience.com/the-mostly-complete-chart-of-neural-networks-
explained-3fb6f2367464. Accedido 05-06-2019. 11
[34] Su, J., Vargas, D. V., Sakurai, K. One pixel attack for fooling deep neural networks.
IEEE Transactions on Evolutionary Computation, 2019. 13
[35] Feinman, R., Curtin, R. R., Shintre, S., Gardner, A. B. Detecting adversarial
samples from artifacts. arXiv preprint arXiv:1703.00410, 2017. 17
[36] Kappa. URL http://vassarstats.net/kappa.html. Accedido 27-05-2019. 29
Top Related