Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





conciencia en software

Iniciado por hipatya, 11 de Abril de 2007, 10:12:20 PM

« anterior - próximo »

Mars Attacks

Aquí estoy de nuevo. El problema en cuestión (uno de tantos) se llama el Problema de Correspondencia de Post. Le he tenido que pedir prestada la información a mi querida profa de TALF, menos mal que no se puede suspender con carácter retroactivo :D

Copipasteo su correo, que lo explica mu bien.

Hay una frase muy buena de Penrose: Cualquier niño, si ve una cuerda
colgando del techo tira de ella, con la curiosidad de saber qué va a
pasar. El día que consigamos que un ser artificial inteligente haga lo
mismo (sin instrucción precisa), empezaré a creer que la IA será
posible ;-)

No pongo el (sic) ni las comillas, porque no es literal, es una
versión libre de la frase (pero creo no haber modificado la esencia
:-) )

Un humano puede resolver el problema de la parada. Definiendo el
invariante de un bucle y estableciendo una función limitadora se puede
concluir y demostrar la finitud de cualquier bucle. ¿Qué ocurre? lo de
siempre: tanto la formulación del invariante como el establecimiento
de la función limitadora no es automático. Igual que no hay teorema de
los teoremas (lo que buscaba Hilbert y todo el movimiento del
formalismo, http://www3.uji.es/~martine/DOC/E45/apuntes/node20.html),
pero los seres humanos pueden demostrar teoremas.

De todas formas, leyendo el peñazo ese que está ahí enlazado y
saltándose los dos apartados de definiciones y eso, se llega aquí :
http://www3.uji.es/~martine/DOC/E45/apuntes/node23.html, que nos
recuerda que hablamos de una Tesis: sólo es computable lo que puede
resolver una MT y sobre esa afirmación levantamos la teoría de la
computación, tal y como la conocemos. Dentro de esa teoría se puede
demostrar que hay porblemas indecidibles, como el de la Parada que
admite desde demos poéticas

http://www3.uji.es/~martine/DOC/E45/apuntes/scooping.pdf

;-)

hasta demos en C:

http://www3.uji.es/~martine/DOC/E45/apuntes/parada.html

pasando por las formales :

http://www3.uji.es/~martine/DOC/E45/apuntes/node38.html

Pero igual parece muy metafísico. Vamos a jugar al dominó, para eso
adjunto pantallazo de la def del PCP. Sirve para aprender a jugar. El
reto está en constestar a la pregunta: De los PCPs propuestos en
PCP1.png y PCP2.png, ¿cuántos tienen solución y cuántos no la tienen?

Nota del copiadordemails: subo los pngs de los que habla en los siguientes enlaces:

http://www4.uji.es/~al024459/PCP.png
http://www4.uji.es/~al024459/PCP1.png
http://www4.uji.es/~al024459/PCP2.png

P.D.1: Me refiero a una IA dura.
P.D.2: Pues entonces no sé qué hago haciendo programando videojuegos. Le diré a Vicente que me programe un programador de videojuegos :D

Daemon

Hola Mars,

como sigamos asi vamos a tener un sitio reservado en este bar, jeje... :wink:.

