神经进化学的简介和一个简单的CPPN(Compositional Pattern Producing Networks)DEMO
近期迷上神经进化(Neuroevolution)这个方向,感觉是Deep Learning之后的一个非常不错的研究领域。
该领域的一个主导就是仿照人的遗传机制来进化网络參数与结构。注意,连网络结构都能够进化。就是不像是传统的神经网络,结构是预定义好的。
近期这个领域研究的比較多的是 弗罗里达大学的Stanley教授,基本的贡献有NEAT,HyperNEAT以及Novelty Search。有兴趣的能够去google之。
NEAT与HyperNEAT都是一种indirect coding算法,目的在更新神经网络的拓扑结构以及參数,而Novelty Search是指引NEAT与HyperNEAT怎样更新的一个算法。
当中NEAT,HyperNEAT与神经网络的关系是这种:
我们用于决策与分类的神经网络(ANN)的參数是被一个叫做Compositional Pattern Producing Networks(CPPN)的网络来决定。而CPPN的拓扑结构由NEAT与HyperNEAT算法进行进化。Novelty Search则指导NEAT与HyperNEAT算法的优化。
CPPN网络跟传统的神经网络差点儿相同。仅仅只是激活函数比較特别,更为丰富,并且网络结构没有层的概念,输入是坐标值x, y,详细能够參考2009年提出HyperNEAT的那篇文章第5页的figure 2.
以下是一个很easy的CPPN的demo,用Matlab写的
clear;clc
wid = 32;
hei = 32;
map = zeros(hei, wid); for h = 1 : hei
for w = 1 : wid
%map(h, w) = sin((h^2 + w^2)*pi/100) ;%+ exp(((h-hei/2)^2 + (w-wid/2)^2)/8000) + h + w;
%map(h, w) = exp(((h-hei/2)^2 + (w-wid/2)^2)/8000);
map(h, w) = sin((h^2 + w^2)*pi/100) + exp(((h-hei/2)^2 + (w-wid/2)^2)/800);
end
end map = map - min(map(:));
map = 255 * map / max(map(:));
imshow(uint8(map))
能够从代码看出,输入是坐标值。而网络结构非常easy:就是一个高斯函数+正弦函数。最后形成的map图为
更为复杂的CPPN生成的图像能够參见 http://picbreeder.org/
神经进化学的简介和一个简单的CPPN(Compositional Pattern Producing Networks)DEMO的更多相关文章
- JBoss 系列九十六:JBoss MSC - 简介及一个简单演示样例
什么是 JBoss MSC JBoss MSC 即 JBoss Modular Service Container,是第三代 JBoss 产品 JBoss 7和WildFfly的内核,JBoss MS ...
- 【Java】Jsoup爬虫,一个简单获取京东商品信息的小Demo
简单记录 - Jsoup爬虫入门实战 数据问题?数据库获取,消息队列中获取中,都可以成为数据源,爬虫! 爬取数据:(获取请求返回的页面信息,筛选出我们想要的数据就可以了!) 我们经常需要分析HTML网 ...
- 1.1(学习笔记)Servlet简介及一个简单的实例
一.Servlet简介 Servlet是使用Java语言编写的服务器端程序,可以生产动态的Web界面. 主要运行在服务器端,Servlet可以方便的处理客户端传来的HTTP请求,并返回一个响应. 二. ...
- php 的路由简介 (一个简单的路由模式)
<?php $_SERVER['REQUEST_URI'] = '/post/edit/1024?foo=bar'; $uri = explode('/', parse_url($_SERVER ...
- 手写一个简单版的SpringMVC
一 写在前面 这是自己实现一个简单的具有SpringMVC功能的小Demo,主要实现效果是; 自己定义的实现效果是通过浏览器地址传一个name参数,打印“my name is”+name参数.不使用S ...
- (转)Web Service入门简介(一个简单的WebService示例)
Web Service入门简介 一.Web Service简介 1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从I ...
- Web Service入门简介(一个简单的WebService示例)
Web Service入门简介 一.Web Service简介 1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从I ...
- Dubbo简介---搭建一个最简单的Demo框架
Dubbo背景和简介 Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起. 单一应用框架(ORM) 当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一起,以减少部署节点和成本. ...
- 使用springboot实现一个简单的restful crud——01、项目简介以及创建项目
前言 之前一段时间学习了一些springboot的一些基础使用方法和敲了一些例子,是时候写一个简单的crud来将之前学的东西做一个整合了 -- 一个员工列表的增删改查. 使用 restful api ...
随机推荐
- 5.decltype类型拷贝
#include <iostream> using namespace std; template <class T> void show(T *p) { //初始化 decl ...
- java解压多目录Zip文件(解决中文乱码问题)--转载
原文地址:http://zhangyongbo.iteye.com/blog/1749439 import java.io.BufferedOutputStream; import java.io.F ...
- Android BuildConfig:Gradle自定义你的BuildConfig
在很早之前我发布了这篇博客Android BuildConfig.DEBUG的妙用, 提到了Eclipse中通过BuildConfig.DEBUG字段用来调试Log非常好用,但是殊不知在Android ...
- Spring HandlerInterceptor的使用
http://blog.csdn.net/joeyon1985/article/details/49903761
- JAVA开发类似冒险岛的游戏Part1
JAVA开发类似冒险岛的游戏Part1 一.总结 二.JAVA开发类似冒险岛的游戏Part1 初学嘛) ,不过总的来说这个程序还是很有意思的.这里我重新再整理了一下,希望能帮助到其他想要开发类似程序的 ...
- 微信支付v2开发(7) 告警通知
本文介绍微信支付中如何获得告警通知. 一.告警通知 为了及时通知商户异常,提高商户在微信平台的服务质量.微信后台会向商户推送告警通知,包括发货延迟.调用失败.通知失败等情况,通知的地址是商户在申请支付 ...
- oled的一套stm32实验1
详细的oled介绍:http://blog.sina.com.cn/s/blog_57ad1bd20102wtq8.html 整理自:https://www.cnblogs.com/wp2312139 ...
- iOS_02_什么是ios开发
什么是ios开发? * 已知:ios是iphone,ipad等手持设备操作系统. * ios开发就是开发运行在ios系统上的应用或者游戏软件,比如手机QQ,微博或者游戏,说白了,就是开发手机软件:当然 ...
- Springboot+shiro配置笔记+错误小结(转)
软件152 尹以操 springboot不像springmvc,它没有xml配置文件,那该如何配置shiro呢,其实也不难,用java代码+注解来解决这个问题.仅以此篇记录我对shiro的学习,如有对 ...
- [Nuxt] Update Vuex State with Mutations and MapMutations in Vue.js
You commit changes to state in Vuex using defined mutations. You can easily access these state mutat ...