文献阅读: EvoFRNN

一、论文梳理

1、文献背景

在金融数据处理和分析领域,股票价格受许多因素的影响,根据个人经验和知识很难预测。深度进化网络对于任意函数都有较好的逼近能力,虽然可以解决复杂的金融数据处理问题但其解释性较差;模糊集与粗糙集理论能够以数学的、有效的、合理的方式描述现实世界的情境,将两者结合具有研究价值。

2、文献成果

1)研究成果

(1)结合深度进化神经网络和模糊粗糙理论,构造了一个模糊粗糙神经网络模型。(从更新方式上改进FRNN)

(2)提出了一种同时考虑预测精度、网络简洁性和网络通用性的多目标优化模型。(从损失函数上改进FRNN)

(3)针对优化问题,提出了基于粒子群算法的分布式并行MOEAs优化器。(从优化器上改进FRNN)

2)实验成果

(1)实验结果,多目标进化算法的性能评价指标:HV,帕累托最优前沿

a. HV对比

补充: 超体积指标(HV,Hypervolume):算法获得的非支配解集与参照点围成的目标空间中区域的体积。HV值越大,说明算法的综合性能越好。优点:1)同时评价收敛性和多样性;2)无需知道PF或参考集;缺点:1)计算复杂度高,尤其是高维多目标优化问题;2)参考点的选择在一定程度上决定超体积指标值的准确性。

b. Pareto front visualization对比

补充:所有的帕累托最优解构成帕累托最优解集,这些解经目标函数映射构成了该问题的Pareto最优前沿或Pareto前沿面,说人话,即帕累托最优解对应的目标函数值就是帕累托最优前沿。对于多目标优化问题而言,帕累托最优解只是问题的一个可接受解,一般都存在多个帕累托最优解,这个时候就需要人们自己决策了。参考链接

二、基础讲解

1、模糊粗糙理论

1)基本概念

论域:U是非空有限对象集,称为论域。

对象:u是论域中的元素,或称对象。

映射:“→”是映射,表示对应关系,不解释。

属性:R是论域U上的模糊属性。

类别:A是由众多模糊子集“构成”的集合,表示一个类别,也是论域中的一个子集。

2)模糊集

       

3)粗糙集

注:U/R:表示按照属性R对U的一个划分,是一个包含u的集合。对于A(A的本质也是“属性”的一种),它仍是一个U的子集,它可以表示为多个属性划分的交集。R(A)表示用划分表示一个类别,由下近似与上近似构成。粗糙集隶属度由基数计算得到,基数是非重复元素个数。

 

 4)模糊粗糙集

所谓CF对CR的隶属度其实是u中属于CF的多少占u属于CR的多少(见CL,就差不多是这个意思)。极端的例子是如何CF中的u都属于CR则CF对CR的隶属度为1,反之则为0。对于右侧的公式其实因为一个u对很多CF都有隶属度,因此需要对所有与u有关的CF对CR的隶属度进行求和。(大致就这个意思吧)

   

eg. 不太恰当,但能给点启示的例子

2、分布式多目标遗传进化算法(没太看懂)

3、粒子群算法(原文链接:https://blog.csdn.net/weixin_40679412/article/details/80571854

1)概念:

粒子群优化算法(Partical Swarm Optimization PSO),粒子群中的每一个粒子都代表一个问题的可能解,通过粒子个体的简单行为,群体内的信息交互实现问题求解的智能性。由于PSO操作简单、收敛速度快,因此在函数优化、 图像处理、大地测量等众多领域都得到了广泛的应用。 

2)算法流程(终止条件:达到设定迭代次数;代数之间的差值满足最小界限):

 3)发展: 随着应用范围的扩大,PSO算法存在早熟收敛、维数灾难、易于陷入局部极值等问题需要解决,主要有以下几种发展方向。

调整PSO的参数来平衡算法的全局探测和局部开采能力。如Shi和Eberhart对PSO算法的速度项引入了惯性权重,并依据迭代进程及粒子飞行情况对惯性权重进行线性(或非线性)的动态调整,以平衡搜索的全局性和收敛速度。2009年张玮等在对标准粒子群算法位置期望及方差进行稳定性分析的基础上,研究了加速因子对位置期望及方差的影响,得出了一组较好的加速因子取值。

设计不同类型的拓扑结构,改变粒子学习模式,从而提高种群的多样性,Kennedy等人研究了不同的拓扑结构对SPSO性能的影响。针对SPSO存在易早熟收敛,寻优精度不高的缺点,于2003年提出了一种更为明晰的粒子群算法的形式:骨干粒子群算法(Bare Bones PSO,BBPSO)。

将PSO和其他优化算法(或策略)相结合,形成混合PSO算法。如曾毅等将模式搜索算法嵌入到PSO算法中,实现了模式搜索算法的局部搜索能力与PSO算法的全局寻优能力的优势互补。

采用小生境技术。小生境是模拟生态平衡的一种仿生技术,适用于多峰函数和多目标函数的优化问题。例如,在PSO算法中,通过构造小生境拓扑,将种群分成若干个子种群,动态地形成相对独立的搜索空间,实现对多个极值区域的同步搜索,从而可以避免算法在求解多峰函数优化问题时出现早熟收敛现象。 Parsopoulos提出一种基于“分而治之”思想的多种群PSO算法,其核心思想是将高维的目标函数分解成多个低维函数,然后每个低维的子函数由一个子粒子群进行优化,该算法对高维问题的求解提供了一个较好的思路。