Intento contestarte, rapido, mal y al vuelo, con lo que me dejare algunas cosas en el tintero. Contestarte bien requiere mas tiempo del que tengo ahora mismo :(, de todas formas intentare documentarme mejor y responder en condiciones :roll:.

Penrose es un devoto de la IA debil (al menos hasta donde yo lei de sus obras, es decir el primer libro que se llamaba La Mente del Emperador). Eso de decir lo de la curiosidad del niño y quedarse tan fresco es bastante tipico suyo, por que no se llega a preguntar que es realmente eso de la "curiosidad" que fundamentos tiene y por que es util. Hay otro autor J.R. Anderson, mas afiliado al campo de la psicologia cognitiva, y cuyas teorias a mi me gustan bastante. Este hombre tiene un libro "The Adaptive Character of Thought" en donde intenta explicar los fundamentos del sistema cognitivo humano y algunas de sus peculiaridades y lo hace basandose en dos principios evolucion y racionalidad. Basicamente indica que todos los procesos que el ser humano posee cognitivamente hablando son por asi decirlo producto de que han sido útiles para la evolucion y el exito de la especie, incluidos los sentimientos (y por supuesto la curiosidad). Con esto decir que, por ejemplo la curiosidad, es un proceso que esta ahi por algo, con una funcion determinada y util (en algun momento lo fue y perduro) y por tanto caracterizable en base a esa funcionalidad. Vamos, que esas "determinadas instrucciones" para tirar de la cuerda tambien las tenemos nosotros.

Sobre el problema de la parada, el truco esta en que es un paradoja y nisiquiera los humanos somos capaces de resolverlas. Tu dices que con un invariante del bucle y estableciendo una funcion que limite. Lo de la funcion limitadora es salirse de las condiciones del problema (si para -> no para, no es que pare a los 1000 iteraciones, si es eso a lo que te refieres), pero bueno aceptando incluso eso, si tu eres capaz de pensar en algo que resuelva algun tipo de problema de la parada para una clase de programas pues seguro que puedes ponerlo en forma de algoritmo.

Lo del PCP al menos A, C, D la tienen, la de B no la he encontrado y los otros no los he mirado (que me tengo que ir).

Re P.D.2: tchissst! Calla, calla que nos quita el curro! : :lol:
Imagina todo lo que puedes hacer. Despues hazlo.

Mars Attacks

Mira el segundo png, que es el divertido :) Dime tú si eres capaz de algoritmizar el razonamiento que haces para darte cuenta de que en algunos casos no hay solución.

Daemon

Me vas a tener que perdonar Mars, pero tengo una fecha de entrega de un prototipo y me gustaria acabar antes del viernes la implementacion basica.
De todas formas resulta muy interesante lo que planteas, te aseguro que este finde lo miro e intento poner lo que saque (o segun dices, lo que no saque :)) en forma de algoritmo. Aunque sin mirarlo ni nada, voy a aventurar una pequeña conjetura (seguro que me equivoco, o sea que no me hagas mucho caso). Ahora que dices lo de algoritmizar el metodo para determinar los PCP que no tienen solucion y como antes habias expuesto lo del problema de la parada supongo que no me valdra decir que me he cansado de combinar cadenas :P (lo que por otro lado es una tarea infinita) y por eso no tiene solucion :). Supongo que "darse cuenta" de que ciertos casos no tienen solucion resulta equivalente a decidir que estructuras son incompatibles o no encajan con lo que se requiere y que esas estructuras tienen, en general una cierta forma. Si es asi yo juraria que si se puede, pero bueno ya lo vere...

De todas formas, si no nos hemos quedado solos en este bar, supongo que tambien habra gente aceptando el reto, ¡que varias cabezas piensan mas que una sola! :D

¡Saludos, hasta este finde!
Imagina todo lo que puedes hacer. Despues hazlo.

Mars Attacks

De todas maneras, ya te ayudo: tú puedes "darte cuenta", y un programa, no. Te puedes dar cuenta porque tienes mayor poder computacional (resuelves problemas de una complejidad mayor de la que puede resolver un ordenador-MT), porque puedes "salir" de ese sistema hasta un nivel de razonamiento superior en el que no estás limitado a las reglas del sistema. Gödel y esa mala gente, supongo.

En fin, que matemáticamente no se puede (con esa arquitectura al menos, insisto; de ahí que opine que la conciencia debe tener un cambio cualitativo debido a su estructura).

Daemon

Hola Mars,

