Inteligencia Artificial, artículo del Co-CEO de Lanaccess Fernando Guillem en la revista Seguritecnia
Lanaccess > Artículos > Inteligencia Artificial, artículo del Co-CEO de Lanaccess Fernando Guillem en la revista Seguritecnia
  • Enviado por: Lanaccess
  • Categoria: Artículos

Artículo del Co-CEO de Lanaccess Fernando Guillem en la revista Seguritecnia.

1. Intro

En el término Inteligencia Artificial, la palabra Artificial no hace referencia a que la inteligencia sea falsa, sino que no es natural de un ser vivo. Más bien se trata de una inteligencia creada por el ser humano para que la aplique una máquina.

“AI” y su traducción al castellano “IA” se han convertido en buzzwords que engloban multitud de tecnologías que de alguna manera mejoran o complementan el trabajo humano y/o su capacidad cognitiva.

Podemos decir que una máquina está dotada de AI si hace lo siguiente:

  1. Recoge o absorbe datos
  2. Interpreta y aprende de esos datos
  3. Aplica el aprendizaje para ejecutar acciones

Estos bloques de construcción se basan en algoritmos, que son conjuntos de acciones encaminadas a resolver un problema.

Podemos pensar en ello como el desarrollo cognitivo y motor de un bebé humano. Cuando nacen, no saben distinguir lo que es un perro de un gato, no saben distinguir al tacto si un objeto es de madera o de plástico, pero su cerebro está continuamente recogiendo datos, que aprende a interpretar en base a feedback del entorno y de sus propios sentidos. En el caso de las máquinas, al no tener sentidos, su principal manera de interpretar los datos es si estos están etiquetados, e.g.: esto es una persona, esto otro es un perro; este resultado es correcto, este no.

2. Historia

En los años 40 y 50 del siglo XX científicos de diversos campos empiezan a hablar de la posibilidad de crear un cerebro artificial. Estudios de neurología de la época proponían que el cerebro está formado por una red de neuronas que emiten impulsos eléctricos binarios: impulso o no-impulso, 0 o 1. Antes de esto, Alan Turing había formulado su teoría de la computación, que decía que cualquier cómputo podía describirse de manera digital. La unión de estas y otras ideas de la época da a pensar que una máquina pueda hacer cómputos como un cerebro.

En el verano de 1956 tuvo lugar en Dartmouth College una conferencia donde se juntaron los científicos inmersos en esta vanguardista área de estudio. En este evento, John MacCarthy acuñó el nombre de inteligencia artificial por primera vez en la historia. Por aquel entonces, las discusiones de los participantes quedaron en meros esbozos de ideas, pues no eran conscientes de la cantidad de datos y la capacidad de procesamiento requerida para realmente dotar de inteligencia a una máquina.

Esa falta de capacidad de procesamiento y  de datos fue lo que obstaculizó el avance de esta disciplina, por lo que no muchos años después de aquella conferencia se produjo un periodo de estancamiento que se conoce como el  AI Winter (invierno de la IA) y que perduraría hasta llegar al siglo XXI.

El desbloqueo de esta área de estudio se produjo gracias a un cúmulo de pequeñas mejoras incrementales y a dos hechos determinantes:

  1. La mejora en la capacidad de procesamiento. Desde el IBM 7090 que ocupaba una habitación entera y podía realizar 100k flops a los supercomputadores actuales, que superan los 200 petaflops, donde . Ojo, ¡que son 15 ceros!
  2. Internet ha permitido la creación de una cantidad de datos inimaginable en 1956, y además no para de crecer a un ritmo exponencial. Tal cantidad de datos ha permitido generar los datasets necesarios para trabajar con IA.

