导航:首页 > 网络安全 > 如何学习识别网络

如何学习识别网络

发布时间:2022-08-15 23:47:06

1. 如何通过人工神经网络实现图像识别

人工神经网络(Artificial Neural Networks)(简称ANN)系统从20 世纪40 年代末诞生至今仅短短半个多世纪,但由于他具有信息的分布存储、并行处理以及自学习能力等优点,已经在信息处理、模式识别、智能控制及系统建模等领域得到越来越广泛的应用。尤其是基于误差反向传播(Error Back Propagation)算法的多层前馈网络(Multiple-Layer Feedforward Network)(简称BP 网络),可以以任意精度逼近任意的连续函数,所以广泛应用于非线性建模、函数逼近、模式分类等方面。


目标识别是模式识别领域的一项传统的课题,这是因为目标识别不是一个孤立的问题,而是模式识别领域中大多数课题都会遇到的基本问题,并且在不同的课题中,由于具体的条件不同,解决的方法也不尽相同,因而目标识别的研究仍具有理论和实践意义。这里讨论的是将要识别的目标物体用成像头(红外或可见光等)摄入后形成的图像信号序列送入计算机,用神经网络识别图像的问题。


一、BP 神经网络


BP 网络是采用Widrow-Hoff 学习算法和非线性可微转移函数的多层网络。一个典型的BP 网络采用的是梯度下降算法,也就是Widrow-Hoff 算法所规定的。backpropagation 就是指的为非线性多层网络计算梯度的方法。一个典型的BP 网络结构如图所示。

六、总结

从上述的试验中已经可以看出,采用神经网络识别是切实可行的,给出的例子只是简单的数字识别实验,要想在网络模式下识别复杂的目标图像则需要降低网络规模,增加识别能力,原理是一样的。

2. 如何用深度学习识别网络欺诈

3. 要学习模式识别、神经网络、遗传算法、蚁群算法等等人工智能算法需要哪些数学知识

模式识别需要非常好的概率论,数理统计;另外会用到少量矩阵代数,随机过程和高数中的一些运算,当然是比较基础的;如果要深入的话恐怕需要学泛函,但是一般情况下不需要达到这种深度。神经网络,遗传算法等智能算法在模式识别有非常重要的应用,但是一般不需要学习计算机学科的人工智能,我们控制有一个交叉学科叫做智能控制是讲这些的,智能控制不需要什么基础,有中学数学的集合和对空间有一点点的了解就足够了,模糊数学的基础是包含在这门学科里的。

4. 如何提高网络信息的识别能力

一,不要相信免费的午餐这种事。
二,不要相信多数人都是好心的。
三,不要相信自己不懂得看起来有理的事情。
以上,可以防备未出现的新式骗局。
四,多多学习,加强自己的技术能力。这个可以认识更多已经被人使用过的骗局。

5. 如何快速学习神经网络算法识别验证码

验证码都是服务器生成的图片,如果是动态的,就是调用servlet生成的,怎么提取我还不太清楚,不过我想网络上应该会有很多资料。

我现在看的是识别验证码的东西,在截取到验证码图片之后,针对这个黑白背景,只有干扰线的验证码。

机器学习之识别简单验证码
时间 2016-10-15 22:46:31 随风'S Blog