lo prometido es deuda. He estado mirando el pcp2 (de hecho solo he mirado el ejemplo e) que no tiene solucion y me centrado en conseguir un algoritmo general que resuelva cualquier pcp y eventualmente te diga si este no tiene solucion (tampoco estoy dispuesto a llegar a mas, eso se lo dejo a los matematicos :)). Expongo el algoritmo en lenguaje natural (la estrategia es busqueda en profundidad):

1 Comenzar por una pareja de cadenas que empiecen por las mismas letras. Si esto no es posible no hay solucion (obviamente :D).

2 Mientras las cadenas no sean iguales y haya solucion

2.1 Si las cadenas cubiertas son distintas, no hay solucion en el estado actual.

2.2 Escoger otra pareja de cadenas que comience por las siguientes letras no cubiertas. Si esto no es posible no hay solucion en el estado actual.

2.3 Comprobar si las letras no cubiertas de la pareja escogida en el estado actual son iguales a las letras no cubiertas de un estado anterior (comprobar ciclos). Si esto es asi, no hay solucion en el estado actual.


El algoritmo en accion con el ejemplo e, (las letras en mayusculas y entre parentesis son estados):

 ab       ba    
 --- > ----- <-- ESTADO A2 NO HAY SOLUCION (caso 2.1)
/ a       bab

          b
 (B)     --- <-- ESTADO BA1 NO HAY SOLUCION (caso 2.2)
\ ba   /  aa  
 ----            ba
 bab            ----  <-- ESTADO BAB1 NO HAY SOLUCION (caso 2.1)
       \ ba   /  bab       b
          ---             >  --- <-- CICLO ESTADO BA1 NO HAY SOLUCION (2.3)
           ab \ ba           aa
                  --- <-- CICLO ESTADO B, NO HAY SOLUCION (2.3)
                   ab

Como vemos esto no tiene mas historia, pero ahora vamos a lo interesante y que es lo que supongo que tu preguntabas ¿Como me he "dado cuenta" de todo esto?

1º Estableciendo un objetivo:
  "La cadena de arriba y abajo del PCP tienen que ser iguales"

2º Sacando condiciones que impiden cumplir con ese objetivo:
   - "La 1ª pareja de cadenas arriba/abajo empiezan por las mismas letras, sino no hay solucion"
   - "Las siguientes cadenas tienen que empezar por las siguientes letras no cubiertas, sino no hay solucion"
    - "Si en algun momento las cadenas cubiertas son incompatibles, entonces no hay solucion"

3º Utilizo la definición del problema y empleo las condiciones descubiertas:

    -"Aplico operadores (escoger una pareja de cadenas y juntarlas con las ya hay) para crear un arbol de estados para cada operador aplicado. Si alguna de las condiciones descubiertas no se cumple entonces no hay solucion en ese estado y continuo con otro. Si obtengo un estado con 2 cadenas de la misma longitud y compatibles -> hay solucion".

Vamos a seguir desmenuzando el "dado cuenta". Pasemos del cómo al por qué, y continuemos el proceso de abstraccion (algo importante, ya estamos en lo que tu llamabas procesos) con una serie de preguntas:

1º ¿Por qué establezco un objetivo?
A partir de unas condiciones que me dan tengo que llegar a un estado en que se cumplan otras condiciones. Estas condiciones últimas son el objetivo que tengo que cumplir.

2º ¿Por qué busco condiciones que impiden cumplir con ese objetivo?
Las especificaciones de un problema contienen información util y en algun momento de mi vida aprendi que es bueno limitar el espacio de busqueda.

3º ¿Por qué aplico operadores?
De manera un tanto burra, si quiero conseguir algo, algo tengo que hacer. Lo que puedo hacer me lo dice el problema.

