近期迷上神经进化(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的更多相关文章

  1. JBoss 系列九十六:JBoss MSC - 简介及一个简单演示样例

    什么是 JBoss MSC JBoss MSC 即 JBoss Modular Service Container,是第三代 JBoss 产品 JBoss 7和WildFfly的内核,JBoss MS ...

  2. 【Java】Jsoup爬虫,一个简单获取京东商品信息的小Demo

    简单记录 - Jsoup爬虫入门实战 数据问题?数据库获取,消息队列中获取中,都可以成为数据源,爬虫! 爬取数据:(获取请求返回的页面信息,筛选出我们想要的数据就可以了!) 我们经常需要分析HTML网 ...

  3. 1.1(学习笔记)Servlet简介及一个简单的实例

    一.Servlet简介 Servlet是使用Java语言编写的服务器端程序,可以生产动态的Web界面. 主要运行在服务器端,Servlet可以方便的处理客户端传来的HTTP请求,并返回一个响应. 二. ...

  4. php 的路由简介 (一个简单的路由模式)

    <?php $_SERVER['REQUEST_URI'] = '/post/edit/1024?foo=bar'; $uri = explode('/', parse_url($_SERVER ...

  5. 手写一个简单版的SpringMVC

    一 写在前面 这是自己实现一个简单的具有SpringMVC功能的小Demo,主要实现效果是; 自己定义的实现效果是通过浏览器地址传一个name参数,打印“my name is”+name参数.不使用S ...

  6. (转)Web Service入门简介(一个简单的WebService示例)

    Web Service入门简介 一.Web Service简介 1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从I ...

  7. Web Service入门简介(一个简单的WebService示例)

    Web Service入门简介 一.Web Service简介 1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从I ...

  8. Dubbo简介---搭建一个最简单的Demo框架

    Dubbo背景和简介 Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起. 单一应用框架(ORM) 当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一起,以减少部署节点和成本.  ...

  9. 使用springboot实现一个简单的restful crud——01、项目简介以及创建项目

    前言 之前一段时间学习了一些springboot的一些基础使用方法和敲了一些例子,是时候写一个简单的crud来将之前学的东西做一个整合了 -- 一个员工列表的增删改查. 使用 restful api ...

随机推荐

  1. 5.decltype类型拷贝

    #include <iostream> using namespace std; template <class T> void show(T *p) { //初始化 decl ...

  2. java解压多目录Zip文件(解决中文乱码问题)--转载

    原文地址:http://zhangyongbo.iteye.com/blog/1749439 import java.io.BufferedOutputStream; import java.io.F ...

  3. Android BuildConfig:Gradle自定义你的BuildConfig

    在很早之前我发布了这篇博客Android BuildConfig.DEBUG的妙用, 提到了Eclipse中通过BuildConfig.DEBUG字段用来调试Log非常好用,但是殊不知在Android ...

  4. Spring HandlerInterceptor的使用

    http://blog.csdn.net/joeyon1985/article/details/49903761

  5. JAVA开发类似冒险岛的游戏Part1

    JAVA开发类似冒险岛的游戏Part1 一.总结 二.JAVA开发类似冒险岛的游戏Part1 初学嘛) ,不过总的来说这个程序还是很有意思的.这里我重新再整理了一下,希望能帮助到其他想要开发类似程序的 ...

  6. 微信支付v2开发(7) 告警通知

    本文介绍微信支付中如何获得告警通知. 一.告警通知 为了及时通知商户异常,提高商户在微信平台的服务质量.微信后台会向商户推送告警通知,包括发货延迟.调用失败.通知失败等情况,通知的地址是商户在申请支付 ...

  7. oled的一套stm32实验1

    详细的oled介绍:http://blog.sina.com.cn/s/blog_57ad1bd20102wtq8.html 整理自:https://www.cnblogs.com/wp2312139 ...

  8. iOS_02_什么是ios开发

    什么是ios开发? * 已知:ios是iphone,ipad等手持设备操作系统. * ios开发就是开发运行在ios系统上的应用或者游戏软件,比如手机QQ,微博或者游戏,说白了,就是开发手机软件:当然 ...

  9. Springboot+shiro配置笔记+错误小结(转)

    软件152 尹以操 springboot不像springmvc,它没有xml配置文件,那该如何配置shiro呢,其实也不难,用java代码+注解来解决这个问题.仅以此篇记录我对shiro的学习,如有对 ...

  10. [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 ...