Computer science 概念汇总
文章目录
- 机器学习&深度学习相关
- DNN
- DNN与MLP的区别
- CNN
- 人类视觉原理
- CNN 的基本原理
- 应用
- 总结
- MLP
- 其它常见名词含义
- 数据压缩相关
- 启发式算法相关
机器学习&深度学习相关
DNN
DNN与MLP的区别
现在流行的DNN和MLP是一个发展和继承的关系。两者在很多方面都极其相似,比如都有隐藏层、激活函数、反向传播等,但是早期的MLP其实是很浅层的,其网络的更新方法(感知准则函数)也和目前DNN的更新方法有区别的。而DNN在继承了MLP的架构之外,还发展了自身,堪称第二代神经网络,其发展的地方有:网络的层数可以添加得很深了,激活函数的种类变多了,对数据的拟合效果更好了,功能或应用的领域更加多了等等;
无论如何,多层感知器是一种特定的前馈神经网络体系结构,其中您堆叠了多个完全连接的层(因此,根本没有卷积层),其中隐藏单元的激活功能通常是S型或tanh。输出层的节点通常具有softmax激活函数(用于分类)或线性激活函数(用于回归)。典型的MLP架构不是“较深的”,即,我们没有很多隐藏层。
CNN
CNN: Convolutional Neural Network,卷积神经网络是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。 卷积神经网络由一个或多个卷积层和顶端的全连通层组成,同时也包括关联权重和池化层。这一结构使得卷积神经网络能够利用输入数据的二维结构。
卷积神经网络 – CNN 最擅长的就是图片的处理。
CNN 有2大特点:
- 能够有效的将大数据量的图片降维成小数据量
- 能够有效的保留图片特征,符合图片处理的原则
目前 CNN 已经得到了广泛的应用,比如:人脸识别、自动驾驶、美图秀秀、安防等很多领域。
在 CNN 出现之前,图像对于人工智能来说是一个难题,有2个原因:
①图像需要处理的数据量太大,导致成本很高,效率很低
②图像在数字化的过程中很难保留原有的特征,导致图像处理的准确率不高
图像是由像素构成的,每个像素又是由颜色构成的现在随随便便一张图片都是 1000×1000 像素以上的, 每个像素都有RGB 3个参数来表示颜色信息。
假如我们处理一张 1000×1000 像素的图片,我们就需要处理3百万个参数!
1000×1000×3=3,000,000
这么大量的数据处理起来是非常消耗资源的,而且这只是一张不算太大的图片!
卷积神经网络 – CNN 解决的第一个问题就是「将复杂问题简化」,把大量参数降维成少量参数,再做处理。
更重要的是:我们在大部分场景下,降维并不会影响结果。比如1000像素的图片缩小成200像素,并不影响肉眼认出来图片中是一只猫还是一只狗,机器也是如此。
图片数字化的传统方式我们简化一下,就类似下图的过程:
假如有圆形是1,没有圆形是0,那么圆形的位置不同就会产生完全不同的数据表达。但是从视觉的角度来看,图像的内容(本质)并没有发生变化,只是位置发生了变化。
所以当我们移动图像中的物体,用传统的方式的得出来的参数会差异很大!这是不符合图像处理的要求的。
而 CNN 解决了这个问题,他用类似视觉的方式保留了图像的特征,当图像做翻转,旋转或者变换位置时,它也能有效的识别出来是类似的图像。
人类视觉原理
人类的视觉原理如下:从原始信号摄入开始(瞳孔摄入像素 Pixels),接着做初步处理(大脑皮层某些细胞发现边缘和方向),然后抽象(大脑判定,眼前的物体的形状,是圆形的),然后进一步抽象(大脑进一步判定该物体是只气球);
对于不同的物体,人类视觉也是通过这样逐层分级,来进行认知的:
我们可以看到,在最底层特征基本上是类似的,就是各种边缘,越往上,越能提取出此类物体的一些特征(轮子、眼睛、躯干等),到最上层,不同的高级特征最终组合成相应的图像,从而能够让人类准确的区分不同的物体。
那么我们可以很自然的想到:我们可以模仿人类大脑的这个特点,构造多层的神经网络,较低层的识别初级的图像特征,若干底层特征组成更上一层特征,最终通过多个层级的组合,最终在顶层做出分类;
CNN 的基本原理
典型的 CNN 由3个部分构成:
①卷积层(滤波器 ):提取图像价格
②池化层:大幅降低参数量级(降维),防止过拟合
③全连接层:输出结果
卷积
;
卷积其实就是矩阵点乘,卷积层自己一个矩阵,然后对整个图片扫描,即使用一个过滤器(卷积核)来过滤图像的各个小区域,从而得到这些小区域的特征值;
在具体应用中,往往有多个卷积核,可以认为,每个卷积核代表了一种图像模式,如果某个图像块与此卷积核卷积出的值大,则认为此图像块十分接近于此卷积核。如果我们设计了6个卷积核,可以理解:我们认为这个图像上有6种底层纹理模式,也就是我们用6中基础模式就能描绘出一副图像
总结:卷积层的通过卷积核的过滤提取出图片中局部的特征,跟上面提到的人类视觉的特征提取类似
池化
池化层简单说就是下采样,他可以大大降低数据的维度。其过程如下:
可看出 原始图片是20×20的,对其进行采样,采样窗口为10×10,最终将其下采样成为一个2×2大小的特征图。
之所以这么做的原因,是因为即使做完了卷积,图像仍然很大(因为卷积核比较小),所以为了降低数据维度,就进行下采样。
总结:池化层相比卷积层可以更有效的降低数据维度,这么做不但可以大大减少运算量,还可以有效的避免过拟合。
全连接层
这个部分就是最后一步了,经过卷积层和池化层处理过的数据输入到全连接层,得到最终想要的结果。
经过卷积层和池化层降维过的数据,全连接层才能”跑得动”,不然数据量太大,计算成本高,效率低下
典型的 CNN 并非只是上面提到的3层结构,而是多层结构,例如 LeNet-5 的结构就如下图所示:
卷积层 – 池化层- 卷积层 – 池化层 – 卷积层 – 全连接层
应用
卷积神经网络 – CNN 很擅长处理图像。而视频是图像的叠加,所以同样擅长处理视频内容。
- 图像分类、检索
- 目标定位检测:自动驾驶、安防、医疗…
- 目标分割:对前景和背景进行像素级的区分、再高级一点还可以识别出目标并且对目标进行分类;如美图秀秀、视频后期加工、图像生成…
- 人脸识别:安防、金融、生活…
- 骨骼识别:安防、电影、图像视频生成、游戏…
总结
参考文章:
https://easyai.tech/ai-definition/cnn/
卷积层是如何提取特征的?
MLP
多层感知神经网络(MLP)
多层感知机(MLP,Multilayer Perceptron)也叫人工神经网络(ANN,Artificial Neural Network),除了输入输出层,它中间可以有多个隐层,最简单的MLP只含一个隐层,即三层的结构,如下图:
从上图可以看到,多层感知机层与层之间是全连接的(全连接的意思就是:上一层的任何一个神经元与下一层的所有神经元都有连接)。多层感知机最底层是输入层,中间是隐藏层,最后是输出层。
输入层没什么好说,你输入什么就是什么,比如输入是一个n维向量,就有n个神经元。
隐藏层的神经元怎么得来?首先它与输入层是全连接的,假设输入层用向量X表示,则隐藏层的输出就是f(W1X+b1),W1是权重(也叫连接系数),b1是偏置,函数f 可以是常用的sigmoid函数或者tanh函数:
最后就是输出层,输出层与隐藏层是什么关系?其实隐藏层到输出层可以看成是一个多类别的逻辑回归,也即softmax回归,所以输出层的输出就是softmax(W2X1+b2),X1表示隐藏层的输出f(W1X+b1)。
MLP整个模型就是这样子的,上面说的这个三层的MLP用公式总结起来就是,函数G是softmax
其它常见名词含义
独立同分布iid
independent and identically distributed
假设样本空间中全体样本服从一个未知“分布”,我们获得的每个样本都是独立地从这个分布上采样获得的,即独立同分布;
归纳和演绎
归纳是从特殊到一般的“泛化”过程,即从具体的事实归结出一般规律;
演绎是从一般到特殊的“特化过程”,从基础原理推演出具体状况;
奥卡姆剃刀
Occanm’s razor是一种常用的、自然科学研究中最基本的准则,即"若有多个假设与观察一致,则选择最简单的一个";
过拟合
模型训练中的常见问题,当学习器把训练样本学得“太好”了的时候,很可能已经把训练样本自身的一些特点当作了所有潜在的样本都具有的一般性质,导致泛化能力下降,就是学习器很强大,把一些不太一般的特性也学到了,导致它认为某一类样本会必须具有该特性;
而欠拟合则是指对训练样本的一般性质尚未学好;
过拟合避免不了的,只能减缓,通过不同算法模型进行训练后,对测试集的泛化误差比较,选中泛化误差最小的模型;
评估方法
留出法:把数据集分成互斥的训练集和测试集,应尽量保证各分类样本的比例尽量一致,即为分层采样法;单次留出法往往不太可靠,需要多次随即划分,取评估结果平均值作为留出法的评估结果;
存在的问题:训练集和测试集的比例不好确定;
交叉验证法:把数据集划分为K个互斥子集,每次取k-1个子集用来训练,剩下一个用来测试,这样可有K组训练集/测试集,可进行K次训练测试,返回他们的评估结果均值;
交叉验证的稳定性和保证性在很大程度上取决于K的取值,常取10,即为10折交叉验证;
同样,可以用多种方式划分子集,所以10次10折交叉验证就是对数据集划分10次,每次分成10份进行交叉验证,这一共就有100次训练/测试;
交叉验证里面一个特殊的——留一法LOO(就是k=m,留一个样本),它的评估结果比较精确,但数据集太大容易导致大的开销;
自助法:每次从数据集D中挑选一个样本,把它复制到D’,重复m次,这样我们得到包含m个样本的数据集D’,显然D中一部分样本会在D’中重复出现,而另一部分样本不出现;样本在m次采样中始终不被采到的概率大约为0.368;
自助法在数据集较小、难以有效划分训练/测试集时很有用,但改变了原始数据集的分布,引入估计偏差,所以,在数据量充足时,留出法和交叉验证法更常用;
错误率、精度
错误率就是分类错误的样本数占总样本的比例,精度则是1-错误率;
准确率、召回率
准确率:精确率是针对我们预测结果而言的,它表示的是预测为正的样本中有多少是真正的正样本。那么预测为正就有两种可能了,一种就是把正类预测为正类(TP),另一种就是把负类预测为正类(FP);
召回率是针对我们原来的样本而言的,它表示的是样本中的正例有多少被预测正确了。那也有两种可能,一种是把原来的正类预测成正类(TP),另一种就是把原来的正类预测为负类(FN)。
真正例、假正例
AUC
AUC(Area Under Curve)被定义为ROC曲线下的面积。我们往往使用AUC值作为模型的评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而作为一个数值,对应AUC更大的分类器效果更好;
AUC就是衡量学习器优劣的一种性能指标
混淆矩阵
confusion_matrix
数据压缩相关
WSN
wireless sensor network => 无线传感器网络
无线传感器网络能够实时监测和采集网络分布区域内的各种监测对象的信息;
哈夫曼编码
以频次为权重进行编码,最短前缀保证不会重复且为最短;
https://www.bilibili.com/video/BV1dE411Z7Zw?from=search&seid=8628914870270399091
zip压缩原理
zip里面,将字符/字符串分为 iteral(单个字符 or <3个字符的字符串) 和 (distance,length)两组,将重复字符串(>=3个字符)标记为(distane,length)
,根据局部性原理,利用滑动窗口(32字节)使得 distance 值最小,然后对 distance 进行哈夫曼编码;对生成的哈夫曼树用码字长度序列记录,为了保证一一对应,把码字对应的整数表示成距离 distance ;由于distance 是32字节,可能中间存在很多的0,所以要对其进行区间化,按2的指数式追加法;iteral 和 length 则使用联合码表,即先用哈夫曼编码再用游程编码(对于一段连续出现的数,用数+出现次数
表示)再次压缩;
https://blog.csdn.net/lxlmycsdnfree/article/details/78912328?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-1&spm=1001.2101.3001.4242
启发式算法相关
NP难问题
P类问题:存在多项式时间算法的问题。(P:polynominal,多项式)
NP类问题:能在多项式时间内验证得出一个正确解的问题。(NP:Nondeterministic polynominal,非确定性多项式);
P类问题是NP问题的子集,因为存在多项式时间解法的问题,concept_总能在多项式时间内验证他。
我们能在多项式的时间内验证并得出问题的正确解,可是我们却不知道该问题是否存在一个多项式时间的算法,每次都能解决他(注意,这里是不知道,不是不存在)。
是否NP类问题=P类问题?
答:有的存在,有的不存在;如何验证NP类问题是否能转化为P类问题 => NPC,问题的规约,就是问题A能够用问题B的解法来解决(比如一元一次方程可以用二元一次方程解法求解);
NPC问题:如果所有np问题都能在多项式时间内转化为他,则称该np问题为npc问题(NPC:NP complete又叫NP完全问题)
NPC问题是NP问题的子集;
很多时候NPC问题是找不到一个多项式时间算法的,更多时候他是一个指数级的算法;
NPH问题就是NP难问题,NP hard问题:Non-deterministic Polynomial hard problem(NPH)问题,如果所有NP问题可在多项式时间内转化(归约,意思是解决了后者也就相应的解决了前者)成某个问题,则该问题称为NP难问题。
这里规约的意思是将一个特殊问题一般化,即将原问题推广为一个最一般的、最有概括性、也更难的、计算复杂度更高的问题,这个问题具有最高的计算复杂度,如果这个最一般的问题也能有多项式时间求解算法,那么那些特殊的原问题也能有多项式时间求解算法。
解决了这个NP hard问题,所有NP问题都能够被解决了。
Computer science 概念汇总相关推荐
- Any problem in computer science can be solved with another layer of indirection
Any problem in computer science can be solved with another layer of indirection. --by a predecessor ...
- Computer Science Theory for the Information Age-4: 一些机器学习算法的简介
Computer Science Theory for the Information Age-4: 一些机器学习算法的简介 一些机器学习算法的简介 本节开始,介绍<Computer Scien ...
- 计算机科学速成课 Crash Course Computer Science 笔记(摘要形式)
Crash Course Computer Science总共40节课,架构式地详细介绍了计算机从底层到顶层的构造和新的技术,一节课十分钟左右,可让小白在很短时间内产生对计算机的总体理解 本文是听课后 ...
- 我主修计算机科学英文,计算机科学,computer science英语短句,例句大全
计算机科学,computer science 1)computer science计算机科学 1.Application of computer science in bioinformatics;计 ...
- 中国计算机科学前沿官网,计算机科学前沿技术Frontier Technologies in Computer Science课件...
计算机科学前沿技术Frontier Technologies in Computer Science课件 一.课程性质与目的 <计算机科学前沿技术>是为全校本科专业开设的一门计算机和信息类 ...
- What every computer science major should know 每一个计算机专业的学生应该知道什么
Given the expansive growth in the field, it's become challenging to discern what belongs in a modern ...
- 《计算机科学经典着作》(Computer Science)
下面是用户共享的文件列表,安装eMule后,您可以点击这些文件名进行下载 53.6MB 43.4MB 64.4MB [计算机科学经典着作].McGraw.Hill.Introduction.To.Al ...
- 【光剑极简教程系列】“计算机科学与技术”概述Computer Science and Technology
[光剑极简教程系列]"计算机科学与技术"概述 Computer Science and Technology 计算机科学是什么? 计算机科学,研究计算机及其周围各种现象和规律的科学 ...
- 计算机c就业,留学美国:高薪好就业Computer Science(计算机科学)CS专业详解
原标题:留学美国:高薪好就业Computer Science(计算机科学)CS专业详解 计算机科学专业是理工科类留学最热门的专业之一,而且CS专业也一向是高薪.好就业的代名词,根据Payscale数据 ...
最新文章
- 智源社区AI周刊·第二期:过去一周AI领域的新鲜事
- Hibernate用Mysql数据库时链接关闭异常的解决
- Find和FirstOrDefault()有什么区别?
- SQL Server触发器创建、删除、修改、查看示例步骤
- Command ‘ifconfig‘ not found, but can be installed with: sudo apt install net-tools VM Ubuntu 解决方案
- 怎样创建数据库?4种流行数据库的创建方法介绍
- C#写的制程能力CPK分析程序
- N2N组建虚拟局域网——筑梦之路
- 认知SaaS产品和MVP流程
- MFC——CWnd类
- Java2EE体系结构图
- VMware Workstation Pro 修改显示语言
- 美术绘画之原画场景深入刻画-张聪-专题视频课程
- STM32使用模拟I2C读取硒翔30mL流量传感器
- 使用报表工具自定义属于自己的报表
- 服务器看门狗芯片电路图,SP706看门狗芯片SP706应用电路图.pdf
- 如何用Python自动爬取全国30+城市地铁图数据?
- Putty的使用及登录
- 高考数学题目:导数及其简单应用
- PB 自定义按钮(不使用api重绘)
热门文章
- Boolan第一周笔记(二)对于第一周作业的一点总结
- 使用PowerShell创建Azure Storage的SAS Token访问Azure Blob文件
- MVC之Ajax如影随行
- JDK5.0的11个主要新特征
- Linux系统调用表(x86_64)
- 【Leetcode_easy】1078. Occurrences After Bigram
- python极简代码实现快速排序
- 【数论学习笔记】同余
- bzoj 2648: SJY摆棋子2716: [Violet 3]天使玩偶 --kdtree
- asp.net 子域跨域 带cookie