① 深度学习中经常提到的神经网络是什么
介绍深度学习就必须要介绍神经网络,因为深度学习是基于神经网络算法的,其实最开始只有神经网络算法,上文也提到2006年Geoffrey Hinton老爷子提出了Deep Learning,核心还是人工神经网络算法,换了一个新的叫法,最基本的算法没有变。
通过神经元接收外界信号,达到一定阈值,触发动作电位,通过突触释放神经递质,可以是兴奋或抑制,影响突触后神经元。通过此实现大脑的计算、记忆、逻辑处理等,进行做出一系列行为等。同时不断地在不同神经元之间构建新的突触连接和对现有突触进行改造,来进行调整。有时候不得不感叹大自然的鬼斧神工,900亿神经元组成的神经网络可以让大脑实现如此复杂的计算和逻辑处理。
② 深度神经网络具体的工作流程是什么样的
所谓神经网络算法,就是对人类学习能力的一种模拟算法。理论认为人的认知模式,处事方式是存储在神经元与神经元之间的连接上的,称为“神经元连接权重”,人脑神经布局类似网状结构,神经元是网的交叉点,权重就是网的连线,这些连线有粗有细,也就是权重的大小不同。而人类的学习能力就是去不断改变权重的值,从而改变自己的认知模式和处事方式,简单的说,不同人对同一个外部事物有不同看法,就是因为同样的初始信号,在不同粗细的神经元连线放大或缩小后,变成了侧重点不同的最终信号。最开始的“感知机"只用了2层神经元,即输入层和输出层,发现很多问题无法模拟,最着名的就是“异或”问题。 后来聪明的人在输入层和输出层之间加了一层神经元叫做隐藏层,3层的神经网络已经可以模拟二维上的任意函数曲线。只不过此时对“连接权重”的训练过程就变得非常复杂,通常使用一种叫“误差反传”的计算方法。参考人脑,人脑大概有亿级层数的神经元(当然,人脑是多任务处理器集合,某些特定的任务如人脸识别,只需用到大脑的某个局部)。于是人们会猜想,更多的隐藏层是否会有更高的学习效果。事实证明的确如此,随着隐藏层数的增加,一些图片,语音的识别率越来越高。因此,就有了深度神经网络这一概念。但隐藏层数越多训练过程也越复杂,且误差会在多层传递的时候衰减,导致GradientVanish问题,最终导致训练结果收敛在局部最优或者难以收敛。后来又有聪明的人不断改进误差训练算法,神经网路的层数深度越来越大,现在最NB的是微软的“残差神经网络”,已经将隐藏层提高至152层。
③ 用机器学习检测异常点击流
用机器学习检测异常点击流
本文内容是我学习ML时做的一个练手项目,描述应用机器学习的一般步骤。该项目的目标是从点击流数据中找出恶意用户的请求。点击流数据长下图这样子,包括请求时间、IP、平台等特征:
该项目从开始做到阶段性完成,大致可分为两个阶段:算法选择和工程优化。算法选择阶段挑选合适的ML模型,尝试了神经网络、高斯分布、Isolation Forest等三个模型。由于点击流数据本身的特性,导致神经网络和高斯分布并不适用于该场景,最终选择了Isolation Forest。工程优化阶段,最初使用单机训练模型和预测结果,但随着数据量的增加,最初的单机系统出现了性能瓶颈;然后开始优化性能,尝试了分布化训练,最终通过单机异步化达到了性能要求。
1 算法选择
1.1 神经网络
刚开始没经验,受TensorFlow热潮影响,先尝试了神经网络。选用的神经网络是MLP(Multilayer Perceptron,多层感知器),一种全连接的多层网络。MLP是有监督学习,需要带标签的样本,这里“带标签”的意思是样本数据标注了哪些用户请求是恶意的、哪些是正常的。但后台并没有现成带标签的恶意用户样本数据。后来通过安全侧的一些数据“间接”给用户请求打上了标签,然后选择IP、平台、版本号、操作码等数据作为MLP的输入数据。结果当然是失败,想了下原因有两个:
1, 样本的标签质量非常差,用这些样本训练出来的模型性能当然也很差;
2, 输入的特征不足以刻画恶意用户。
数据的质量问题目前很难解决,所以只能弃用MLP。
1.2 高斯分布
然后尝试其他模型。通过搜索发现,有一类ML模型专门用于异常检测,找到了Andrew Ng介绍的基于高斯分布的异常检测算法:高斯分布如下图所示:
这个算法的思想比较简单:与大部分样本不一致的样本就是异常;通过概率密度量化“不一致”。具体做法是:选择符合高斯分布或能转换为高斯分布的特征,利用收集到的数据对高斯分布做参数估计,把概率密度函数值小于某个阈值的点判定为异常。
所谓的参数估计是指,给定分布数据,求分布的参数。对高斯分布来说,就是求μ和σ。用极大似然估计可以得到高斯分布参数的解析解:
得到高斯分布参数后,用下式计算概率密度:
X表示一个特征输入。若有多个特征x0、x1、…、xn,一种简单的处理方法是将其结果连乘起来即可:f(x) = f(x0)f(x1)…f(xn)。
然后选定一个阈值ε,把f(x) < ε的样本判定为异常。ε值需根据实际情况动态调整,默认可设定ε = f(μ- 3σ)。
把这个模型初步应用于点击流异常检测时,效果还不错,但在进一步实施过程中碰到一个棘手问题:样本中最重要的一个特征是操作码,当前操作码在微信后台的取值范围是[101,1000],每个操作码的请求次数是模型的基础输入,对900个特征计算概率密度再相乘,非常容易导致结果下溢出,以致无法计算出精度合适的概率密度值。这个现象被称为维度灾难(Dimension Disaster)。
解决维度灾难的一个常见做法是降维,降维的手段有多种,这里不展开讨论了。在点击流分析的实践中,降维的效果并不好,主要原因有两个:
1, 正常用户和恶意用户的访问模式并不固定,导致很难分解出有效的特征矩阵或特征向量;
2, 降维的本质是有损压缩,有损压缩必定导致信息丢失。但在本例中每一维的信息都是关键信息,有损压缩会极大破坏样本的有效性。
高斯分布模型的维度灾难在本例中较难解决,只能再尝试其他模型了
1.3 Isolation Forest
Isolation Forest,可翻译为孤异森林,该算法的基本思想是:随机选择样本的一个特征,再随机选择该特征取值范围中的一个值,对样本集做拆分,迭代该过程,生成一颗Isolation Tree;树上叶子节点离根节点越近,其异常值越高。迭代生成多颗Isolation Tree,生成Isolation Forest,预测时,融合多颗树的结果形成最终预测结果。Isolation Forest的基础结构有点类似经典的随机森林(Random Forest)。
这个异常检测模型有效利用了异常样本“量少”和“与正常样本表现不一样”的两个特点,不依赖概率密度因此不会导致高维输入的下溢出问题。提取少量点击流样本测试,它在900维输入的情况下也表现良好,最终选择它作为系统的模型。
2 工程优化
工程实现经历了单机训练、分布式训练、单机异步化训练3个方案,下面内容介绍实现过程中碰到的问题和解决方法。
2.1 单机训练
整个系统主要包括收集数据、训练模型、预测异常、上报结果四个部分。
2.1.1 收集数据
刚开始尝试该模型时,是通过手工方式从mmstreamstorage获取样本的:
1,通过logid 11357,得到手工登录成功用户的uin和登录时间;
2,利用mmstreamstorage提供的接口,得到用户登录后10分钟的点击流;
但这样做有两个缺点:
1,上述步骤1是离线手工操作的,需要做成自动化;
2,mmstreamstorage的接口性能较差,只能提供2万/min的查询性能,上海IDC登录的峰值有9万/min。
改进办法是复用点击流上报模块mmstreamstorage,增加一个旁路数据的逻辑:
1,手工登录时在presence中记录手工登录时间,mmstreamstorage基于该时间旁路一份数据给mmguardstore。由于mmstreamstorage每次只能提供单挑点击流数据,所以需要在mmguardstore中缓存;
2,mmguardstore做完数据清洗和特征提取,然后把样本数据落地,最后利用crontab定期将该数据同步到Hadoop集群中。
最终的数据收集模块结构图如下所示:
点击流数据提供了IP、平台、版本号、操作码等特征,经过多次试验,选定用户手工登录后一段时间内操作码的访问次数作为模型的输入。
上面我们提到过点击流的操作码有900个有效取值,所以一个显然的处理方法是,在mmguardstore中把用户的点击流数据转化为一个900维的向量,key是cgi id,value是对应cgi的访问次数。该向量刻画了用户的行为,可称为行为特征向量。
2.1.2 训练模型
初起为了控制不确定性,只输入1万/分钟的样本给模型训练和预测。系统的工作流程是先从Hadoop加载上一分钟的样本数据,然后用数据训练Isolation Forest模型,最后用训练好的模型做异常检测,并将检测结果同步到tdw。
在1万/分钟输入下取得较好的检测结果后,开始导入全量数据,全量数据数据的峰值为20万/分钟左右。出现的第一个问题是,一分钟内无法完成加载数据、训练模型、预测结果,单加载数据就耗时10分钟左右。这里先解释下为什么有“一分钟”的时间周期限制,主要原因有两个:
1, 想尽快获取检测结果;
2, 由于点击流异常检测场景的特殊性,模型性能有时效性,需要经常用最新数据训练新的模型。
解决性能问题的第一步是要知道性能瓶颈在哪里,抽样发现主要是加载数据和训练模型耗时较多,预测异常和上报结果的耗时并没有随数据量的增加而快速上涨。
加载数据的耗时主要消耗在网络通信上:样本文件太大了,导致系统从Hadoop同步样本数据时碰到网络带宽瓶颈。但由于样本是文本类数据,对数据先压缩再传输可极大减少通信量,这里的耗时比较容易优化。
训练模型的耗时增加源于输入数据量的增加。下图是1万样本/min的输入下,系统个阶段的耗时:
其中:
加载程序: 2s
加载数据: 6s
训练模型:11s
分类异常: 2s
保存结果: 4s
单轮总耗时:25s
需处理全量数据时,按线性关系换算,“训练模型”耗时为:11s * 24 = 264s,约为4.4分钟,单机下无法在1分钟内完成计算。
最先想到的优化训练模型耗时的办法是分布式训练。
2.2 分布式训练
由于scikit-learn只提供单机版的Isolation Forest实现,所以只能自己实现它的分布式版本。了解了下目前最常用的分布式训练方法是参数服务器(Parameter Server,PS)模式,其想法比较简单:训练模型并行跑在多机上,训练结果在PS合并。示意图如下所示:
分布式训练对算法有一定要求,而Isolation Forest正好适用于分布式训练。
然后尝试在TensorFlow上实现Isolation Forest的分布式训练版本。选择TensorFlow的原因有主要两个:
1, TensorFlow已经实现了一个分布式训练框架;
2, TensorFlow的tf.contrib.learn包已经实现的Random Forest可作参考(Isolation Forest在结构上与Random Forest类似),只需对Isolation Forest定制一个Operation即可。
写完代码测试时,发现了个巨坑的问题:TenforFlow内部的序列化操作非常频繁、性能十分差。构造了110个测试样本,scikit-learn耗时只有0.340秒,29万次函数调用;而TensorFlow耗时达207.831秒,有2.48亿次函数调用。
TensorFlow性能抽样:
Scikit-learn性能抽样:
从TensorFlow的性能抽样数据可以看到,耗时排前排的函数都不是实现Isolation Forest算法的函数,其原因应该与TensorFlow基于Graph、Session的实现方式有关。感觉这里坑比较深,遂放弃填坑。
也了解了下基于Spark的spark-sklearn,该项目暂时还未支持Isolation Forest,也因为坑太深,一时半会搞不定而放弃了。
2.3 单机异步化训练
没搞定分布式训练,只能回到单机场景再想办法。单机优化有两个着力点:优化算法实现和优化系统结构。
首先看了下scikit-learn中Isoaltion Forest的实现,底层专门用Cython优化了,再加上Joblib库的多CPU并行,算法实现上的优化空间已经很小了,只能从系统结构上想办法。
系统结构上的优化有两个利器:并行化和异步化。之前的单机模型,加载数据、训练模型、预测异常、上报结果在单进程中串行执行,由此想到的办法是启动4个工作进程分别处理相应的四个任务:异步训练模型、预测异常和上报结果,并行加载数据。工作进程之间用队列通信,队列的一个优势是容易实现流量控制。
写完代码测试,却发现YARD环境中的Python HDFS库在多进程并发下直接抛异常。尝试多个方法发现这个问题较难解决,暂时只能想办法规避。经测试发现,直接从Hadoop同步所有压缩过的样本数据只需2秒左右,由此想到规避方法是:先单进程同步所有样本数据,再多进程并发解压、加载和预测。
按上述想法修改代码测试,效果较好,处理所有样本只需20秒左右,达到了1分钟处理完所有样本的要求。然后提交YARD作业线上跑,处理所有样本耗时却达到200~400秒:
咨询YARD侧同学,得知YARD对提交的离线作业有CPU配额的硬限制,分时段配额如下表:
00:00~09:00 80%
09:00~19:00 50%
19:00~23:00 15%
23:00~24:00 50%
晚高峰时段的配额只有15%。
与YARD侧同学沟通,他们答应后续会支持scikit-learn库的在线服务。目前通过手工方式在一台有scikit-learn的mmguardstore机器上运行在线服务,晚高峰时段处理全量数据耗时为20秒左右。
最终的系统结构图如下图所示:
模型训练进程定期训练最新的模型,并把模型通过队列传给预测进程。预测进程每分钟运行一次,检查模型队列上是否有新模型可使用,然后加载数据、检测异常,将检测结果通过上报队列传给上报进程。上报进程block在上报队列上,一旦发现有新数据,就根据数据类型执行上报监控、上报tdw等操作。
2.4 评估性能
安全侧将异常用户分为以下几类:盗号、LBS/加好友、养号、欺诈、外挂/多开等。由于这些分类的异常打击是由不同同学负责,不便于对Isolation Forest的分类结果做评估,因此需要在Isolation Forest的基础上,再加一个分类器,标记“异常样本”的小类。利用操作码实现了该分类器。
接入全量数据后,每天准实时分析1亿量级的样本,检测出500万左右的异常,精确分类出15万左右的恶意请求。恶意请求的uin、类型、发生时间通过tdw中转给安全侧。安全侧通过线下人工分析和线上打击,从结果看检测效果较好。
2.5 持续优化
再回过头观察点击流数据,我们使用的Isolation Forest模型只利用了操作码的统计数据。可以明显看到,点击流是一个具备时间序列信息的时序数据。而自然语言处理(Natural LanguageProcessing,NLP)领域已经积累了非常多的处理时序数据的理论和实战经验,如LSTM、word2vec等模型。后续期望能引入NLP的相关工具挖掘出更多恶意用户。
④ 写一篇3千字左右的异常入侵检测方法的小论文
2: 入侵检测系统(IDS)概念
1980年,James P.Anderson 第一次系统阐述了入侵检测的概念,并将入侵行为分为外部渗透、内部渗透和不法行为三种,还提出了利用审计数据监视入侵活动的思想[1]。即其之后,1986年Dorothy E.Denning提出实时异常检测的概念[2]并建立了第一个实时入侵检测模型,命名为入侵检测专家系统(IDES),1990年,L.T.Heberlein等设计出监视网络数据流的入侵检测系统,NSM(Network Security Monitor)。自此之后,入侵检测系统才真正发展起来。
Anderson将入侵尝试或威胁定义为:潜在的、有预谋的、未经授权的访问信息、操作信息、致使系统不可靠或无法使用的企图。而入侵检测的定义为[4]:发现非授权使用计算机的个体(如“黑客”)或计算机系统的合法用户滥用其访问系统的权利以及企图实施上述行为的个体。执行入侵检测任务的程序即是入侵检测系统。入侵检测系统也可以定义为:检测企图破坏计算机资源的完整性,真实性和可用性的行为的软件。
入侵检测系统执行的主要任务包括[3]:监视、分析用户及系统活动;审计系统构造和弱点;识别、反映已知进攻的活动模式,向相关人士报警;统计分析异常行为模式;评估重要系统和数据文件的完整性;审计、跟踪管理操作系统,识别用户违反安全策略的行为。入侵检测一般分为三个步骤:信息收集、数据分析、响应。
入侵检测的目的:(1)识别入侵者;(2)识别入侵行为;(3)检测和监视以实施的入侵行为;(4)为对抗入侵提供信息,阻止入侵的发生和事态的扩大;
3: 入侵检测系统模型
美国斯坦福国际研究所(SRI)的D.E.Denning于1986年首次提出一种入侵检测模型[2],该模型的检测方法就是建立用户正常行为的描述模型,并以此同当前用户活动的审计记录进行比较,如果有较大偏差,则表示有异常活动发生。这是一种基于统计的检测方法。随着技术的发展,后来人们又提出了基于规则的检测方法。结合这两种方法的优点,人们设计出很多入侵检测的模型。通用入侵检测构架(Common Intrusion Detection Framework简称CIDF)组织,试图将现有的入侵检测系统标准化,CIDF阐述了一个入侵检测系统的通用模型(一般称为CIDF模型)。它将一个入侵检测系统分为以下四个组件:
事件产生器(Event Generators)
事件分析器(Event analyzers)
响应单元(Response units)
事件数据库(Event databases)
它将需要分析的数据通称为事件,事件可以是基于网络的数据包也可以是基于主机的系统日志中的信息。事件产生器的目的是从整个计算机环境中获得事件,并向系统其它部分提供此事件。事件分析器分析得到的事件并产生分析结果。响应单元则是对分析结果做出反应的功能单元,它可以做出切断连接、修改文件属性等强烈反应。事件数据库是存放各种中间和最终数据的地方的通称,它可以是复杂的数据库也可以是简单的文本文件。
4: 入侵检测系统的分类
现有的IDS的分类,大都基于信息源和分析方法。为了体现对IDS从布局、采集、分析、响应等各个层次及系统性研究方面的问题,在这里采用五类标准:控制策略、同步技术、信息源、分析方法、响应方式。
按照控制策略分类
控制策略描述了IDS的各元素是如何控制的,以及IDS的输入和输出是如何管理的。按照控制策略IDS可以划分为,集中式IDS、部分分布式IDS和全部分布式IDS。在集中式IDS中,一个中央节点控制系统中所有的监视、检测和报告。在部分分布式IDS中,监控和探测是由本地的一个控制点控制,层次似的将报告发向一个或多个中心站。在全分布式IDS中,监控和探测是使用一种叫“代理”的方法,代理进行分析并做出响应决策。
按照同步技术分类
同步技术是指被监控的事件以及对这些事件的分析在同一时间进行。按照同步技术划分,IDS划分为间隔批任务处理型IDS和实时连续性IDS。在间隔批任务处理型IDS中,信息源是以文件的形式传给分析器,一次只处理特定时间段内产生的信息,并在入侵发生时将结果反馈给用户。很多早期的基于主机的IDS都采用这种方案。在实时连续型IDS中,事件一发生,信息源就传给分析引擎,并且立刻得到处理和反映。实时IDS是基于网络IDS首选的方案。
按照信息源分类
按照信息源分类是目前最通用的划分方法,它分为基于主机的IDS、基于网络的IDS和分布式IDS。基于主机的IDS通过分析来自单个的计算机系统的系统审计踪迹和系统日志来检测攻击。基于主机的IDS是在关键的网段或交换部位通过捕获并分析网络数据包来检测攻击。分布式IDS,能够同时分析来自主机系统日志和网络数据流,系统由多个部件组成,采用分布式结构。
按照分析方法分类
按照分析方法IDS划分为滥用检测型IDS和异常检测型IDS。滥用检测型的IDS中,首先建立一个对过去各种入侵方法和系统缺陷知识的数据库,当收集到的信息与库中的原型相符合时则报警。任何不符合特定条件的活动将会被认为合法,因此这样的系统虚警率很低。异常检测型IDS是建立在如下假设的基础之上的,即任何一种入侵行为都能由于其偏离正常或者所期望的系统和用户活动规律而被检测出来。所以它需要一个记录合法活动的数据库,由于库的有限性使得虚警率比较高。
按照响应方式分类
按照响应方式IDS划分为主动响应IDS和被动响应IDS。当特定的入侵被检测到时,主动IDS会采用以下三种响应:收集辅助信息;改变环境以堵住导致入侵发生的漏洞;对攻击者采取行动(这是一种不被推荐的做法,因为行为有点过激)。被动响应IDS则是将信息提供给系统用户,依靠管理员在这一信息的基础上采取进一步的行动。
5: IDS的评价标准
目前的入侵检测技术发展迅速,应用的技术也很广泛,如何来评价IDS的优缺点就显得非常重要。评价IDS的优劣主要有这样几个方面[5]:(1)准确性。准确性是指IDS不会标记环境中的一个合法行为为异常或入侵。(2)性能。IDS的性能是指处理审计事件的速度。对一个实时IDS来说,必须要求性能良好。(3)完整性。完整性是指IDS能检测出所有的攻击。(4)故障容错(fault tolerance)。当被保护系统遭到攻击和毁坏时,能迅速恢复系统原有的数据和功能。(5)自身抵抗攻击能力。这一点很重要,尤其是“拒绝服务”攻击。因为多数对目标系统的攻击都是采用首先用“拒绝服务”攻击摧毁IDS,再实施对系统的攻击。(6)及时性(Timeliness)。一个IDS必须尽快地执行和传送它的分析结果,以便在系统造成严重危害之前能及时做出反应,阻止攻击者破坏审计数据或IDS本身。
除了上述几个主要方面,还应该考虑以下几个方面:(1)IDS运行时,额外的计算机资源的开销;(2)误警报率/漏警报率的程度;(3)适应性和扩展性;(4)灵活性;(5)管理的开销;(6)是否便于使用和配置。
6: IDS的发展趋
随着入侵检测技术的发展,成型的产品已陆续应用到实践中。入侵检测系统的典型代表是ISS(国际互联网安全系统公司)公司的RealSecure。目前较为着名的商用入侵检测产品还有:NAI公司的CyberCop Monitor、Axent公司的NetProwler、CISCO公司的Netranger、CA公司的Sessionwall-3等。国内的该类产品较少,但发展很快,已有总参北方所、中科网威、启明星辰等公司推出产品。
人们在完善原有技术的基础上,又在研究新的检测方法,如数据融合技术,主动的自主代理方法,智能技术以及免疫学原理的应用等。其主要的发展方向可概括为:
(1)大规模分布式入侵检测。传统的入侵检测技术一般只局限于单一的主机或网络框架,显然不能适应大规模网络的监测,不同的入侵检测系统之间也不能协同工作。因此,必须发展大规模的分布式入侵检测技术。
(2)宽带高速网络的实时入侵检测技术。大量高速网络的不断涌现,各种宽带接入手段层出不穷,如何实现高速网络下的实时入侵检测成为一个现实的问题。
(3)入侵检测的数据融合技术。目前的IDS还存在着很多缺陷。首先,目前的技术还不能对付训练有素的黑客的复杂的攻击。其次,系统的虚警率太高。最后,系统对大量的数据处理,非但无助于解决问题,还降低了处理能力。数据融合技术是解决这一系列问题的好方法。
(4)与网络安全技术相结合。结合防火墙,病毒防护以及电子商务技术,提供完整的网络安全保障。
⑤ 神经网络异常检测方法和机器学习异常检测方法对于入侵检测的应用
神经网络异常检测方法神经网络入侵检测方法是通过训练神经网络连续的信息单元来进行异常检测,信息单元指的是命令。网络的输入为用户当前输入的命令和已执行过的W个命令;用户执行过的命令被神经网络用来预测用户输入的下一个命令,如下图。若神经网络被训练成预测用户输入命令的序列集合,则神经网络就构成用户的轮郭框架。当用这个神经网络预测不出某用户正确的后继命令,即在某种程度上表明了用户行为与其轮廓框架的偏离,这时表明有异常事件发生,以此就能作异常入侵检测。
上面式子用来分类识别,检测异常序列。实验结果表明这种方法检测迅速,而且误警率底。然而,此方法对于用户动态行为变化以及单独异常检测还有待改善。复杂的相似度量和先验知识加入到检测中可能会提高系统的准确性,但需要做进一步工作。
⑥ 基于神经网络的故障诊断
神经网络的是我的毕业论文的一部分
4.人工神经网络
人的思维有逻辑性和直观性两种不同的基本方式。逻辑性的思维是指根据逻辑规则进行推理的过程;它先将信息化成概念,并用符号表示,然后,根据符号运算按串行模式进行逻辑推理。这一过程可以写成串行的指令,让计算机执行。然而,直观性的思维是将分布式存储的信息综合起来,结果是忽然间产生想法或解决问题的办法。这种思维方式的根本之点在于以下两点:1.信息是通过神经元上的兴奋模式分布在网络上;2.信息处理是通过神经元之间同时相互作用的动态过程来完成的。
人工神经网络就是模拟人思维的第二种方式。这是一个非线性动力学系统,其特色在于信息的分布式存储和并行协同处理。虽然单个神经元的结构极其简单,功能有限,但大量神经元构成的网络系统所能实现的行为却是极其丰富多彩的。
4.1人工神经网络学习的原理
人工神经网络首先要以一定的学习准则进行学习,然后才能工作。现以人工神经网络对手写“A”、“B”两个字母的识别为例进行说明,规定当“A”输入网络时,应该输出“1”,而当输入为“B”时,输出为“0”。
所以网络学习的准则应该是:如果网络做出错误的判决,则通过网络的学习,应使得网络减少下次犯同样错误的可能性。首先,给网络的各连接权值赋予(0,1)区间内的随机值,将“A”所对应的图像模式输入给网络,网络将输入模式加权求和、与门限比较、再进行非线性运算,得到网络的输出。在此情况下,网络输出为“1”和“0”的概率各为50%,也就是说是完全随机的。这时如果输出为“1”(结果正确),则使连接权值增大,以便使网络再次遇到“A”模式输入时,仍然能做出正确的判断。
如果输出为“0”(即结果错误),则把网络连接权值朝着减小综合输入加权值的方向调整,其目的在于使网络下次再遇到“A”模式输入时,减小犯同样错误的可能性。如此操作调整,当给网络轮番输入若干个手写字母“A”、“B”后,经过网络按以上学习方法进行若干次学习后,网络判断的正确率将大大提高。这说明网络对这两个模式的学习已经获得了成功,它已将这两个模式分布地记忆在网络的各个连接权值上。当网络再次遇到其中任何一个模式时,能够做出迅速、准确的判断和识别。一般说来,网络中所含的神经元个数越多,则它能记忆、识别的模式也就越多。
4.2人工神经网络的优缺点
人工神经网络由于模拟了大脑神经元的组织方式而具有了人脑功能的一些基本特征,为人工智能的研究开辟了新的途径,神经网络具有的优点在于:
(1)并行分布性处理
因为人工神经网络中的神经元排列并不是杂乱无章的,往往是分层或以一种有规律的序列排列,信号可以同时到达一批神经元的输入端,这种结构非常适合并行计算。同时如果将每一个神经元看作是一个小的处理单元,则整个系统可以是一个分布式计算系统,这样就避免了以往的“匹配冲突”,“组合爆炸”和“无穷递归”等题,推理速度快。
(2)可学习性
一个相对很小的人工神经网络可存储大量的专家知识,并且能根据学习算法,或者利用样本指导系统来模拟现实环境(称为有教师学习),或者对输入进行自适应学习(称为无教师学习),不断地自动学习,完善知识的存储。
(3)鲁棒性和容错性
由于采用大量的神经元及其相互连接,具有联想记忆与联想映射能力,可以增强专家系统的容错能力,人工神经网络中少量的神经元发生失效或错误,不会对系统整体功能带来严重的影响。而且克服了传统专家系统中存在的“知识窄台阶”问题。
(4)泛化能力
人工神经网络是一类大规模的非线形系统,这就提供了系统自组织和协同的潜力。它能充分逼近复杂的非线形关系。当输入发生较小变化,其输出能够与原输入产生的输出保持相当小的差距。
(5)具有统一的内部知识表示形式,任何知识规则都可以通过对范例的学习存储于同一个神经网络的各连接权值中,便于知识库的组织管理,通用性强。
虽然人工神经网络有很多优点,但基于其固有的内在机理,人工神经网络也不可避免的存在自己的弱点:
(1)最严重的问题是没能力来解释自己的推理过程和推理依据。
(2)神经网络不能向用户提出必要的询问,而且当数据不充分的时候,神经网络就无法进行工作。
(3)神经网络把一切问题的特征都变为数字,把一切推理都变为数值计算,其结果势必是丢失信息。
(4)神经网络的理论和学习算法还有待于进一步完善和提高。
4.3神经网络的发展趋势及在柴油机故障诊断中的可行性
神经网络为现代复杂大系统的状态监测和故障诊断提供了全新的理论方法和技术实现手段。神经网络专家系统是一类新的知识表达体系,与传统专家系统的高层逻辑模型不同,它是一种低层数值模型,信息处理是通过大量的简单处理元件(结点) 之间的相互作用而进行的。由于它的分布式信息保持方式,为专家系统知识的获取与表达以及推理提供了全新的方式。它将逻辑推理与数值运算相结合,利用神经网络的学习功能、联想记忆功能、分布式并行信息处理功能,解决诊断系统中的不确定性知识表示、获取和并行推理等问题。通过对经验样本的学习,将专家知识以权值和阈值的形式存储在网络中,并且利用网络的信息保持性来完成不精确诊断推理,较好地模拟了专家凭经验、直觉而不是复杂的计算的推理过程。
但是,该技术是一个多学科知识交叉应用的领域,是一个不十分成熟的学科。一方面,装备的故障相当复杂;另一方面,人工神经网络本身尚有诸多不足之处:
(1)受限于脑科学的已有研究成果。由于生理实验的困难性,目前对于人脑思维与记忆机制的认识还很肤浅。
(2)尚未建立起完整成熟的理论体系。目前已提出了众多的人工神经网络模型,归纳起来,这些模型一般都是一个由结点及其互连构成的有向拓扑网,结点间互连强度所构成的矩阵,可通过某种学习策略建立起来。但仅这一共性,不足以构成一个完整的体系。这些学习策略大多是各行其是而无法统一于一个完整的框架之中。
(3)带有浓厚的策略色彩。这是在没有统一的基础理论支持下,为解决某些应用,而诱发出的自然结果。
(4)与传统计算技术的接口不成熟。人工神经网络技术决不能全面替代传统计算技术,而只能在某些方面与之互补,从而需要进一步解决与传统计算技术的接口问题,才能获得自身的发展。
虽然人工神经网络目前存在诸多不足,但是神经网络和传统专家系统相结合的智能故障诊断技术仍将是以后研究与应用的热点。它最大限度地发挥两者的优势。神经网络擅长数值计算,适合进行浅层次的经验推理;专家系统的特点是符号推理,适合进行深层次的逻辑推理。智能系统以并行工作方式运行,既扩大了状态监测和故障诊断的范围,又可满足状态监测和故障诊断的实时性要求。既强调符号推理,又注重数值计算,因此能适应当前故障诊断系统的基本特征和发展趋势。随着人工神经网络的不断发展与完善,它将在智能故障诊断中得到广泛的应用。
根据神经网络上述的各类优缺点,目前有将神经网络与传统的专家系统结合起来的研究倾向,建造所谓的神经网络专家系统。理论分析与使用实践表明,神经网络专家系统较好地结合了两者的优点而得到更广泛的研究和应用。
离心式制冷压缩机的构造和工作原理与离心式鼓风机极为相似。但它的工作原理与活塞式压缩机有根本的区别,它不是利用汽缸容积减小的方式来提高汽体的压力,而是依靠动能的变化来提高汽体压力。离心式压缩机具有带叶片的工作轮,当工作轮转动时,叶片就带动汽体运动或者使汽体得到动能,然后使部分动能转化为压力能从而提高汽体的压力。这种压缩机由于它工作时不断地将制冷剂蒸汽吸入,又不断地沿半径方向被甩出去,所以称这种型式的压缩机为离心式压缩机。其中根据压缩机中安装的工作轮数量的多少,分为单级式和多级式。如果只有一个工作轮,就称为单级离心式压缩机,如果是由几个工作轮串联而组成,就称为多级离心式压缩机。在空调中,由于压力增高较少,所以一般都是采用单级,其它方面所用的离心式制冷压缩机大都是多级的。单级离心式制冷压缩机的构造主要由工作轮、扩压器和蜗壳等所组成。 压缩机工作时制冷剂蒸汽由吸汽口轴向进入吸汽室,并在吸汽室的导流作用引导由蒸发器(或中间冷却器)来的制冷剂蒸汽均匀地进入高速旋转的工作轮3(工作轮也称叶轮,它是离心式制冷压缩机的重要部件,因为只有通过工作轮才能将能量传给汽体)。汽体在叶片作用下,一边跟着工作轮作高速旋转,一边由于受离心力的作用,在叶片槽道中作扩压流动,从而使汽体的压力和速度都得到提高。由工作轮出来的汽体再进入截面积逐渐扩大的扩压器4(因为汽体从工作轮流出时具有较高的流速,扩压器便把动能部分地转化为压力能,从而提高汽体的压力)。汽体流过扩压器时速度减小,而压力则进一步提高。经扩压器后汽体汇集到蜗壳中,再经排气口引导至中间冷却器或冷凝器中。
二、离心式制冷压缩机的特点与特性
离心式制冷压缩机与活塞式制冷压缩机相比较,具有下列优点:
(1)单机制冷量大,在制冷量相同时它的体积小,占地面积少,重量较活塞式轻5~8倍。
(2)由于它没有汽阀活塞环等易损部件,又没有曲柄连杆机构,因而工作可靠、运转平稳、噪音小、操作简单、维护费用低。
(3)工作轮和机壳之间没有摩擦,无需润滑。故制冷剂蒸汽与润滑油不接触,从而提高了蒸发器和冷凝器的传热性能。
(4)能经济方便的调节制冷量且调节的范围较大。
(5)对制冷剂的适应性差,一台结构一定的离心式制冷压缩机只能适应一种制冷剂。
(6)由于适宜采用分子量比较大的制冷剂,故只适用于大制冷量,一般都在25~30万大卡/时以上。如制冷量太少,则要求流量小,流道窄,从而使流动阻力大,效率低。但近年来经过不断改进,用于空调的离心式制冷压缩机,单机制冷量可以小到10万大卡/时左右。
制冷与冷凝温度、蒸发温度的关系。
由物理学可知,回转体的动量矩的变化等于外力矩,则
T=m(C2UR2-C1UR1)
两边都乘以角速度ω,得
Tω=m(C2UωR2-C1UωR1)
也就是说主轴上的外加功率N为:
N=m(U2C2U-U1C1U)
上式两边同除以m则得叶轮给予单位质量制冷剂蒸汽的功即叶轮的理论能量头。 U2 C2
ω2 C2U R1 R2 ω1 C1 U1 C2r β 离心式制冷压缩机的特性是指理论能量头与流量之间变化关系,也可以表示成制冷
W=U2C2U-U1C1U≈U2C2U
(因为进口C1U≈0)
又C2U=U2-C2rctgβ C2r=Vυ1/(A2υ2)
故有
W= U22(1-
Vυ1
ctgβ)
A2υ2U2
式中:V—叶轮吸入蒸汽的容积流量(m3/s)
υ1υ2 ——分别为叶轮入口和出口处的蒸汽比容(m3/kg)
A2、U2—叶轮外缘出口面积(m2)与圆周速度(m/s)
β—叶片安装角
由上式可见,理论能量头W与压缩机结构、转速、冷凝温度、蒸发温度及叶轮吸入蒸汽容积流量有关。对于结构一定、转速一定的压缩机来说,U2、A2、β皆为常量,则理论能量头W仅与流量V、蒸发温度、冷凝温度有关。
按照离心式制冷压缩机的特性,宜采用分子量比较大的制冷剂,目前离心式制冷机所用的制冷剂有F—11、F—12、F—22、F—113和F—114等。我国目前在空调用离心式压缩机中应用得最广泛的是F—11和F—12,且通常是在蒸发温度不太低和大制冷量的情况下,选用离心式制冷压缩机。此外,在石油化学工业中离心式的制冷压缩机则采用丙烯、乙烯作为制冷剂,只有制冷量特别大的离心式压缩机才用氨作为制冷剂。
三、离心式制冷压缩机的调节
离心式制冷压缩机和其它制冷设备共同构成一个能量供给与消耗的统一系统。制冷机组在运行时,只有当通过压缩机的制冷剂的流量与通过设备的流量相等时,以及压缩机所产生的能量头与制冷设备的阻力相适应时,制冷系统的工况才能保持稳定。但是制冷机的负荷总是随外界条件与用户对冷量的使用情况而变化的,因此为了适应用户对冷负荷变化的需要和安全经济运行,就需要根据外界的变化对制冷机组进行调节,离心式制冷机组制冷量的调节有:1°改变压缩机的转速;2°采用可转动的进口导叶;3°改变冷凝器的进水量;4°进汽节流等几种方式,其中最常用的是转动进口导叶调节和进汽节流两种调节方法。所谓转动进口导叶调节,就是转动压缩机进口处的导流叶片以使进入到叶轮去的汽体产生旋绕,从而使工作轮加给汽体的动能发生变化来调节制冷量。所谓进汽节流调节,就是在压缩机前的进汽管道上安装一个调节阀,如要改变压缩机的工况时,就调节阀门的大小,通过节流使压缩机进口的压力降低,从而实现调节制冷量。离心式压缩机制冷量的调节最经济有效的方法就是改变进口导叶角度,以改变蒸汽进入叶轮的速度方向(C1U)和流量V。但流量V必须控制在稳定工作范围内,以免效率下降。
⑦ 深度神经网络是如何训练的
Coursera的Ng机器学习,UFLDL都看过。没记错的话Ng的机器学习里是直接给出公式了,虽然你可能知道如何求解,但是即使不知道完成作业也不是问题,只要照着公式写就行。反正我当时看的时候心里并没能比较清楚的明白。我觉得想了解深度学习UFLDL教程 - Ufldl是不错的。有习题,做完的话确实会对深度学习有更加深刻的理解,但是总还不是很清晰。后来看了Li FeiFei的Stanford University CS231n: Convolutional Neural Networks for Visual Recognition,我的感觉是对CNN的理解有了很大的提升。沉下心来推推公式,多思考,明白了反向传播本质上是链式法则(虽然之前也知道,但是当时还是理解的迷迷糊糊的)。所有的梯度其实都是对最终的loss进行求导得到的,也就是标量对矩阵or向量的求导。当然同时也学到了许多其他的关于cnn的。并且建议你不仅要完成练习,最好能自己也写一个cnn,这个过程可能会让你学习到许多更加细节和可能忽略的东西。这样的网络可以使用中间层构建出多层的抽象,正如我们在布尔线路中做的那样。例如,如果我们在进行视觉模式识别,那么在第一层的神经元可能学会识别边,在第二层的神经元可以在边的基础上学会识别出更加复杂的形状,例如三角形或者矩形。第三层将能够识别更加复杂的形状。依此类推。这些多层的抽象看起来能够赋予深度网络一种学习解决复杂模式识别问题的能力。然后,正如线路的示例中看到的那样,存在着理论上的研究结果告诉我们深度网络在本质上比浅层网络更加强大。
⑧ 深度学习的现状和趋势
论坛
活动
招聘
专题
打开CSDN APP
Copyright © 1999-2020, CSDN.NET, All Rights Reserved
搜索博文/帖子/用户
登录
喜欢打酱油的老鸟
关注
深度学习技术发展趋势浅析 转载
2019-04-09 08:37:11
1点赞
喜欢打酱油的老鸟
码龄2年
关注
https://mp.weixin.qq.com/s/FtIhKiENv483iHE053RPkg
当前,人工智能发展借助深度学习技术突破得到了全面关注和助力推动,各国政府高度重视、资本热潮仍在加码,各界对其成为发展热点也达成了共识。本文旨在分析深度学习技术现状,研判深度学习发展趋势,并针对我国的技术水平提出发展建议。
一、深度学习技术现状
深度学习是本轮人工智能爆发的关键技术。人工智能技术在计算机视觉和自然语言处理等领域取得的突破性进展,使得人工智能迎来新一轮爆发式发展。而深度学习是实现这些突破性进展的关键技术。其中,基于深度卷积网络的图像分类技术已超过人眼的准确率,基于深度神经网络的语音识别技术已达到95%的准确率,基于深度神经网络的机器翻译技术已接近人类的平均翻译水平。准确率的大幅提升使得计算机视觉和自然语言处理进入产业化阶段,带来新产业的兴起。
深度学习是大数据时代的算法利器,成为近几年的研究热点。和传统的机器学习算法相比,深度学习技术有着两方面的优势。一是深度学习技术可随着数据规模的增加不断提升其性能,而传统机器学习算法难以利用海量数据持续提升其性能。二是深度学习技术可以从数据中直接提取特征,削减了对每一个问题设计特征提取器的工作,而传统机器学习算法需要人工提取特征。因此,深度学习成为大数据时代的热点技术,学术界和产业界都对深度学习展开了大量的研究和实践工作。
深度学习各类模型全面赋能基础应用。卷积神经网络和循环神经网络是两类获得广泛应用的深度神经网络模型。计算机视觉和自然语言处理是人工智能两大基础应用。卷积神经网络广泛应用于计算机视觉领域,在图像分类、目标检测、语义分割等任务上的表现大大超越传统方法。循环神经网络适合解决序列信息相关问题,已广泛应用于自然语言处理领域,如语音识别、机器翻译、对话系统等。
二、深度学习发展趋势
深度神经网络呈现层数越来越深,结构越来越复杂的发展趋势。为了不断提升深度神经网络的性能,业界从网络深度和网络结构两方面持续进行探索。神经网络的层数已扩展到上百层甚至上千层,随着网络层数的不断加深,其学习效果也越来越好,2015年微软提出的ResNet以152层的网络深度在图像分类任务上准确率首次超过人眼。新的网络设计结构不断被提出,使得神经网络的结构越来越复杂。如:2014年谷歌提出了Inception网络结构、2015年微软提出了残差网络结构、2016年黄高等人提出了密集连接网络结构,这些网络结构设计不断提升了深度神经网络的性能。
深度神经网络节点功能不断丰富。为了克服目前神经网络存在的局限性,业界探索并提出了新型神经网络节点,使得神经网络的功能越来越丰富。2017年,杰弗里•辛顿提出了胶囊网络的概念,采用胶囊作为网络节点,理论上更接近人脑的行为,旨在克服卷积神经网络没有空间分层和推理能力等局限性。2018年,DeepMind、谷歌大脑、MIT的学者联合提出了图网络的概念,定义了一类新的模块,具有关系归纳偏置功能,旨在赋予深度学习因果推理的能力。
深度神经网络工程化应用技术不断深化。深度神经网络模型大都具有上亿的参数量和数百兆的占用空间,运算量大,难以部署到智能手机、摄像头和可穿戴设备等性能和资源受限的终端类设备。为了解决这个问题,业界采用模型压缩技术降低模型参数量和尺寸,减少运算量。目前采用的模型压缩方法包括对已训练好的模型做修剪(如剪枝、权值共享和量化等)和设计更精细的模型(如MobileNet等)两类。深度学习算法建模及调参过程繁琐,应用门槛高。为了降低深度学习的应用门槛,业界提出了自动化机器学习(AutoML)技术,可实现深度神经网络的自动化设计,简化使用流程。
⑨ 深度学习能应用在哪些领域
深度学习的快速发展,不仅使机器学习得到许多实际的应用,还拓展了整个AI(人工智能的)的范围。 它将任务进行拆解,使得各种类型的机器辅助变成可能,具体分为以下几类应用:
1、无人驾驶汽车:深度学习在无人驾驶领域主要用于图像处理,可以用于感知周围环境、 识别可行驶区域检测、以及识别行驶路径识别。
2、图片识别及分类:识别出图片中的对象,并建立关键词,对图片进行分类。
3、机器翻译:基于深度学习理论,借助海量计算机模拟的神经元,在海量的互联网资源的依托下,来模仿人脑理解语言,形成更加符合语法规范、容易理解的译文。
4、目标识别:即不仅可以识别出是什么物体,还可以预测物体的位置,位置一般用边框标记。
5、情感识别:通过深度学习,帮助计算机识别新闻、微博、博客、论坛等文本内容中所包含情感态度,从而及时发现产品的正负口碑。
6、艺术创作:通过深度学习,让计算机学会根据不同的作曲家风格进行音乐编曲或者基于各流派画家进行绘画创作。
⑩ 神经网络(深度学习)的几个基础概念
从广义上说深度学习的网络结构也是多层神经网络的一种。传统意义上的多层神经网络是只有输入层、隐藏层、输出层。其中隐藏层的层数根据需要而定,没有明确的理论推导来说明到底多少层合适。而深度学习中最着名的卷积神经网络CNN,在原来多层神经网络的基础上,加入了特征学习部分,这部分是模仿人脑对信号处理上的分级的。具体操作就是在原来的全连接的层前面加入了部分连接的卷积层与降维层,而且加入的是一个层级。输入层 - 卷积层 -降维层 -卷积层 - 降维层 -- .... -- 隐藏层 -输出层简单来说,原来多层神经网络做的步骤是:特征映射到值。特征是人工挑选。深度学习做的步骤是 信号->特征->值。 特征是由网络自己选择。