人工智能机器学习及深度学习的区别与联系诸子流

记得在学校的时候火的是大数据、云计算和物联网,毕业后网上就开始很多讨论人工智能(还有区块链)。当只是网上听说的时候总觉得比较遥远,心里并没有很大的重视,直到有一天忘了是下午回去上班还是下午下班,和他走在路上的时候他也得到了人工智能。

他说,你说我们算1+1就是按规定1+1就是等于2,那你知道人工智能是怎么算1+1的吗,他不是像我们这么算的他是通过学习0.5+0.5=1、2+2=4这样慢慢去推测1+1等于多少的,所以他算出的1+1不一定等于2,当然学习的数据越多结果就越准确。

说到这位小哥另外还不得不提,虽然我看书的习惯不是受这位小哥的影响而形成的,但买书的习惯是受这位小哥的影响形成的,可能还有点青出于蓝的意思,之前我都想着去学校或者区图书馆的,他让我知道可以在亚马逊上买书。当然最近一位大学同学的言传身教又让我感觉去图书馆也挺合适的,为啥就不展开了你要懂其实自己应该可以懂,主要是想说有时经历越多越感觉孔子等人说的话实在很是经典,比如这句三人行必有我师焉,每个人都有其独特的经历(至少相较于你是独特的)每个人都有其独特的经验与感悟每个人都有其值得你学习、借鉴乃至敬重的地方。所以现在而言我总愿意接触更多的人,去听他们的故事和想法。另外同时也想说,我个人一直不太喜欢(或者叫敢)对一件事物并不了解就人云亦云地对其评头品足,比如你连四书五经是什么都不知道你就反对(我觉得《大学》和《中庸》讲得都还挺好的)或者再比如你连马克思主义是什么都不知道你就反对;我挺佩服这位小哥的一点感觉他知道一点就能侃侃而谈,当然最主要的是其判断时常没有很大的偏差。

受此番讨论影响,又回家志趣甚高地拿起了刚买不久的周志华的那本《机器学习》,然后看着那些复杂的数学符号和公式灰心丧气地确认自己看不懂,自己的机器学习之路就此告一段落了。说实话到现在关于高等数学,我大概只模糊记得微分是求导、积分是求面积。

去年和一位朋友学习时也有时会提起人工智能,我只能根据自己的感觉判断说机器学习根本不是单纯的一种算法而是一系列算法的集合,这些算法也不是最近才出现的而是很久以前就有了只是现在能收集的数据比较多电脑的计算能力也上来了所以机器学习火了起来,虽然尽量假装得理直气壮但确实没有很多底气。

本文大数多内容总结自刘焱的AI安全三部曲:《Web安全机器学习入门》、《Web安全深度学习实践》、《Web安全强化学习与GAN》。

另外对项目目录结构做一些说明:《Web安全机器学习入门》各章节与1book各python文件对应关系书中有明确说明;《Web安全深度学习实践》基本是一章一个python代码文件,在每章的开头都有说明本章对应的代码文件是哪个,另外也可直接自行按单节名与文件名对应。

人工智能:凡是有if-else等分支语句的程序都可以算是人工智能。比如没检测到人进门时不开灯检测到人进门就开灯这种就可以算人工智能。

机器学习:假设特征x和输出结果y的关系为y=w(x),我们得出l=(y1-y1')^2+(y2-y2')^2+...=(y1-w(x1))^2+(y2-w(x2))^2+...,这么一个关于w的结果损失函数;其中y为事实的结果,y‘为计算得出的结果,显然损失结果l值越小则y和y’就越接近,我们可以求出关于w的导数,当导函数值有负数时由负转正时原函数值最小,在实际中使用随机梯度下降+学习率不断调整w(即反向传播)。通过类似这种形式求(学习)出w的过程就是机器学习,原关系函数+损失函数+w值就是所谓的模型。

深度学习:深度学习和机器学习一样,都是学习y=w(x)中的w;但机器学习的w一般只有一个隐蔵层,而深度学习的w一般是多个隐蔵层,这即所谓“深度”的原因。深度学习w较机器学习复杂,所以适配性更强,所以在图片、音频、视频等有大量输入但特征又不那么明显的地方较机器学习效果更好。

总之他们的关系是:人工智能>机器学习>深度学习,是包含关系;但在现实讨论中一般在前者中剔除后者,用其并列关系。