主题 数据挖掘
关于验证码识别的文章网上很多图像识别的大神教程也比较多,不过大多数专业性太强了,对非专业人士读起来简直是天书,不过随着机器学习的普及,一大批机器学习的开源工具出现了,这也算对大多数像我一样的学渣的福音,由于最近项目中牵扯到了一些机器学习相关的东西,所以自己最近也一直在学习机器相关的东西,这篇验证码的识别也算是练手了,本文也算是学习中的笔记,所以文章中难免有一些错误,欢迎各路大神指点。
由于本人不是相关专业的,对于文中相关算法就不会具体去讨论了,主要以实战为目的。
准备工作
主要是用到了一些机器学习开源的框架以及一些辅助工具。
Scikit-Learn 比较有名的Python机器学习模块,主要是操作简单。
Pybrain Python机器学习模块,主要以神经网络为核心,所有的训练方法都以神经网络为一个实例。
pytesseract 图像识别小工具,本文主要是用来预处理训练样本的。
PIL Python图像处理库。
问题分析
首先在进行具体工作之前,我们得看看我们需要解决的是什么问题,那么对于验证码识别来说,可以看作一个分类问题,对于数字的图片验证码来说的话,其实就是0-9数字分类的问题,验证码识别最难的部分在于怎么去将验证码进行切割成单个字符图片,当然对于图片裁剪也就是特征提取有很多办法,例如垂直投影法,等距切割法等等,其中等距切割也是比较简单的,但是对于稍微复杂一点的验证码识别时准确率非常低,因为等距切割时将验证码按照相同的宽度进行裁剪,对于那些字符宽度大小不一的,就算裁剪出来也不能很好的表示字符的特征,所以有时候需要先对图片进行一系列的预处理,例如字符矫正等等,然后再用垂直投影法在x轴和y轴上按照投影的大小进行裁剪。
对于垂直投影法来说的话,最后我们还得考虑训练集在维度上都同意,由于是非等级切割,所以每个图片的像素肯定不一样,所以为了维度统一还得进行填充,总之稍微麻烦一点。
这里主要是以等距切割为例子,因为在操作起来比较简单,那么掩码也是选用0-9的纯数字验证码来进行识别,验证码如下

这样的图片看起来的话间距基本上都差不多大,所以在分割时也比较容易,将图片切成四块后,就可以拿每一块去进行训练识别了。
使用机器学习来进行训练和识别的话,我们就得考虑特征选取了,一般验证码识别有一套标准的流程,图片

对于验证码识别来说我们关注的不是验证码的颜色,而是字符代表的含义,所以在图片处理时进行灰度化和二值化以及去噪,比如说去掉干扰线,那么去噪也有相应的算法来实现,这里不做具体讨论,二值化其实就是将图片呈现出两种颜色,即非黑即白,这样的好处是在特征处理时可以使用0和1来代表黑色和白色,0和1代表什么颜色取决于个人喜好。
这样的话将二值化和其它步骤处理后的图片进行特征提取,将黑色像素点标记成1,白色像素点标记成0,这样就可以得到图片的数值表示,那么特征维度就等于图片像素的大小,最终将图片按照X轴或者Y轴表示,即将像素的所标记的值合并到一行,例如
1111100000000000010
1110000000000000000
表示成,这样每张图片就可以使用一行0和1的数值来表示。
进行特征提取之后,我们得到了图片在数学上的表示,那么下一步就需要进行模型训练了,由于如上文所述,图片识别是一个分类问题,所以在机器学习中,我主要采用了两种模型来进行训练, SVM支持向量机 和 BP神经网络 来进行模型训练,SVM使用scikit-learn机器学习包里面的实现来做,神经网络使用Pybrain来进行实现。
有关SVM和BP神经网络的算法部分,大家最好还是去网上搜下相关的Paper,这样你才能知道什么算法能解决什么问题,以及它大概的原理是什么样子的,有能力的同学可以去对推导下这两个算法。
实践
在问题分析部分我们已经对验证码识别的大概思路有了一个了解,那么这部分则主要正对上面所述部分进行具体实现。
首先,我们应该明白SVM和神经网络模型算法是属于有监督学习,即需要对样本进行标注,也就是标记每张图片表示的是那个数字,但是实际遇到的问题是,如果数据量小的话,我们可以进行人工标注,那么在数据量比较大的情况下,人工标注可能就不太现实了,所以对于图片来说的话也一样,你进行切割完成之后你必须得标注这个数字是几,所以我们需要对切割的图片进行预处理,也就是打标记,我比较懒,所以我也不会一个个去打标签,所以这里使用ocr来对切割的图片进行预分类,ocr在单文字识别上的效果正确率还是可以的,在ocr进行预分类之后,我们只需要去纠正那些分类错误的图片即可,这样就能大大的减少工作量。
这里实现主要有以下几个步骤:
图片采集
图片预处理(包括图片切割,二值化以及图像增强)
图片的预分类标注以及手动纠错标注
特征提取
模型训练以及预测
图片采集
图片采集就比较简单,不过多的阐述,如下图代码所示

将下载到了图片按照时间戳存到指定位置

图片预处理以及图片裁剪
对图片进行预处理后采用等距切割法对图片进行切割

裁剪后的图片如下

图片预分类
图片预分类采用pytesseract来对分割的图片进行预分类,减轻工作量。
具体代码如下

