?
时时彩能赚钱么,pk10投注源码下载,极速开奖网北京赛车,时时彩后二做号器 凤凰彩票

资源 从最小二乘到DNN:六段代码了解深度学习简

时间:2017-09-26 16:22来源:未知 作者:admin 点击:
六段代码使深度学习发展成为今天的模样。本文介绍它们的发明者和背景。每个故事包括简单的代码示例,均已发布到 FloydHub 和 GitHub 上,欢迎一起探讨。 要想在 FloydHub 上运行代码示

  六段代码使深度学习发展成为今天的模样。本文介绍它们的发明者和背景。每个故事包括简单的代码示例,均已发布到 FloydHub 和 GitHub 上,欢迎一起探讨。

  要想在 FloydHub 上运行代码示例,请确保已经安装 floyd 命令行工具,并将我提供的代码示例复制到你的本地电脑上。如果你是新手,可以先阅读我之前的博客《My First Weekend of Deep Learning》(地址:)。在本地电脑的示例项目文件夹中创建 CLI 之后,即可使用下列命令在 FloydHub 上运行该项目:

  这个算法由法国数学家 Adrien-Marie Legendre 首次发表(1805, Legendre),他的另一大成就是确立标准米。他沉迷于预测彗星的位置。他根据彗星之前的几个位置进行不懈搜索,寻找计算彗星轨迹的方法。

  这真的是愚公移山一样的工作。他尝试了多种方法,终于找到了一个方法:首先猜测彗星未来的位置,然后平方误差,最后重新猜测以减少平方误差的总和。这就是线性回归损失函数的基础。

  在 Jupyter notebook 上运行上述代码,并逐渐熟悉它。m 代表系数(coefficient),b 代表预测中的常量,coordinates 代表彗星的位置。目的就是找到 m 和 b 的一种组合,使误差最小化。

  Legendre 的手动尝试减少误差率的方法比较费时。一个世纪后,来自荷兰的诺贝尔奖获得者 Peter Debye 创造了一种解决方案(1909, Debye)。

  我们想象 Legendre 关心的参数为X,Y 轴代表每个X值的误差值,Legendre 搜索产生最小误差的X。在下图中,我们可以看到当X = 1.1 时,误差 Y 的值最小。

  Peter Debye 注意到最小值左侧的偏斜度是负值,右侧是正值。因此,如果你知道任意 X 的斜率,就可以找到 Y 的最小值。

  这里使用的技巧是 learning_rate。通过向坡度的相反方向前进,接近最小值。此外,越接近最小值,坡度越小。随着坡度趋近于零,每前进一步,误差都将减小。

  将最小二乘法和梯度下降结合起来就得到线性回归。在二十世纪五六十年代,一组实验经济学家在早期计算机上实现了这些想法。该逻辑在穿孔卡片(真正手工制造的软件程序)上得到实现。他们花费数天准备这些卡片,用了多达 24 个小时的时间在计算机上运行一次回归分析。

  本质上,这种方法不会引入任何新东西,但是把误差函数和梯度下降结合起来的过程总是有一点纠结。运行以上代码,试着运行该线性回归模拟器()。

  给 Rosenblatt 的机器展示 50 对照片,每对照片中的两张各有一个不同的标记,机器可以在没有经过预编程的前提下将一对图片区分开来。这个结果使当时的公众对能真正学习的机器的可能性感到着迷。

  在每一个训练周期,将数据从左边输入,并随机初始化所有的权重,然后将输入加和。如果和是负值,输出为 0,否则为 1。

  当预测是正确的时候,该周期中的权重不会发生变化。如果预测结果是错的,通过将误差乘以学习率(learning rate)调整权重的值。

  Minsky 和 Papert 的书发表仅一年后,一个芬兰硕士生发现了利用多层感知机解非线性问题的理论 (Linnainmaa, 1970)。由于当时主流对感知机持批评态度,对 AI 的投资枯竭了十多年。这就是众所周知的 AI 的第一个冬天。

  Minsky 和 Papert 对感知机的有力批评在于 XOR(与或)问题的讨论上。其中的逻辑和 OR 逻辑一样,只有一个期望值,当有两个为线)。

  在 OR 逻辑中,分离真组合和假组合是可能的。但很明显的是,用线性函数分离 XOR 逻辑是不可能的。

  到了 1986 年,几个实验证明了神经网络可以用来解决复杂的非线性问题 (Rumelhart et al., 1986)。当时,计算机的速度比起理论提出的时候已经快了 10,000 倍。Rumelhart 等人介绍他们的传奇论文如下:

  「我们为类神经元单元组成的网络加入了新的学习过程,反向传播。反向传播不断重复调整网络连接的权重,以最小化网络的实际输出向量和期望输出向量之间的差异。经过权重调整之后,网络内部的隐藏单元(不包括输入层和输出层)可以表示任务范围的重要特征,并通过单元间的相互作用捕捉任务中的规律。神经网络创建有用的新特征的能力使其区别于早先提出的更简单的反向传播方法,比如感知机收敛过程(perceptron-convergence procedure)。」Nature 323, 533 - 536 (09 October 1986)

  在深入讨论代码的细节之前,试着用一到两个小时运行这个模拟器()领会其中的核心逻辑。然后阅读 Trask 的博客(),然后再重看四遍。注意 X_XOR 数据中添加的参量 [1] 是偏置神经元(bias neurons,),它们的作用和线性函数的常量是一样的。

  反向传播、矩阵乘法以及随机梯度下降的组合令人难以理解。为了简要理解其背后发生了什么,通常会将过程可视化,只需要理解其中的逻辑,而不需要对其建立完整的心理图像。

  此外,还可以观看 Andrew Karpathy 的反向传播的讲座(,概念的可视化(),以及阅读 Michael Nielsen 的书中关于反向传播的章节()。

  深度神经网络是指在输入层与输出层之间含有超过一个隐藏层的网络。它最早由 Rina Dechter 于 1986 年提出 (Dechter, 1986),并在 2012 年成为业界主流,伴随着 IBM Watson 在 Jeopardy 中大获全胜,以及谷歌大脑项目猫识别器的成功。

  深度神经网络的核心结构一如既往,但现在被应用到了若干个不同问题上。正则化上也有很多提升,起初是一组简化噪音数据的数学函数(Tikhonov, A. N., 1963),现在被用于神经网络以提升泛化能力。

  深度神经网络的很大一部分创新得益于算力的发展,加快了研究者的创新周期:八十年代中期一台计算机需要一年时间解决的问题,利用今天的 GPU 技术只需要半秒钟。

  现在,计算成本的降低和深度学习库的发展使深度神经网络被大大普及。这里有一个常见的深度学习堆栈的例子,从最底层开始:

  如果你想要更好地了解神经网络及其实现,请阅读我之前在 FloydHub 博客上写的文章:我学习深度学习的第一周()。

(责任编辑:admin)
顶一?
(0)
0%
踩一?
(0)
0%
------分隔?----------------------------
?