Si hacemos recuento de las efemérides de la IA[1][2] podemos ver el progreso en las diferentes épocas desde que se inició y los periodos del AI Winter donde hubo pocos avances:

  • 1943: Modelo de neuronas artificiales de McCulloch y Pitts, reconocido como primer trabajo de IA.
  • 1950: Alan Turing elabora el Test de Turing.
  • 1956: McCarty acuñó el término Artificial Intelligence en la conferencia de Dartmouth.
  • 1966: ELIZA, primer chatbot de la historia.
  • 1972: WABOT-1, primer robot humanoide inteligente de la historia.
  • 1980: Primera conferencia de la American Association of Artifcial Intelligence.
  • 1997: El ordenador Deep Blue de IBM derrota por primera vez a un campeón mundial de ajedrez, Garry Kasparov.
  • 2002: Roomba, primer robot aspirador inteligente.
  • 2004: Los robots Rover Spirit y Opportunity de la NASA navegan la superficie de Marte sin intervención humana.
  • 2006: Los académicos Etzioni, Banko y Cafarella acuñan el término machine reading, refiriéndose a la compresión de textos sin supervisión.
  • 2007: Un grupo de académicos liderados por Fei Fei Li crean ImageNet, una base de datos de imágenes anotadas para la investigación en reconocimiento de objetos.
  • 2009: Google empieza a desarrollar un coche autónomo sin conductor.
  • 2010: Microsoft lanza para la XBox 360 el Kinect, que detecta y sigue el movimiento humano con una cámara 3D e infrarrojos.
  • 2011: IBM Watson gana el concurso Jeopardy, donde resuelve acertijos y preguntas complejas.
  • 2011: Apple lanza Siri, un asistente para el iPhone que reconoce la voz humana y devuelve respuestas a las preguntas formuladas.
  • 2012: Google lanza Google Now, que provee información a los usuarios de Android en base a predicciones elaboradas a partir de sus datos de búsqueda en Google.
  • 2014: Chatbot Eugene Goostman gana una competición del Test de Turing. Esto es, engaña a un jurado haciéndoles creer que es un humano.
  • 2014: Amazon crea Alexa, su asistente para el hogar.
  • 2015: Alpha Go de Google derrota por primera vez a un campeón del juego Go.
  • 2016: Hanson Robotics crea Sophia, un robot humanoide que es capaz de ver, comunicarse y hacer expresiones faciales en su cara sintética.
  • 2018: Project Debater de IBM participa en un debate con expertos en debates.

La lista sigue, pero podemos ver claramente que los avances en IA se han acelerado en los últimos 20 años.

3. Qué es realmente la IA

El término Inteligencia Artificial (IA, o AI en inglés) se ha convertido en una buzzword que cualquier empresa lanza con el objetivo de demostrar que tiene productos o soluciones más avanzadas. Pero no es IA todo lo que parece, igual que no todo lo que nos venden como light en el supermercado es realmente light. La misma analogía la podríamos hacer con decenas de productos que utilizan algún tipo de reclamo que no es realmente cierto o que lo es solo parcialmente. Eso no quita que cada vez más organizaciones utilicen IA y que su uso vaya a incrementarse en el futuro.

Podemos definir la IA como una disciplina que trata de crear máquinas inteligentes que imiten la inteligencia humana, total o parcialmente. Esto, traducido en acciones concretas nos lleva a que para considerar una máquina inteligente, ésta tiene que ser capaz de recoger o absorber datos, interpretar y aprender de estos datos, y aplicar estos aprendizajes para llevar a cabo acciones.

Según el alcance, podemos decir que hay dos tipos de IA: la específica y la general. La específica es aquella en la que un sistema se dedica a ejecutar acciones para resolver un problema concreto, pero no sabe nada más allá de ese problema concreto. El reconocimiento facial, tan presente en las conversaciones del sector de las seguridad es un tipo de IA específica, pues se dedica únicamente a encontrar caras que coincidan con otras caras. Lo mismo podemos decir de casi cualquier analítica de vídeo del sector de la seguridad, pues son concretas a detectar algún tipo de objeto, persona o evento.

La general es aquella que busca dotar a la máquina de una capacidad de razonamiento similar a la de un humano. Para saber si una IA es general, podemos hacer diferentes tests, siendo el más conocido el Test de Turing, creado por Alan Turing en 1950.

