一一些基本常识和原理
[什么叫神经网络]
人的思维有逻辑性和直观性两种不同的基本方式。逻辑性的思维是指根据逻辑规则进行推理的过程;它先将信息化成概念,并用符号表示,然后,根据符号运算按串行模式进行逻辑推理;这一过程可以写成串行的指令,让计算机执行。然而,直观性的思维是将分布式存储的信息综合起来,结果是忽然间产生想法或解决问题的办法。这种思维方式的根本之点在于以下两点:1信息是通过神经元上的兴奋模式分布储在网络上;2信息处理是通过神经元之间同时相互作用的动态过程来完成的。
人工神经网络就是模拟人思维的第二种方式。这是一个非线性动力学系统,其特色在于信息的分布式存储和并行协同处理。虽然单个神经元的结构极其简单,功能有限,但大量神经元构成的网络系统所能实现的行为却是极其丰富多彩的。
[人工神经网络的工作原理]
人工神经网络首先要以一定的学习准则进行学习,然后才能工作。现以人工神经网络对手写“A”、“B”两个字母的识别为例进行说明,规定当“A”输入网络时,应该输出“1”,而当输入为“B”时,输出为“0”。
所以网络学习的准则应该是:如果网络作出错误的的判决,则通过网络的学习,应使得网络减少下次犯同样错误的可能性。首先,给网络的各连接权值赋予(0,1)区间内的随机值,将“A”所对应的图象模式输入给网络,网络将输入模式加权求和、与门限比较、再进行非线性运算,得到网络的输出。在此情况下,网络输出为“1”和“0”的概率各为50%,也就是说是完全随机的。这时如果输出为“1”(结果正确),则使连接权值增大,以便使网络再次遇到“A”模式输入时,仍然能作出正确的判断。
如果输出为“0”(即结果错误),则把网络连接权值朝着减小综合输入加权值的方向调整,其目的在于使网络下次再遇到“A”模式输入时,减小犯同样错误的可能性。如此操作调整,当给网络轮番输入若干个手写字母“A”、“B”后,经过网络按以上学习方法进行若干次学习后,网络判断的正确率将大大提高。这说明网络对这两个模式的学习已经获得了成功,它已将这两个模式分布地记忆在网络的各个连接权值上。当网络再次遇到其中任何一个模式时,能够作出迅速、准确的判断和识别。一般说来,网络中所含的神经元个数越多,则它能记忆、识别的模式也就越多。
=================================================
关于一个神经网络模拟程序的下载
人工神经网络实验系统(BP网络) V10 Beta 作者:沈琦
http://emuchnet/html/200506/de24132html
作者关于此程序的说明:
从输出结果可以看到,前3条"学习"指令,使"输出"神经元收敛到了值 0515974。而后3条"学习"指令,其收敛到了值0520051。再看看处理4和11的指令结果 P Out1: 0520051看到了吗? "大脑"识别出了4和11是属于第二类的!怎么样很神奇吧再打show指令看看吧!"神经网络"已经形成了!你可以自己任意的设"模式"让这个"大脑"学习分辩哦!只要样本数据量充分(可含有误差的样本),如果能够在out数据上收敛地话,那它就能分辨地很准哦!有时不是绝对精确,因为它具有"模糊处理"的特性看Process输出的值接近哪个Learning的值就是"大脑"作出的"模糊性"判别!
=================================================
人工神经网络论坛
http://wwwyoungfancom/forum/indexphp
http://wwwyoungfancom/nn/indexhtml(旧版,枫舞推荐)
国际神经网络学会(INNS)(英文)
http://wwwinnsorg/
欧洲神经网络学会(ENNS)(英文)
http://wwwsnnkunnl/enns/
亚太神经网络学会(APNNA)(英文)
http://wwwcsecuhkeduhk/~apnna
日本神经网络学会(JNNS)(日文)
http://wwwjnnsorg
国际电气工程师协会神经网络分会
http://wwwieee-nnsorg/
研学论坛神经网络
http://bbsmatwavcom/post/pagebid=8&sty=1&age=0
人工智能研究者俱乐部
http://wwwsouwucom/
2nsoft人工神经网络中文站
http://211156161210:8888/2nsoft/indexjsp
=================================================
推荐部分书籍:
人工神经网络技术入门讲稿(PDF)
http://wwwyoungfancom/nn/annpdf
神经网络FAQ(英文)
http://wwwyoungfancom/nn/FAQ/FAQhtml
数字神经网络系统(电子图书)
http://wwwyoungfancom/nn/nnbook/directorhtm
神经网络导论(英文)
http://wwwshefacuk/psychology/gurney/notes/contentshtml
===============================================
一份很有参考价值的讲座
<前向网络的敏感性研究>
http://wwwyoungfancom/nn/mgxppt
是Powerpoint文件,比较大,如果网速不够最好用鼠标右键下载另存
本次实验将继续加载两个数据,一个是已经标注好的用户评论数据,另外一个是用户评价主题句,通过标注过的用户评论数据研究不同粒度的用户评价处理对深度情感分析模型的性能的影响,并比较字符级模型在用户评价情感极性推理上的差异。
使用 Pandas 加载已经标注好的在线用户评论情感数据表格,并查看数据维度和前 5 行数据。
加载民宿评论数据,并打印第一行。
数据属性如下表所示
用户评论分词
jieba 分词器预热,第一次使用需要加载字典和缓存,通过结果看出返回的是分词的列表。
批量对用户评价进行分词,并打印第一行数据,处理过程需要一些时间。
将用户评论处理成字符级别,为字符级模型提供训练集,并打印第一行数据,此预处理速度远远快于分词速度。
TextCNN 使用的卷积神经网络是一个典型的空间上的深度神经网络,基于卷积神经网络的情感分析具有优秀的特征抽取能力,能显著降低情感分类中人工抽取特征的难度。这类方法又根据文本嵌入粒度的不同可以分为字符级嵌入和词嵌入两种,一种是以分词后的词为情感分析粒度,另一种为字符级粒度的情感分析粒度,最后一层将包含全文潜在信息的最终编码送入 Sigmoid 做情感强度计算,即可对用户评论进行情感极性推理,是目前在文本分类经常使用的模型。
词级别模型训练
按照训练集 8 成和测试集 2 成的比例对数据集进行划分。
词级 TextCNN 模型训练,设置 128 条数据为一个批次,2 轮模型训练,训练集中的 20% 作为验证集,并加入早停设置。
通过传入原始的标签和预测的标签可以直接将分类器性能进行度量,并对指标收集,包含:模型的训练时间、accuracy_score 表示被正确预测的样本占总样本的比例、f1_score 值表示精确率与召回率的调和平均数和模型标签。
对训练的模型进行加载,并打印网络结构。
设置固定划分数据集,划分比例为 02 即训练集是测试集的 4 倍量。
字符级别模型训练
字符级 TextCNN 模型训练,设置 128 条数据为一个批次,2 轮模型训练,训练集中的 20% 作为验证集,并加入早停设置。
对字符级 TextCNN 的预测结果进行收集。
GRU 属于 RNN(recurrent neural networks,循环神经网络),是 LSTM 最流行的一个变体,比 LSTM 模型要简单,GRU 的门控单元减少了一个,GRU 与 LSTM 一样都是旨在解决标准 RNN 中出现的梯度消失问题,GRU 比 LSTM 在减少了计算量的条件下,做到了精度与 LSTM 持平,是目前在文本分类经常使用的模型。
我们使用函数定义的方式进行 GRU 模型的初始化。
对训练的模型进行加载,并打印网络结构。
词级别模型训练
词级 GRU 模型训练,设置 128 条数据为一个批次,2 轮模型训练,训练集中的 20% 作为验证集,并加入早停设置。
对训练的模型进行加载,并打印网络结构。
字符级别模型训练
将处理好的用户评论数据进行字符级处理即可输入字符级 GRU 模型训练,设置 128 条数据为一个批次,2 轮模型训练,训练集中的 20% 作为验证集,并加入早停设置。
对字符级 GRU 的测试集预测性能进行记录。
模型性能分析
通过控制参数变量的方式进行,并使用同样的数据集合观察性能指数测试结果。字符级能使用较小的字符级词典对语料的覆盖度更高,字符级预处理在测试集上的表现基本接近词级模型,并从耗时来看字符级都是最少的。TextCNN 架构总体高于 GRU 的准确度和综合值,并且训练时间相对较短。字符级语言建模的思想来自于信号处理,使用语言最小的文字单元去模拟复杂的语义关系,因为我们相信模型可以捕捉到这些语法和单词语义信息,在后续我们继续使用这种方式。
对用户评论数据预处理
对用户评论进行字符向量化。
情感极性推理
使用训练好的字符级 TextCNN 对用户评论进行情感预测,需要一些时间,请耐心等待。
使用训练好的字符级 GRU 对用户评论进行情感预测,需要一些时间,请耐心等待。
情感极性推理结果可视化
将两种字符级神经网络情感极性推理模型的结果取出来。
对全量的用户评论分别使用两个模型进行情感极性预测,并进行可视化,我们发现两种模型在全量的用户评论上的表现基本一致,字符级 TextCNN 在用户两极情感极性上表现更好。
我简单说一下,举个例子,比如说我们现在搭建一个识别苹果和橘子的网络模型:
我们现在得需要两组数据,一组表示特征值,就是网络的输入(p),另一组是导师信号,告诉网络是橘子还是苹果(网络输出t):
我们的样本这样子假设(就是Sampledata1txt):
p t
1 0 3 1
2 1 4 2
这两组数据是这样子解释的:
我们假设通过3个特征来识别一个水果是橘子还是苹果:形状,颜色,味道,第一组形状、颜色、味道分别为:1 0 3(当然这些数都是我随便乱编的,这个可以根据实际情况自己定义),有如上特征的水果就是苹果(t为1),而形状、颜色、味道为:2 1 4的表示这是一个橘子(t为2)。
好了,我们的网络模型差不多出来了,输入层节点数为3个(形状、颜色,味道),输出层节点为一个(1为苹果2为橘子),隐藏层我们设为一层,节点数先不管,因为这是一个经验值,还有另外的一些参数值可以在matlab里设定,比如训练函数,训练次数之类,我们现在开始训练网络了,首先要初始化权值,输入第一组输入:1 0 3 ,网络会输出一个值,我们假设为4,那么根据导师信号(正确的导师信号为1,表示这是一个苹果)计算误差4-1=3,误差传给bp神经网络,神经网络根据误差调整权值,然后进入第二轮循环,那么我们再次输入一组数据:2 0 4(当仍然你可以还输入1 0 3,而且如果你一直输入苹果的特征,这样子会让网络只识别苹果而不会识别橘子了,这回明白你的问题所在了吧),同理输出一个值,再次反馈给网络,这就是神经网络训练的基本流程,当然这两组数据肯定不够了,如果数据足够多,我们会让神经网络的权值调整到一个非常理想的状态,是什么状态呢,就是网络再次输出后误差很小,而且小于我们要求的那个误差值。
接下来就要进行仿真预测了t_1=sim(net,p),net就是你建立的那个网络,p是输入数据,由于网络的权值已经确定了,我们这时候就不需要知道t的值了,也就是说不需要知道他是苹果还是橘子了,而t_1就是网络预测的数据,它可能是1或者是2,也有可能是13,22之类的数(绝大部分都是这种数),那么你就看这个数十接近1还是2了,如果是15,我们就认为他是苹果和橘子的杂交,呵呵,开玩笑的,遇到x<=0,5、x=15、x>=25,我一般都是舍弃的,表示未知。
总之就是你需要找本资料系统的看下,鉴于我也是做图像处理的,我给你个关键的提醒,用神经网络做图像处理的话必须有好的样本空间,就是你的数据库必须是标准的。至于网络的机理,训练的方法什么的,找及个例子用matlab仿真下,看看效果,自己琢磨去吧,这里面主要是你隐含层的设置,训练函数选择及其收敛速度以及误差精度就是神经网络的真谛了,想在这么小的空间给你介绍清楚是不可能的,关键是样本,提取的图像特征必须带有相关性,这样设置的各个阈值才有效。OK,好好学习吧,资料去matlab中文论坛上找,在不行就去baudu文库上,你又不需要都用到,何必看一本书呢!祝你顺利毕业!
欢迎分享,转载请注明来源:浪漫分享网
评论列表(0条)