机器学习算法集合包括:K近邻算法(这个基本不学习)、决策树与随机森林算法、朴素贝叶斯算法、逻辑回归算法、支持向量机算法、K-Means与DBSCAN算法、Apriori与FP-growth算法、隐式马尔可夫算法。

所以机器学习并不是单一的一个算法,而是诸多算法的集合。

那机器学习有这么多算法,他们用途的区别是什么呢,每个算法用于不同的场景吗,比如处理文本用这个算法处理图形用另外一个算法。

其实不是,这些算法并不是某个人某个组织系统地提出的机器学习方案,而是不同的人针对机器学习这一概念提出的自己的算法,所以这些算法可能某个特定的场景这个算法准确度高一些那个算法准确度低一些,但总体而言这些算法具有通用性。粗爆地说就是能用某种算法的地方肯定也可以换成其他算法,比如大家都一样可以检测暴力破解,大家也都可以检测WebShell。或者再打个比方说我们有很多排序算法,比如冒泡排序、快速排序、堆排序等等,各种排序算法在数据量不一样的情况下快慢有些区别,但大家都可以用来排序。

基本所有机器学习都是以下5个步骤:源数据、确定特征集、特征集数值化、学习、使用。

源数据:就是格式统一的一堆记录;比如Apache的日志、数据库表中的记录等等。

确定特征集:就是你得选择一些字段集,通过这些字段集能够区分正常记录和你的目标记录。比高的、富的、帅的是你理想的男朋友,[高、富、帅]就组成了一个特征集(我们还可以选择更多的特征以做出更精细化的判断)。

特征集数值化:计算机不擅长处理“高”、“富”、“帅”这种文字的运算的只擅长数值的运算,所以本质上我们要以数值代之实现运算数值得出数值。比如0代表不高1代表高,0代表不富1代表富,0代表不帅1代表帅,0代表不值得交往1代表值得交往。“高的、富的、帅的”->值得交往,就转成了[1,1,1]->1。

学习:我们给机器学习算法提供[1,1,0]->1,[1,1,1]->0等很多的因果数据,机器学习算法根据这些数据+自己算法本身代码整理出因果判断模式,这个过程就是学习。(所谓的因果判断模式本质上是一种概率,这也是很多人批评说所谓机器学习不过就是统计学、概率论的原因)

使用:在上一步学习中机器学习算法已经整理出了因果判断模式,当我们提供一个[0,1,1]的输入时,他就能根据模式给出他的判断结果(即0或1)。

简单而言机器学习就是通过“给定数据+既定算法代码”生成一个各特征的比重关系及与结果的对应关系。比如在上边交往的例子中,假定根据你的喜好得出各特征比重关系最终是高占30%比重富点30%比重帅占40%比重,假定根据你的喜好得出结果关系是具体的某个人如果计算出小于0.6就给出0不推荐交往大于0.6则给出1推荐交往。

在上一小节中我们提到机器学习分五个步骤,我们去编程时也就是这五个步骤的代码化。

其中前三个步骤和机器学习没什么强关系后两步才和机器学习有关系,而且后两步中机器学习算法本身的代码是固定的封装在写好的类及类的方法中并不需要我们去实现,我们使用机器学习算法顶多就是实例化类、给其传参数、调用其方法。

还是和排序一个意思,我们要排序要做的就是准备好要排序的数组,传给排序方法,最后得到排序结果。像快速排序等这些排序算法原理可能够写一本书,但是不好意思我完全可以不用知道,我就只要调用就好了。

所以看一些初级的机器学习代码,假设其有100行,那么90行是在准备数据10行是在调用机器学习的类及其方法。在这个层次上机器学习编程与普通编程维一的区别就只是:机器学习调用的是机器学习的类和方法、仅此而已。

另外“10行是在调用机器学习的类及其方法”同时意味着我们从一种机器学习方法更换成另一种机器学习方法,就只是把这“10行”从“调用这个机器学习算法对应的类及其方法”改成“调用那个机器学习算法对应的类及其方法”,又仅此而已。

深度学习算法集合包括:卷积神经网络算法(ConvolutionNeuralNetwork,CNN)、循环神经网络算法(RecurrentNerualNetwork,RNN)。

在2.2.3中我们说各机器学习算法的使用是比较简单的,那么深度学习使用起来是不是会复杂一点呢。我们直接来看《Web安全深度学习实战》给出的CNN例子。对比2.2.4中的普通机器学习算法,其唯一的区别只是单纯的实例化一个算法类变成了需要配置更多参数进行实例化的network网络(或叫model,其定义符合“输入层->(卷积层+->池化层)+->全连接层”模式,其中+号表示一次或多次、表示0或1次)。

