用于预测的人工神经网络

Artifcial Neural Networks for prediction

我一直在看试图预测股票价格的研究论文。我在这些论文中注意到,使用以下类型的激活函数之一将激活函数应用于输出。单极 sigmoid、双极 sigmoid、Tan 双曲、径向基函数。

我的问题 如果将上述类型的激活函数之一应用于输出,那么如何使用它来预测股票价格,即 103.56 美元这样的值?因为大多数这些函数的最小值或最大值都在 (0,1) 或 (-1,1) 之间。

回复 bakkal 在作为输入输入到 ANN 之前,输入是 根据中定义的“zscore”函数归一化 MATLAB,其中减去平均值和值 除以数据的方差。 目标产出是 也根据目标函数归一化,除以 他们的最大值,牢记上限和下限 各自激活函数的限制(单极的(0,1) sigmoid,(-1, 1) 用于双极 sigmoid 和 tan 双曲函数)。

您好,如下所述,如果激活函数未应用于输出,那么有人可以用粗体解释该段落,谢谢。

如果您正在寻找像 103.56 这样的连续输出,那么您正在使用神经网络来实现回归(而不是分类)。在那种情况下,您不会在输出上应用激活层。您的输出将是前一层加权输入的总和。

也就是说,没有什么能阻止您在网络的隐藏层上使用激活层(例如创建中间特征,然后将其用于回归)

Why doesn't the use of an activation function act like a normalisation function? So do we need to normalise if we are using an activation function? Because the activation function will act like a normaliser?

标准化

不完全是,feature normalization 例如获取所有历史股票价格数据,找到最大值、最小值、标准差等,并应用转换,以便所有历史数据都适合,例如[0, 1].

为什么要这样做?因为你的历史数据可能有来自 AMZN 的价格可以上涨到 500 美元,但它的市值是 2000 亿美元。 pricemarket cap 这两个特征之间的差异有很多零,这对某些数值算法不利。因此,您要做的是将这些标准化为某种标准化比例,以便所有价格都在 [0, 1] 之间,并且所有市值都在 [0, 1] 之间。例如。这有助于反向传播算法。

激活

现在激活函数做了不同的事情,它的存在是为了产生激活效果,就像在神经元中激活或不激活一样。激活函数接受输入 say [-inf, +inf] 并尝试将其捕捉到 say [-1, +1]。这与规范化不同

现在激活效应如何帮助回归?嗯,例如在股票中,预测低价股(比如约 400 万美元的公司)的价格可能与预测蓝筹股(约 2000 亿美元的公司)的价格大不相同,因此您可能希望拥有一个基于 on/off 的功能在 penny/large 上限。该特征可用于更好地进行预测价格的回归。

我们使用归一化将目标值映射到范围 (0, 1) 或 (-1, 1) 或根据您的激活函数您想要的任何范围。通常,我们还将输入值映射到接近 (-1, 1) 的范围。最常用的缩放输入值的归一化是高斯归一化。如果输入向量是 x 并且你使用的是 numpy 数组,那么以下是 x 的高斯归一化:

xScaled = (x-x.mean())/(x.std())

其中 mean() 给出平均值,std() 给出标准差。

另一个规范化是:

xScaled = (x-x.min())/(x.max()-x.min())

将输入向量值缩放到范围 (0,1)。

因此,您使用标准化的输入和输出值来加快学习过程。你也可以参考吴恩达的课程来了解为什么会这样。 当您想要将规范化值缩放回其实际值时,您可以使用反向规范化。例如,对于上面的 (0,1) 归一化,反向归一化将是:

x = x.min() + (x.max()-x.min())*xScaled

您可以类似地获得高斯情况的反向归一化。