「机器学习」DOR自我探索的分布式神经网络

原创 羽月风花  |  文章来源:币圈达人发布时间:2020-05-24 01:28  阅读 140 次 评论 0 条
众人帮 趣闲赚 牛帮
摘要:

随着以太坊2.0版本的临近,公链平台的成熟度日益提高,已经容许大型企业在上面搭建生态与DAPP,区块链行业的繁荣与技术的长足发展使我们更多地关注于未来的技术演变与关键节点的转折。本文主要阐述以下方面,基于DOR神经网络的分布式训练,DOR分

随着以太坊2.0版本的临近,公链平台的成熟度日益提高,已经容许大型企业在上面搭建生态与DAPP,区块链行业的繁荣与技术的长足发展使我们更多地关注于未来的技术演变与关键节点的转折。本文主要阐述以下方面,基于DOR神经网络的分布式训练,DOR分布式神经网络的深度学习,基于DOR的激励机制以及DOR在神经网络的自我探索。

我们致力于打造一个拥有自我探索能力,不断强大的分布式神经网络,在医疗、教育、零售以及大型企业的运用将会是DOR的主要研究方向。

一. DOR神经网络的发展与演进

数据正在以史无前例的规模产生,人们对数据的分析需求与日俱增。这些数据需要被有效分析以获得有意义的信息。

深度学习作为强有力的分析工具,在视觉、语言和智能推理等复杂任务上表现都很好。然而,这些算法需要花很长的时间来训练大量的数据,才能得到有效的结果。

神经网络由于其学习和适应、自组织、函数逼近和大规模并行处理等能力,因而具有用于智能系统的潜力。

神经网络在模式识别、信号处理、系统辨识和优化等方面的应用,已有广泛研究。在控制领域,已经做出许多努力,把神经网络用于控制系统,处理控制系统的非线性和不确定性以及逼近系统的辨识函数等。

我们在用个人电脑(PC)端处理大量的数据时,往往会受到孤岛效应的制衡,每一个人得到的结论与数据分析结果很难进行有效的统一与分析,同样地,我们在得到集群式的结论时,也没有有效地覆盖到细分的领域内,如餐饮、金融、大城市调度信息等,为此我们需要将分布式的学习进行扩展,让每一台PC或移动端都能够实时地提供领域内的有效信息,DOR并不会进行集中式数据分析处理,而会采用DOR技术进行互相分发,以提供在DOR内深度神经网络的整体学习能力与自我探索能力。

DOR的自我探索能力将会对区块链行业乃至整个大数据行业产生深远的影响,将A领域的数据分发至B领域,以此同时提升双方在领域内信息的处理能力,可以有效地提高DOR的分布式神经网络的健壮性。

1. DOR神经网络的分布式训练

传统的分布式训练可以分为两种,数据并行和模型并行,在此处,DOR采用的架构与传统的分布式训练极为接近,但由于数据的处理量与分析方式不同,因此我们参考了传统的分布式训练并将其重新分类。

数据并行把数据集平分到各个节点,每个节点都有一份完整的模型以及本地权值子集,每个节点训练数据集子集,并且更新本地权值子集。这些本地权值在集群节点间共享,并通过积累算法,计算得到全局权值。然后全局权值被分发回各个节点,继续下一个batch的训练。

模型并行把模型结构分割到不同节点。DOR在个人数据开发者的程式中把结构划分到2个GPU,以满足GPU显存要求。模型并行应用于,1)模型太大;2)模型结构可以并行。

2. DOR分布式训练框架的组成

2.1 DOR分布式节点间通信

分布式训练另一个重要部分就是节点间的数据通信。DOR预计会在第四季度上线个人节点的统一标准与学习程式,将分布式的节点进行第一次联系后,不间断地进行交替式通信,运用区块链技术的好处彰显于此。

2.2 梯度积累

梯度积累算法在分布式训练系统中扮演着重要角色。这些算法负责收集每个worker节点的本地梯度,再把更新之后全局梯度分发回各个worker节点。

2.3 低精度训练

基于ImageNet训练Resnet,目前最快4min,DOR会将低精度训练提升至2-3min。

2.4 人工神经网络

DOR采用迭代的算法来训练整个网络,随机设定初值,计算当前网络的输出,然后根据当前输出和label之间的差去改变前面各层的参数,直到收敛(整体是一个梯度下降法)。

对仅含几层网络,该训练方法就已经很不理想,但在DOR的网络中,该方法可以有效地处理大量的数据接通神经网络。

深度结构(涉及多个非线性处理单元层)非凸目标代价函数中普遍存在的局部最小是训练困难的主要来源:

(1)梯度越来越稀疏:从顶层越往下,误差校正信号越来越小;