defdo_cnn_2d(X,Y,testX,testY):#Buildingconvolutionalnetworknetwork=input_data(shape=[None,28,28,1],name='input')network=conv_2d(network,32,3,activation='relu',regularizer="L2")network=max_pool_2d(network,2)network=local_response_normalization(network)network=conv_2d(network,64,3,activation='relu',regularizer="L2")network=max_pool_2d(network,2)network=local_response_normalization(network)network=fully_connected(network,128,activation='tanh')network=dropout(network,0.8)network=fully_connected(network,256,activation='tanh')network=dropout(network,0.8)network=fully_connected(network,10,activation='softmax')network=regression(network,optimizer='adam',learning_rate=0.01,loss='categorical_crossentropy',name='target')#Trainingmodel=tflearn.DNN(network,tensorboard_verbose=0)model.fit({'input':X},{'target':Y},n_epoch=5,validation_set=({'input':testX},{'target':testY}),snapshot_step=100,show_metric=True,run_id='mnist')

常见的机器学习框架有如Scikit-Learn,其但一是因为机器学习是由一个个相互独立的算法组成相互间关系不大,二是机器学习代码还是比较简短,所以机器学习框架一般没那么出名。

说框架都是一般深度学习框架,比如AlphaGo所基于的TensorFlow(2015.11,Google)及风头越来越盛的PyTorch(2017.01,Facebook)都是深度学习框架。深度学习框架做的事情,一是是提供一些将对性的数据加载、处理等函数,二是提供神经网络定义模块nn。

深度学习框架一般都是基于计算图的,计算图又分为静态计算图和动态计算图,所谓“图”可以理解为深度学习框架中的变量、代码执行顺序。

TensorFlow使用的是静态计算图,在静态计算图模式中所有可能需要用到的计算图都需要在一开始就定义好,这使得TensorFlow一方面不能很好地利用编程语言中的if-else等现成语句,另一方面又需要引入其他设计以实现分支等逻辑,增大了学习成本。

PyTorch使用的是动态计算图,在动态计算图模式中所有计算图都可以在运行之中进行再进行定义,动态图的这种特性使得其可以充分利用语言现成的语法,尽可能降低了用户的学习成本。这也是PyTorch能后来居上的根本原因。

在2.3.3中提到自己阅读了PyTorch的一个示例代码,但自己并没有真正实现心是还是不是很有底气。