Dicho esto, hay otros términos que nos pueden llevar a confusión como son Machine Learning (ML) y Deep Learning (DL). Estas son subáreas de la IA. El Machine Learning es una sub-área de la IA, y el Deep Learning es una sub-área del Machine Learning. La figura de abajo nos lo muestra gráficamente en un diagrama de Venn[3].

diagrama

Nos queda entonces por saber qué hay dentro de la IA que queda fuera del ML. Aquí tendríamos una IA más básica, que utilicemos para resolver u optimizar problemas de manera generalmente matemática. E.g.: un algoritmo que resuelve sudokus es una forma de IA básica. No aprende, sino que sabe exactamente qué condiciones ha de cumplir cada número que ponga en el sudoku para que sea correcto, y lo que tiene que hacer es probar las diferentes combinaciones que le den el sudoku completo. Aplicado a un problema de una empresa real, podemos pensar en operadores logísticos que utilicen el algoritmo de Dijkstra para optimizar sus rutas de distribución[4], pues no deja de ser un problema matemático de optimización.

4. Machine Learning

El Machine Learning (ML) es el tipo más común de IA. Permite a una máquina aprender y mejorar sus acciones en base a datos, sin ser específicamente programada para ello. Hay cuatro tipos de ML:

  1. Supervised Learning, donde las máquinas aprenden de datos anotados. Para ello, hay datasets de entrenamiento y datasets de validación. Esto requiere que los posibles resultados de aplicar el algoritmo sean conocidos y estén contemplados dentro del dataset y que el dataset tenga los posibles resultados etiquetados correctamente.
  2. Unsupervised Learning, donde un algoritmo busca patrones en conjuntos de datos. En este tipo de aprendizaje los datos no están anotados o etiquetados, por lo que estos algoritmos se suelen utilizar cuando no hay respuestas correctas claras. El clustering es uno de los métodos más usados del aprendizaje no supervisado. Por ejemplo, en la analogía del bebé que está aprendiendo, el bebé no tiene datos previamente obtenidos de lo que está bien o está mal. El bebé puede darse cuenta de que los melocotones y los higos son dulces porque note un sabor parecido en su paladar, y agrupar mentalmente los alimentos dulces, igual que podría hacer con los salados. Esto aplicado a los negocios puede traducirse por ejemplo en buscar patrones de compra en los consumidores, donde no hay  resultado correcto o incorrecto.
  3. Semi-supervised Learning, que es una mezcla de los dos anteriores. En este caso, los datos pueden estar incompletos o no ser precisos, por lo que no siempre podrá hacer un aprendizaje como el del Supervised Learning en base a un conjunto de datos correctamente anotado. Lo hará en la medida de lo posible y a la vez tendrá que usar un enfoque como el de Unsupervised Learning, buscando patrones para poder tomar la mejor decisión con los datos disponibles.
  4. Reinforcement Learning, que utiliza sistemas de recompensa y castigo para entrenar a una máquina. Esto lo hace en base a los resultados correctos o incorrectos de las acciones que lleva a cabo. Así los algoritmos se enfocan en maximizar sus recompensas y minimizar sus castigos. Los conocidos experimentos de Pavlov con su perro iban en la línea de el Reinforcement Learning que usamos en Machine Learning [5].

4.1 Evaluación de algoritmos

Ahora que sabemos en qué consiste el Machine Learning, debemos entender cómo valorar un algoritmo que haga uso de ML. Que use ML no quiere decir que los resultados sean buenos ni que todos los algoritmos o aplicaciones obtengan los mismos resultados.

Para esta evaluación podemos usar 4 métricas cuantitativas[6]:

  • Exactitud (accuracy): cuántas predicciones/resultados acertó el algoritmo. Esto formulado es el número total de resultados correctos entre el número total de resultado

accuracy

  • Precisión: cómo de cercanos entre sí son dos resultados. Es decir, la precisión nos indica cuánto tendremos que confiar en un algoritmo cuando nos da un resultado. Es una métrica adecuada para procesos donde hay un alto coste de tener un falso positivo.

precision

