Foros de matemática
15/12/2017, 02:46:14 pm *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?

Ingresar con nombre de usuario, contraseña y duración de la sesión
Noticias: LISTADO ACTUALIZADO DE CURSOS
 
 
Páginas: [1]   Ir Abajo
  Imprimir  
Autor Tema: Bases Físicas de la Intuición Matemática  (Leído 818 veces)
0 Usuarios y 1 Visitante están viendo este tema.
Cristian C
Pleno*
*****

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
Argentina Argentina

Mensajes: 482



Ver Perfil
« : 15/06/2017, 10:45:52 am »



Ignoro dónde poner este hilo. Lo coloco aquí porque, en cierto modo, es un "hijito'' de un tema que se trató aquí largamente hace ya unos años: ¿Qué esquema mental de la matemática tenemos cada uno de nosotros?, que significó el ingreso de Carlos Ivorra a estos foros y donde se debatió largamente acerca de la intuición matemática entre otras muchas cosas.
Queda a juicio de los moderadores ver dónde colocar el hilo.

Vamos al tema.
¿Es posible programar un ordenador para que aprenda los números naturales a partir de la experiencia, de un modo análogo a como lo hacemos nosotros? ¿Podrá concluir luego que deben existir infinitos de ellos?

Pongo estas preguntas descolgadas para disparar el tema. Veremos que la respuesta a la primer pregunta debe ser "sí'' (a partir del 2007) ,  en tanto que aún no estamos en condiciones de responder afirmativamente la segunda.
Pero lo más importante es que una exploración del modo como un ordenador podría aprender los números a partir de la experiencia, traerá también algo de luz sobre el modo como estos conceptos matemáticos simples están afincados en nuestra mente. Fundar sospechas ciertas sobre esto último es dar un primer pasito decisivo en pos de los engranajes fácticos de la  "intuición matemática'' y del reconocimiento de su exacto papel a la hora de fundar la matemática.

Dicho esto, es bueno aclarar que, si bien el tema involucra consideraciones de filosofía de la matemática, el tratamiento que debe hacerse para desentrañar las analogías conceptuales en que se funda, es eminentemente matemático y pertenece al terreno de la inteligencia artificial. Pero es necesario decir también que todo estará abierto al debate porque este enfoque es novedoso y no sé bien a dónde lleva.

Por esa razón es fundamental saber si hay interesados en en tema. Deberemos hablar de neuronas artificiales y distintas técnicas de redes neuronales: Perceptron, autocodificadores, "deep learning'' (aprendizaje profundo), reconocimiento de imágenes y por último, reconocimiento de cantidades a partir de imágenes. Esto último, creo yo, aún no se ha hecho, pero estimo que ya resulta holgadamente posible con las técnicas de IA (inteligencia artificial) existentes a partir del deep learning en adelante.

Las redes neuronales artificiales tienen varias agradables analogías con el cerebro humano: Son una red de nodos muy interconectados capaz de reproducir características inteligentes como fenómeno emergente (la inteligencia es indefinible a nivel de los nodos pero sí como propiedad del conjunto interconectado). La inteligencia resultante es un fenómeno distribuido, al igual que ocurre en el cerebro.

La proyección es simple de imaginar: si un ordenador puede aprender a reconocer números naturales ¿qué más puede aprender a hacer con ellos? y, más importante aún ¿puede inducir afirmaciones simples acerca de ellos? ¿puede aprender que la suma es conmutativa y que todo número tiene un siguiente a partir de intervenciones mínimas del entorno "social'' del mismo modo como la enseñanza incide en el aprendizaje de un alumno?
Y además, ¿que puede sugerirnos todo esto sobre el modo como la intuición matemática está montada en nuestro cerebro?

Queda planteado el tema. Ya me dirán si hay interés.
En línea

Mi primer gran deslumbramiento matemático consistió en comprender que puede demostrarse que existen infinitos de diferente tamaño.
El segundo fue comprender que lo anterior, aun pese a ser correcto, carece de todo significado.
Luis Fuentes
el_manco
Administrador
Pleno*
*****

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
España España

Mensajes: 40.608


Ver Perfil
« Respuesta #1 : 16/06/2017, 05:16:43 am »

Hola

 Cristian C, voy a comentar algo casi mas para intentar saciar mi curiosidad, que para aportar algo, porque sobre todo esto:

Cita
neuronas artificiales y distintas técnicas de redes neuronales: Perceptron, autocodificadores, "deep learning'' (aprendizaje profundo)

 estoy absolutamente "pez".

