domingo, 2 de octubre de 2016

Cierre del Reto - Amin Mosri

Sinceramente yo creía que este proyecto de semana i, era más un curso intensivo de programación específico para inteligencia artificial. Este semana fue un verdadero reto para mí ya que la programación en python no es algo que yo practique diariamente, por lo tanto tuve ciertas dificultades personales a la hora de codificar mis ideas en el lenguaje de programación. Sin embargo, la misma práctica desarrollo del programa inteligente, me introdujo lo suficiente como para darme una idea de cómo se construye y los elementos que se pueden aplicar al programa. Desde conceptos como el aprendizaje automático hasta teoría de juegos, nos dimos la ardua tarea de investigar la forma de cómo traducir esas ideas a código.

Realmente recomiendo este reto. Porque es como tal un reto y no una actividad que no te dejara un aprendizaje. Pero si tuviera que recomendarlo, tendría que recomendarle a esa persona que se preparara y que practicara un poco la programación antes de entrar al concurso. Este reto se caracterizó por el esfuerzo de los equipos y entre mas entusiasmo le pusieran, su calificación se vería afectada positivamente.
El momento que menos me gustó del reto, fue en el primer concurso que hubo. Esto se debió a que justo en ese momento comencé a darme cuenta de la dificultad que iba a tener el curso y todavía cuando comenzamos a preparar nuestros programas para el torneo y nos enfrentamos a la dificultad de implementar un algoritmo eficaz para ganarle a todos, estaba dudoso de haber metido ese reto de semana i. Sin embargo una vez que comenzaron a salir los resultados del reto y empezamos a ver que no nos iba mal. Mi perspectiva cambió y todo el esfuerzo que implementamos en hacer nuestro programa, al final rindió frutos.

Agradezco a los profesores que estuvieron siempre disponibles para responder nuestras dudas y por haber implementado el reto de forma satisfactoria. Sobre todo agradezco por hacer de esta actividad un verdadero reto y no una actividad cualquiera. Me llevo mucho aprendizaje de los errores que tuve y también gracias a mi equipo que siempre estuvo unido a mi.


Cierre del reto (Astrid)

Tengo que admitir que cuando entré a este reto esperaba algo muy diferente, esperaba algo un poco más teórico y al ya haber finalizado este reto puedo decir que fue mucho más práctico.

La actividad que más me gustó fue el concurso de programación que tuvimos el primer día ya que me hizo recordar varias cosas que aprendí en mi curso de fundamentos de programación, que sinceramente pensé nunca volver a utilizar.

Una parte muy importante de este reto que no me agradó tanto fue la competencia que se generó entre equipos, no considero tan agradable que la evaluación del reto haya sido en forma de una competencia, a pesar de esto considero que no se generaron rivalidades entre los equipos y tampoco me imagino como podría ser otra forma de evaluación de este reto y aunque a mi personalmente no me fue mal en los resultados finales me toco ver a mis compañeros de otros retos muy tristes por no haber alcanzado los objetivos esperados.

También otro cambio que le haría al reto sería el manejo de los tiempos, ya que considero que para hacer el jugador estratégico es necesario más tiempo para así tener mejores resultados.

Finalmente considero que el reto fue muy estresante pero a la vez muy divertido y que aprendimos mucho porque pudimos ver a que se refieren cuando se habla de inteligencia artificial ya que en mi caso no tenía muy claro el concepto de inteligencia artificial y después de este reto, de las actividades y la película entendí muy bien el concepto, además de que lo pusimos en práctica.

Cierre del reto - Miguel Pérez

Como aprendizaje principal sobresalto el que antes no sabía en realidad cómo es que se programaba AI para un uso específico. En este reto fuimos capaces de meter las manos en la elaboración de un programa que jugara por sí solo sin la intervención de un humano. Aprendí que para que la inteligencia del programa sea muy avanzada, se necesita de un nivel de abstracción muy complejo en el cual todas las alternativas posibles están cubiertas. Al menos eso es lo que se busca.

Fue grato para mi ver a muchos estudiantes interesados en el tema. Puedo ver que algunos de ellos tienen capacidades sobresalientes tanto para programar como para trabajar en equipo. No dudo que varios consigan laborar en un establecimiento que promueva el uso de inteligencia artificial y que ellos sean parte del desarrollo. Personalmente me gustaría resolver más problemas con el uso de la programación para entrenar y ser un programador competente. En especial este reto me dio la motivación para adentrarme más al mundo de la programación por mi cuenta.

A un amigo que quisiera llevar este reto en el futuro le diría que repasara la sintaxis de Python y un poco de lógica. Sentimos que perdimos bastante tiempo intentando recordar "cómo se hacía tal cosa en Python...", por lo que al final nos faltó tiempo para dedicarle a la lógica. Le recomendaría que pensara dos veces antes de entrar, ya que la cantidad de trabajo (al menos en el torneo) es mucho si se desea sobresalir en los primeros lugares.

