脚本形式的神经网络 - 页 9

 
Andy_Kon писал (а)>>

准确度对乙状结肠有多重要?

20岁以后,准确度在9位数...


在训练中,它是有效果的。有时会对收敛性产生非常严重的影响,直至并包括取消学习。

在使用GA进行训练时,这不应该是一个问题。

 
YuraZ писал (а)>>

3-输入什么(很清楚有多少个输入)。

4-何时重新培训

5-选择哪种学习算法

GA - 遗传

英国石油公司 -


3.真的是一个问题,这完全取决于想象力 :) 。

4.这里是你可以作弊的地方。建立一个具有遗忘能力的网络。这并不难。

假设你能做到以下几点(很适合用BP学习)。

限制模式的数量 -- 比方说1000个。

当下一个模式出现时(比如说新的TF)。

- 删除最古老的模式

- 做一个循环的学习

- 对于一个新的模式,我们应该教它5次。



你能得到什么?

+ 训练周期不会持续太久。

+ 旧的模式不会马上被遗忘。

- 新的模式也不是马上就能学会的,但是

+,但由于积极的学习(5次ONCE),比旧模式被遗忘的速度更快。

- 仅适用于BP学习



5.这是一个两难的问题。

GA - 稳定地下降到最佳状态,由于它的特性,有保护局部最小值的作用,但它会吃掉很多内存,而且速度非常慢。

BP不保证任何结果,尽管概率很高(即如果GA能教,BP也会教),它更快,不占用内存,但需要像动量(摆脱局部最小值)和自适应步骤(最小值也被跳过,加上学习速度增加了许多倍)这样的特点。



我支持BP。

 
TheXpert писал (а)>>

3.真的是一个问题,这完全取决于想象力 :) 。

4.这就是你可以作弊的地方。建立一个具有遗忘能力的网络。这并不难。

假设你能做到以下几点(很适合用BP学习)。

限制模式的数量 -- 比方说1000个。

当下一个模式出现时(比如说新的TF)。

- 删除最古老的模式

- 做一个循环的学习

- 对于一个新的模式,我们应该教它5次。



你能得到什么?

+ 训练周期不会持续太久。

+ 旧模式不会马上被遗忘。

- 新的模式也不是马上就能学会的,但是

+,但由于积极的学习(5次ONCE),比旧模式被遗忘的速度更快。

- 仅适用于BP学习



5.这是一个两难的问题。

GA - 稳定地下降到最佳状态,由于它的特性,有保护局部最小值的作用,但它会吃掉很多内存,而且速度非常慢

BP不保证任何结果,尽管概率很高(即如果GA能够教学,95%的BP也会教学),它更快,不占用内存,但需要像动量(摆脱局部最小值)和自适应步骤(最小值也被跳过,学习速度增加许多倍)这样的功能。



我支持BP。


这是GA工作的一个例子

来源于SI的...


GA因其速度快而受到称赞

还有MGA,这就更勇敢了。


---

基本上GA或MGA是一种快速的最大或最小搜索。

至少 METAQUOTES使用GA的速度,而不是其他东西......

附加的文件:
dio.zip  4 kb
 
YuraZ писал (а)>>


在速度方面,GA被赞誉为快速。

还有MGA,它甚至更活泼。


---

基本上GA或MGA是一种快速的最大或最小搜索。

至少 METAQUOTES 的专家们 在他们的测试中使用了GA的速度,而不是其他东西......。


GA肯定比BP慢。

Metaquotes应用得相当正确,因为GA是一个用途广泛的东西。当然,它也会比简单的矫枉过正更快。

这个问题与神经元学中的问题一样 -- -- 识别字母的不是神经元学,而是专门的算法,FR网络不使用。

同样,最好使用专门的算法进行训练,它们的先验性更好。

 
TheXpert писал (а)>>

GA显然比BP慢。

Metaquotes应用得相当正确,因为GA的用途非常广泛。当然,它也会比简单的蛮力更快。

问题是不同的,就像神经元一样--字母不是由神经元识别的,而是由专门的算法识别的,FR网络并不使用。

同样,最好使用专门的算法进行训练,它们的先验性更好。

如果这不是一个秘密,那么这些信息又是从哪里来的呢?那么用实例来训练FR呢?

那么专门的算法和训练有素的神经网络之间(原则上)有什么区别?

 
Sergey_Murzinov писал (а)>>

如果这不是一个秘密,那么这些信息从何而来?有例子的FR培训呢?

那么专门的算法和经过训练的(训练过的)神经网络之间(原则上)有什么区别?

首先,神经网络并不是字符识别的最佳解决方案。虽然neocognitron在字典中取得了99.7%的成绩,但在有转折的字符上,真的不是重点。

去RSDN.ru阅读与神经网络有关的主题。那里有非常聪明的人,顺便说一下,我想你在这里也能找到一些人 :) 。


关于以身作则的学习,像这样。

- 矢量化(做一个骨架)。

- 计算交叉点和它们的相对位置

- 比如说,取几个第一傅里叶变换系数,事先对大小不敏感进行归一化。顺便说一下,用FT可以得到旋转不敏感,EMMNIP。

- 例子的平均数

- 把它放在基地里作为参考


它有什么不同?

当你使用特殊算法时,你知道它是如何工作的。

你不知道神经网络是如何做到的。你只知道这个由神经网络定义的特定函数能够以高度的准确性将输入插值到输出。

 

Yaaaaaaaaa!!!!!!!

顺便说一下,RSDN.RU是一个程序员的论坛,而不是神经网络算法及其应用的开发者。