(2)收敛到局部最小值:尤其是从远离最优区域开始的时候(随机值初始化会导致这种情况的发生);

(3)一般,我们只能用有标签的数据来训练,但大部分的数据是没标签的,而大脑可以从没有标签的的数据中学习;这是神经网络与大脑的不同之处,当神经元足够丰富,数据足够饱满时,神经网络的学习能力才会日渐凸显出来,分布式节点通信的互通,是数据是否饱满的主要评判特征。

3. DORT Learning的学习过程

DORT为DOR在未来的测试网(DOR Testnet)上运用的主要技术。

「DORT」提供个人PC与移动端的数据挖掘的深度神经学习逻辑——使用自下上升非监督学习(从底层开始,一层一层的往顶层训练)DORT网络学习的准则是:如果网络作出错误的判断,则通过网络的学习,应使得网络减少下次犯同样错误的可能性。首先,我们给网络的各节点权值赋予(0,1)区间内的随机值,将“A”所对应的图像模式输入给网络,网络将输入模式加权求和,与门限比较,再进行非线性运算,得到网络的输出。在此情况下,网络输出为“1”和“0”的概率各为50%,也就是说完全随机的。这时如果输出为“1”(结果正确),则使连接权值增大,以便使网络再次遇到“A”模式输入时,仍能做出正确的判断。

如果输出为“0”(即结果错误),则把网络连接权值朝着减小综合输入加权值的方向调整,其目的在于使网络下次再遇到“A”模式输入时,减小犯同样错误的可能性。如此操作调整,当给网路轮番输入若干个手写字母“A”,“B”后,经过网络按以上学习方法进行若干次学习后,网络判断的正确率将大大提高。这说明网络对这两个模式的学习已经获得成功,它已将这两个模式分布地记忆在网络的各个连接权值上。当网络再次遇到其中任何一个模式时,能够作出迅速,准确的判断和识别。一般来说,网络中所含的神经元个数越多,则它能记忆,识别的模式也就越多。

DORT采用无标定数据分层训练各层参数,这一步可以看作是一个无监督训练过程,是和传统神经网络区别最大的部分(这个过程可以看作是DORT learning的初步过程):

具体地,先用无标定数据训练第一层,训练时先学习第一层的参数(这一层可以看作是得到一个使得输出和输入差别最小的三层神经网络的隐层),由于模型capacity的限制以及稀疏性约束,使得得到的模型能够学习到数据本身的结构,从而得到比输入更具有表示能力的特征;在学习得到第n-1层后,将n-1层的输出作为第n层的输入,训练第n层,由此分别得到各层的参数;

自顶向下的监督学习(通过带标签的数据去训练,误差自顶向下传输,对网络进行微调):

④基于第一步得到的各层参数进一步fine-tune整个多层模型的参数,这一步有监督训练过程;第一步类似神经网络的随机初始化过程,由于DL的第一步不是随机初始化,而是通过学习输入数据的结构得到的,因而这个初值更接近全局最优,从而能够取得更好的效果;

二. DOR神经网络的深度学习

1. DOR深度神经网络的深度学习

深度学习属于机器学习的一种。介绍深度学习之前,我们先大致了解一下机器学习的运作原理,因为DOR的分布式神经训练需要拟用海量的节点进行批量式的机器学习。拿监督学习为例,其本质上是要找到一个函数映射:输入数据(也就是训练样本)通过函数映射(也就是我们的机器学习算法)到输出空间上(也就是目标值,如果是分类问题,映射到某一类上)。

用作公式表达即为:

MeachineLearning≈LookingForAFunction.MeachineLearning≈LookingForAFunction.

神经元本质上是一个简单函数,其函数形式为:

f=σ(z);f=σ(z);

z=a1w1+a2w2+aiwi+...+aKwK+b;z=a1w1+a2w2+aiwi+...+aKwK+b;

其中,σ函数σ函数属于一个激活函数,zz是一个线性函数,其结果可以是任意值,通过激活函数,给模型带来非线性因素,增加模型的表达能力;通常情况下,线性模型的表达能力不够。

神经元的wiwi和bb就是神经元模型的训练参数;参数不同,形成的神经元也不相同。神经元的不同连接方式形成的网络架构也各不相同。神经网络的参数包括所有神经元的wi(weights)wi(weights)和b(biases)b(biases)。

如果说,一个神经元是一个简单函数functionfunction,那么神经网络就是一个简单函数集afunctionsetafunctionset.

深度学习中的“深度”是指DOR神经网络的层数有很多。

这种方法存在的一个问题:最后求解出来的最小值,不是全局最小值,而是局部最小值。

2. DORT如何从函数空间找到函数