De todas las actividades yo creo que la que más me gustó fue cuando vimos la película "Ex Machina". No es que me hayan disgustado las otras actividades, pero al nunca haber visto esa película, por alguna razón la reflexión de la misma generó un impacto grande en mí. El simple hecho de pensar en un robot humanoide lo suficiente inteligente como para aprender y aplicar su conocimiento me causa un conflicto extraño.

Ninguna actividad me disgustó en realidad. Se me hizo pesado de todas maneras la competencia de programación del primer día aunque admito que nos pusieron a trabajar y a pensar desde el principio.

Dos cambios que le haría al reto sería que se diera un repaso de al menos una hora para recordar la sintaxis de Python. También extendería la duración de la competencia para que se pudieran entregar resultados hasta el último día. De este último tengo mis dudas, pero seguramente con la logística adecuada el cambio sería beneficioso para los estudiantes.

Ex Machina

Ex Machina: Discusión ética

Sobre si Nathan era confiable o no y acerca de lo que se puede decir de sus acciones. Nuestro equipo llegó a la conclusión de que dicho personaje solo seguía su impulso de experimentar. Sus acciones o métodos no eran confiables sin embargo lo que el perseguía era de cierta forma bueno para la humanidad.
Por otro lado Caleb siempre fue un personaje con una moral muy correcta. Lo único que se pudiera considerarse no ético, fue el hecho de haber saboteado la casa de Nathan para que la IA (Ava) pudiera escapar. Y para nosotros Caleb no merecía quedar encerrado en la casa de Nathan.
Con respecto al final , hubiéramos podido esperar un escenario en el que Ava y Caleb escaparan de la casa de Nathan y pudieran cumplir el sueño de ir a la intersección de autos y/o un poco mas profundo realizar el sueño de que Ava pudiera conocer el mundo exterior. Aunque un poco más apegado a las últimas escenas esperábamos que Caleb pudiera escapar y detener a Ava en los propósitos que pudiera tener.
Quedaron ciertas preguntas con respecto a la trama del filme, por ejemplo: 
  • A lo largo de la trama observamos algunas cuestiones filosóficas y psicológicas que simplemente no se responden y se nos presente más bien un final comercial, predecible y muy simplista.
  • Nunca se explica porque Nathan tiene tantos problemas con la bebida, se implica que debe ser por su forma de vida pero jamás se habla de eso. Así como nunca se explica porque los robots, todos o mas bien dicho todas, tenían la apariencia de una mujer.
Los movimientos atinados de Ava y su coordinación facil con respecto a sus "emociones", nos hace ver a un robot muy humano e incluso cuestionarnos si en realidad Caleb es el robot en cuestión. Es por esto que creemos fervientemente que ella no necesitaba de ponerse la piel de los otros robots para poder interactuar con humanos. Y que mucho antes de que esto ocurriera, ella había logrado atravesar victoriosa la prueba de Turing.
Otro personaje importante en la película, era Kyoko, otra IA. Durante la película, Kyoko, fue utilizada por todos para su propio beneficio. En primera instancia, Nathan, la utilizaba para fines sexuales y como sirvienta. Caleb logró que le enseñara que ella también era un robot y así se dio cuenta de lo que había estado haciendo Nathan. Y finalmente Ava la utilizó para deshacerse de Nathan.
La mayor enseñanza que nos deja esta película, es el cuidado que debemos tener al utilizar tecnología. Esta puede ser utilizada en nuestra contra. En este caso la información recaudada en el buscador parecido a google, se aprovechó para darle inteligencia al robot y Nathan la empleo de mala forma, para encontrar al candidato idóneo para el experimento, en este caso, Caleb.

jueves, 29 de septiembre de 2016

El torneo de estrategias

Los resultados de este torneo fueron bastante satisfactorios considerando el poco tiempo que se tuvo para la implementación de nuestro jugador estratégico y de los problemas que llegó a presentar nuestro código que impedía que tuviéramos un mayor avance a tiempo.

Si hubiéramos tenido más tiempo para desarrollar nuestro jugador estratégico, tomando en cuenta que la estrategia que seguimos nos dio buenos resultados, probablemente hubiéramos seguido esa misma linea de estrategia solamente que a un nivel más profundo ya que nos daría tiempo de revisar nuestro programa con más paciencia y más detalladamente y así poder optimizar algunos procesos que nos permitieran ahorrar tiempo y llegar a niveles de predicción aún más
profundos de los que llegamos.

También es importante comentar que al principio fue un poco decepcionante ya que en la partida contra el jugador aleatorio tuvimos un 61% de victorias, cuando en nuestras pruebas pocas veces obteníamos ese porcentaje; por lo general nuestro porcentaje era más alto. Nos gustó mucho que la decisión de los profesores haya sido de considerar acreedores del 20% extra de la calificación a los equipos que tuvieran más del 60% de victorias ya que, como ya mencionamos anteriormente, nuestro porcentaje de victorias, en general, no era tan bajo.