En el sector de la seguridad, podemos pensar en casos como el reconocimiento facial de personas en busca y captura, donde detener a la persona incorrecta puede acarrear un daño a la persona incorrectamente detenida, además de un gran impacto reputacional por cometer semejante error.

  • Recall: entre todos los resultados que son realmente positivos, cuántos identifica como positivos el algoritmo. Esta métrica es adecuada para procesos donde hay un alto coste por tener falsos negativos.

  recall

Esta métrica aplicada al sector de la seguridad es importante en casos como por ejemplo la intrusión en un robo. No hacer la detección puede acarrear grandes pérdidas económicas. O peor aún, no detectar la intrusión en  un sabotaje de una infraestructura crítica.

  • F1: es una función que relaciona la precisión y el recall, dándonos una métrica balanceada para mejor valorar un algoritmo.

f1

5. Redes Neuronales

Las redes neuronales son sistemas inspirados en el cerebro de un ser vivo. Se componen de nodos conectados entre sí que hacen las veces de neuronas artificiales.

5.1 Nodos

Volviendo al origen de la IA, los científicos de la época concebían el cerebro humano de manera digital, funcionando a base de impulsos eléctricos binarios. Partiendo de ese concepto Frank Rosenblatt concibió el perceptrón en 1958, una suerte de neurona artificial.

El funcionamiento del perceptrón se reduce a recibir una información, procesarla, y emitir un resultado. Más concretamente como sigue[7]:

  1. Recibe una serie de datos x, cada uno con un peso w. Cada peso hace referencia a la importancia de ese dato en la decisión que deba tomar.
  2. Sesgo b (bias), que indica un umbral bajo el cual es más o menos probable que la neurona se active.
  3. Función de suma, que recibe la multiplicación de cada dato x por su peso w y los suma.
  4. Función de activación, que determina si los datos encajan en el umbral indicado.

5.2 Estructura de las redes neuronales

Una red neuronal es un conjunto de nodos conectados entre sí, por capas. La estructura sería la siguiente[8]:

  1. Capa de entrada, donde cada nodo de entrada recibe datos y pesos.
  2. Capas intermedias ocultas, donde sucede la computación. Los nodos en estas capas producen un resultado en base a los datos y el peso obtenidos, y lo pasan a la siguiente capa.
  3. Capa de salida, que produce el resultado para los datos provistos. Por ejemplo, si estamos tratando de detectar un intrusión en un perímetro de seguridad, el nodo de salida determinará si para los datos provistos (imagen de vídeo y región de intrusión) hay un suceso de intrusión o no lo hay.

Las redes neuronales son usadas tanto en ML como en DL, con diferencias entre cada uno de ellos. En ML se usan redes neuronales fully connected con hasta 3 capas intermedias. Esto significa que cada nodo de una capa está conectado a todos los nodos de la siguiente capa, como muestra la siguiente imagen.

redes neuronales

 

En DL ya hablamos de mayor número de capas intermedias[9]. Además en DL entran en escena las redes convolucionales y las recurrentes, que añaden un nivel más de complejidad al sistema. Las redes fully connected se pueden usar en DL, pero tienen limitaciones. Para tratar imágenes donde tenemos gran número de inputs y características, las redes convolucionales son el camino a seguir.

5.3 Cómo funcionan

La estructura de las redes neuronales descrita la podemos plasmar en una fórmula matemática que quedaría así:

formula matematica

Trabajaremos con un ejemplo para verlo más claro. Tengo que decidir si  comprarme un patinete eléctrico para mis desplazamientos habituales por la ciudad. Para esto, tenemos que tener en cuenta una serie de factores:

  1. si me ahorrará dinero
  2. si me ahorrará tiempo
  3. si mejorará mi salud