Si seguimos para arriba todo esto de aqui, es un proceso de analisis medios-fines que algoritmizaron unos señores llamados Newell, Simon y Shaw en un sistema denominado GPS (General Problema Solver, mas o menos en los años 60) y es en lo que se basa toda la teoria de la planificación. De forma mas básica un mecanismo de deduccion o inferencia es la base de cualquier sistema experto, pero ¿cual es el proceso mas simple que hay que poseer sobre el que se construye todo esto? Respuesta: el reconocimiento de la igualdad/parecido/semejanza de dos entidades. Si quieres llamalo ligadura logica, si quieres llamalo "pattern matching".
Todos estos procesos son parte de lo que se considera comunmente "inteligencia" y han podido ser algoritmizados, siendo procesos bastante generales cuyos resultados mas que nada dependen del conocimiento que manejan y no del proceso que realizan en si.

Ten en cuenta una cosa, hay personas que no serian capaces de decir con seguridad cuando un PCP tiene solucion, y lo que dirian seria lo que te dije yo al principio "no tiene solucion por que me he cansado de combinar y no la encuentro", pero unicamente por que no han aprendido o no dominan correctamente estos procesos. Tienen la capacidad, pero no el conocimiento.

Tampoco quiero decir que ya todo sea perfecto y que todo lo que hacemos a nivel cognitivo los humanos lo puedan realizar las maquinas, en absoluto. Ciertamente hay cosas que siendo maquinas simbolicas encerradas en su propio mundo y sin relacion con el mundo externo mas que por unos interfaces de entrada muy simples limitan enormemente el tipo de inteligencia que pueden desarrollar, pero con otras (no quiero decir a nivel teorico).

Que rollazo he soltado.  :)
Imagina todo lo que puedes hacer. Despues hazlo.

Mars Attacks

No tengo demasiado tiempo (ni ganas ahora mismo) para ponerme a buscarle las cosquillas a tu solución pero, para abreviar, vayamos un paso más allá: incluso si tu solución fuera buena, tú puedes salir del sistema, mientras que un programa, no; no puedes programar un programa que obtenga automáticamente esos procesos deductivos para problemas genéricos (por ejemplo, que con las reglas del ajedrez te programe una IA que juegue a él, o a un FPS, o al tetris, lo mismo que te resuelve puzzles como éste o cubos de Rubik).
Volviendo a lo dicho, mientras tengas que ser tú quien le dé el patrón de comportamiento, la inteligencia real eres tú. El programa estará siempre limitado a los patrones que le hayas marcado (incluso a los patrones de inferencia que puedas programarle), mientras que tú no lo estarás.

Por cierto, felicidades por currártelo así :)

shephiroth

Muy buenas. No soy demasiado ducho en este tema, recien empiezo. Sobre los retos, creo que B no tiene, C tiene 1322, D tiene 13 (un poco pobre, pero weno xDD), E no tiene, F tampoco, y en G me sale 1213.

Sobre el tema en concreto, hay una diferencia enorme entre la consciencia humana y una simulacion.....en la simulacion se utilizan valores absolutos o semiabsolutos, mientras que la consciencia humana es capaz de utilizar valores para nada absolutos. En todos los algoritmos actuales devuelven un valor absoluto (tiene solucion o no la tiene), nunca llegan a un momento en que no les merezca la pena continuar con el proceso (en realidad no tienen capacidad de decision como para dejarlo).

Mars Attacks

Recopipasteo un mail que me han mandado sobre esa entrada :)

En lo de los ciclos ha estado hábil.
Pero no siempre se pueden detectar :-) , que se lo digan a pi ;-)

De todas formas, evidentemente, es posible que el algoritmo se pueda
refinar y refinar... partimos de una hipótesis sobre lo que es
computable y lo que no y esa hipótesis se puede revelar falsa,
implique eso lo que implique que no tiene por que ser malo... Y
refinando un proceso de cálculo podemos intentar acercarnos cada vez
más a nuestro proceso mental... y conseguir que el proceso mecánico se
asemeje cada vez más al nuestro.

Lo que me lleva a que ese mismo razonamiento también se puede aplicar
a nuestra mente. No sabemos a dónde nos puede llevar el refinamiento
del proceso de cálculo de un algoritmo ¿pero sabemos cuánto da de sí
nuestra mente?

