A Self-Training System That Learns Through Experimentation
Sandra Braun, John S. Gero · 2006
The knowledge in computer programs is usually coded into the software itself or stored in a linked database. The program’s developer provides the system with the knowledge he, or his client, thinks is needed to fulfil the task it is designed for. Commonly the developer gives the user the possibility to add more knowledge to the system, for example by adding a new dataset to the linked database. The system’s knowledge can be described as predefined and fixed as it is not able to change without external help. That means the system is depended on the developer’s or user’s knowledge. For some applications it is not possible or reasonable to predefine a system’s coded knowledge. This is the case if the knowledge a system needs to fulfil a certain task is either unknown at the time of its development or too manifold and complex. Often developers code additional knowledge in case it may be useful. In contrast to this kind of software, certain tools are able to adapt themselves to their task. Such tools are programmed to increase their knowledge through training. The training can be supervised by a user or the system can learn autonomously. In both cases training data has to be generated before the training phase begins. Usually this process needs to be carried out by a human user and takes time. Not only the design but also the training of the learning software is time consuming. Flexible, adaptive tools could be more useful and user-friendly if it were possible to reduce the time the user needs to expend on the training. 2