数学、乐高积木、神经网络产生怎样的花火?超超超赞!

栏目: 数据库 · 发布时间: 4年前

内容简介:作者:Omar U. Florez

数学、乐高积木、神经网络产生怎样的花火?超超超赞!

标星★公众号      爱你们

作者:Omar U. Florez

编译:公众号编译部

近期原创文章:

♥  5种机器学习算法在预测股价的应用(代码+数据)

♥  Two Sigma用新闻来预测股价走势,带你吊打Kaggle

  利用深度学习最新前沿预测股价走势

♥  一位数据科学PhD眼中的算法交易

♥  基于RNN和LSTM的股市预测方法

♥  如何鉴别那些用深度学习预测股价的花哨模型?

♥  优化强化学习Q-learning算法进行股市

♥  WorldQuant 101 Alpha、国泰君安 191 Alpha(源码分享)

♥  基于回声状态网络预测股票价格(附代码)

♥  AQR最最最新 | 计量经济学应用投资失败的7个原因

♥  关于高盛在Github开源背后的真相!

♥  新一代量化带货王诞生!Oh My God!

♥  独家!关于定量/交易求职分享(附真实试题)

♥  Quant们的身份危机!

♥  拿起Python,防御特朗普的Twitter!

♥  用深度强化学习打造不亏钱的交易机器人(附代码)

想必大家都玩过乐高吧?

好玩不?

好玩!

数学、乐高积木、神经网络产生怎样的花火?超超超赞!

数学、乐高积木、神经网络产生怎样的花火?超超超赞! 数学、乐高积木、神经网络产生怎样的花火?超超超赞!

数学、乐高积木、神经网络产生怎样的花火?超超超赞!

接下来

有更好玩的

↓ ↓ ↓

数学、乐高积木、神经网络产生怎样的花火?超超超赞!

用乐高积木结合数学来解释神经网络

好玩不?

来,小哥哥,小姐姐

我们教你玩!

文档+代码文末获取

神经网络是线性和非线性模块的巧妙组合。当我们明智地选择并连接它们时,我们就有了一个强大的 工具 来近似任何数学函数。例如,用非线性决策边界分离类的方法。

让我们从头开始构建一个神经网络,看看神经网络的内部功能,使用乐高积木块作为模块类比,每次一块积木。

神经网络作为一个组成部分

上图描述了一些用于训练神经网络的数学。在本文中,我们将对此进行解释。读者可能会发现,神经网络是一堆具有不同用途的模块:

输入X: 向神经网络提供原始数据,原始数据存储在一个矩阵中,其中观察值为行,维度为列。

权值W1: 将输入X映射到第一个隐藏层h1。权值W1是线性核函数

Sigmoid函数: 通过将隐藏层中的数字缩放到0-1。结果是一系列神经激活h1 = Sigmoid(WX)

这些操作仅计算一般线性系统,该系统不具有模拟非线性交互的能力。当我们再叠加一层时,情况就不同了,这就给这个模块结构增加了深度。网络越深,我们可以学到更微妙的非线性相互作用,我们可以解决更复杂的问题,这可能部分解释了深层神经模型的兴起。

举例:学习XOR函数

让我们打开黑匣子。现在我们将从头构建一个学习XOR函数的神经网络。这个非线性函数的选择绝不是随机的。如果没有反向传播,就很难学会用直线分隔类。

为了说明这个重要的概念,请注意下面一条直线是如何不能将XOR函数的输出0和1分开的。现实生活中的问题也是非线性可分的。

数学、乐高积木、神经网络产生怎样的花火?超超超赞!

网络拓扑结构很简单:

1、输入X是一个二维向量;

2、权值W1是一个具有随机初始化值的2x3矩阵;

3、隐藏层h1由三个神经元组成。每个神经元接受一个加权的观测值作为输入,这是下图中绿色高亮显示的内积:z1 = [x1, x2][w1, w2];