Quiero decir, el reto era saber qué procesos puede hacer nuestra mente
que no pueda reproducir un ordenador. ¿Conocemos los límites de
nuestra mente? Hay quien insiste en que usamos muy poquitos
recursos, sólo un 10% o un 15%...

Igual ya es hacer trampa y meterse a filosofías baratas, pero ¿cómo
puedo simular algo de lo que no tengo ni idea de hasta dónde puede
llegar? Vamos, que tampoco me parece justo afirmar que estamos en
mantillas en procesos algorítmicos y hasta donde llegarán y no
reconocer que también lo estamos en el otro tema.

Me estoy explicando como el culo :-/. Que igual mi problema de
agnosticismo con la IA se debe precisamente a ese no saber cómo
funciono yo. Pero que bienvenido cualquier intento de simularlo que
nos lleve a mejorar algoritmos... y a aclararnos con nuestro cerebro,
claro.

Que buena falta hacen las dos cosas ;-)

Daemon

Buenas,

desde luego, no nos vamos a convencer el uno al otro (tampoco lo pretendo :)). Gente mas lista que yo ha defendido cada uno de las posiciones que adoptamos tu y yo ahora, y para cada posición habia una respuesta desde el otro bando, en lo que si estoy de acuerdo contigo es en lo de la estructura. Yo pienso que efectivamente las maquinas no podran desarrollar una inteligencia "humana" por que no poseen un cuerpo y no estan inmersas en un entorno que les requiere ciertas funciones (no solo las meramente cognitivas de mas alto nivel).  Lo que si creo que poseen es la capacidad para, una vez que se resuelva ese problema (y claro, se sepa mas sobre como funciona nuestro cerebro tanto a nivel de procesamiento, de estructura y de sistemas) reproducir la inteligencia que mostramos. Facil, claro que no. Posible, en el futuro lo veremos ( o no :? ).

Voy a dejar por aqui un enlace para el que este interesado en todo esto. Se trata de Searle y su habitacion china, junto con respuestas:
http://plato.stanford.edu/entries/chinese-room/#3 <-


Un saludo a todos!

PD: las prisas son malas consejeras, al parecer mi anterior post se corto y salio un poco descolocado, por lo que pongo el ejemplo aqui: http://imagina.openforyou.com/ejemploalgoritmo.png
Imagina todo lo que puedes hacer. Despues hazlo.

Esgaroth

Lo que yo creo (y tal vez sea muy cuestionado por esto xD) es que puede existir inteligencia artificial excesivamente superior a la nuestra. El hecho de que no la veamos porque no tengamos la capacidad suficiente no significa que sea posible. Es más, me parece que si bien la incompletitud de godel explica muy claro todo, aún así se podría lograr una presición casi matemática para controlar sistemas complejos. Para mí la IA que incluye "conciencia" es la IA que puede operar el campo de la filosofía, algo demasiado complejo.

Además ni siquiera nosotros conocemos a fondo la filosofía, y hasta personas que estudiaron toda su vida la materia pueden pensar cosas distintas.

Creo que es cuestión de que aprendamos a mirar el mundo de otra forma.

Mars Attacks

Me gustaría que te explicaras mejor, creo que no he entendido bien tus dos primeras frases.

Daemon

Pues tienes suerte Mars, por que yo estoy totalmente fuera de juego  :?
Por favor Esgaroth, podrias desarrollar un poquito mas, es que no te pillo (vamos que no te entiendo demasiado bien...)

Gracias.
Imagina todo lo que puedes hacer. Despues hazlo.

Esgaroth