Este equipo, como la mayoría de los equipos, consideramos que hubiera sido una mejor opción hacer el torneo el viernes 30 de septiembre ya que nos hubiera dado más tiempo de perfeccionar nuestros códigos para hacerlos más eficientes y que entregaran mejores resultados, ya que consideramos que fue muy poco el tiempo que tuvimos para hacer varias cosas; como entender y analizar el juego (Orugas), encontrar algún tipo de estrategia que incrementara el porcentaje de victoria, familiarizarnos con el programa del juego y las funciones del mismo y también corregir los errores o superar los obstáculos con los que nos fuimos encontrando.

En general fue una buena experiencia, nos hizo explorar un poco más nuestras capacidades y darnos cuenta que no sólo se pueden resolver problemas de la vida diaria con programación sino también, como en este caso, ejemplificar como funciona la inteligencia artificial en juegos en los que la estrategia de evaluar las decisiones que se pueden tomar es lo más importante para conseguir la victoria, tratando de simular la toma de decisiones de una persona.

miércoles, 28 de septiembre de 2016

Programando un jugador estratégico

En este reto, de crear un jugador estratégico para el juego Orugas, nos encontramos con una gran dificultad, ya que la estrategia que nuestro jugador tenía que seguir para conseguir la victoria no era tan obvio ni evidente como en los juegos que analizamos anteriormente, por lo que tuvimos que empezar a jugarlo varias veces para analizar que tipo de comportamiento le convenía a nuestro jugador seguir.

Después de jugarlo varias veces llegamos a una conclusión la cual indicaba que el porcentaje de victorias de nuestro jugador se podría incrementar, pero esta no fue la solución final, ya que al intentar plasmar nuestras ideas con el lenguaje de programación indicado no nos fue tan sencillo porque la lógica de nuestro programa nos decía que los resultados serían los esperados pero al final los resultados fueron otros.

Seguimos intentando con varias ideas y con diferentes formas de expresarlas llegando al resultado que actualmente tenemos.

Nos ha gustado mucho el reto intelectual que esta actividad tiene, sin embargo consideramos un poco injusto que esto sea una competencia, ya que cada equipo tiene habilidades diferentes y no significa que uno merezca más calificación que otro. Independientemente de lo antes mencionado también consideramos injusto perder algún porcentaje de la calificación de nuestra semana i a pesar de esforzarnos y dar lo mejor de nosotros mismos cuando en otros retos simplemente con la asistencia o con aportar algunas ideas ya tienen asegurado el 5% que vale su semana i.

Finalmente queremos externar que esperamos lo mejor en el torneo de mañana, jueves 29 de septiembre, ya que confiamos plenamente en nuestras habilidades y en nuestros resultados obtenidos, deseándoles lo mejor a todos los equipos.

Programando un jugador estratégico

El desarrollo del programa claramente presentó para nosotros un gran reto. Tener ideas claras de qué es lo que se desea implementar es necesario si se quiere llegar a hacer algo. Es indispensable plasmar todas las ideas en cuadros, diagramas, dibujos, etc. para comprender el algoritmo a implementar y no perderse en la abstracción del problema.

Lo único que nos gustaría compartir de nuestra estrategia es que optamos por programar un acercamiento tanto ofensivo como defensivo. Ambas partes se deciden seleccionando de una tabla de prioridades previamente definida por nosotros.

Las dificultades encontradas se centraron principalmente en la interpretación de los datos. Por un momento no sabíamos analizar la información otorgada por las clases y funcionalidades escritas por los profesores. Estas dificultades se resolvieron con el uso inteligente de la función "print" de Python en distintas secciones para finalmente reconocer lo que estaba sucediendo.

Lo que más nos ha gustado del proyecto son dos aspectos. a) La oportunidad de trabajar con compañeros de la misma carrera y compartir propuestas con ellos. b) La disponibilidad de los profesores para ayudarte con las dudas que tengas en un momento dado.

Por otra parte, la dificultad del reto se impuso ante nosotros de una manera monumental. Todos los miembros de nuestro equipo estudiamos robótica. Todos coincidimos que nos faltaba mucha práctica para familiarizarnos tanto con la resolución de problemas con programación como con el uso del lenguaje Python. Un aspecto importante que no se nos hizo justo es que la calificación final de la semana i dependiera de concursos y torneos. Un miedo constante aparece cuando la posibilidad de no obtener puntos a pesar del esfuerzo sea muy grande.

Dicho lo anterior, para el torneo de mañana esperamos que nuestro programa tenga un desempeño favorable para que la Semana i no nos siga perjudicando más nuestro promedio escolar.