4、权值W2是一个具有随机初始化值和的3x2矩阵;

5、输出层h2由两个神经元组成,因为XOR函数返回0 (y1=[0,1])或1 (y2 =[1,0])

更直观的展示:

数学、乐高积木、神经网络产生怎样的花火?超超超赞!

现在我们来训练模型。在我们的简单示例中,可训练的参数是权重,但请注意,目前的研究正在探索更多类型的参数进行优化。例如层之间的快捷方式、正则化分布、拓扑结构、残差、学习率等。

反向传播是一种向(梯度)方向更新权值的方法,它在给定一批标记的观测值的情况下最小化预定义的误差度量(称为损失函数)。这种算法已经被多次重新发现,它是一种更通用的技术的特例,这种技术称为逆向累加模式下的自动微分。

网络初始化

让我们用随机数初始化网络权重。

数学、乐高积木、神经网络产生怎样的花火?超超超赞!

向前一步

这一步的目标是将输入X向前传播到网络的每一层,直到计算输出层h2中的向量为止。

事情是这样发生的:

以权值W1为核,线性映射输入数据X:

数学、乐高积木、神经网络产生怎样的花火?超超超赞!

使用Sigmoid函数缩放该加权和z1,以获得第一个隐藏层h1的值。注意,原来的2D向量现在映射到3D空间。

数学、乐高积木、神经网络产生怎样的花火?超超超赞!

第二层h2也发生了类似的过程。我们先计算第一个隐层的加权和z2,它现在是输入数据。

数学、乐高积木、神经网络产生怎样的花火?超超超赞!

然后计算它们的Sigmoid活函数。该向量[0.37166596 0.45414264]表示由给定输入X的网络计算的对数概率或预测向量。

数学、乐高积木、神经网络产生怎样的花火?超超超赞!

计算总损失

损失函数的目标是量化预测向量h2与y提供的实际标号之间的距离,也称为“实际减去预测值”。

请注意,Loss函数包含一个正则化组件,该组件惩罚较大的权重值,就像在Ridge回归中一样。换句话说,较大的平方权重值将增加损失函数,这是我们确实想要最小化的误差度量。

数学、乐高积木、神经网络产生怎样的花火?超超超赞!

向后一步

该步骤的目标是更新神经网络的权值,使其损失函数最小化。我们将看到,这是一个递归算法,它可以重用以前计算的梯度,并且严重依赖于可微函数。由于这些更新减少了损失函数,网络“学会”用已知类近似观察值的标签。称为泛化的属性。

这个步骤的顺序是向后的,而不是向前的。首先计算损失函数对输出层(dLoss / dW2)和隐藏层(dLoss / dW1)的权重的偏导数。让我们详细解释每一个。

dLoss/ DW2:

链式法则说我们可以把神经网络的梯度计算分解成可微的部分:

数学、乐高积木、神经网络产生怎样的花火?超超超赞!

作为一个内存助手,这些是上面使用的函数定义及其一阶导数:

数学、乐高积木、神经网络产生怎样的花火?超超超赞!

更直观地说,我们的目标是在下面的图中更新权重W2(蓝色)。为了达到这个目的,我们需要计算沿着这个链的三个偏导数。

数学、乐高积木、神经网络产生怎样的花火?超超超赞!

将值代入这些偏导数中,我们就可以计算出关于权值W2的梯度,如下所示。

数学、乐高积木、神经网络产生怎样的花火?超超超赞!

结果是一个3x2矩阵dLoss/dW2,它将按照最小化损失函数的方向更新原始的W2值。

数学、乐高积木、神经网络产生怎样的花火?超超超赞!

dLoss / dW1:

计算用于更新第一个隐藏层W1的权重的链式规则显示了重用现有计算的可能性。

数学、乐高积木、神经网络产生怎样的花火?超超超赞!

更直观地说,从输出层到权值W1的路径涉及到已经在后面几层计算过的偏导数。

