交易中的机器学习:理论、模型、实践和算法交易 - 页 609

 
谢尔盖-查尔舍夫。


如果你的网络对gpsh值有这样的反应,就把它扔进垃圾桶吧。 一个正常的网络可以在任何初始值下工作和学习,甚至在零的时候也可以。


胡说八道。
 

  • 最佳DNN超参数的确定

通常,神经网络的超参数包括隐藏层的数量、每个隐藏层的神经元数量、应用的激活、初始化和正则化函数,以及训练水平。超参数优化的结构如下图所示。

优化HP

图1.神经网络中超参数的结构及优化方法

有三种方式来优化超参数。

  1. 网格搜索
  2. 遗传优化
  3. 网格搜索 遗传搜索 贝叶斯优化

在第一种情况下,对于每个超参数,我们定义一个有几个固定值的向量。然后,使用caret::train()或我们自己的脚本,我们在所有的超参数值组合上训练模型。之后,具有最佳分类质量指标的模型被选中,其参数将被接受为最优。这种方法的缺点是,通过设置数值的网格,我们很可能会错过最佳状态。

第二种方法是利用遗传算法随机搜索最佳参数的可能性。我们已经在本文 中详细讨论了几种遗传优化算法。因此,我们将不重复这些内容。

在第三种情况下,使用了贝叶斯方法(高斯过程和IMS),我们将在本文中测试。我们将使用rBayesianOptimization 软件包(1.1.0版)。关于所用方法的理论,见Jasper Snoek, Hugo Larochelle, Ryan P. Adams (2012) Practical Bayesian Optimization of Machine Learning Algorithms

一般来说,神经网络中的超参数可以分为两组:全局和局部(节点)。全局的包括隐藏层的数量,每层的神经元数量,训练和扭矩的水平,神经元的初始化权重。局部的包括层类型、激活函数、辍学/辍学和其他正则化参数。

 

一般来说,建议再次对同一数据进行大量的训练。

我在这里做了几次人工培训,有点迷惑。我期望错误减少是稳定的,但它却跳了起来。

即使在同一网络结构上反复训练,也会得到相差3-5%的结果,这也会干扰到结构的正确选择。

 

你能推荐任何其他可以培训我的交易员吗?我的一个朋友向我推荐了培训(来自Polikarp Brekhunov--由Artyom Trishkin改变),谁知道呢,也许还有其他提供培训课程的交易者?

 
elibrarius

一般来说,建议再次对同一数据进行大量的训练。

我在这里做了几次人工培训,有点迷惑。我本以为错误的减少会很稳定,但它却跳了起来。

即使在同一网络结构上反复训练,也会得到相差3-5%的结果,这也会干扰到结构的正确选择。

应该是这样的。秤的初始化是用小数值的随机数来完成的(取决于初始化的类型)。为了得到可重复的结果,有必要在每次训练运行前将GSF设置为相同的状态。这就是set.seed()的作用。

祝好运

 
弗拉基米尔-佩雷文科

这是它应该有的样子。权重的初始化是用小的随机数值完成的(取决于初始化的类型)。为了得到可重复的结果,有必要在每次训练运行前将GSF设置为相同的状态。这就是set.seed()的作用。

好运。

啊,好吧,我是在Darch RBM中进行预训练的,在2个epochs中学习率=0.3。

 
弗拉基米尔-佩雷文科

  • 最佳DNN超参数的确定

在第二种情况下,我使用遗传算法,随机搜索最佳参数的可能性。

对于交易来说,模型优化(TS)的想法是非常值得怀疑 的,因为任何优化都要寻找高峰/低谷,而我们不需要它们。理想情况下,我们需要尽可能大的平坦高原。这些高原应该有一个显著的特性:模型参数的变化不应该导致高原的逃避。

这是关于优化。

事实上,在这里我们还应该加上模型参数的稳定性问题,如果它们发生变化,也是在一个相当窄的(5%)置信区间 内。在我看来,模型参数的稳定性导致的情况是,模型的性能处于某个高原,如果我们在测试模型时突然得到一个非常好的结果,这意味着我们已经达到了最小点,我们已经得到了一个不稳定的条件,在实践中永远不会发生,此外,一个停止点将位于这个最佳点周围。

PS。

顺便说一下,在测试器中,开发人员提供了这样一个机会,可以通过颜色搜索高原。就我个人而言,我把测试器作为一种修饰工具,采取的参数是指一个周围有相同颜色的方块。这是我对高原概念的明确表达。

 
elibrarius

啊,好吧,我一直在Darch RBM中做2个epochs的预学习,学习率=0.3。

在darch()里面有一个参数seed = NULL,默认情况下,把它设置为某种状态,例如seed = 12345。

这是一个小的学习率值。开始时,RBM和NN的学习率=0.7,numEpochs=10。但这是上限数据。你需要为特定的数据集进行优化。

祝好运

 
弗拉基米尔-佩雷文科
darch()函数里面默认有一个seed = NULL的参数。 把它设置成某个状态,例如seed = 12345。

这是一个小的学习率值。开始时,RBM和NN的学习率=0.7,numEpochs=10。但这是上限数据。你需要为特定的数据集进行优化。

祝好运

谢谢你!我将尝试一下。
 
桑桑尼茨-弗门科

对于交易来说,模型优化(TS)的想法似乎非常值得怀疑,因为任何优化都在寻找高峰/低谷,而我们不需要它们。我们需要的,最好是平坦的高原,尽可能大的高原。这些高原应该有一个显著的特性:模型参数的变化不应该导致高原的逃避。

这是关于优化。

事实上,在这里我们还应该加上模型参数的稳定性问题,如果它们发生变化,也是在一个相当窄的(5%)置信区间 内。在我看来,模型参数的稳定性导致的情况是,模型的性能处于某个高原,如果我们在测试模型时突然得到一个非常好的结果,这意味着我们已经达到了最小点,我们已经得到了一个不稳定的条件,在实践中永远不会发生,此外,一个停止点将位于这个最佳点周围。

PS。

顺便说一下,在测试器中,开发人员提供了这样一个机会,可以通过颜色搜索高原。就我个人而言,我把测试器作为一种修饰工具,采取的参数是指一个周围有相同颜色的方块。这是我对 "高原 "概念的明确表达。

1.你说的是什么优化?哪个高原?哪种模式?如果你说的是神经网络,在使用前不对DNN进行训练(优化参数)是很奇怪的。

2.什么模型参数(?)应该是稳定的?

我不明白你的想法。

我说的是优化DNN的超参数,这应该是一定要做的,而不是在测试器中。