Por simplicidad, los tomaremos como binarios, cero o uno. Entonces, tendríamos los siguientes datos de entrada:

  • Comparándolo con el coche, el consumo de electricidad será menos costoso que el consumo de gasolina. Si la alternativa fuera una bicicleta entonces sería más barato el consumo de la bicicleta, pues el motor serían mis piernas.
  • x2Como vivo relativamente cerca de la oficina, teniendo en cuenta que el tráfico matutino afectará más al coche, llegaré antes en patinete.
  • x3El patinete no implica una actividad física como sí la implicaría una bicicleta, sino que sería igual que si fuera en coche, por lo que mi estado físico no mejoraría con el patinete.

Estos 3 factores tienen diferente importancia para mí, y eso tiene que estar reflejado en la red neuronal. Para eso sirven los pesos, que quedarían así:

  • Valoro mis finanzas personales, y que me ahorre dinero es importante.
  • Ya vivo cerca de la oficina, ahora mismo tardo unos 15 min en coche, que ya es poco. La ganancia no sería tan significativa como para que me importe en exceso este punto.
  • Me gusta cuidarme y estar en forma. Me es complicado encontrar tiempo para ejercitarme y si consigo hacerlo en mis desplazamientos habituales lo valoraría positivamente.

Por último establecemos el sesgo b que marca el umbral para tomar decisiones. Le asignamos un valor de 3, por lo que

Ahora que tenemos todos los datos podemos introducirlos en la fórmula y calcular el resultado:

Este resultado lo usamos en la fórmula de activación, que sería la siguiente:

Como hemos tenido que y=1, con esta entrada de datos el nodo se habría “activado”, pasando los datos a los nodos en la siguiente capa de la red. De no haberse activado, la iteración de esa entrada de datos habría parado ahí. Cada capa tiene una función de activación diferente, por lo que los resultados en cada nodo pueden ir variando.

Cuando la red hace esto con todos los datos y a través de toda la red, obtiene un resultado final, que es lo que estamos buscando.

5.4 Entrenamiento

Cuando hablamos de las redes neuronales y la posibilidad de analizar cualquier imagen y detectar cualquier objeto o evento, entra en juego la fase de entrenamiento. El entrenamiento es un proceso mediante el cual se buscan los pesos adecuados para la red que nos permiten obtener la salida deseada para una entrada determinada. Este proceso de optimización lo logramos proveyendo de datos a la red.

Para entrenar una red neuronal necesitamos un conjunto de datos, el dataset, que contiene un set de datos de entrenamiento y otro de datos de validación. Es decir, con una parte de los datos entrenamos y con la otra verificamos que el entrenamiento ha sido efectivo.

Se trata de un proceso iterativo en el cual pasamos cada dato del dataset hacia delante y posteriormente pasamos hacia detrás el error producido, forward propagation y backpropagation:

  1. Empezamos el proceso con unos valores de la red iniciales, que tendremos que ir ajustando.
  2. Ejecutamos la red con los datos y obtenemos un resultado.
  3. Comparamos el resultado obtenido con el resultado que deberíamos haber obtenido y calculamos la diferencia.
  4. Corremos la red neuronal hacia atrás, propagando el error obtenido hacia atrás y usando esta información para modificar los parámetros iniciales. Con esto tratamos de reducir el error que obtenemos en el resultado final.
  5. Volvemos a ejecutar la red neuronal con los nuevos parámetros y seguimos iterando desde el punto 2. Repetiremos este proceso hasta que obtengamos un resultado óptimo.

En el proceso anterior asumimos que el dataset es idóneo, pero esto no siempre es así. Un mal dataset puede hacer que la red dé peores resultados después de entrenarla. En el sector de la seguridad no siempre podemos conseguir buenas imágenes para los datasets antes de desplegar la solución o de tener imágenes del lugar con las que entrenar, y esto complica el entrenamiento de las redes neuronales.

Una vez tenemos imágenes del lugar disponibles, crear datasets y mejorar los resultados es cuestión de tiempo. De hecho, entrenar las redes con imágenes específicas del lugar a analizar hará que el entrenamiento sea a medida de ese sitio.

5.5 Retos y obstáculos

