文章 "多层感知机与反向传播算法"

 

新文章 多层感知机与反向传播算法已发布:

这两种方法的普及性日益增加,因此在 Matlab、R、Python、C++ 等领域开发了大量的库,它们接收到一个训练集作为输入,并自动为问题创建合适的网络。让我们试着理解基本的神经网络类型是如何工作的(包括单神经元感知机和多层感知机)。我们将探讨一个令人兴奋的算法,它负责网络训练 - 梯度下降和反向传播。现有的复杂模型往往基于这样简单的网络模型。

梯度下降是在成本函数的梯度方向上最小化函数的过程。

这意味着要知道成本形式,以及导数,这样我们就可以知道从某个点开始的梯度,并且可以朝这个方向移动,例如向下,朝着最小值移动。


在机器学习中,我们可以使用一种技术来评估和更新每次迭代的权重,称为随机梯度下降。它的目的是最小化训练数据中的模型误差。

该算法的思想是每次向模型显示一个训练实例,该模型为训练实例创建预测,然后计算误差并更新模型,以减少下一次预测中的误差。

这个过程可以用来寻找一组产生最小误差的模型权重。

作者:Jonathan Pereira

 
我非常喜欢这篇文章,它很好地揭示了神经存储功能的基本原理。我使用神经网络来开发 eas 已经有很长时间了,一直都很认可文章中公布的标准,但却不知道它们是如何运作的。
 
真棒
 
太棒了......很久以前,我以某种粗略的方式开发了一种基于统计数学的模式识别算法......这些想法让它焕发了新的活力,现在它比以前更准确了。非常感谢!
 
谢谢你,乔纳森!写得很详细,也很有趣。
 

请解释一下 seed() 函数及其在代码中的用法,因为我在代码中找不到使用它的地方(除了在 OnStart() 函数中使用,但可以在那里注释,不会有任何问题,也不会出现任何故障)。

不过,如果我将种子数从 42 改为任何其他数字,训练中的很多事情和结果都会不同。


为什么注释 seed() 函数不会 影响结果,而改变其初始值却会影响所有 结果


我肯定漏掉了什么,因为我无法理解这些关系及其对结果的影响。42" 这个数字有什么特别之处吗?


非常感谢

 
rrocchi:

......

使用种子是为了生成伪随机数,因此使用种子只是为了使结果具有可重复性。样本的生成取决于由种子控制的随机数生成器。每次调用 (rand()、MathRand()) 命令都会产生不同的样本元素,因为函数会自动修改生成器的种子。一般情况下,用户无需担心这一机制。但如果有必要,可以使用 _RandomSeed 函数来控制随机数发生器的行为。该函数定义了种子的当前状态,每次生成随机数时都会改变种子的当前状态。因此,要生成两个相同的样本,只需使用一个数字来定义种子。


使用数字 42 是一个笑话,因为 42 是钙的原子质量,42 是原初数,是一个伪完美数,也是数学奥林匹克的最高分,如果我们把一张 A4 纸对折再对折 42 次,加上额外的措施,就有可能到达月球(至少他们是这么说的,kkkkk),剑桥大学的天文学家发现,42 是一个基本科学常数的值--它决定了宇宙的年龄。最酷的是,1979 年,《银河系漫游指南》(The Hitch Hiker's Guide to the Galaxy)的作者道格拉斯-亚当斯(Douglas Adams)描述了一个外星种族如何给一台名为 "深思"(Deep Thought)的计算机编程,以提供 "生命、宇宙和万物 "的最终答案。经过七百五十万个复杂的方程式和艰难的计算,他得出了答案--42,但为什么是 42 呢?道格拉斯-亚当斯曾解释过这个数字的由来:

"答案很简单。这是一个玩笑。它必须是一个数字,一个普通的、小的数字,而我选择了这个数字。二进制表示法、基13、藏猴都毫无意义。我坐在桌前,看着花园,心想 "42 也行",然后就写了。历史结束。"


围绕 42 这个数字的这些游戏和其他游戏,使我们在为种子设定数值时经常选择它,但事实上它可以是任何数字。

 
感谢乔纳森,这篇文章太棒了
 
MetaQuotes:

新文章 多层感知机与反向传播算法已发布:

作者:Jonathan Pereira

Good
 

嗨,乔纳森、

我很喜欢阅读您的文章。它对我进一步在 MQL5 中实现神经网络 帮助很大。

做得非常好!请继续保持!
 
你好,我的朋友。
首先...非常感谢!
我想我们缺少一个文件:
它可能包含随机函数。
你能把它包括进来吗?
再次感谢。我正在认真学习您的文章。