期货量化软件:赫兹量化中多层感知机与反向传播算法
第一个神经网络是由沃伦·麦卡洛赫(Warren McCulloch)和沃尔特·皮特(Walter Pitts)于1943年提出的。他们写了一篇关于神经元应该如何工作的文章,他们还根据自己的想法建立了一个模型:他们用电路创建了一个简单的神经网络。人工智能研究进展迅速,1980年,福岛邦彦(Kunihiko Fukushima)开发了第一个真正的多层神经网络。
神经网络的最初目的是创造一个计算机系统,能够以类似人脑的方式解决问题。然而,随着时间的推移,研究人员改变了研究重点,开始使用神经网络来解决各种特定任务。现在,神经网络执行各种各样的任务,包括计算机视觉、语音识别、机器翻译、社交媒体过滤、棋盘游戏或视频游戏、医疗诊断、天气预报、时间序列预测、图像/文本/语音识别等。
应用神经元模型现在,让我们进入实际应用。本节分为两部分:1. 做预测2. 优化网络权重这些步骤为感知器算法在其它分类问题中的实现和应用提供了基础。我们需要定义集合X中的列数。为此,我们需要定义一个常量。#define nINPUT 3
在MQL5中,多维数组可以是静态的,也可以仅适用于第一个维度的动态数组。因此,由于所有其他维度都是静态的,因此必须在数组声明期间指定大小。 1. 进行预测第一步是开发一个可以进行预测的函数。无论是在随机梯度下降过程中评估候选权重时,还是在模型完成后,这都是必要的。应根据试验数据和新数据进行预测。下面是 predict 函数,它根据一组特定的权重来预测输出值。第一个权重总是一个偏差,因为它是自主管理的,所以它不适用于特定的输入值。// Make a prediction with weightstemplate <typename Array>double predict(const Array &X[], const Array &weights[], const int row=0){ double z = weights; for(int i=0; i<ArrayRange(X, 1)-1; i++) { z+=weights*X; } 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};
页:
[1]