ocr的分类效果正确率应该在50%以上,剩下的就是对预分类的图片进行人工纠错了。
ocr的分类效果图

人工纠错和标记后的结果

每个目录表示一个类别标签。
特征提取
特征提取的具体内容请参考问题分析中,里面有详细的说明。
关键代码如下

最终图片的数学上表示会以记录在 /Users/iswin/Downloads/yzm/traindata/train_data.txt 中,数据的格式如下图所示

红色线框表示一张图片数值上的表示,最后一个数字0表示该图片的类型,我是为了方便把标签追加到最后一行。
SVM模型分类
这里svm的实现使用了scikit-learn来实现,关于scikit-learn的使用去官网看Tutorial就好了,这里需要说一下SVM关于参数选择的问题,我们都知道SVM支持多个核函数,例如高斯核、线性核、poly以及sgmoid核函数,但是选择那么核函数一开始对于不太熟悉的同学怎么选择的确是个问题,所以这里使用了scikit-learn的GridSearchCV来对参数进行最优化选择,经过参数寻优,这里高斯核的最终效果还是不错的,所以训练的时候直接使用高斯核来进行训练。
为了方便预测时的使用,这里对训练结果使用了joblib模块来进行持久化。为了简单对评价模型进行,这里使用了5折交叉验证来对结果进行检验。
最终结果的准确率在:Accuracy: 0.96 (+/- 0.09)
具体代码如下:

举个预测的例子,看看效果

BP神经网络模型分类
BP神经网络也称负反馈神经网络,即按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一,在BP神经网络之后,又出现了在深度学习中应用最广泛的CNN即卷积神经网络,这几天也正在学习。
本文使用了三层BP神经网络来对训练集进行训练,即输入层+2层隐含层+输出层,关于BP神经网络本身这里需要注意的是激活函数的选择以及对于多分类问题输出层函数选择的问题,激活函数主要有sigmod、tanh以及relu,关于怎么选取激活函数,这块没有进行深入了解,一般都是每个激活函数都跑一次,看最终效果。
这里的神经网络模型分类主要是对Pybrain用法的学习以及BP神经网络的基本认识,输入层使用了LinearLayer即线性输入层,隐含层使用了SigmoidLayer即激活函数为sigmod的隐含层,输出层由于是多分类问题,所以使用了SoftmaxLayer,最终在神经网络计算的结果中选取数值最大的那个索引位置就是预测的验证码类别,也就是0-9之间的数值。
关于Pybrain的资料除了官方文档不是特别多,关于构建神经网络的方式提供了两种方式,一种是 buildNetwork 函数来进行构建,另外一种就是使用 FeedForwardNetwork 函数来进行构建,这里需要注意的是如果使用 FeedForwardNetwork 来进行构建的话,注意要手动给各层加上Bias偏置项,否则结果可能可能非常差,当时我实验时没加,半天计算结果不对,最后看了下buildNetwork函数的源代码才发现没加Bias项,还有就是需要注意迭代至收敛的步数即函数中的 *maxEpochs=500 ,这个根据情况调整,Pybrain有自己的数据集格式,所以在使用时必须按照它的格式来进行数据的初始化。
这里除了输入层的维度(即验证码的训练集维度)和输出是固定的之外,其中隐含层的神经元个数也是可以调整的,具体的感兴趣的同学自己去调然后再看下结果。
对模型使用10折交叉验证进行了简单评估,错误率在Total error: 0.062左右,效果比SVM的差一点,应该通参数调优应该可以提高准确率,不过重在学习。
训练集样本: /Users/iswin/Downloads/yzm/traindata/train_data_uniq.txt
主要代码如下:

举个例子,来看看预测效果

总结
通过这个小实验,至少让我对机器学习和相关算法大致有了一个了解,同时作为安全人员来说至少知道了如何使用开源的机器学习框架来构架自己的模型,笔记中难免会有错误之处,欢迎大家提出意见。

6. 遗传神经网络识别原理

4.3.1 遗传BP简介

遗传识别是遗传算法+神经网络的一种新兴的寻优技术,适合于复杂的、叠加的非线性系统的辨识描述。神经网络算法是当前较为成熟的识别分类方法,但网络权值的训练一直存在着缺陷。为此结合具体应用,在对遗传算法进行改进的基础上,本文采用了一种基于遗传学习权值的神经网络识别方法,并取得了较好的效果。

