ANN

From OLPC
Jump to navigation Jump to search

Introduction

Mock-up of the ANN designing gui
Mock-up of the ANN experiment gui

ANN is an activity where children can design, build, and test artificial neural networks (ANNs) [1]. Each 'experiment' will have a particular task ranging in difficulty from switching on and off a light to controlling a paddle in a game of pong. Children will design and build an ANN that they can then test in a simulated environment. If you have any comments, please contact me at bjgraham@udel.edu

Rationale

The study of artificial neural networks (ANNs) in it's simplest form is the examination of how interconnected groups of relatively simple units can solve computational problems. ANNs provide a framework to think about and study how the brain and nervous system functions and interacts with the environment. Providing children with the tools necessary to learn about and explore ANNs will provide them with experience in problem solving, creative thinking, logic, experimentation, and introduce them to the fields of artificial intelligence and neuroscience.

Development plans

ANN will be programmed in Python using pyGtk for the gui and possibly OLPCGames for the experiments. This activity was inspired by the Bug Brain application [2]

ANN simulation engine

The ANN library will be developed from scratch and will contain implementations of binary-thresholding units and adapting synapses. Additionally, the library will contain input and output adapters that will allow variables within the experiments to interface with the ANN units.

Sprite Engine/Experiment Library

The experiment library will most likely be based on OLPCGames to allow ANN control of on-screen sprites within the experiments. These sprites will be configured based on plain text files and image. This will provide teachers and advanced students the ability to define their own experiments.

Configuration File

The sprite configuration files will be plain text that defines several aspects of the sprite, animation, and sensor/effector details. It will contain a single or multiple sprite entries with various key-value combinations bold = required

  1. Sprite Entry
    1. Image file name
    2. Image size (w, h)
    3. Location (x,y)
    4. State(s) (see below)
    5. Effector(s) (see below)
    6. Sensors(s) (see below)
  2. State Entry
    1. ID
    2. Image file name
    3. Image size
    4. Location (x, y)
    5. Velocity (dx, dy)
    6. Duration (dt)
    7. Next State: (id)
    8. Sensor value: (value)
  3. Effector Entry
    1. Effector image file name
    2. Threshold
    3. Inactive state ID
    4. Active state ID
    5. Priority
  4. Sensor Entry
    1. Sensor image file name
    2. sensor : (x position, y position, x velocity, y velocity ...)
    3. scale

Experiment ideas

  • Turn on a light whenever a switch is pulled
  • Turn on a light when two switches are pulled (and logic)
  • Turn on a light when one or more of two switches is/are pulled (or logic)
  • Turn on a light when only one of two switches is pulled (xor logic)

Phase 1 plans

  • Develop the core ANN simulation engine
  • Design and build the gui for ANN creation/editing
  • Develop the sprite engine possibly based on OLPCGames for ANN testing
  • Design and construct an initial subset of experiments ranging in difficulty

Ideas for the future (or if all goes well this summer)

  • Make the experiment configuration extensible so that teachers and advanced students can make their own
  • Allow collaborative editing of ANN and sharing of ANNs and experiments over the mesh network
  • Create input/output adapters for the microphone, speakers, camera, and keyboard to allow physical interaction with the ANNs