基于深度学习的入侵检测记录一
2016-06-28 20:26
190 查看
写在开头
刚上研究生,老师初期打算安排给我基于深度学习的入侵检测课题。我打算以博客的形式记录自己的学习历程,一来勉励自己,二来加深印象。学习一项新的知识,首先要培养自己的兴趣,其次要明白自己想要了解的问题是什么。我们从最表面的问题入手,首先了解什么是深度学习,为什么要有深度学习,如何使用深度学习。
深度学习概述(是什么)
alpha Go 赢得围棋比赛在前段时间被无数次提起,它能够通过大量的训练数据学习到下围棋的技巧,这是如何实现的呢?再来一个简单的例子,很多手机都有照片分类的功能,软件可以将手机中拍摄的照片进行精确的自动分类,这又是如何实现的?看完这些我们会有什么想法呢?深度学习可能是这样一种东西,它通过大量的数据来找到一些规律,得到一个最优的结论。对不对呢?我们看下维基对深度学习的定义。
深度学习(deep leaning)是机器学习拉出的分支,它试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。
太专业了对吗?我们来理解一下这段话。
首先,什么是机器学习,就是设计和分析一些可以让计算机自动学习的算法。那么什么是处理层?再来看维基后面的一段话。
深度学习进一步假定这一相互作用的过程可分为多个层次,代表对观测值的多层抽象。不同的层数和层的规模可用于不同程度的抽象。深度学习运用了这分层次抽象的思想,更高层次的概念从低层次的概念学习得到。这一分层结构常常使用贪婪算法逐层构建而成,并从中选取有助于机器学习的更有效的特征
可以看到,深度学习中将学习过程分为了多个层次,高层次由低层次得到,并且高层次的概念比低层次的概念更有效,就有点像这个样子
那么现在我们差不多明白了,深度学习是机器学习的分支,它通过分层处理将一些零散的特征抽象出一些有效的特征,从而进行预测或是分类,其中用了很多复杂的结构以及多重非线性变换。
背景(为什么)
现在我们知道了深度学习是什么,接下来得考虑它是怎么来的。 机器学习发展的几十年里,很多问题没有得到良好的解决,例如图像识别、语音识别、自然语言理解、天气预测、基因表达、内容推荐等通过机器学习的解决思路一般是像这样的中间三部分概括起来就是特征表达,这一部分对最终算法的准确性起关键作用,但是,实际上这一部分一般都是靠人工提取的。能否让机器自动提取所需要的特征呢?深度学习就可以做到,举个简单的例子,有一个水杯,人工提取特征必须每次都有人和机器说这个东西有个盖子,有个手柄等等,然后机器判断出这是水杯。深度学习的机器在经过大量水杯图片的训练之后,能够自动识别出这是水杯。我们可以看出来,深度学习对于机器智能化来说还是很重要的,因为重要,所以存在并且发展。
实现(怎么做)
当我们发现似乎开始了解了一些深度学习的知识了,进而思考如何去实现时却发现无从下手,知道的越多就越觉得自己无知。这里我们不去深究具体如何实现,而是就直观来说,思考一下它应该如何实现。首先考虑,它做了一些什么事情,由已知的一些特征为基础,不断向高层输出,做出最好的结论(预测或是分类)。那么,产生了问题,一是按怎样的比例输入,二是什么是好的输出的标准,三是怎样进行迭代修正,即一个是权重,一个是误差,一个是训练算法。Written with StackEdit.
相关文章推荐
- PHP连接mysql数据库
- H264(NAL简介与I帧判断)
- [笔记]Android Apk Java签名的含义
- 面向对象的六大设计原则(基于Volley框架分析)
- 论文笔记 | Rethinking the Inception Architecture for Computer Vision
- 事务,为什么你不回滚
- Delphi 编码转换 Unicode gbk big5(使用LCMapString设置区域后,再用API转换)
- elasticsearch配置文件里的一些坑 [Failed to load settings from [elasticsearch.yml]]
- 使用Eclipse创建Maven工程时无法创建的错误
- Linux笔记
- git学习之四:暂存区(index)
- Matlab Tricks(十一)—— 向量的逆序输出
- 【bzoj1012】【JSOI2008】【最大数】【maxnumber】【线段树】
- 图片处理(三)之高斯平滑
- session和cookie介绍以及session简单应用
- 编译安装MySQL5.6.26脚本
- const 常见用法
- Excel批量导入(导出同理)
- Teap树堆
- HTML5 Web 存储