El hilo de la inteligencia artificial

Achiss

Dejo huella por el hilo y en un par de semanas prometo hacerme fijo. Justo lo que tardo en acabar la dissertation del máster en ML en el que estoy y mudarme a otro pais. Del resto de AI tengo un conocimiento bastante limitado, pero en esto puedo echar un mano en lo que haga falta. En general de machine learning (y más sobre redes neuronales y deep learning), también en algún campo que se toca como computer vision, algo de neurociencia computacional...

Y dejo mis recomendaciones para ML a nivel bastante serio (y probabilístico), si alguien quiere más info que pregunte:

Este campo es una pasada, además tiene cabida en casi cualquier ámbito que quieras aplicarlo. En el trabajo del máster yo estoy con reconocimiento de parásitos para diagnosticar malaria y cuando acabe me voy al sector espacial :D .

2
27 días después
Kartalon

A Visual Introduction to Machine Learning: http://www.r2d3.us/visual-intro-to-machine-learning-part-1/

3 1 respuesta
T-1000

Desde que vi la saga Terminator o Matrix cada día me fio menos de la AI. XD

1 respuesta
Ranthas

#33 Bueno, es más probable que construyamos un motor de curvatura antes de poder crear un algoritmo de aprendizaje no supervisado capaz de inferir que somos escoria y debemos ser eliminados.

O almacenados en vainas para actuar como combustible, si te mola más la saga de Matrix.

1 respuesta
T-1000

#34 O al estilo Colossus.

Sino has visto esa película, ya estas tardando.

1
4 meses después
YokeseS

video explicativo sobre el deep learning o aprendizaje profundo

me parece realmente intereseante las aplicaciones que puede tener en un futuro sobretodo en el campo medico y en el de la industria.

1 1 respuesta
E

#36 y en el de la informática... Imagínate, máquinas programando máquinas, me roban el empleo xDDDDD

1 respuesta
YokeseS

#37 seriamos muuucho mas eficientes, no haria falta trabajar miralo desde ese punto de vista. paguita para todos :si:

1 respuesta
B

#38 paguita para todos jjajajajajajAJAJJAa
excelente dominio de la ironía

2 años después
B

Hola todos!

Existen neuronales con diferentes algoritmos en el mismo red neuronal?

Creo que he aprendido que el algoritmo para el aprendizaje es el mismo en cada neuronal en una red de neuronales?

Los capas y los neuronales tienen diferentes datas a calcular en el mismo red de neuronales.
En cuanto al reconocimiento de imágenes, los neuronales en una capa mas a la izquierda tienen que calcular patrónes en un nivel que contener pixels. Por ejemplo, un neuronal que existe en una capa mas a la izquierda el la red neuronal va a reconocer patrónes para un pocos de pixels arriba a la izquierda en la imagen. Un otro neuronal, a la izquierda en la red neuronal también, va a reconocer patrónes para un pocos de pixels bajo a la derecha en la imagen. Pero en los capas mas a el derecho en el red de neuronales los neuronales van a reconocer otras cosas/patrónes. En las capas a el derecho de la red neuronal las entradas no son pixels. Las entradas son mas como "un triangulo", "un cuadrado" o un "anillo". Y creo que se tiene que tener un pocos de capas para juntar los partes a una imagen completa.

La pregunta es si los neuronales en el mismo red neuronal tienen diferentes algoritmos? Y entonces y en general que tipos de algoritmos?

Salu2!

9 días después
B

¿Alguien podría decirme cómo "funciona" esta I.A. para hacer jerarquías de "afectaciones" así?
https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0174944

Quiero poder (o intentar) interpretarlo porque salen factores de determinantes sociales y por ahora estoy "con ello".

1 4 respuestas
polaritySYS

#41 Junto con la gráfica de #32 Yo también ando en el tema de la interpretación de datos. Me sumo a tu cuestión.

2 respuestas
HeXaN

#41 #42 No puedes saberlo porque las redes neuronales son una caja negra.

Zerokkk