Cita
¿Es posible programar un ordenador para que aprenda los números naturales a partir de la experiencia, de un modo análogo a como lo hacemos nosotros?

 ¿Cómo se ha de entender exactamente la frase que he marcado en rojo?. ¿Qué significado preciso tiene que un ordenador "aprenda los números naturales"?.
 
 De hecho aunque coloquialmente todo el mundo entiende lo que es "aprender" algo, tengo incluso dudas de como hacer una análisis riguroso de ese concepto para un humano. ¿Cuándo se supone que una persona "ha aprendido los números naturales"?.

Saludos.
En línea
feriva
Pleno*
*****

Karma: +1/-0
Desconectado Desconectado

Sexo: Masculino
España España

Mensajes: 6.718



Ver Perfil
« Respuesta #2 : 16/06/2017, 06:41:01 am »


Hola, Cristian C.

Ayer iba a haber hecho un comentario, pero me pareció que podría ser poco interesante desde el punto de vista matemático e informático. Se me ocurre ponerlo en spoiler para que no abra una isla entre los comentarios que tengan una relación más directa y así facilitar la lectura del hilo.

Spoiler (click para mostrar u ocultar)

Saludos.
En línea

Cristian C
Pleno*
*****

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
Argentina Argentina

Mensajes: 482



Ver Perfil
« Respuesta #3 : 16/06/2017, 12:36:19 pm »

Hola a todos.

Dice el_manco

Cita
¿Qué significado preciso tiene que un ordenador "aprenda los números naturales"?

Peco de utilizar lenguaje técnico, en cierto modo.

Supongamos que queremos que un ordenador vea una imagen y nos diga si contiene un rostro humano o no lo contiene. Podríamos arbitrar que emita un "1" si contiene un rostro" o un "0" si no lo contiene. Dentro de la máquina, la imagen es una cadena de números (podemos ver luego como se digitaliza una imagen). Esa cadena de números es la entrada de nuestro programa. El 0 o el 1 son la salida. Visto así, el programa toma un conjunto de números y devuelve un número. Podemos verlo entonces como una función de muchas variables en una.

Pongamos ahora la lupa en el programa. Si un programador humano tuviera que hacer un programa semejante utilizando las técnicas normales de programación lineal, estaría en serios problemas. Tendría allí una ristra inmensurable de números y tendría que decidir cuales de esas innumerables combinaciones representa la imagen de un rostro humano en alguna parte de la imagen.

Entonces podemos hacer la siguiente jugarreta: que el programa se escriba solo.

¡Cómo!

Debemos disponer un algoritmo que construya la función que toma los números de la foto y devuelva un 1 o un 0 según el caso, como resultado de "ver" muchas fotos, muchos ejemplos donde alguien nos dice de antemano si hay un rostro o no. Pongamos por caso, que el algoritmo necesita ver 5000 fotos "etiquetadas" (esto es, con la respuesta ya conocida de antemano) para construir su función. Luego de eso, dejamos de variar los coeficientes de la función, la fijamos allí y la utilizamos. Si todo ha ido bien, le mostraremos una imagen (distinta de los ejemplos) y nos dirá con un aceptable grado de certeza si hay un rostro humano o no.

Esos algoritmos que pueden construir la función a partir de los ejemplos se llaman "redes neuronales" (hay otros, pero las redes neuronales se están consolidando como la idea más exitosa y pródiga).
Al proceso durante el cual le mostramos ejemplos para que la función se configure, lo llamamos "aprendizaje".
A la idea general de hacer que un ordenador construya el "programa" a partir de ejemplos, se lo conoce como "aprendizaje automático" (o "machine learning", en ingles)