4)代码

import numpy as np
import matplotlib.pyplot as plt
 
 
class PSO(object):
    def __init__(self, population_size, max_steps):
        self.w = 0.6  # 惯性权重
        self.c1 = self.c2 = 2
        self.population_size = population_size  # 粒子群数量
        self.dim = 2  # 搜索空间的维度
        self.max_steps = max_steps  # 迭代次数
        self.x_bound = [-10, 10]  # 解空间范围
        self.x = np.random.uniform(self.x_bound[0], self.x_bound[1],
                                   (self.population_size, self.dim))  # 初始化粒子群位置
        self.v = np.random.rand(self.population_size, self.dim)  # 初始化粒子群速度
        fitness = self.calculate_fitness(self.x)
        self.p = self.x  # 个体的最佳位置
        self.pg = self.x[np.argmin(fitness)]  # 全局最佳位置
        self.individual_best_fitness = fitness  # 个体的最优适应度
        self.global_best_fitness = np.min(fitness)  # 全局最佳适应度
 
    def calculate_fitness(self, x):
        return np.sum(np.square(x), axis=1)
 
    def evolve(self):
        fig = plt.figure()
        for step in range(self.max_steps):
            r1 = np.random.rand(self.population_size, self.dim)
            r2 = np.random.rand(self.population_size, self.dim)
            # 更新速度和权重
            self.v = self.w*self.v+self.c1*r1*(self.p-self.x)+self.c2*r2*(self.pg-self.x)
            self.x = self.v + self.x
            plt.clf()
            plt.scatter(self.x[:, 0], self.x[:, 1], s=30, color='k')
            plt.xlim(self.x_bound[0], self.x_bound[1])
            plt.ylim(self.x_bound[0], self.x_bound[1])
            plt.pause(0.01)
            fitness = self.calculate_fitness(self.x)
            # 需要更新的个体
            update_id = np.greater(self.individual_best_fitness, fitness)
            self.p[update_id] = self.x[update_id]
            self.individual_best_fitness[update_id] = fitness[update_id]
            # 新一代出现了更小的fitness,所以更新全局最优fitness和位置
            if np.min(fitness) < self.global_best_fitness:
                self.pg = self.x[np.argmin(fitness)]
                self.global_best_fitness = np.min(fitness)
            print('best fitness: %.5f, mean fitness: %.5f' % (self.global_best_fitness, np.mean(fitness)))
 
 
pso = PSO(100, 100)
pso.evolve()
plt.show()

#原文链接:https://blog.csdn.net/winycg/article/details/79120154

4、神经进化算法(见本人博客“浅谈Neuro-Evolution”

三、论文重点

1、摘要

模糊粗糙理论能够以数学的、有效的、合理的方式描述现实世界的情境,利用解释性较差的深层进化神经网络来解决复杂问题,将两者结合起来具有重要的研究意义。在金融数据处理和分析领域,股票价格受许多因素的影响,根据个人经验和知识很难预测。为此,我们尝试用深度进化神经网络来解决这一问题,并结合模糊粗糙理论,构造了一个模糊粗糙神经网络模型。为了优化网络的结构、隶属函数和参数,提出了一种同时考虑预测精度、网络简洁性和网络通用性的优化模型,并为此提出了分布式并行多目标进化算法。具体来说,粒子群优化器作为优化器来加速收敛。此外,我们还研究了粒子群优化中参数的自适应和不同优化器的集成。在分布式并行环境中,大量的CPU资源减轻了繁琐耗时的神经网络训练。由于同时对多个目标进行优化,会产生一组关注不同目标的模糊粗糙神经网络模型,并且根据偏好的客观偏好可以选择不同的网络模型。

2、思路

解决问题:金融数据分析

创新1:使用深度进化网络优化FRNN的训练,建立模糊粗糙神经网络

创新2:使用多目标算法优化FRNN的损失函数,提出多目标进化算法

创新3:使用粒子群算法优化FRNN的优化器,提出分布式并行MOEAs优化器 

3、具体模型

1)模糊粗糙神经网络模型

L1表示输入层,L 2表示 fuzzification layer,L3表示fuzzy rule layer,L4表示 fuzzy-rough membership layer,L5表示全连接输出层。

(1)L1层:

L1层只是单纯的输入层,本身不进行任何操作,只是复制输入值,所以没有要优化的参数

(2)L2层:

对输入进行聚类,L2的输出为输入数据对当前输入的不同类别的隶属度。其中,隶属度函数共有六种,分别为 Gaussian、Generalized bell、Sigmoid、Trapezoid、Triangle、Z-shaped。

(3)L3层:

与L2不同,L3求解的是对输入的种类的组合的隶属度,因此同一输入的聚类种类之间不组合。j为输入的类别,使用乘积形式表示输入对各个输入种类组合的隶属度。H为最大组合数,即不同输入的聚类种类数量乘积。L3算是对模糊隶属度的进一步扩展,只能调整模糊规则H的个数,而本文则激活了所有可能的规则。。

j为输入的类别,使用乘积形式表示整个数据集对各个输入种类的隶属度。 

(4) L4层:求输入对输出类别的粗糙模糊隶属度

(5)L5层:w怎么求的,中心是什么值?我认为可能是用训练集做的,用来做权重。

2)优化模型 

(1)优化思路

(2)优化目标

目标函数由损失值,Dstrc,Dpara三个部分构成

3)最优化方法

 未完待续

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值