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

  • 第一个神经网络是由沃伦·麦卡洛赫(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};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值