使用CUDA加速学习分类器系统中的匹配过程
1. 引言
学习分类器系统结合了进化计算和时间差分学习方法,用于解决分类和强化学习问题。系统会维护一组条件 - 动作 - 预测规则(即分类器),每个时间步接收问题的当前状态,并将其与所有分类器进行匹配,形成匹配集。基于匹配集中动作的值,系统选择一个动作执行,并根据执行结果获得数值奖励,奖励会分配给相应的分类器。在系统与问题交互过程中,会使用遗传算法来发现更好的分类器。
匹配是分类器系统中最主要且计算量最大的过程,可能占据总计算时间的65% - 85%。为了加速匹配过程,前人提出了多种方法。Llorà和Sastry比较了二进制输入的典型编码、基于底层二进制算术的编码以及通过向量指令优化的编码,结果表明结合底层整数算术优化的二进制编码可将匹配过程加速达80倍,但他们未考虑分类器通用性对匹配复杂度的影响。Butz等人扩展了该分析,考虑了更多编码方式和分类器的通用性,结果显示基于特异性的匹配在处理通用种群时比基于字符的编码快50%,但处理更具体的种群时可能较慢,二进制编码仍是最快的选择,与通常的基于字符的编码相比,改进高达90%,他们还为实值输入提出了基于特异性的编码,可将匹配种群所需的时间减半。
本文采用了不同的方法,基于图形处理单元(GPU)来加速分类器系统中的匹配过程。具体来说,使用NVIDIA的计算统一设备架构(CUDA)实现了使用基于区间条件的实值输入匹配和使用三元条件的二进制输入匹配。实验结果表明,对于小问题,由于GPU引入的内存传输开销,使用CPU进行匹配更快;而对于涉及更多变量或更多分类器的大问题,基于GPU的匹配可以优于基于CPU的实现,在应用基于区间的表示匹配实值输入时,加速比为3 - 12倍,对于基于三元的表示,加速比为20 -
超级会员免费看
订阅专栏 解锁全文

7万+

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



