神经网络转换与优化:从ANN到SNN及X-CNNs的自动构建
一、ANN到SNN的转换
1.1 实验任务与ANN架构
在“基于字符级RNN对姓名进行分类”的任务中,使用约16,000个来自18种不同语言的姓氏对人工神经网络(ANN)进行训练,并使用4000个示例进行测试。训练好的模型根据姓名的拼写预测其所属的语言。
字符级RNN接收字符的独热编码向量作为输入,并利用其循环结构进行顺序推理。在将ANN转换为脉冲神经网络(SNN)时,使用修正线性单元(ReLU)作为激活函数,而非典型RNN常用的双曲正切函数。网络架构如图1a所示。在训练数据集上,前2准确率达到78.65%,在测试数据集上达到73.18%。
1.2 SNN转换与架构
转换方法结合了多种方式,采用将输入转换为泊松脉冲序列的方式。具体转换步骤如下:
1. ReLU激活函数 :典型RNN使用双曲正切激活函数,推理时需要负激活值。但在SNN中,信息仅通过0和1传输,难以表达负值。ReLU仅输出非负激活值,可避免负值问题。
2. 使用反向传播训练ANN :采用最常见的反向传播训练方法对ANN进行训练。
3. 训练数据集的权重归一化 :转换为SNN后,若突触后电位值与阈值电压值相比过大或过小,会导致性能损失。通过找到训练数据集中每层的最大激活值来缩放权重。
4. 将权重从ANN移植到SNN :最后将缩放后的权重移植到SNN。SNN的输入是根据超参数输入速率$f_{input}$生成的泊松脉冲序列
超级会员免费看
订阅专栏 解锁全文
1万+

被折叠的 条评论
为什么被折叠?



