欢迎光临散文网 会员登陆 & 注册

期货量化软件:赫兹量化中多层感知机与反向传播算法

2023-10-11 14:11 作者:大牛啊呢  | 我要投稿
  • 第一个神经网络是由沃伦·麦卡洛赫(Warren McCulloch)和沃尔特·皮特(Walter Pitts)于1943年提出的。他们写了一篇关于神经元应该如何工作的文章,他们还根据自己的想法建立了一个模型:他们用电路创建了一个简单的神经网络。

  • 人工智能研究进展迅速,1980年,福岛邦彦(Kunihiko Fukushima)开发了第一个真正的多层神经网络。

  • 神经网络的最初目的是创造一个计算机系统,能够以类似人脑的方式解决问题。然而,随着时间的推移,研究人员改变了研究重点,开始使用神经网络来解决各种特定任务。现在,神经网络执行各种各样的任务,包括计算机视觉、语音识别、机器翻译、社交媒体过滤、棋盘游戏或视频游戏、医疗诊断、天气预报、时间序列预测、图像/文本/语音识别等。

应用神经元模型

现在,让我们进入实际应用。

本节分为两部分:

1. 做预测

2. 优化网络权重

这些步骤为感知器算法在其它分类问题中的实现和应用提供了基础。

我们需要定义集合X中的列数。为此,我们需要定义一个常量。

#define nINPUT 3


在MQL5中,多维数组可以是静态的,也可以仅适用于第一个维度的动态数组。因此,由于所有其他维度都是静态的,因此必须在数组声明期间指定大小。

1. 进行预测

第一步是开发一个可以进行预测的函数。

无论是在随机梯度下降过程中评估候选权重时,还是在模型完成后,这都是必要的。应根据试验数据和新数据进行预测。

下面是 predict 函数,它根据一组特定的权重来预测输出值。

第一个权重总是一个偏差,因为它是自主管理的,所以它不适用于特定的输入值。

// Make a prediction with weights template <typename Array> double predict(const Array &X[][nINPUT], const Array &weights[], const int row=0)  {   double z = weights[0];   for(int i=0; i<ArrayRange(X, 1)-1; i++)     {      z+=weights[i+1]*X[row][i];     }   return activation(z);  }

神经元传输:

一旦一个神经元被激活,我们就需要传输激活来查看神经元的实际输出。

//+------------------------------------------------------------------+ //|                Transfer neuron activation                        | //+------------------------------------------------------------------+ double activation(const double activation) //#  {   return activation>=0.0?1.0:0.0;  }

我们将输入集X、权重数组(W)和预测输入集X的行输入到预测函数中。

让我们用一个小数据集来检查预测函数。


我们也可以使用预先准备好的权重来预测这个数据集。

double weights[] = {-0.1, 0.20653640140000007, -0.23418117710000003};


期货量化软件:赫兹量化中多层感知机与反向传播算法的评论 (共 条)

分享到微博请遵守国家法律