THE END
1.机器学习与深度学习:差异解析简介:机器学习与深度学习作为两大核心技术,各自拥有独特的魅力和应用价值。尽管它们紧密相连,但两者之间存在着显著的区别。本文将从定义、技术、数据需求、应用领域、模型复杂度以及计算资源等多个维度,对机器学习与深度学习进行深入对比,帮助您更好地理解它们之间的差异。 https://developer.aliyun.com/article/1645659
2.机器学习与深度学习人工智能领域的两个核心技术人工智能(AI)是一个广泛的术语,涵盖了多种不同的技术和方法,它们共同致力于创造出能够模仿、扩展甚至超越人类智能行为的系统。其中,机器学习和深度学习是人工智能领域中最受关注且具有革命性潜力的两大分支。 1. 机器学习概述 机器学习是人工智能的一个重要组成部分,它涉及使用算法来分析数据,并从这些数据中学到如何https://www.oxlrlndzq.com/xing-ye-zi-xun/556922.html
3.人工智能基础知识速成什么是深度学习? 深度学习是机器学习的一个分支,其核心是人工神经网络。与传统的机器学习相比,深度学习更加注重对数据的层层提取和抽象,能够处理包括图像、语音、自然语言等复杂的非结构化数据。 深度学习的基本原理 深度学习的核心是人工神经网络。神经网络由多层神经元组成,每一层都能够对数据进行抽象和提取特征。通过https://www.jianshu.com/p/90fcb8dc2b95
4.机器学习与深度学习理论要点01.逻辑回归和线性回归区别与联系线性回归要求自变量与因变量呈线性关系,而逻辑回归研究的是因变量取值的概率与自变量的概率 逻辑回归处理的是分类问题,线性回归处理的是回归问题,这也导致了两个模型的取值范围不同:0-1和实数域 联系: 两个都是线性模型,线性回归是普通线性模型,逻辑回归是广义线性模型 https://blog.csdn.net/yegeli/article/details/107872455
5.通透!!机器学习深度学习人工智能的区别与联系!!核心点:从5大方面,讲解机器学习、深度学习、人工智能的区别和联系! 没有接触过机器学习的同学,往往对机器学习、深度学习、甚至是人工智能有着模糊的概念。 在脑海中,往往裹了一层纱,好似懂,又说不明白。 在进行深度的对比人工智能、机器学习和深度学习之后,有助于大家理清概念、选择适当技术,并建立起整个学科的框https://cloud.tencent.com/developer/article/2377160
6.机器学习深度学习和神经网络之间的区别和联系python架构:机器学习基于统计模型。神经网络和深度学习架构只是非常大和更复杂的统计模型,并使用许多相互连接的节点。 算法:深度学习算法与其他机器学习算法的区别在于它们使用具有多层的深度神经网络,这使得网络能够在不需要显式特征工程的情况下学习数据中复杂和抽象的关系。 https://www.jb51.net/python/316268muf.htm
7.机器学习深度学习和强化学习的关系和区别是什么?机器学习的任务与模型是可以组合的,即有非深度/深度监督学习、非深度/深度强化学习、非深度/深度无监督https://www.zhihu.com/question/279973545/answer/2391767868
8.机器学习和深度学习的关系机器学习和深度学习是人工智能领域中两个重要的概念,它们在实际应用中都发挥着巨大的作用。虽然这两个术语经常被人们提及,但是很多人对它们的区别和联系仍然感到困惑。 1.机器学习 机器学习是一种通过计算机算法,让计算机根据已有的数据来自动获取知识或进行预测的方法。具体来说,机器学习的目标是设计出能够根据输入数据https://www.eefocus.com/e/1655140.html
9.深度学习机器学习人工智能自然语言处理之间的关系是什么随着科技的不断发展,深度学习、机器学习、人工智能和自然语言处理等概念越来越受到关注。它们之间存在着密切的联系和相互作用。本文将从多个方面阐述深度学习、机器学习、人工智能和自然语言处理之间的关系。 1.机器学习是人工智能的一部分 机器学习是人工智能的一个重要分支,它通过让计算机学习数据和经验,从而使计算机具备https://www.wokahui.cn/jishuqianyan/1704.html
10.科学网—[转载]联邦学习算法综述摘要:近年来,联邦学习作为解决数据孤岛问题的技术被广泛关注,已经开始被应用于金融、医疗健康以及智慧城市等领域。从3个层面系统阐述联邦学习算法。首先通过联邦学习的定义、架构、分类以及与传统分布式学习的对比来阐述联邦学习的概念;然后基于机器学习和深度学习对目前各类联邦学习算法进行分类比较和深入分析;最后分别从通信https://blog.sciencenet.cn/blog-3472670-1280769.html
11.请教一下,机器学习算法和深度学习的区别?2、深度学习:是机器学习(ML, Machine Learning)领域中一个新的研究方向,它被引入机器学习使其更接近https://m.imooc.com/wenda/detail/601905
12.探究机器学习与深度学习的区别与联系机器学习和深度学习是两个密切相关但又有区别的概念。它们都属于人工智能(AI)领域,用于让计算机从数据中学习并执行任务,但它们在方法和应用方面有一些差异。【机器学习与深度学习的联系】共同目标:机器学习和深度学习的共同目标是使计算机能够从数据中自动学习模式和规律,以便能够做出准确的预测、分类或决策。数据https://baijiahao.baidu.com/s?id=1774537642989823253&wfr=spider&for=pc
13.写给程序员的机器学习入门(一)从基础说起对初学者来说一个很常见的问题是,机器学习,深度学习与人工智能有什么区别?如果机器学习的模型非常复杂(经过多层次的计算),那么就可以说是深度学习,如果模型的效果非常好,在某个领域达到或者超过人类的水平,那就可以说是人工智能。但实际上它们都是 PPT 词汇,给?投资人?看的时候写人工智能比写机器学习要抢眼https://www.flyai.com/article/866
14.浅谈人工智能,机器学习,深度学习三者关系摘要:大数据人工智能技术,在应用层面包括机器学习、神经网络、深度学习等,它们都是现代人工智能的核心技术。在大数据背景下,这些技术均得到了质的提升,人工智能、机器学习和深度学习的 大数据人工智能技术,在应用层面包括机器学习、神经网络、深度学习等,它们都是现代人工智能的核心技术。在大数据背景下,这些技术均得到https://www.hqew.com/tech/fangan/2020626.html