Ahora voy a tu pregunta: Cuando hablo de que un ordenador aprenda los números, quiero decir, como primera y fundamental medida, que pueda ver una imagen y detectar cantidades (por ejemplo, si ya ha aprendido a reconocer rostros, autos y árboles, quiero mostrarle una imagen y que reconozca cuantos autos (árboles o rostros) ve allí.
Ese es el sentido que, por ahora, le estoy dando al concepto "aprendizaje de números", poder reconocer cantidades en imágenes (o en sonidos, que es muy análogo)

Naturalmente, nuestra idea de número natural va mucho más allá de reconocer cantidades de cosas en imágenes. Es necesario reconocer su ordinalidad, su cardinalidad, cómo operarlos, qué propiedades cumplen esas operaciones. Podemos hacer un programa fijo para que haga lo que nosotros queremos con los números, pero la meta es ver cómo un ordenador puede construir por aprendizaje estas capacidades a partir de ejemplos, mediante técnicas de aprendizaje automático. Y ver qué capacidades puede adquirir y cuales no.

Dice Feriva:

Cita
Un ordenador, lo que es el hardware, en sí no es nada más que algo capaz de guardar un programa,  el software, y ponerlo en funcionamiento; y esto último es sí mismo una colección de órdenes escritas por un ser humano, que, a la vez, se escriben usando un alfabeto (el lenguaje de programación que sea) también diseñado por un ser humano. De momento, creo que se puede decir que el “yo” de todo eso está “fuera” de la máquina y el programa.

Tal como dije, la idea es dar un algoritmo para que el programa se escriba solo. Naturalmente, el humano debe diseñar el algoritmo, pero incluso con el mismo algoritmo, el ordenador podrá aprender cosas distintas a partir de datos distintos, de distintas "experiencias"
Nada de esto hace consideraciones sobre el yo ni la conciencia ni nada de eso. No obstante hay que señalar que las redes neuronales, ese tipo de algoritmo para el aprendizaje, tienen importantes similitudes con el cerebro humano.

Claro, aún no sabemos cómo hace un cerebro para pensar, pero podemos saber exactamente cómo lo hace nuestro algoritmo, lo que puede servir para realizar algunas extrapolaciones muy generales.

Saludos.
En línea

Mi primer gran deslumbramiento matemático consistió en comprender que puede demostrarse que existen infinitos de diferente tamaño.
El segundo fue comprender que lo anterior, aun pese a ser correcto, carece de todo significado.
Carlos Ivorra
Administrador
Pleno*
*****

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
España España

Mensajes: 8.467


Ver Perfil WWW
« Respuesta #4 : 16/06/2017, 04:12:55 pm »

No estoy seguro de haber entendido el sentido exacto de lo que propones, pero aprovecho este mensaje para plantear mis dudas.

¿Es posible programar un ordenador para que aprenda los números naturales a partir de la experiencia, de un modo análogo a como lo hacemos nosotros?

¿Posible significa posible en la actualidad, con lo que se sabe sobre Inteligencia Artificial o posible en general, como algo que algún día podría hacerse?

En el primer sentido, mi respuesta es que ni idea. No estoy al corriente de qué se ha conseguido hacer en IA. En el segundo sentido mi convicción es que seguor que sí, aunque es algo que no se podrá demostrar hasta que no se haga, igual que nadie podía demostrar que una máquina más pesada que el aire puede volar hasta que no se construyó la primera.

¿Podrá concluir luego que deben existir infinitos de ellos?

En el primer sentido, ni idea, en el segundo, estoy convencido de que un ordenador puede hacer lo mismo que una persona, y eso incluye aprender y sacar sus propias deducciones. Si no sabemos cómo hacerlo es porque está feo experimentar con cerebros vivos más allá de ciertos límites, y porque, aunque se hiciera, sería difícil experimentar sin matar al cerebro antes de poder rastrear su funcionamiento.

Pongo estas preguntas descolgadas para disparar el tema. Veremos que la respuesta a la primer pregunta debe ser "sí'' (a partir del 2007) ,  en tanto que aún no estamos en condiciones de responder afirmativamente la segunda.

Deduzco de aquí que estás pensando en el primer sentido, aunque habría que matizar si ese "aprender" viable hoy en día es realmente equiparable a lo que aprende un humano cuando aprende a contar, etc.

Pero lo más importante es que una exploración del modo como un ordenador podría aprender los números a partir de la experiencia, traerá también algo de luz sobre el modo como estos conceptos matemáticos simples están afincados en nuestra mente. Fundar sospechas ciertas sobre esto último es dar un primer pasito decisivo en pos de los engranajes fácticos de la  "intuición matemática'' y del reconocimiento de su exacto papel a la hora de fundar la matemática.

Tal vez sí y tal vez no. Los aviones no vuelan exactamente siguiendo los mismos principios que los pájaros. Es posible que haya una forma de "aprender" más práctica que la del cerebro, del mismo modo que es más práctico que un avión no tenga que agitar las alas, pero es posible que no haya rodeos que valgan, y que un aprendizaje "auténtico" no tenga más remedio que seguir el mismo camino que sigue el cerebro para procesar la información.

Por esa razón es fundamental saber si hay interesados en en tema. Deberemos hablar de neuronas artificiales y distintas técnicas de redes neuronales: Perceptron, autocodificadores, "deep learning'' (aprendizaje profundo), reconocimiento de imágenes y por último, reconocimiento de cantidades a partir de imágenes. Esto último, creo yo, aún no se ha hecho, pero estimo que ya resulta holgadamente posible con las técnicas de IA (inteligencia artificial) existentes a partir del deep learning en adelante.

Yo de todo eso no sé nada y, para ser sincero, debo confesar que se aleja bastante de las cosas que ahora estoy interesado en estudiar. Simplemente por una cuestión de prioridades y gustos subjetivos.

Las redes neuronales artificiales tienen varias agradables analogías con el cerebro humano: Son una red de nodos muy interconectados capaz de reproducir características inteligentes como fenómeno emergente (la inteligencia es indefinible a nivel de los nodos pero sí como propiedad del conjunto interconectado). La inteligencia resultante es un fenómeno distribuido, al igual que ocurre en el cerebro.

Sí, algo leí sobre eso hace ya tiempo.

La proyección es simple de imaginar: si un ordenador puede aprender a reconocer números naturales ¿qué más puede aprender a hacer con ellos? y, más importante aún ¿puede inducir afirmaciones simples acerca de ellos? ¿puede aprender que la suma es conmutativa y que todo número tiene un siguiente a partir de intervenciones mínimas del entorno "social'' del mismo modo como la enseñanza incide en el aprendizaje de un alumno?

Pasajes como éste son los que me resultan más capciosos en tu planteamiento. Cuando dices "puede aprender" y luego preguntas "qué más puede aprender", no sé si presupones "con las técnicas con las que actualmente podemos hacer que aprenda algo", porque siempre cabe la posibilidad de que un ordenador aprenda cualquier cosa sobre los números naturales (que pueda aprender un humano) mediante técnicas que no tengan nada que ver con los procesos que se sabe programar hoy en día, pero sí con los procesos que realmente realiza el cerebro.

Y además, ¿que puede sugerirnos todo esto sobre el modo como la intuición matemática está montada en nuestro cerebro?

Pues depende de la medida en que los procesos programados se correspondan fielmente o no con los que sigue el cerebro. Si sólo hay similitud en los resultados, pero no en los medios, quizá las conclusiones que se puedan sacar sean modestas.

Esos algoritmos que pueden construir la función a partir de los ejemplos se llaman "redes neuronales" (hay otros, pero las redes neuronales se están consolidando como la idea más exitosa y pródiga).
Al proceso durante el cual le mostramos ejemplos para que la función se configure, lo llamamos "aprendizaje".
A la idea general de hacer que un ordenador construya el "programa" a partir de ejemplos, se lo conoce como "aprendizaje automático" (o "machine learning", en ingles)

Sí, pero el hecho de que un cerebro también haga eso no significa que la forma en que el ordenador lo haga sea similar al proceso que sigue el cerebro, y la diferencia puede ser sustancial en cuanto a lo que puede lograrse.

Naturalmente, nuestra idea de número natural va mucho más allá de reconocer cantidades de cosas en imágenes. Es necesario reconocer su ordinalidad, su cardinalidad, cómo operarlos, qué propiedades cumplen esas operaciones. Podemos hacer un programa fijo para que haga lo que nosotros queremos con los números, pero la meta es ver cómo un ordenador puede construir por aprendizaje estas capacidades a partir de ejemplos, mediante técnicas de aprendizaje automático. Y ver qué capacidades puede adquirir y cuales no.

Sí, pero en todo caso estarás viendo qué capacidades puede o no puede adquirir con unas técnicas más o menos predeterminadas. Si concluyeras que no puede, por ejemplo, aprender a sumar, eso no significa que no pueda aprenderlo mediante otras técnicas.

El mero hecho de tratar de aislar el problema al restringirlo a los números naturales ya puede ser artificial, en cuanto que es probable que el cerebro, no sólo no distinga, sino que combine técnicas de análisis de datos para pensar en números naturales, para entender el lenguaje, etc. Tal vez todo intento de enseñar a un ordenador a sumar que no vaya acompañado de enseñarle a hablar y a entender lo que escucha, aunque no sea sobre números, puede ser necesariamente limitado e incomparable con lo que entendemos por inteligencia humana.

Claro, aún no sabemos cómo hace un cerebro para pensar, pero podemos saber exactamente cómo lo hace nuestro algoritmo, lo que puede servir para realizar algunas extrapolaciones muy generales.

O no tan generales. Y no lo digo con escepticismo, sino simplemente con prudencia, sobre todo para recalcar que los resultados positivos podrían ser instructivos, pero los negativos no serían concluyentes en ningún caso.
En línea
argentinator
Consultar la FIRMAPEDIA __________________________________________________________________________________________________________________
Administrador
Pleno*
*****

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
Argentina Argentina

Mensajes: 7.154

Vean mis posts activos en mi página personal


Ver Perfil WWW
« Respuesta #5 : 17/06/2017, 03:02:20 pm »

Cita
Vamos al tema.
¿Es posible programar un ordenador para que aprenda los números naturales a partir de la experiencia, de un modo análogo a como lo hacemos nosotros? ¿Podrá concluir luego que deben existir infinitos de ellos?

"Programar" se refiere a "diseñar mediante un programa".
El diseño previo es equiparable al hardware, pues la computadora no puede cambiar su hardware ni tampoco puede cambiar su propio programa.

En cambio, "aprender" se refiere a aquellos aspectos que la computadora sí puede ir modificando en función de los datos que recibe a lo largo del tiempo desde el exterior.

A fin de crear un intelecto artificial que conciba los números naturales,
¿qué partes son admisibles como programa, y qué partes deben dejarse en libertad para que la computadora aprenda?

Para que la computadora entienda los números naturales, y podamos programarla, primero necesitamos nosotros mismos entender bien a los números naturales, así como también a las máquinas.

Durante milenios fue complicado para el ser humano referirse a números muy grandes, hasta que en la India a alguien se le ocurrió el invento genial del sistema de dígitos.

Conjeturo/sospecho/lanzo que la ocurrencia de ese sistema posicional de dígitos, que es una cuestión de mera representación, ha aparecido en consonancia con una comprensión más exacta de lo que son los números naturales.

A lo mejor la gente no entendía antes a los números naturales porque no les importaba demasiado la cuestión. Estaban más ocupados en levantar pirámides y en sus rituales de sangre.

Lo concreto es que una mejor representación de los números permitió, a mi juicio, una mayor sistematización de su estudio y de su comprensión. Si la representación es ágil, entonces las operaciones son más fáciles de hacer, y queda más tiempo libre para pensar cosas más profundas.

--------------

Resumiendo. Que a lo mejor a la computadora tendrías que ponerla en una situación en la cual necesite elaborar el concepto de números naturales.

Y también que tenga la necesidad de representar cantidades de una forma eficiente.

La representación escrita de los números surge a partir de la necesidad de transmitir información numérica entre personas.

Así que no te basta con una computadora.
Te hace falta una sociedad de computadoras, que tengan la necesidad de comunicarse entre sí.

La información transmitida lleva siempre una codificación, que requiere un consenso ortográfico y gramatical de todos los elementos de la "sociedad".

La cuestión es que, al llegarle a una "máquina" una determinada información, tiene que "decodificarla", para darle un sentido.
¿Qué "sentido" interno le da una computadora a una información numérica?

Tendrá algún "sentido" si puede establecer comparaciones con experiencias propias previas. El "sentido" sería, me parece, para una computadora que está aprendiendo, una selección que la propia máquina hace para codificar información internamente, según sus propias experiencias y sus propias "necesidades" (las necesidades son las que el programador le haya establecido previamente en el programa original).
La eficiencia en la manera de guardar información en memoria podría ser una de esas necesidades.

Es decir, la máquina no sólo ha de "aprender" con el fin de entender la realidad externa, sino también deberá aprender a reconfigurarse internamente.

Si en esa reconfiguración, el concepto de número natural surge, sobrevivirá, y si no, quién sabe.



En línea

feriva
Pleno*
*****

Karma: +1/-0
Desconectado Desconectado

Sexo: Masculino
España España

Mensajes: 6.718



Ver Perfil
« Respuesta #6 : 17/06/2017, 05:12:30 pm »



Dice Feriva:

Cita
Un ordenador, lo que es el hardware, en sí no es nada más que algo capaz de guardar un programa,  el software, y ponerlo en funcionamiento; y esto último es sí mismo una colección de órdenes escritas por un ser humano, que, a la vez, se escriben usando un alfabeto (el lenguaje de programación que sea) también diseñado por un ser humano. De momento, creo que se puede decir que el “yo” de todo eso está “fuera” de la máquina y el programa.

Tal como dije, la idea es dar un algoritmo para que el programa se escriba solo. Naturalmente, el humano debe diseñar el algoritmo, pero incluso con el mismo algoritmo, el ordenador podrá aprender cosas distintas a partir de datos distintos, de distintas "experiencias"


Bien. Pues, como ya se ha dicho, depende un poco de cómo se entienda la palabra aprender. Un programador, puede escribir una rutina que genere números naturales aleatoriamente (y no son realmente aleatorios, son pseudoaleatorios, pues después de muchos números generados se repiten secuencias porque al fin y al cabo también se trata de una rutina, interna, pero igualmente programada por alguien).

Si se considera que cuando sale un número par, por ejemplo, perdemos en un juego, este suceso se puede almacenar y, mediante una orden condicional, decirle a la máquina que se salte los pares a partir de esa “experiencia”; es un ejemplo muy sencillo, pero lo mismo se puede pensar con algo más complicado, como el muñeco de un videojuego que pierde una vida cuando pasa por una puerta  o cuando transcurre cierto tiempo almacenado en el reloj interno mientras está dentro de una habitación; existen unos datos que se guardan y unas órdenes condicionales para que el muñeco vaya “goto” a otro sitio.

En este enlace hay algo así y se habla de inteligencia artificial

https://www.xataka.com/robotica-e-ia/la-imposible-partida-perfecta-a-ms-pac-man-la-ha-conseguido-como-no-la-inteligencia-artificial

Si es así como digo, con condicionales programados sobre datos que se van a almacenar (que no lo sé porque no sé cómo es el código del programa) yo no le llamaría aprendizaje: lo que hace la máquina, lo hace porque está previsto por el programador según qué sucesos pseudoaletorios puedan ocurrir; si no son pseudoaleatorios, menos todavía, porque son sucesos "creados" de forma directa y esperables.

Por supuesto que el programador no sabe en qué orden van a ocurrir esos sucesos (como nos pasa a cualquiera cuando programamos y pones una rutina “random”) entre otras cosas porque el programador, normalmente, es el usuario de un lenguaje de más nivel que el que usa la máquina; y que ha programado a su vez otro programador distinto. Pero sí sabe lo qué hará cuando aparezcan esos datos “negativos” o “positivos” porque los condicionales, la decisiones que tiene que tomar el muñequito, sí que se las ha dado el programador; vamos, ya digo que por lo que yo conozco y lo que creo que existe hasta hoy.

Por mi parte, a mí, no se me ocurre cómo un programa puede tomar un camino u otro sin una sentencia “if” previamente introducida por un programador; que no quiere decir que no pueda llegar a ocurrir algún día, pero ya digo que lo veo difícil, hasta el punto de que ni me imagino cómo se podría lograr.


Saludos.   
En línea

argentinator
Consultar la FIRMAPEDIA __________________________________________________________________________________________________________________
Administrador
Pleno*
*****

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
Argentina Argentina

Mensajes: 7.154

Vean mis posts activos en mi página personal


Ver Perfil WWW
« Respuesta #7 : 17/06/2017, 07:24:54 pm »

Ah, me olvidé aclarar que sólo leí la pregunta original de Cristian,
así que pido disculpas si se discutieron luego cosas parecidas o relacionadas con las que puse en mi anterior post, y no las tuve en cuenta.

Saludos.
En línea

Cristian C
Pleno*
*****

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
Argentina Argentina

Mensajes: 482



Ver Perfil
« Respuesta #8 : 20/06/2017, 12:55:54 pm »

Hola a todos.
(Veamos si puedo escribir una respuesta y no perderla en el intento de enviarla)

¿Es posible programar un ordenador para que aprenda los números naturales a partir de la experiencia, de un modo análogo a como lo hacemos nosotros?

¿Posible significa posible en la actualidad, con lo que se sabe sobre Inteligencia Artificial o posible en general, como algo que algún día podría hacerse?

Es posible significa, es posible avanzar en ese sentido a partir de las técnicas actuales, esto es, trabajando principalmente con redes neuronales (aunque no exclusivamente).

Si no sabemos cómo hacerlo es porque está feo experimentar con cerebros vivos más allá de ciertos límites, y porque, aunque se hiciera, sería difícil experimentar sin matar al cerebro antes de poder rastrear su funcionamiento.

No necesariamente. Podría ser que no sepamos cómo hacerlo porque todavía no se nos ha ocurrido cómo hacerlo, independientemente de cómo lo haga el cerebro.

Deduzco de aquí que estás pensando en el primer sentido, aunque habría que matizar si ese "aprender" viable hoy en día es realmente equiparable a lo que aprende un humano cuando aprende a contar, etc.

El concepto de aprendizaje en IA es equiparable al aprendizaje biológico en ciertos respectos y no lo es en otros. Concretamente, se equiparan en el desempeño pero no en los detalles como se obtiene ese desempeño.
En ambos casos, se adquiere la capacidad de desempeñar una tarea luego de haberse entrenado para ello a partir de la experiencia. Ese es el desempeño al que, en el caso de la IA, llamamos "aprendizaje automático" (y solo se logra en algunas tareas, por ahora). Respecto a los engranajes detallados que consiguen ese desempeño, estamos seguros de que son diferentes. Sin embargo, existen similitudes generales.

Ambos están constituidos por redes de nodos por los que se transmite una señal (eléctricidad, en el caso de las neuronas y números entre 0 y 1 en el caso de las neuronas artificiales); ambas redes requieren de un aprendizaje o entrenamiento que fuerza su construcción a partir de la experiencia; en ambas, el desempeño alcanzado es un fenómeno emergente, que no puede localizarse en los nodos particulares. Hay otras similitudes más respecto a la forma en que estan conectados esos nodos, que se están estudiando.
Resulta subjetivo evaluar si estas similitudes son importantes o menores.

Las tares que la IA puede desarrollar, por ahora, son modestas e impresionantes a la vez. Podemos entrenar a una red neuronal para que "aprenda" a reconocer imágenes, habla, escritura manuscrita, a jugar al gó, o al pac—man (como mostró feriva), a conducir un autómovil, para que escanee nuestro cerebro y reproduzca en una pantalla lo que estamos viendo (o imaginando), etc.
Las redes neuronales logran hacer todas estas cosas cuando las entrenamos a partir de datos concretos. Una red neuronal o un ensamble de ellas que no ha sido entrenada con datos, no logra hacer nada. Tiene un comportamiento aleatorio. Y la misma red puede aprender a realizar tareas diferentes cuando la entrenamos con datos diferentes. Una vez que la red está entrenada para desarrollar una tarea, se fijan todos sus coeficientes (porque realmente es una gran función) y se la utiliza sin más. A partir de ese momento ya no hay entrenamiento ni aprendizaje. El algoritmo solo ejecuta la tarea.

El mero hecho de tratar de aislar el problema al restringirlo a los números naturales ya puede ser artificial, en cuanto que es probable que el cerebro, no sólo no distinga, sino que combine técnicas de análisis de datos para pensar en números naturales, para entender el lenguaje, etc. Tal vez todo intento de enseñar a un ordenador a sumar que no vaya acompañado de enseñarle a hablar y a entender lo que escucha, aunque no sea sobre números, puede ser necesariamente limitado e incomparable con lo que entendemos por inteligencia humana.

El hecho de aislar el problema ES decididamente artificial, pero no hay otra  forma de avanzar que aislando problemas, buscando soluciones y luego integrando esas soluciones.
Si queremos que una red neuronal aprenda a reconcocer la cantidad de rostros, autos o árboles que hay en una imagen, primero debe ser capaz de reconocer rostros, autos y árboles, y luego cantidad, pero uno podría entrenarla para que aprenda lo segundo a partir de ejemplos abstractos y luego integrar ese aprendizaje con el reconocimiento de  objetos. El cerebro no lo hace de esta manera.
Como dices, para que un algoritmo pueda aprender a sumar a partir de ejemplos, debe desarrollar la capacidad de interactuar con nosotros (con los ejemplos que le presentamos) a través de un lenguaje común. Para esto, debe "etiquetar" los objetos reconocidos mediante las mismas palabras que nosotros utilizamos para referirlos. Claro, también deberá etiquetar las relaciones, las operaciones y las afirmaciones, lo que ya es aprender un lenguaje. No hay problemas con esto, aunque sí con otras cosas.

La intuición aritmética es el reconocimiento que realiza nuestra mente de ciertos elementos generales (las cantidades) y de ciertas afirmaciones también generales referidas a ellos, que generalmente se visualizan en un espacio y un tiempo abstractos. Es cierto que las redes neuronales todavía no avanzaron en esto. Apenas unos tímidos pasos en el reconocimiento espacial (me refiero a las redes neuronales, no a los programas fíjos que sí pueden reproducir un espacio coordenado. Pero no lo aprenden; hay que programarlo "a mano").

Claro, aún no sabemos cómo hace un cerebro para pensar, pero podemos saber exactamente cómo lo hace nuestro algoritmo, lo que puede servir para realizar algunas extrapolaciones muy generales.

O no tan generales. Y no lo digo con escepticismo, sino simplemente con prudencia, sobre todo para recalcar que los resultados positivos podrían ser instructivos, pero los negativos no serían concluyentes en ningún caso.

Esto no lo sabemos. Alguna vez me maravillé de que, siendo una construcción de origen biológico, la intuición matemática pudiera producir resultados tan abrumadoramente certeros, consistentes y comunes a todos nosotros. Esta no es la regla en los constructos biológicos. Lo normal es la presencia de pequeñas excepciones, matices, heterogeneidades entre unos y otros sujetos. Pero no es así con la intuición aritmética. Todos llegamos a las mismas conclusiones sin el más mínimo desvío. Entonces uno se pregunta ¿a qué se debe tanta exactitud, consistencia y concenso?
Tal vez el diseño de una estructura artificial que pueda hacer lo mismo nos de la pista de la respuesta.

A fin de crear un intelecto artificial que conciba los números naturales,
¿qué partes son admisibles como programa, y qué partes deben dejarse en libertad para que la computadora aprenda?

La parte que le debemos suministrar al ordenador es un algoritmo matemático y un conjunto de datos para entrenarlo con un fin. El algoritmo tiene dos elementos:

Una función inicial [texx]P_0[/texx] que se aplica a un vector de datos numericos [texx]\vec{v}[/texx] y devuelve una salida [texx]P_0(\vec{v})[/texx], que puede ser un número o un vector de ellos. Ahora bien, [texx]P_0[/texx] puede tener miles de coeficientes, pero son números aleatorios entre 0 y 1.

El segundo elemento es el algoritmo que permite producir una sucesión de funciones [texx]P_i[/texx] modificando sus coeficientes para que la sucesión de funciones tienda a producir el resultado esperado.

Vamos a un ejemplo concreto. Supongamos que el vector de entrada son los números de píxceles de una imagen, suministrados línea por línea, y la salida es un real entre 0 y 1. Ahora queremos refinar nuestra función inicial [texx]P_0[/texx] para que aprenda a reconocer rostros en las imágenes. Nuestra intención será que si el vector de entrada representa una imagen con rostro humano, la salida sea 1 y en caso contrario, 0.
Entonces comenzamos el entrenamiento. Le "mostramos" una imagen (aplicamos [texx]P_0[/texx] al vector de sus píxceles) y vemos qué calcula. Como los coeficientes de [texx]P_0[/texx] son aleatorios, calculará cualquier número entre 0 y 1. Entonces comparamos lo que calculó con lo que debería haber calculado y evaluamos el error cometido. Ahora corregimos un poco los coeficientes de la función para que la próxima vez se equivoque menos. Esta corrección se hace con derivadas parciales de la funcion de error y proporciona otra función [texx]P_1[/texx] idéntica a [texx]P_0[/texx] pero con los coeficientes corregidos. Si volviéramos a correr la misma imagen, cometería un error menor, pero en lugar de eso, le mostramos otra imagen distinta, le volvemos a informar el resultado deseado y dejamos que calcule el error otra vez y se vuelva a corregir, para obtener [texx]P_2[/texx].
Luego de hacer esto muchas veces, con muchas imágenes distintas con resultados informados por nosotros, el algoritmo llega a una función [texx]P_n[/texx] donde el error cometido ya no se reduce substancialmente respecto a la corrida del ejemplo anterior. Allí paramos la fase de entrenamiento y fijamos todos los coeficientes.
Si lo hicimos bien, la función [texx]P_n[/texx] será capaz de reconocer aceptablemente si una imagen tiene un rostro o no. Podemos medir con qué certidumbre lo hace aplicándola a imágenes y viendo que nos informa.

En la actualidad, se logran reconocimientos de imágenes con un error del orden del 4%. Se utilizan redes basadas en este algoritmo de aprendizaje pero con diferentes técnicas de entrenamiento y otros matices muy ingeniosos.

Entonces, la parte que debe proporcionársele al ordenador es el algoritmo y los datos de entrenamiento. El algoritmo  adquirirá la habilidad para la que fue entrenado. Si en lugar de informarle durante el entrenamiento que debía calcular 1 cuando existiera un un rostro, le hubiéramos informado que debía calcular 1 cuando existiera un automóvil, el mismo algoritmo habría adquirido la capacidad de identificar automóviles.

Ahora imaginemos un algoritmo puesto a reconocer cantidades...




En línea

Mi primer gran deslumbramiento matemático consistió en comprender que puede demostrarse que existen infinitos de diferente tamaño.
El segundo fue comprender que lo anterior, aun pese a ser correcto, carece de todo significado.
argentinator
Consultar la FIRMAPEDIA __________________________________________________________________________________________________________________
Administrador
Pleno*
*****

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
Argentina Argentina

Mensajes: 7.154

Vean mis posts activos en mi página personal


Ver Perfil WWW
« Respuesta #9 : 20/06/2017, 03:09:51 pm »

Por un lado veo que hacés una pregunta de base más filosófica.
Por otro lado me respondiste explicando la metodología habitual, que de por sí es cuestionable filosóficamente.

No hay ninguna prueba de que poniendo suficientes datos de entrenamiento, la máquina llegue a reconocer rostros como lo hace un humano.
Ademàs, nada garantiza que un humano X sea bueno distinguiendo un rostro de un no-rostro.
Hay quienes ven el rostro de Jesús donde otros sólo ven una mancha en la pared.

Los números son una construcción mental producto de un proceso de abstracción.
Para poder decir que una máquina intuye los números, hay que dar algún concepto preciso de lo qud significa realizar un proceso de abstracción.

Podría suceder que el concepto de ''poder de abstracción'' termine necesitando referirse a alguna entidad básica como los números naturales.

En línea

Cristian C
Pleno*
*****

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
Argentina Argentina

Mensajes: 482



Ver Perfil
« Respuesta #10 : 20/06/2017, 05:48:13 pm »

No sé cual es la parte filosófica de la pregunta.

La precisión en el reconocimiento de objetos se prueba midiéndola. Los datos de 2015 son 96,4% (hay una competencia que se realiza todos los años. La vienen ganando unas redes llamadas "convolutivas"). En muchas tareas la IA ya supera la performance humana, como ser, el diagnóstico de enfermedades.

Una abstracción es una generalización que se realiza a partir de un conjunto de observaciones repetitivas. El algoritmo que describí es un generalizador por excelencia.
Las redes llamadas "deep learning" encuentran patrones en imágenes aún antes de que le digamos lo que estamos buscando.
En línea

Mi primer gran deslumbramiento matemático consistió en comprender que puede demostrarse que existen infinitos de diferente tamaño.
El segundo fue comprender que lo anterior, aun pese a ser correcto, carece de todo significado.
Páginas: [1]   Ir Arriba
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.1 | SMF © 2006, Simple Machines LLC XHTML 1.0 válido! CSS válido!