Ⅰ DL之RNN:循环神经网络RNN的简介、应用、经典案例之详细攻略
深入理解循环神经网络RNN:应用与历程
在深度学习的世界里,循环神经网络(RNN)是一种独特的神经网络架构,专为处理序列数据而设计。它的独特之处在于能够记忆先前的信息,从而在处理时间序列问题时展现出卓越性能。RNN的历史可以追溯到20世纪80年代,从Hopfield神经网络的诞生,到LSTM和Bi-RNN的革新,每一次进步都推动了RNN技术的发展。
80年代的Hopfield Network开启了RNN的探索,而1986年引入的Recurrent概念和BP算法则是基础理论的基石。然而,早期的RNN模型因梯度问题面临挑战。直到1997年,LSTM的出现解决了长期依赖问题,而双向RNN的引入则扩展了其处理方向。21世纪初,RNN开始与深度学习紧密结合,如2010年的RNN LM和2013年的word2vec,它们在自然语言处理领域掀起了革命。2014年的seq2seq和Attention机制的引入,使得机器翻译成为可能,Transformer和ELMo等后续技术进一步提升了模型的性能和效率。
RNN的应用领域广泛,包括自然语言处理中的语音识别、语言建模、机器翻译,以及计算机视觉中的字符识别和行为认知。在生物科学和地球科学中,RNN也被用于序列数据的分析和预测。例如,它能在DNA序列分析中区分外显子和内含子,或者在水文模型中预测土壤湿度。在经典的案例中,textgenrnn库展示了如何用Python实现文本生成网络,展示RNN的实际应用能力。
总的来说,循环神经网络RNN不仅革新了我们的序列数据处理方式,还为深度学习在多个领域的发展奠定了基础。从最初的理论探索到如今的广泛应用,RNN的故事仍在继续演变。
Ⅱ AlphaGo的神奇全靠它,详解人工神经网络!
1、Alphago在不被看好的情况下,以4比1击败了围棋世界冠军李世石,令其名震天下。随着AlphaGo知名度的不断提高,人们不禁好奇,究竟是什么使得AlphaGo得以战胜人类大脑?AlphaGo的核心依托人工神经网络。
什么是神经网络?
人工神经网络是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型或计算模型。神经网络由大量的人工神经元联结进行计算。大多数情况下人工神经网络能在外界信息的基础上改变内部结构,是一种自适应系统。现代神经网络是一种非线性统计性数据建模工具,常用来对输入和输出间复杂的关系进行建模,或用来探索数据的模式。
神经网络是一种运算模型,由大量的节点(或称神经元,或单元)和之间相互联接构成。每个节点代表一种特定的输出函数,称为激励函数。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重,这相当于人工神经网络的记忆。网络的输出则依网络的连接方式,权重值和激励函数的不同而不同。而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。
例如,用于手写识别的一个神经网络是被可由一个输入图像的像素被激活的一组输入神经元所定义的。在通过函数(由网络的设计者确定)进行加权和变换之后,这些神经元被激活然后被传递到其他神经元。重复这一过程,直到最后一个输出神经元被激活。这样决定了被读取的字。
它的构筑理念是受到人或其他动物神经网络功能的运作启发而产生的。人工神经网络通常是通过一个基于数学统计学类型的学习方法得以优化,所以人工神经网络也是数学统计学方法的一种实际应用,通过统计学的标准数学方法我们能够得到大量的可以用函数来表达的局部结构空间,另一方面在人工智能学的人工感知领域,我们通过数学统计学的应用可以来做人工感知方面的决定问题(也就是说通过统计学的方法,人工神经网络能够类似人一样具有简单的决定能力和简单的判断能力),这种方法比起正式的逻辑学推理演算更具有优势。
人工神经网络是一个能够学习,能够总结归纳的系统,也就是说它能够通过已知数据的实验运用来学习和归纳总结。人工神经网络通过对局部情况的对照比较(而这些比较是基于不同情况下的自动学习和要实际解决问题的复杂性所决定的),它能够推理产生一个可以自动识别的系统。与之不同的基于符号系统下的学习方法,它们也具有推理功能,只是它们是建立在逻辑算法的基础上,也就是说它们之所以能够推理,基础是需要有一个推理算法则的集合。
2AlphaGo的原理回顶部
AlphaGo的原理
首先,AlphaGo同优秀的选手进行了150000场比赛,通过人工神经网络找到这些比赛的模式。然后通过总结,它会预测选手在任何位置高概率进行的一切可能。AlphaGo的设计师通过让其反复的和早期版本的自己对战来提高神经网络,使其逐步提高获胜的机会。
从广义上讲,神经网络是一个非常复杂的数学模型,通过对其高达数百万参数的调整来改变的它的行为。神经网络学习的意思是,电脑一直持续对其参数进行微小的调整,来尝试使其不断进行微小的改进。在学习的第一阶段,神经网络提高模仿选手下棋的概率。在第二阶段,它增加自我发挥,赢得比赛的概率。反复对极其复杂的功能进行微小的调整,听起来十分疯狂,但是如果有足够长的时间,足够快的计算能力,非常好的网络实施起来并不苦难。并且这些调整都是自动进行的。
经过这两个阶段的训练,神经网络就可以同围棋业余爱好者下一盘不错的棋了。但对于职业来讲,它还有很长的路要走。在某种意义上,它并不思考每一手之后的几步棋,而是通过对未来结果的推算来决定下在哪里。为了达到职业级别,AlphaGp需要一种新的估算方法。
为了克服这一障碍,研究人员采取的办法是让它反复的和自己进行对战,以此来使其不断其对于胜利的估算能力。尽可能的提高每一步的获胜概率。(在实践中,AlphaGo对这个想法进行了稍微复杂的调整。)然后,AlphaGo再结合多线程来使用这一方法进行下棋。
我们可以看到,AlphaGo的评估系统并没有基于太多的围棋知识,通过分析现有的无数场比赛的棋谱,以及无数次的自我对战练习,AlphaGo的神经网络进行了数以十亿计的微小调整,即便每次只是一个很小的增量改进。这些调整帮助AlphaGp建立了一个估值系统,这和那些出色围棋选手的直觉相似,对于棋盘上的每一步棋都了如指掌。
此外AlphaGo也使用搜索和优化的思想,再加上神经网络的学习功能,这两者有助于找到棋盘上更好的位置。这也是目前AlphaGo能够高水平发挥的原因。
3神经网络的延伸和限制回顶部
神经网络的延伸和限制
神经网络的这种能力也可以被用在其他方面,比如让神经网络学习一种艺术风格,然后再将这种风格应用到其他图像上。这种想法很简单:首先让神经网络接触到大量的图像,然后来确认这些图像的风格,接着将新的图像带入这种风格。
这虽然不是伟大的艺术,但它仍然是一个显著的利用神经网络来捕捉直觉并且应用在其他地方的例子。
在过去的几年中,神经网络在许多领域被用来捕捉直觉和模式识别。许多项目使用神经这些网络,涉及的任务如识别艺术风格或好的视频游戏的发展战略。但也有非常不同的网络模拟的直觉惊人的例子,比如语音和自然语言。
由于这种多样性,我看到AlphaGo本身不是一个革命性的突破,而是作为一个极其重要的发展前沿:建立系统,可以捕捉的直觉和学会识别模式的能力。此前计算机科学家们已经做了几十年,没有取得长足的进展。但现在,神经网络的成功已经大大扩大,我们可以利用电脑攻击范围内的潜在问题。
事实上,目前现有的神经网络的理解能力是非常差的。神经网络很容易被愚弄。用神经网络识别图像是一个不错的手段。但是实验证明,通过对图像进行细微的改动,就可以愚弄图像。例如,下面的图像左边的图是原始图,研究人员对中间的图像进行了微小的调整后,神经网络就无法区分了,就将原图显示了出来。
另一个限制是,现有的系统往往需要许多模型来学习。例如,AlphaGo从150000场对战来学习。这是一个很庞大额度数字!很多情况下,显然无法提供如此庞大的模型案例。
Ⅲ SPSS统计分析案例:多层感知器神经网络
SPSS统计分析案例:多层感知器神经网络
神经网络模型起源于对人类大脑思维模式的研究,它是一个非线性的数据建模工具, 由输入层和输出层、 一个或者多个隐藏层构成神经元,神经元之间的连接赋予相关的权重, 训练学习算法在迭代过程中不断调整这些权重,从而使得预测误差最小化并给出预测精度。
在SPSS神经网络中,包括多层感知器(MLP)和径向基函数(RBF)两种方法。
本期主要学习多层感知器神经网络,要把它讲清楚是比较困难的,为了能直观感受它的功能,首先以一个案例开始,最后再总结知识。
案例数据
该数据文件涉及某银行在降低贷款拖欠率方面的举措。该文件包含 700 位过去曾获得贷款的客户财务和人口统计信息。请使用这 700 名客户的随机样本创建多层感知器神经网络模型。银行需要此模型对新的客户数据按高或低信用风险对他们进行分类。
第一次分析:菜单参数
要运行“多层感知器”分析,请从菜单中选择:
分析 > 神经网络 > 多层感知器
如上图所示,MLP主面板共有8个选项卡,至少需要设置其中"变量"、"分区"、"输出"、"保存"、"导出"等5个选项卡,其他接受软件默认设置。
▌ "变量"选项卡
将"是否拖欠"移入因变量框;
将分类变量"学历"移入因子框,其他数值变量移入"协变量"框;
因各协变量量纲不同,选择"标准化"处理;
▌ "分区"选项卡
在此之前,首先在 "转换 > 随机数生成器"菜单中设置随机数固定种子为9191972(此处同SPSS官方文档,用户可以自由设定),因为"分区"选项卡中,要求对原始数据文件进行随机化抽样,将数据划分为"训练样本"、"支持样本"、"检验样本"3个区块,为了随机过程可重复,所以此处指定固定种子一枚;
初次建模,先抽样70%作为训练样本,用于完成自学习构建神经网络模型,30%作为支持样本,用于评估所建立模型的性能,暂不分配检验样本;
▌ "输出"选项卡
勾选"描述"、"图";
勾选"模型摘要"、"分类结果"、"预测实测图";
勾选"个案处理摘要";
构成"自变量重要性分析";
这是第一次尝试性的分析,主要参数设置如上,其他选项卡接受软件默认设置,最后返回主面板,点击"确定"按钮,软件开始执行MLP过程。
第一次分析产生的结果:
主要看重点的结果,依次如下:
个案处理摘要表,700个贷款客户的记录,其中480个客户被分配到训练样本,占比68.6%,另外220个客户分配为支持样本。
模型摘要表,首次构建的MLP神经网络模型其不正确预测百分比为12.7%,独立的支持样本检验模型的不正确百分比为20.9%,提示"超出最大时程数",模型非正常规则中止,显示有过度学习的嫌疑。
判断:首次建立的模型需要预防过度训练。
第二次分析:菜单参数
首次分析怀疑训练过度,所以第二次分析主要是新增检验样本以及输出最终的模型结果。
运行“多层感知器”分析,请从菜单中选择:
分析 > 神经网络 > 多层感知器
▌ "分区"选项卡
对样本进行重新分配,总700样本,支持样本继续30%,训练样本由原来的70%缩减至50%,另外的20%分配给独立的检验样本空间;
▌ "保存"选项卡
保存每个因变量的预测值或类别;
保存每个因变量的预测拟概率;
▌ "导出"选项卡
将突触权重估算值导出到XML文件;
给XML模型文件起名并制定存放路径;
其他选项卡的操作和第一次分析保持一致。返回主面板,点击"确定"开始执行第二次分析。
第一次分析产生的结果:
总样本在3个分区的分配比例。
MLP神经网络图,模型包括1个输入层、1个隐藏层和1个输出层,输入层神经元个数12个,隐藏层9个,输出层2个。
模型摘要表,模型误差在1个连续步骤中未出现优化减少现象,模型按预定中止。模型在3个分区中的不正确预测百分比较接近。
模型分类表,软件默认采用0.5作为正确和错误的概率分界,将3大分区样本的正确率进行交叉对比,显示出预测为NO,即预测为不拖欠的概率高于拖欠,模型对有拖欠的贷款客户风险识别能力较低。
预测-实测图,按照贷款客户是否拖欠与预测结果进行分组,纵坐标为预测概率。以0.5为分界时,对优质客户的识别效果较好,但是有较大的概率在识别有拖欠客户上出错。
显然以0.5作为分界并不是最优解,可以尝试将分界下移至0.3左右,此操作会使第四个箱图中大量欠贷客户正确地重新分类为欠贷者,提高风险识别能力。
自变量重要性图,重要性图为重要性表格中值的条形图,以重要性值降序排序。其显示与客户稳定性(employ、address)和负债(creddebt、debtinc)相关的变量对于网络如何对客户进行分类有重大影响;
最后来看导出的XML模型文件:
以XML文件存储了第二次构建的MLP神经网络模型,可以用于新客户的分类和风险识别。
新客户分类
假设现在有150名新客户,现在需要采用此前建立的模型,对这些客户进行快速的风险分类和识别。
打开新客户数据,菜单中选择:
实用程序 > 评分向导
型"XML文件,点击"下一步":
检查新数据文件变量的定义是否准确。下一步。
选择输出"预测类别的概率"、"预测值"。完成。
新客户数据文件新增3列,分别给出每一个新客户的预测概率和风险分类(是否欠贷)。
多层感知器神经网络 总结
一种前馈式有监督的学习技术;
多层感知器可以发现极为复杂的关系;
如果因变量是分类型,神经网络会根据输入数据,将记录划分为最适合的类别;
如果因变量是连续型,神将网络预测的连续值是输入数据的某个连续函数;
建议创建训练-检验-支持三个分区,网络训练学习将更有效;
可将模型导出成 XML 格式对新的数据进行打分;