Friday, September 21, 2012

CS188.1x: Syllabus


CS188.1x: Introduction to Artificial IntelligenceBerkeleyX

YOU ARE REGISTERED FOR THIS COURSE (CS188.1X)

ABOUT THIS COURSE

CS188.1x is a new online adaptation of the first half of UC Berkeley’s CS188: Introduction to Artificial Intelligence. The on–campus version of this upper division computer science course draws about 600 Berkeley students each year.
Artificial intelligence is already all around you, from web search to video games. AI methods plan your driving directions, filter your spam, and focus your cameras on faces. AI lets you guide your phone with your voice and read foreign newspapers in English. Beyond today’s applications, AI is at the core of many new technologies that will shape our future. From self–driving cars to household robots, advancements in AI help transform science fiction into real systems.
CS188.1x focuses on Behavior from Computation. It will introduce the basic ideas and techniques underlying the design of intelligent computer systems. A specific emphasis will be on the statistical and decision–theoretic modeling paradigm. By the end of this course, you will have built autonomous agents that efficiently make decisions in stochastic and in adversarial settings. CS188.2x (to follow CS188.1x, precise date to be determined) will cover Reasoning and Learning. With this additional machinery your agents will be able to draw inferences in uncertain environments and optimize actions for arbitrary reward structures. Your machine learning algorithms will classify handwritten digits and photographs. The techniques you learn in CS188x apply to a wide variety of artificial intelligence problems and will serve as the foundation for further study in any application area you choose to pursue.

COURSE STAFF

Dan Klein

Dan Klein (PhD Stanford, MSt Oxford, BA Cornell) is an associate professor of computer science at the University of California, Berkeley. His research focuses on natural language processing and using computational methods to automatically acquire models of human languages. Examples include large–scale systems for language understanding, information extraction, and machine translation, as well as computational linguistics projects, such as the reconstruction of ancient languages. One of his best–known results was to show that human grammars can be learned by statistical methods. He also led the development of the Overmind, a galaxy–dominating, tournament–winning agent for the game of Starcraft. Academic honors include a Marshall Fellowship, a Microsoft Faculty Fellowship, a Sloan Fellowship, an NSF CAREER award, the ACM Grace Murray Hopper award for his work on grammar induction, and best paper awards at the ACL, NAACL, and EMNLP conferences.

Pieter Abbeel

Pieter Abbeel (PhD Stanford, MS/BS KU Leuven) joined the faculty of the Department of Electrical Engineering and Computer Sciences at UC Berkeley in 2008. He regularly teaches CS188: Introduction to Artificial Intelligence and CS287: Advanced Robotics. His research focuses on robot learning. Some results include machine learning algorithms which have enabled advanced helicopter aerobatics, including maneuvers such as tic–tocs, chaos and auto–rotation, which only exceptional human pilots can perform, and the first end–to–end completion of reliably picking up a crumpled laundry article and folding it. Academic honors include best paper awards at ICML and ICRA, the Sloan Fellowship, the Air Force Office of Scientific Research Young Investigator Program (AFOSR–YIP) award, the Okawa Foundation award, the MIT TR35, the IEEE Robotics and Automation Society (RAS) Early Career Award, and the Dick Volz award for best PhD thesis in robotics and automation.

SYLLABUS

  • Introduction
    • Overview
    • Agents: Perception, Decisions, and Actuation
  • Search and Planning
    • Uninformed Search (Depth-First, Breadth-First, Uniform-Cost)
    • Informed Search (A*, Greedy Search)
    • Heuristics and Optimality
  • Constraint Satisfaction Problems
    • Backtracking Search
    • Constraint Propagation (Arc Consistency)
    • Exploiting Graph Structure
  • Game Trees and Tree-Structured Computation
    • Minimax, Expectimax, Combinations
    • Evaluation Functions and Approximations
    • Alpha-Beta Pruning
  • Decision Theory
    • Preferences, Rationality, and Utilities
    • Maximum Expected Utility
  • Markov Decision Processes
    • Policies, Rewards, and Values
    • Value Iteration
    • Policy Iteration
  • Reinforcement Learning
    • TD/Q Learning
    • Exploration
    • Approximation

PREREQUISITES

  • Programming
    • Object-Oriented Programming
    • Recursion
    • Python or ability to learn Python quickly (mini-tutorial provided)
  • Data Structures
    • Lists vs Sets (Arrays, Hashtables)
    • Queuing (Stacks, Queues, Priority Queues)
    • Trees vs Graphs (Traversal, Backpointers)
  • Math
    • Probability, Random Variables, and Expectations (Discrete)
    • Basic Asymptotic Complexity (Big-O)
    • Basic Counting (Combinations and Permutations)
  1. Course Number
    CS188.1x
  2. Classes Start
    Sep 24, 2012
  3. Classes End
    Nov 16, 2012
  4. Estimated Effort
    15 hours/week
  5. Prerequisites
    Yes

Thursday, December 8, 2011

Conclusiones de la Tarea

Algunas variables son mudas, esto es, se pueden cambiar en todo el programa, y éste sigue haciendo lo mismo.

Ejemplo: Todas las que están entre tres comillas dobles ("""), o con un símbolo de gato #. Estos cambian de color, entre tres comillas dobles son verdes, y con gato son rojas.

Ejemplo: Hay otras que eran negras, y al cambiarlas, no pasó nada. por ejemplo name, pusimos nombre en todos lados donde estaba name, y dio lo mismo.

Nc

Este valor indica cuantos mostradores, o cajas hay. Se asocia a la variable resource, que quiere decir recurso. Entre más grande sea Nc, salen más rápido los clientes, y no se puede cambiar arbitrariamente, es necesario cambiar el programa, si ponemos Nc mayor.

Es necesario cambiar los programas, para entenderlos. Hay que seguir cambiándolos. Suponer qué va a pasar, y verificar que pasa. Por ejemplo, cuando se reduce Nc de 2 a 1, los clientes se tardaron más, porque hay menos cajeras en los mostradores para atender a los clientes.

El estudio de cómo asignar recursos para dar servicio, se llama Logística, y es lo que se estudia con esta modelación de un banco.

Tarea

Copiar todos los programas en el directorio que están, cambiándoles el nombre. Usar Save us, con un nuevo nombre, 001, etc.. Correr las copias y ver que hacen lo mismo. Cambiar partes del programa, y ver qué sucede, así entendemos mejor los programas.

Presentar un reporte en el blog de las conclusiones.

Esta tarea la hacemos para aprender más.

Así puede uno estudiar solo, sin necesidad de preguntarle al maestro. Si el programa no funciona es por error en el cambio que hicimos. Si sí funciona, y además produce lo que esperábamos, es porque entendemos el programa.

Tuesday, November 22, 2011

Resumen de los 24 Programas de SimPy

El primero tiene un sólo cliente, el segundo tiene más. El primero es determinado (no - azar), ya después son al azar. Random es azar, así como en La Lotería. Los tiempos que los clientes están en el banco, se distribuyen al azar, según una ley exponencial.

Así pues el tutorial va de lo sencillo, e.g. un cliente, a lo complicado, muchos clientes.Con más clientes puede haber interacción. Guido es un cliente distinguido, se refieren a Guido von Rossum.




Tuesday, November 15, 2011

Tarea

Buscar los programas del tutorial del banco en su computadora.
En mi Ubuntu están en:
/usr/eduardo/Downloads/SimPy-2.2/docs/examples/BankTutorialModels

Solución de mi tarea:

Friday, November 11, 2011