NOOOOOOOOOOOOO XD, estube escribiendo 54324587 testamentos sobre IA  :(  y por un error que saltó en la PC se me borró lo que escribí :shock: ...

Y tanto que pensé.....

En fín, debo explicarles entonces qué era lo que quise decir:

Lo que quiero decir es que no existe un teorema de los teoremas, sino que existe (al menos hasta donde yo percibo) una ley de esfuerzo y respuesta, en la que las variables son, en promedio, directamente proporcionales. Esto se cumple tanto para cuando queremos mover un objeto con fuerza física como para cuando pensamos para programar un programa. Según mi punto de vista esto tendría que ser explicado con exactamente el mismo concepto.
Para hacer eso tendríamos que poder representar de alguna manera el mundo físico y el cognitivo y, mediante alguna transformada, hacer que sea "procesable".

Los dos tendrían reglas de decisión como si fueran una función, entonces solo tendríamos que ubicar la variable matemática, comunmente denominada X, dentro del intervalo donde, según las reglas de desición, sea favorable. Los perceptrones y algún que otro programa para identificar prioridades nos ayudarían a hacerlo.

Lo que dije con respecto al teorema de la incompletitud de godel, quise decir que no existía, según mi opinión, un teorema de los teoremas (además se contradice con mi teoría de la relación directamente proporcional entre el promedio de el esfuerzo y el promedio de la respuesta para un sistema dado, ya que con esfuerzo finito se obtendrían respuestas infinitas).
Lo que dije con respecto a filosofía es que el programa debería poder filosofar.

Espero que hayan podido entender Mars y Daemon (y sino les explico otra vez :o ).

Saliendo un poco de tema:

Me gustaría que juntos podamos desifrar al menos CUAL es el problema, es decir, ¿qué es lo que nos falta desarrollar para despejar dudas sobre el tema?

Tal vez sea una meta que sí podamos encontrar. Definir el problema. Y no hablo de matemáticas ni de computación, eso ya es demasiado pedir; pero aún así y todo, al menos es un comienzo, una puesta en acción.
Creo que las cosas se aprenden con comunicación, ya sea entre nuestras neuronas o entre nosotros. Si bien el tema que tratamos es muy complicado, la meta es lo menos ambiciosa posible, tal vez con un granito de arena de todos lleguemos a una medianamente difusa conclusión (a cambio de una gran difusa conclusión XD).

Daemon

Hola,

Citar
Para hacer eso tendríamos que poder representar de alguna manera el mundo físico y el cognitivo y, mediante alguna transformada, hacer que sea "procesable".

No se si con esto te estas refieriendo a que en nuestro cerebro a un nivel cognitivo lo que realiza es modelos del mundo real e intenta actuar sobre ellos, siendo esto un reflejo de como lo haria en el mundo real. En este sentido en el campo de la psicologia cognitiva existen autores que siguen esta idea, Barsalou, es el principal exponente con la teoria de los sistemas de simbolos de la percepcion, en la que expone que la forma de pensar de un ser humano esta ligada a como percibe y actua en el mundo. Un ejemplo y evidencia a favor de esta teoria es que un adulto cuando realiza una accion, por ejemplo golpear un balon, tiene una actividad cerebral determinada (controlando el movimiento que realiza dicha persona) que tambien se refleja cuando el usuario piensa en realizar dicha accion.
Este es un modelo muy interesante y que todavia no he visto realizado como un modelo computacional, algo así requeriria tener un sistema que comprendiera al menos un medio de percepcion (que puede ser visual) y un medio de actuacion sobre el entorno en el que se obtiene dicha percepcion. Un punto importante a destacar es que incluso las conceptos abstractos que no tienen representación en el mundo físico se formarían a partir de conceptos mas básicos que si la tienen y son procesados de formas distintas para sacar el concepto final (como el concepto de verdad o falsedad se sacaria mediante abstraccion de situaciones en las que se representa una afirmación en un contexto en la que esta es cierta o falsa). En ese punto y siguiendo un modelo como el propuesto por Barsalou creo que se podria empezar a esclarecer, o avanzar en como procesa la informacion nuestro sistema cognitivo.
Imagina todo lo que puedes hacer. Despues hazlo.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.