被错误理解的人工神经网络(三)!

简介: 那些年我们错误理解了人工神经网络,想知道错在什么地方吗?快来学习一下吧。

被错误理解的人工神经网络(一)!

被错误理解的人工神经网络(二)!

本文我们聊聊另外两个人工神经网络的误解:许多算法都需要自己来写?;神经网络训练需要大量的数据?

许多训练算法存在于神经网络中

神经网络的学习算法试图优化神经网络的权重,直到满足一些停止条件。这种情况通常是在网络错误达到训练集合的可接受水平时,验证集上的网络错误开始恶化时或者当指定的计算预算已经用尽时。神经网络最常见的学习算法是反向传播:这是一种使用随机梯度下降的算法,这在本系列前面已经讨论过。反向传播包含两个步骤:

  1.  前馈通道:将训练数据集通过网络并记录神经网络的输出,并计算网络的误差。
  2.  向后传播:误差信号通过网络传回,神经网络的权重使用梯度下降进行优化。

这种方法存在一些问题。一次调整所有权重可导致神经网络在权重空间中的明显移动,梯度下降算法非常慢,并且梯度下降算法易受局部最小值影响。前两个问题可以通过使用梯度下降变种包括动量梯度下降(速传),涅斯捷罗夫的加速动力(NAG)梯度下降的自适应梯度算法AdaGrad),弹性传播(RPROP)以及均方根传播RMSProp)来解决。从下面的图片可以看出,经典的梯度下降算法可以有显着的改进。

558b93866486aeacb77a3d79d3ad5344283b7551

也就是说,这些算法无法克服局部最小值,并且在尝试同时优化神经网络的体系结构和权重时也不太有用。为了实现这一点,我们需要全局优化算法。目前两种流行的全局优化算法是粒子群优化(PSO)和遗传算法(GA)。

神经网络矢量表示

全局优化算法通过将神经网络编码为权重矢量来完成,每个权重表示神经网络中连接的权重。我们可以使用大多数元启发式搜索算法来训练神经网络。这种技术在深度神经网络中效果不佳,因为它会使矢量变得太大。

1309e31fc6bf5d2621396419de82c9f692031238

该图说明了神经网络如何以矢量符号表示并与搜索空间的概念相关。

粒子群优化

为了训练使用PSO的神经网络,我们可以构建这些神经网络的总体/群体。每个神经网络都被表示为一个权重向量,并根据其从全球最佳粒子及其个人最佳位置进行调整。

在完成训练数据集的一个前馈通过之后,适应度函数被计算为重建的神经网络的总和平方误差,这种方法主要考虑的是权重更新的速度。这是因为如果权重调整过快,神经网络的总和平方误差将停滞并且不会发生学习。

5f68b02aabfa56a6cce8e44bc095a9e70ae3c528

该图显示了粒子在单个群体粒子群优化算法中如何相互吸引。

遗传算法

为了使用遗传算法训练神经网络,我们首先构建代表神经网络的矢量群体。然后,我们将三个遗传算法应用于该群体,以发展更好的神经网络。这三个遗传算法是:

  1. 选择:使用一次前馈通过后计算的每个网络的总和平方误差,我们对神经网络的总体进行排序。总体中最高的x%被选择为“生存”到下一代,并用于交叉。
  2. 交叉:总体基因的顶部x%被允许相互交叉,这个过程形成“后代”。在上下文中,每个后代都将代表一个来自两个“父”神经网络的权重的新神经网络。
  3. 突变:该遗传算法需要保持群体的遗传多样性。选择一小部分进行突变,这些神经网络中的一些权重将在特定范围内随机调整。
807f57bd3724d59cfe51eec81c7e5c8a03bd9a9b

该算法是将选择、交叉和突变应用于表示为矢量的神经网络群体。

除了这些基于人群的启发式搜索算法,其他算法已被用于训练神经网络,包括增添了动力反向传播,差分进化模拟退火,和许多更多。就个人而言,我建议使用局部和全局优化算法的组合来克服两者的缺点。

神经网络并不总是需要大量的数据

神经网络可以使用三种学习策略,即监督学习策略,无监督学习策略或强化学习策略。监督式学习策略至少需要两个数据集,一个由预期输出的输入量组成的训练集,以及一个由没有预期输出的输入组成的测试集。这两个数据集都必须包含标记数据,即预先知道目标的数据模式。无监督学习策略通常用于发现未标记数据中的隐藏结构(如,隐马尔可夫链),它们的行为与聚类算法类似。强化学习是基于一个简单的前提,就是奖励好行为的神经网络并惩罚他们的坏行为。由于无监督和强化学习策略不要求数据被标记,因此它们可以应用于很多我们人类未知的问题。