这里存在一个指标来评价映射函数的好坏,如:准确率,错误率,应用率等。通过这个最优化数据指标我们就能找到 最好的映射函数,也就是机器学习里的算法模型。

所以,机器学习模型训练过程主要有三个阶段:

确定模型,从而确定函数映射空间;

将训练数据应用于函数空间,对模型进行训练;

找出最好的模型;之后,我们可以将训练好的模型应用到unseen data上(这也是我们最终的目的)。

3. DORT模型评测 goodness of function

以手写数字识别为例,首先我们知道这是一个监督学习问题;其训练数据为实现收集的手写数字和标签;

最终达到输入一个手写的数字能给出其所属的类别(0-9/0-100)之前我们定义的函数集合,如何评价这个函数集合(模型)表现如何呢?所以需要定义一个评价指标。这里定义的评价指标为Loss函数,指输出值和真实值之间的差距(可以通过计算两个值之间的距离来表示)。最终我们通过优化在所有数据上的总损失Loss来找到最优的模型。

本质上就是通过最小化Loss函数来找到最合适的参数θ∗参数θ∗,从而确定最优化的模型。

怎么找到最优化的参数θ∗pickthebestfunctionθ∗pickthebestfunction最先引入脑海的方法就是穷举法,把所有可能的取值都试一次。这种方法肯定不可取!因为,通常情况下深度学习模型层数不止3层,而每层的神经元又有很多,导致最后要优化的参数也是一个非常大的数字。

方法一:Gradient Descent 梯度下降算法同时,由于初始的权重系数wiwi是随机选取的,导致最后的最优化结果也各不相同。

方法二:Backpropagation 反向传播算法Caffe,TensorFlow等都支持的这种求解方法。

为什么模型总是竖向扩张,并非横向扩展。

Deeper is Better.一般而言,参数越多,模型表现效果越好。

对于任意的连续函数ff,定义为:f:RN→RMf:RN→RM理论上来讲,这种能由深度学习解决的问题,也可以通过有一个隐藏层的网络模型来解决(给它足够多的神经元)。

在DORT中,当网络足够健壮的时候,我们将更多的神经元分配给深度学习机制,可以将模型的深度极大的扩充,并辅以分析。

4. DOR针对传统的深度学习训练存在的问题

4.1 数据获取问题

传统深度学习需要依赖于有标签的数据才能进行训练。然而有标签的数据通常是稀缺的,因此对于许多问题,很难获得足够多的样本来拟合一个复杂模型的参数。

在DORT网络中,我们可以迅速获取大量的富含价值的标签,在标签交换的过程中进行深度自我拟合的神经学习。

考虑到深度网络具有强大的表达能力,在不充足的数据上进行训练将会导致过拟合。

4.2 局部极值问题

使用监督学习方法来对浅层网络(只有一个隐藏层)进行训练通常能够使参数收敛到合理的范围内。但是当用这种方法来训练深度网络的时候,并不能取得很好的效果。

特别的,使用监督学习方法训练神经网络时,通常会涉及到求解一个高度非凸的优化问题(例如最小化训练误差 ,其中参数 是要优化的参数。

对深度网络而言,这种非凸优化问题的搜索区域中充斥着大量“坏”的局部极值,因而使用梯度下降法(或者像共轭梯度下降法,L-BFGS等方法)效果并不好。

而DOR使用的横向跨列法可以尽可能地避免坏的局部极值的产生。

4.3 梯度弥散问题

梯度下降法(以及相关的L-BFGS算法等)在使用随机初始化权重的深度网络上效果不好的技术原因是: 梯度会变得非常小。具体而言,当使用反向传播方法计算导数的时候,随着网络的深度的增加,反向传播的梯度(从输出层到网络的最初几层)的幅度值会急剧地减小。结果就造成了整体的损失函数相对于最初几层的权重的导数非常小。这样,当使用梯度下降法的时候,最初几层的权重变化非常缓慢,以至于它们不能够从样本中进行有效的学习。这种问题通常被称为“梯度的弥散”。

尽可能地避免梯度的弥散,是DOR项目成立以来一直努力克服的问题,在汇集大量的神经网络实验数据后,横向跨列法的在深度网络上的表现远远好于梯度下降法。

关于更多DOR信息:http://dorlink.io/

更多区块链项目介绍:http://www.qukuaiwang.com.cn/news/xiangmu

风险提示:区块链投资具有极大的风险,项目披露可能不完整或有欺骗。请在尝试投资前确定自己承受以上风险的能力。区块网只做项目介绍,项目真假和价值并未做任何审核!

历史上的今天:

本文地址:https://www.u5881.com/6418.html
版权声明:本站推荐的部分活动具有时效性,老淘本人并不能保证当您看到本文时,该项活动是否仍在继续。

发表评论


表情