我通知你,FineReader使用神经网络技术块(最新版本)。而且我还建议阅读专门的(非流行的科学)文献,并阅读专业论坛的分支,以了解神经网络的情况。

经过训练的网络 也是一种特殊的算法。如果你在NeuroShell2程序中生成C代码,就可以看到最简单的例子。网络代码是完全可见的。

 
Sergey_Murzinov писал (а)>>

只是让你知道,FineReader使用神经网络技术块(最新版本)。为了了解神经网络,我建议阅读专门的(非大众科学)文献并阅读专业论坛的分支。

好的,我可以有一些关于这个问题的链接吗?
 

2 YuraZ

我想说的是,非常感谢你的神经网络代码。

经过详细的解析,我了解到你使用了神经偏移法(数组_threshold和_t_change)以及脉冲法(Momentum参数)来加快计算速度。

我对其实施有几个问题。
1)你在权重校正函数中改变了_t_change,但随后没有在任何地方使用该校正来计算新的_阈值数组的权重。

2)当你把输出传给sigmoid函数时,你从总和中减去_threshold参数,尽管正如文献中写的那样,这个阈值权重不是-1,而是+1。所以你应该增加,而不是减少。更重要的是,在调整权重时,你正好喂了+1而不是-1。
事实上,我一直在搞这个阈值和脉冲,事实证明,它确实有助于计算的速度。时间缩短了数倍。

3)我也对sigmoid函数感兴趣。按照我的理解,这样它的参数是由于你在这方面的实践经验,但我想你已经读过乌斯曼的书,他在书中写到{0,1}范围不是最佳的。权重修正值与输出水平成正比,零输出水平导致权重不改变。由于在二进制输入向量中,平均有一半的值是零,所以与之相关的权重也不会学习!这就是为什么我们要在二进制输入向量中学习。
解决办法是将输入的范围扩大到{-0.5,0.5},并在sigmoid上增加一个0.5的偏移。这样的sigmoid[1/(1+Exp(-x))-0.5],其范围{-0.5,0.5}可以减少30-50%的收敛时间。
在这种情况下,唯一的问题是将输入向量减少到{-0.5,0.5}的范围。我可能要把它正常化。我试着这样做,但由于某些原因,乙状结肠的结果总是阳性。我想听听你对这件事的看法。

4)现在,输入的方式是什么?也许我们应该把这个过程自动化。你认为这种方法怎么样:在输出端,我们将像往常一样期待100、010、001这些值。
为了自动设置输出数组,我建议定义每个条形的下一个区间的最高和最低价格 的比率(例如,一分钟条形的5000条)。这个比率的值将表明价格已经移动到了哪里。如果它在1左右,就是平的。如果它高于1,那么它就会上升。如果它在0和1之间,则是下降。但我认为分析的最佳范围不是[0, +Є],而是[-EЄ, -A; -A, A; A, +Є],顺便说一下,这与我们的输出向量
。网络输入将是N条移动平均线的最后K值(或MA与平均条形价格的差值)。因此,输入将是N*K的总量。

我粘贴的是一个更轻更清晰的基础代码(你的函数库)。一般来说,在这样一个发展的早期阶段,可能没有必要创建一个完整的专家顾问产品。首先让我们在脚本中实现一个清晰的计算逻辑。让我们测试一切,然后在其基础上编写一个标准指标。然后在此基础上,我们将进一步发展--网络的反向链接和委员会,可能还有很多有趣的事情。

P.S.
我希望你能继续分享你的发展,所以我有一个小小的请求。如果你不介意,请删除编辑器选项中的 "插入空格",这对阅读代码来说有点困难。期待新版本的到来。对联合测试的建议是可能的。

附加的文件:
 
sergeev писал (а)>>

2 YuraZ


2)当向sigmoid函数发送输出时,你从总和中减去_threshold参数,尽管在文献中写道,这个阈值权重不是-1,而是+1。所以你应该增加,而不是减少。更重要的是,在调整权重时,你正好喂了+1而不是-1。
事实上,我一直在搞这个阈值和脉冲,事实证明,它确实有助于计算的速度。时间缩短了数倍。

3)我也对sigmoid函数感兴趣。按照我的理解,这样它的参数是由于你在这方面的实践经验,但我想你已经读过乌斯曼的书,他在书中写到{0,1}范围不是最佳的。权重修正值与输出水平成正比,零输出水平导致权重不改变。由于在二进制输入向量中,平均有一半的值是零,所以与之相关的权重也不会学习!这就是为什么我们要在二进制输入向量中学习。
解决办法是将输入的范围扩大到{-0.5,0.5},并在sigmoid上增加一个0.5的偏移。这样的sigmoid[1/(1+Exp(-x))-0.5],其范围{-0.5,0.5}可以减少30-50%的收敛时间。
在这种情况下,唯一的问题是将输入向量减少到{-0.5,0.5}的范围。我可能要把它正常化。我试着这样做,但由于某些原因,乙状结肠的结果总是阳性。我想听听你对这件事的看法。

2.原来的公式是这样的 -- S[j]=Sum(i)(y[i]*w[i,j] - t[j])。也就是说,门槛被拿走了,这就是为什么它被称为门槛。而在重新计算的公式中,两个减号的结果是加号,也就是说,在使用阈值和重新计算参数方面没有错误。

如果我说错了,作者可以纠正我。

3.这不是一个乙字形 - 这是一个半乙字形。这些函数的收敛时间取决于网络的输入数据。可能发生的情况是,双月形的收敛速度会快很多倍,但对于不同的数据,你可能得到一个完全不同的画面。