无监督学习

最受欢迎的无监督神经网络体系结构之一是自组织映射(也称为Kohonen映射)。自组织映射基本上算是一种多维缩放技术,它可以构建一个基本数据集Z概率密度函数的近似值,同时保留该数据集的拓扑结构。这可以通过将数据集Z中的输入向量zi映射到特征映射V中的权重向量v j(神经元)来完成。保留拓扑结构仅仅意味着如果两个输入向量在Z中靠近在一起,那么这些输入向量映射到的神经元V 也将靠近在一起。

e42f7ca3bfaa9d30d5f0492d8ac60e23e2c72ee7

有关自组织映射的更多信息以及如何使用它们来生成较低维度的数据集,请单击此处SOM Self-Organizing Maps)的另一个有趣的应用是着色股票交易的时间序列图,这是为了显示当时的市场状况。这个网站提供了一个详细的教程和代码片段来实现改进外汇交易策略的想法。

强化学习

强化学习策略由三部分组成。规定神经网络如何做出决策的规则,例如使用技术指标和基本指标。奖罚函数区分好与坏,例如赚钱与赔钱。还需要有一个指定的长期目标的价值函数。在金融市场(和游戏)中,强化学习策略特别有用,因为神经网络可以学习优化特定数量,例如风险调整后回报的适当度量

fa0ecb8fcccbac1be87964720c3b920dacb097f8

该图显示了神经网络如何被负面或正面地强化。

  数十款阿里云产品限时折扣中,赶紧点击领劵开始云上实践吧!

以上为译文。

本文由阿里云云栖社区组织翻译。

文章原标题《artificial-neural-networks-some-misconceptions》,

作者:Jayesh Bapu Ahire  译者:虎说八道,审校:。

文章为简译,更为详细的内容,请查看原文

相关文章
|
6月前
|
机器学习/深度学习 人工智能 算法
人工智能之从零理解人工神经网络
人工智能并非是一个新型的词汇,从十九世纪五十年代开始,人们就开始探索为机器赋予类似人的智能能力。限于当时的基础数学理论不够完善,人工智能的发展并不顺利。直到九十年代发展出了基于统计学的数学工具,人工智能才得到飞速的发展。
179 5
人工智能之从零理解人工神经网络
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
脑科学与人工神经网络ANN的发展历程
脑科学与人工神经网络ANN的发展历程
127 0
|
8月前
|
机器学习/深度学习 调度
【FFNN负荷预测】基于人工神经网络的空压机负荷预测(Matlab代码实现)
【FFNN负荷预测】基于人工神经网络的空压机负荷预测(Matlab代码实现)
|
9月前
|
机器学习/深度学习 计算机视觉
基于人工神经网络的车牌识别系统的研究(Matlab代码实现)
基于人工神经网络的车牌识别系统的研究(Matlab代码实现)
123 1
基于人工神经网络的车牌识别系统的研究(Matlab代码实现)
|
4月前
|
机器学习/深度学习 自然语言处理 算法
一分钟了解人工神经网络(ANN)
人工神经网络(Artificial Neural Network,简称ANN)是一种模仿生物神经网络的算法数学模型,用于进行信息处理和模式识别。 人工神经网络的基本原理是模拟人脑中神经元之间的相互连接和信息传递。它由多个人工神经元(节点)组成,这些神经元通过连接权重相互传递信号,并通过激活函数对输入信号进行处理。如果网络不能准确识别输入,系统就会调整权重。经过充分的训练后,它将始终如一地识别出正确的模式。
|
4月前
|
机器学习/深度学习 自然语言处理 算法
Python高级算法——人工神经网络(Artificial Neural Network)
Python高级算法——人工神经网络(Artificial Neural Network)
86 0
|
4月前
|
机器学习/深度学习 人工智能 算法
数学建模——人工神经网络模型
数学建模——人工神经网络模型
|
11月前
|
机器学习/深度学习 人工智能 算法
基于Transformer的人工神经网络,将有机结构的图像转换为分子结构
基于Transformer的人工神经网络,将有机结构的图像转换为分子结构
179 0
|
8月前
|
机器学习/深度学习 算法 调度
【经济调度】基于多目标宇宙优化算法优化人工神经网络环境经济调度研究(Matlab代码实现)
【经济调度】基于多目标宇宙优化算法优化人工神经网络环境经济调度研究(Matlab代码实现)
|
8月前
|
机器学习/深度学习 数据采集 数据可视化
基于Kaggle训练集预测的多层人工神经网络的能源消耗的时间序列预测研究(Matlab代码实现)
基于Kaggle训练集预测的多层人工神经网络的能源消耗的时间序列预测研究(Matlab代码实现)

热门文章

最新文章