学校实验室打算做演化神经网络相关的研究,这个方向挺小众的,热度不是很高,老师给了我一篇老论文,感觉用语法分析树对神经网络进行编解码的方法挺有意思的,把我的阅读报告放上来。
Automatic Definition of Modular Neural Networks
介绍
生命的进化过程
- 细胞分裂
- 基因遗传
- 自然选择
人工神经网络ANN的进化
- 权重的进化:梯度下降
- 结构的进化:本文使用的是进化算法如遗传算法
进化算法
-
进化算法:
a.表示:多种将神经网络编码的语法(Grammar)
b.进化:依照语法规则进化
-
编码语法:考虑细胞的分裂(Cell Division Rules)
a.矩阵语法matrix grammars
b.几何语法 geometrical grammars
c.语言学文法 parallel string grammars
d.图语法 graph grammars
神经网络的编码语法
- 矩阵语法
- 几何语法
- 语言学文法
- 图语法
图语法 Graph Grammars (重点)
- 是一种高效的对神经网络编码的语法
- 其关键是细胞编码算法即 Celluar Encoding:一个细胞代表神经网络的一个节点
细胞编码 Celluar Encoding (重点:神经网络的编码方式)
将神经网络视作有固定输入输出结点的有向有权图(directed and labeled graph)
整个神经网络由一个祖先细胞分裂而来,
分裂的方式如同DNA作为一棵语法树储存在祖先细胞中,一棵树就定义了一个神经网络
将神经元分裂的方式编码
某一个细胞不同的分裂方式的区别是他的入度和出度连接点之间的不同变化
图示一个细胞不同分裂方式介绍:
a.原始的网络图
b.连续分裂,分裂成两个神经元,所有输入与第一个神经元相连,所有输出与d第二个神经元相连,两个神经元之间有一条连接
c.平行分裂,类似于复制,分裂出的另一个细胞与所有输入输出相连
d.特殊的连续分裂,部分输入与第二个神经元相连,部分输出y与第一个神经元相连 (Residual Neural Network 的结构可以用这个解释,相当于加入了shortcut)
e.特殊的平行分裂,两个细胞都只与部分输入输出相连接(类似于CNN中的感受野?)
f.同e
g.特殊的连续分裂
h.特殊的连续分裂
i.形成循环结构(RNN)
j.形成连接缺失 (Dropout,模型压缩)
k.改变输入连接的权重
l.改变输出连接的权重
初始神经元图经过一系列连续的不同的分裂最终成为神经网络
语法分析树构建神经网络
- 神经网络的语法分析树是一个含点值的树的列表
- 假设细胞分裂的方法是一个有限集
- 输入到输出中间的神经网络由一个细胞分裂而来
- 每一个细胞都有一份语法分析树的拷贝并且细胞内部有一个“寄存器”指向语法分析树的某一个位置
- 神经网络“生长”的每一步,每一个细胞都会执行其内部寄存器指向的语法分析树中的特定方式的细胞分裂
- 最终的神经网络是那些不再继续细胞分裂的细胞组成
具体分裂方式
- 神经网络语法分析树中的一个结点含有的值称为程序标志(program symbols)。其控制着细胞分裂后子细胞的性质与状态。如果是一个细胞分裂为两个子细胞。当前细胞分裂时,其第一个子细胞读取当前结点的左子树,第二个细胞读取右子树。如果是一个细胞分裂成为一个新细胞,那么当当前分裂结束后该细胞的寄存器指向其子树结点
- 细胞可以执行控制语句(重定位寄存器所指的位置)
- 细胞可以执行终止语句(停止分裂)
- 当一个细胞内寄存器指向一棵树的叶节点时可能有两种情况:
- 该节点内为终止信号,该细胞不在分裂,作为最终神经网络的神经元之一
- 该节点内为跳转信号,跳转到另一颗树的根部继续分裂(模块化)n0表示从当前树的root重新开始,n1表示从下一个树开始,n2表示从下下棵树开始
分裂的实现方式
类似于二叉树的生成,使用一个先进先出的动态队列
首先root结点入队,然后队首细胞分裂,队首细胞出队,队首细胞的左右儿子依次入队,再次队首细胞分裂……直到队列为空。
当一个细胞内寄存器指向终止指令时,直接出队。
一个例子
结合Figure 1,2,3
Figure3中每一个结点中的字母表示的是该细胞接下来的分裂模式