Las redes neuronales tienen obstáculos y retos que superar para avanzar. Entre ellos:

  • Cantidad de datos: como hemos visto, para entrenar una red neuronal necesitamos buenos datasets, que se componen de miles o millones de datos. En el caso de las analíticas de vídeo, estamos trabajando con datasets de cientos de miles de imágenes para obtener resultados fiables. Conforme evolucione la tecnología y persigamos objetivos de analítica más ambiciosos necesitaremos mayor cantidad de datos etiquetados.
  • Caja negra: conforme evoluciona la utilidad y los objetivos de las redes neuronales también evoluciona su complejidad, que por lo general resulta en redes más profundas. Esto es, con mayor número de capas ocultas. Esto hace que se transformen en cierta manera en cajas negras, donde a mayor profundidad más difícil nos es entender por qué genera un resultado y otro con los datos dados, lo cual hace más difícil optimizar y evolucionar esas redes neuronales.
  • Capacidad de procesamiento: el desarrollo de redes neuronales más complejas va generalmente acompañado de mayor capacidad de procesado requerida. La mejora de las tarjetas gráficas (GPU) es crítica, y ha sido uno de los principales facilitadores en la última década. En menor medida también influyen las capacidades de las CPUs y memorias RAM. El reto en este punto es dual, pues por un lado podemos evolucionar las capacidades de procesamiento de los hardwares utilizados y por otro lado podemos optimizar las redes neuronales para que requieran menos capacidad de procesamiento.

En el futuro veremos mejoras incrementales en cada uno de estos puntos, facilitando el avance de la IA, aunque ya hay voces que hablan de cambios significativos  con la llegada de la computación cuántica. Veremos qué nos depara el futuro y seguiremos trabajando para proveer las mejores soluciones de analítica.

6. Reflexiones

Cuando una tecnología alcanza tal popularidad como sucede con la IA, el hype hace que tendamos a simplificar el tema. Siendo un tema tan complejo vale la pena indagar un poco más y no quedarnos en la superficie.

Cuando evaluamos una solución para nuestra organización que nos ayude a mejorar nuestra seguridad y nuestra operativa, vale la pena ir un paso más allá de si tiene o no tiene IA. ¿Funciona con ML, con DL o es algo más básico? ¿Qué métricas nos ofrecen para evaluar su rendimiento? ¿Cuántos canales puede analizar manteniendo ese rendimiento? ¿Puede analizar vídeo de cualquier cámara? ¿Es posible customizar de alguna manera? ¿Con qué datasets ha sido entrenada? ¿Qué equipo de I+D hay detrás? Podemos hacernos multitud de preguntas al respecto.

Estamos en un punto del desarrollo de este tipo de tecnología que el avance es muy rápido, y si queremos rentabilizar nuestra inversión en este tipo de soluciones, vale la pena que nos aseguremos de que nos dan el resultado que queremos. No estamos comprando una caja negra, sino algo que tiene que resolver nuestra necesidad. En LANACCESS estamos siempre dispuestos a conversar y asesorar sobre estos temas, al igual que aquellos distribuidores e integradores que hacen un trabajo exhaustivo en ofrecer un valor real con esta tecnología. Usémoslos.

 

Bibliografía

[1] History of Artificial Intelligence, JavaTPoint.

[2] History of Artificial Intelligence, Rebeca Reynoso, 2021.

[3] The difference between artificial intelligence, machine learning and deep learning, Mark Robbins, 2020.

[4] Application of Dijkstra Algorithm in Logistics Distribution Lines, Liu Xiao-Yan, Chen Yan-Li, 2010

[5] Psychology in AI: How Pavlov’s Dogs Influenced Reinforcement Learning, Anirudh V. K., 2019

[6] Artificial Intelligence AI Primer – Part II, Christopher Seifel, 2021.

[7] Artificial Intelligence Primer – Part III, Christopher Seifel, 2021.

[8] Deep Learning with Python, 2nd Edition, François Chollet, 2021.

[9] AI vs. Machine Learning vs. Deep Learning vs. Neural Networks: What’s the Difference?, IBM, 2020.

New call-to-action

mayo 2022
LunMarMiéJueVieSábDom
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345