#41 Técnicamente eso es una ANN (Artificial Neural Network), más que una IA. Te cuento lo que sé, que estoy aprendiendo sobre el tema últimamente. Que alguien me corrija si digo algo incorrecto:

Te comento: lo de la izquierda son los input nodes, que funcionan como parámetros de entrada. Estos datos se extraen de algún lado, véase una base de datos, un .csv, un .txt... durante la fase de entrenamiento de la ANN, lo que se hace es proporcionarle un parámetro extra (la variable dependiente) que es la que dicta si cada una de esas filas ha tenido una cardipatía o no. Entonces, la IA cogerá todas las variables de entrada y tratará de sopesar cuáles son más importantes, cómo están relacionadas, y determinar para qué mezcla de variables habrá una cardiopatía o no.

En la fase de entrenamiento, se puede pasar cada fila o conjunto de filas (batch training) a la ANN y dejarle a ella sola que sopese qué variables son las más importantes. Eso es lo que sucede en las Hidden Layers, que en este caso sólo hay una (compuesta de los nodos H1:H3). Lo que hacen estos nodos es recibir las "conexiones" de los anteriores filtradas por un "nivel de importancia" (o también llamado "peso de variable). Al principio determina pesos aleatorios y, simplemente, va probando. Cuando llega a la capa final, hay una función de coste que compara el resultado de la variable dependiente proporcionada a mano, con el resultado que la máquina cree que es. Dependiendo del resultado, se produce una operación de backpropagation que varía los pesos ligeramente dependiendo de lo que haya aprendido en cada iteración. Repite miles de veces, y la IA sabrá realmente bien qué pesos debe tener cada conexión.

Cada nodo también ejecuta una función de activación, y desconozco cuáles serán en estos casos pero para una fully connected network como esta me imagino que usará ReLU (rectifier function), pero hay varias funciones de activación cuyo trabajo es determinar si una neurona dada de las hidden layers debe ser disparada. Esto se va haciendo a lo largo de las capas ocultas, haciendo que las neuronas apliquen esta función una tras otra, y propagando el resultado de éstas hacia la output layer será lo que nos otorgue un resultado concreto. Los outputs de estas funciones de activación dependen de la función usada (tanh, sigmoid, ReLU, softmax...). A su vez, una neurona también almacena un bias a lo largo de su entrenamiento que también supondrá un parámetro de dicha función de activación.

Cuando ya está entrenada la red neuronal, se puede usar para predecir un resultado (es decir, picar ella misma la variable dependiente) de una nueva fila de datos. Como sabe qué variables son más importantes (a través de los pesos definidos en las conexiones entre nodos), y cómo cotejarlas, termina ofreciéndonos por la output layer el resultado final.

Cabe decir que los datos necesitan previamente un cierto preprocesamiento que hace que incluso cuando están en la input layer, son ya irreconocibles para el ser humano, y que como dice #43, no puedes saber con exactitud cómo funcionan las hidden layers ya entrenadas; es una caja negra donde el flujo de información está tan transformado, que no hay forma de saber bien qué sucede ahí. Pero vaya que estas cosas suelen funcionar terriblemente bien.

polaritySYS

Conocéis alguna página o libro en el que pueda empezar a "estudiar" este tema? O al menos leer sobre él sin demasiados tecnicismos?.

Al menos para lograr interpretación de las gráficas anteriores, me ha llamado mucho la atención este tema.

2 respuestas
HeXaN
#45polaritySYS:

Al menos, para lograr interpretación de las gráficas anteriores

Esas gráficas (son simplemente la estructura de la red neuronal) no se pueden interpretar más allá de saber que una es la capa de entrada, otra/s las ocultas y otra la de salida.

Respecto a lo otro, si no te metes en tecnicismos, cualquier artículo que te salga en Google al poner "qué es una red neuronal" te servirá xD

Zerokkk

#45 En Udemy hay muchos cursos cojonudos, si quieres te paso enlace del que estoy haciendo.

1 respuesta
polaritySYS

#47 Pasa pasa. Muchas gracias.

Ulmo

#41 #42 Como ya os han comentado no se puede deshilar una red neuronal para ver qué factores son los que provocan la respuesta. Hay técnicas para encontrar la importancia de cada uno, pero la gracia de las redes neuronales es que es un proceso de aprendizaje de la red en donde las combinaciones que hace no tiene porqué tener lógica, se limitan exclusivamente a que dada una entrada la salida satisfaga unos requisitos que han sido entrenados. Y para llegar a satisfacerlo la red tomará cuantas consideraciones crea oportunas, aunque sean contra lógicas.

Google tiene bastante información sobre redes neuronales centrado principalmente en su programa Tensorflow.

Aquí os dejo una página para que juegueis un poco con redes simples si queréis:

https://playground.tensorflow.org/#activation=tanh&batchSize=18&dataset=spiral&regDataset=reg-plane&learningRate=0.03&regularizationRate=0&noise=10&networkShape=4,4,2,2&seed=0.31327&showTestData=false&discretize=false&percTrainData=40&x=true&y=true&xTimesY=false&xSquared=false&ySquared=false&cosX=false&sinX=false&cosY=false&sinY=false&collectStats=false&problem=classification&initZero=false&hideText=false

1 1 respuesta
polaritySYS

#49 Al menos conocer de donde salen los datos y como los extrapola, si es que es posible xD. La cosa es ver como se comporta y de dónde salen y a dónde acaba... (yo en este mundo me muevo muy poco y me parece harto curioso de ahí el buscar info).

Gracias por el link, me lo voy a leer.

1 respuesta
Ulmo

#50 La cosa en realidad es muy sencilla, la única dificultad es el algoritmo que entrena a las neuronas, y de estos hay varios y generalmente es un prueba/error hasta que encuentras uno con el que obtienes buenos resultados. Luego ya eliges más o menos neuronas y más o menos capas, teniendo en cuenta que cuantas más capas y neuronas pongas más tardarás en encontrar una solución porque hay más entrenamiento que hacer.

Imagínate que quieres entrenar una red neuronal que dados 2 números te los sume, y que para ello la dotas de 50 neuronas. El algoritmo empieza a asignar valores aleatorios a dichas neuronas que básicamente harán "cosas" con los 2 números de entrada: los multiplicarán, dividirán, restarán y los transferirán a la siguiente capa de neuronas donde nuevamente les harán más modificaciones aleatorias. Al final, todas estas modificaciones convergerán en una neurona final que dará un único número.

Tú le pasarás 10 millones de parejas de números con los respectivos 10 millones de resultados (la suma de la pareja), y el algoritmo irá descartando y modificando las operaciones en cada neurona para que el resultado final se ajuste al resultado que le has facilitado. Puede ser que para conseguir sumar 2 número la red neuronal acabe haciendo una enorme cantidad de multiplicaciones, divisiones, sumas y restas. Y que además el número final no sea la suma exacta sino que tenga hasta decimales, pero será un valor muy próximo al valor de la suma real.

La forma intuitiva se puede ver en el link que os he pasado:

Prueba a diferenciar puntos rojos y azules en la forma espiral usando solo las coordenadas X1 e X2 (primera columna features). Verás que a la red le cuesta horrores diferenciar los puntos correctamente y te tienes que tirar un buen rato entrenándola. Añadir más neuronas en las diferentes capas acelera un poco el proceso pero sigue tardando mucho.

Sin embargo, si decides además de pasarle las coordenadas X1 y X2 pasarle también el cuadrado de su número X12 y X22 pese a que la información es exactamente la misma, la red ahora es capaz de encontrar el resultado optimo de forma super rápida. Pese a que la red explora las opciones de forma bastante aleatoria, los valores cuadráticos le ayudan a encontrar la solución ya que la circunferencia en el plano se expresa de forma cuadrática, es decir, ya está jugando con unos números que le facilitan la tarea de búsqueda.

Lo que hay que entender es que la red es totalmente ignorante de lo que procesa, se limita a mover números arriba y abajo, modificándolos y combinándolos con el único objetivo de que el resultado final en los entrenamientos se ajuste al resultado facilitado.

2