Compositional pattern-producing network
While ANNs often contain only sigmoid functions and sometimes Gaussian functions, CPPNs can include both types of functions and many others. The choice of functions for the canonical set can be biased toward specific types of patterns and regularities. For example, periodic functions such as sine produce segmented patterns with repetitions, while symmetric functions such as Gaussian produce symmetric patterns. Linear functions can be employed to produce linear or fractal-like patterns. Thus, the architect of a CPPN-based genetic art system can bias the types of patterns it generates by deciding the set of canonical functions to include.
Furthermore, unlike typical ANNs, CPPNs are applied across the entire space of possible inputs so that they can represent a complete image. Since they are compositions of functions, CPPNs in effect encode images at infinite resolution and can be sampled for a particular display at whatever resolution is optimal.
CPPNs have been shown to be a very powerful encoding when evolving the following:
- Neural networks, via the HyperNEAT algorithm,
- 2D images, on "PicBreeder.org",
- 3D objects, on "EndlessForms.com",
- Robot morphologies Rigid Robots Soft Robots.
- Kayvan Ghaderi ; Fardin Akhlghian ; Parham Moradi (2012). "A new digital image watermarking approach based on DWT-SVD and CPPN-NEAT". 2nd International EConference on Computer and Knowledge Engineering (ICCKE): 12–17. doi:10.1109/ICCKE.2012.6395344. ISBN 978-1-4673-4476-0.CS1 maint: multiple names: authors list (link)
- Kenneth O. Stanley (2007). "Compositional Pattern Producing Networks: A Novel Abstraction of Development" (PDF). Genetic Programming and Evolvable Machines. 8 (2): 131–162. CiteSeerX 10.1.1.643.8179. doi:10.1007/s10710-007-9028-8.
- Kenneth O. Stanley (2006). "Exploiting Regularity Without Development" (PDF). Proceedings of the AAAI Fall Symposium on Developmental Systems.
- Stanley, Kenneth O. "Compositional pattern producing networks: A novel abstraction of development." Genetic programming and evolvable machines 8.2 (2007): 131-162.