数学、乐高积木、神经网络产生怎样的花火?超超超赞!

例如,偏导数dLoss/dh2和dh2/dz2在上一节中已经被计算为输出层dLoss/dW2学习权值的依赖项。

数学、乐高积木、神经网络产生怎样的花火?超超超赞!

将所有的导数放在一起,我们可以再次执行链式法则来更新隐藏层W1的权值:

数学、乐高积木、神经网络产生怎样的花火?超超超赞!

最后,我们将新值赋给权值,并在网络上完成了一个训练步骤。

数学、乐高积木、神经网络产生怎样的花火?超超超赞!

代码实现

让我们把上面的数学方程转换成只用Numpy作为线性代数引擎的代码。神经网络是在一个循环中训练的,在这个循环中,每次迭代都向网络提供已校准的输入数据。在这个示例中,我们只考虑每次迭代中的整个数据集。由于我们在每个循环中更新可训练参数(代码中的矩阵w1和w2)及其相应的梯度(矩阵dL_dw1和dL_dw2),因此对前向步、损失步和向后步的计算具有良好的泛化性。代码见文末:

数学、乐高积木、神经网络产生怎样的花火?超超超赞!

运行代码

下面是一些经过训练的神经网络,它们经过多次迭代来逼近XOR函数。

首先,让我们看看隐藏层中有3个神经元的神经网络是如何具有小容量的。该模型学习用一个简单的决策边界将两个类分开,该边界开始是一条直线,但随后显示出非线性行为。随着训练的继续,右边图中的损失函数很好地降低了

数学、乐高积木、神经网络产生怎样的花火?超超超赞!

左图:准确性,中间:学习决策边界,右图:损失函数

在隐层中有50个神经元可以显著提高模型学习更复杂决策边界的能力。这不仅能产生更精确的结果,而且还能产生梯度爆炸,这在训练神经网络时是一个值得注意的问题。这种情况发生在非常大的梯度,在反向传播过程中乘以权重,从而生成较大的更新权重时。这就是为什么在训练的最后一步(步骤> 90)损失值突然增加的原因。损失函数的正则化组件计算平方值的权重已经非常大(sum(W²)/ 2N)。

数学、乐高积木、神经网络产生怎样的花火?超超超赞!

可以通过降低学习率来避免这个问题,如下所示。或者通过实施一项随着时间的推移而降低学习速度的策略。或者通过加强正则化,也许是L1而不是L2。梯度爆炸和梯度消失是有趣的现象,我们将在后面进行完整的分析。

数学、乐高积木、神经网络产生怎样的花火?超超超赞!

来源:https://towardsai.net/

如何获取代码

后台 输入 (严格大小写)

LEGO_Math

—End—

量化投资与机器学习微信公众号,是业内垂直于 Quant MFE CST 等专业的主流量化自媒体。公众号拥有来自 公募、私募、券商、银行、海外 等众多圈内 10W+ 关注者。每日发布行业前沿研究成果和最新资讯。

数学、乐高积木、神经网络产生怎样的花火?超超超赞!


以上所述就是小编给大家介绍的《数学、乐高积木、神经网络产生怎样的花火?超超超赞!》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

深入浅出Ajax

深入浅出Ajax

(美)Brett McLaughlin / 东南大学出版社 / 2006-5 / 98.00元

本书将教会您如何在很短的时间内掌握使用JavaScript代码来向服务器提交异步请求?同时,您可以学习如何使用诸如动态HTML、XML、JSON、DOM等技术来解决开发过程中遇到的许多问题。让你从那些繁琐而笨拙的网站开发技术中彻底解放出来!本书将是一本指导您进行异步开发的经典参考书籍。   作为一名网站设计人员,您也许时常因为遇到以下情况而烦恼:用户只是移动了鼠标就要从服务器重载数据......一起来看看 《深入浅出Ajax》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具