尽管常规遗传算法是稳健的,但针对一个具体问题遗传算法只有和其他方法(或称原有算法)有效地结合在一起,组成一个新的混合算法,才能在实际中得到广泛应用。混合算法既要保持原有算法的长处,又要保持遗传算法的优点,因此常规遗传算法中的适应值函数、编码、遗传算子等必须做适当的修改以适应混合算法的要求。

4.3.1.1 适应值信息

常规算法中,适应值常被表示为全局极小,用欧氏距离来实现。例如,适应值常被表示为如下形式:

图4-5 改进的 GABP计算流程图

GABP的计算过程图如图4-5所示。

7. 如何辨别网络信息的真伪

一,首先提高自身的辨别能力,多学习,你需要提高哪一方面的辨别能力,你可以多学那一方面的书籍。
二,多向他人请教,多问为什么?多分析信息与信息之间的相关程度等。
三,认真分析信息的来源,信息的发出者等方面。比如有一些信息是权威部门发出的,有较高的可信程度。一些信息是小道消息,可信度较差。

8. 关于网络信息如何辨别真假

关于网络信息如何辨别真假?1:识别信息的真假,我们经常会看到一条信息会有不同的文字形式展现,虽然内容上相近,但是有些还是为了博得观看者的眼球,夹杂着一些夸大和失真的色彩。
2:识别信息的真假,我们浏览新闻的时候尽量从一些权威性的官网上进行浏览,官网上的信息都是最及时也是最真实的报道。
3:识别信息的真假,我们要从客观的角度看待新闻,也就是自己也要有一定的辨别能力,比如网络上有的时候传播一些食物相克的文章,大家可以从营养学家发表的官方文章来进行辨别。
4:识别信息的真假,我们可以从网络上网友的评论进行辨别,一般本土的新闻,当地的网友是最有发言权的,他们更能辨别信息的真假,从而进行参考。
5:识别信息的真假,我们可以通过实践来证明,前提是没有涉及危险的地方来进行辨别,这样是最直接也是最真实的,当然这个信息是对自己特别有用的。
6:需要注意的是以上几种方法,是我们日常生活中几种常见的识别信息真假的方法,大家可以根据自身的需求采用相应的方法进行参考,目的是让信息变得更加有效,让自己能够最真实的了解信息的真实性。

9. 如何系统学习网络知识

网络是一个复杂的系统,涉及知识很多。
对于初学者,要看的一套书是网络书籍中的圣经《TCP/IP详解卷一:协议》,这一本书讲解了基本所有的网络基本知识,熟读这本书就可以对网络协议知识有一个大概的理论基础。
于网络基础协议有了一个大概的理解后,加强自己的动手能力,学习一些基础的网络实验,比如ospf、rip等网络路由协议。可以通过一些软件来进行仿真实验。通过动手练习来增加知识。
能够熟练掌握一些知识之后就可以加深自己这方面的知识了,还是《TCP/IP详解卷2:实现》,这一本书讲的是关于网络协议他是怎么实现的,因此这就涉及到了网络底层编程的问题。需要对编程有一定的理解。
关于底层编程的学习,最好从最基础的c语言学习,一本C语言从入门到精通是十分必要的。
需要掌握其他的一些基本常识的,比如操作系统方面,要熟悉windows 和Linux系统。对于windows系统的一些基本问题要能解决。

阅读全文

与如何学习识别网络相关的资料

热点内容
网络名词举高高什么意思 浏览:418
网络信号是强的但是无网络 浏览:495
为什么网络能连但不能用 浏览:285
怎么复制手机里网络二维码 浏览:33
微博网络安全在线报名 浏览:443
网络男神在网上是怎么样的 浏览:592
网络电视机顶盒哪个能免费看电影 浏览:533
网络营销师难学吗 浏览:584
网络安全发展与安全的关系 浏览:296
学习网络营销能学到什么 浏览:948
咪咕盒子设置自动连接网络 浏览:108
电脑手机登录不上网络 浏览:586
怎么关闭宽带无线网络 浏览:173
一人一天能打多少网络模块 浏览:118
家里无线突然收不到网络了 浏览:583
百台手机直播网络组网 浏览:494
手机提前5g网络是怎么回事 浏览:985
用无线网络可以上 浏览:131
哪个网络电话好呢 浏览:88
wifi网络通道数量 浏览:130

友情链接