目录
【人工智能有哪些分支】
【让概念再飞一会】
【李飞飞访谈记录】
20世纪初期,最伟大的物理学家(比如爱因斯坦、薛定谔、彭罗斯)开始思考的问题已经从物理转向了生物,他们在思考人是从哪里来的,人的智力是从哪里来的
五亿四千万年前,第一个三叶虫,第一个三叶草出现了眼睛这个器官,通过这么多年的进化、淘汰、迭代,才走到了今天的人类视觉。人类的大脑皮层是调节躯体运动的最高级中枢,而在大脑皮层中,有50 %以上的神经细部是在做视觉方面的工作。视觉不仅仅指的是眼睛,眼睛是视觉的窗口,大脑才是主机
有数据表示,在我们每天接触的大量信息中,通过视觉来认知的信息占70 %,听觉占20 %,其余感官的获取量仅10 %
ImageNet:世界上图像识别最大的数据库,1500万张图片,涵盖22万种物品
【机器学习】
机器学习就是给定数据和想要达到的目标,让程序根据输入数据一步步自我优化向目标靠近。输入的数据可以是有监督的(给定答案),例如分类问题,此时我们达到的目标就是预测正确的标签;也可以是无监督的(没有给定答案),例如聚类问题,此时我们达到的目标就是把样本分成事前不知道的几类。
可以把机器学习的过程和一个孩子学习骑自行车的过程进行类比,起初孩子并不知道如何骑自行车,但他通过不断尝试和调整姿势,从错误和成功中学习,随着时间的推移,孩子会逐渐掌握平衡感学会骑车,机器学习也是类似的过程。
机器学习步骤:收集数据,数据预处理,选择模型,训练模型,评估模型,调整参数,进行预测
机器学习的精髓:自己学习(调参),并且学会(预测准确)
【深度学习】
深度学习是使用深度神经网络的机器学习。机器学习里面有种结构叫神经网络,神经网络有多层的就叫深度学习,深度就是多层次的意思。深度学习狭义指深度神经网络,广义指任何迭代多层的机器学习模型。但由于目前只有神经网络胜任多层特征抽取,深度学习在实践上等价于用有很多层的神经网络进行机器学习。
【神经网络】
神经网络(Neural Network,NN),即人工神经网络(Artificial Neural Network,ANN)
神经网络是对生物大脑的一种粗糙的数学建模,模拟了生物神经系统的结构和功能,通过大量的连接和权重来进行计算和学习,是机器学习和深度学习的常用工具。神经网络本质上是拟合一个函数的过程。一个仅有一个隐藏层的神经网络就能拟合一个函数,但是它可能需要很多很多的神经元。而深层网络可以用少得多的神经元去拟合同样的函数。
神经网络的学习过程通常采用反向传播算法,通过计算预测输出与真实输出之间的误差,然后将误差反向传播回网络中的各个层次,更新权重和偏差的数值。这种迭代的训练过程使神经网络能够不断优化模型,提高预测性能。
【神经网络的三个主元素】
神经网络模型中主要包括三个元素:
神经网络的结构、神经网络的激活函数、神经网络的学习算法
1. 神经网络的结构
神经网络的结构由三部分组成,分别为输入层、隐藏层和输出层,每一层中有相应数量的神经元组成。输入层用于接收外部的数据输入,隐藏层是中间的处理层,可以有多层 ,输出层输出最后的处理结果。一般来说隐藏层大于2的神经网络就叫做深度神经网络,深度学习就是采用像深度神经网络这种深层架构的一种机器学习方法。
2. 神经网络的激活函数
在了解了神经网络的结构之后,那么数据是如何在这个神经网络中传递的?以上图中的第二层的第一个神经元为例,他的输出结果为:
其中w表示上一层神经元的权重,b表示偏差项,σ表示神经元的激活函数。首先对上一层神经元的输出按照权重相加(线性组合),然后再根据激活函数将权重相加后的结果转换成一个输出值。神经网络中最为常用的激活函数为sigmoid激活函数(有很多其他激活函数,这里以sigmoid函数为例说明),可以将sigmoid函数理解为压缩函数,将定义域上的数值转换成0-1之间的某一个数值,当x∗w+b的结果为无穷大的时候,则sigmoid函数输出结果近似等于1,当x∗w+b的结果为无穷小的时候,则sigmoid函数输出结果近似等于0。神经网络中其他神经元的结果都是按照这种方式进行计算,并将神经元的输出结果传递到下一层的神经元,直到输出最终结果为止。
3. 神经网络的学习方法
神经网络中的权重w,偏差项b起着重要的作用,这些参数相当于我们大脑中记录下来的玫瑰花的特征,当新的图片进来的时候,需要靠这些特征来比对和判断。那我们怎么通过数据的训练来学习到这些特征(经验)呢?神经网络中用到了梯度下降算法来学习参数,它的基本思想是通过某种策略来不断逼近最佳的参数估计值。
【神经网络的训练】
假如我们构建了一个神经网络,用来判断图片中的花是否为玫瑰花,假设有1万个训练样本数据,最理想的情况当然是这个神经网络能够完全正确地识别这1万个样本,最差的情况是1万个样本全部判断错误,实际情况大部分是介于这两者之间。那么我们如何来衡量这个神经网络的识别能力的好坏呢,一种方法是构建一个损失函数,最常用的损失函数为均方误差函数:
上述公式中的y(x)表示训练数据的真实结果,1表示为玫瑰花,0表示为非玫瑰花,a表示神经网络根据输入数据计算后得到的结果,它是介于0到1之间的一个值。如果所有样本都识别正确,则误差为零。我们的目标是希望这个误差越小越好,即我们希望通过训练得到一组参数的估计值,这组估计值能够使得误差达到最小值。
我们仔细来看这个损失函数的话,它的本质上是关于参数w、b一个函数,这样神经网络的训练问题就直接转化成为了一个数学问题,即求一个函数的极小值问题。从数学角度来看,这个问题如同求y=x**2这个函数的极小值问题没有本质的区别,无非就是神经网络中的参数很多,而y=x**2中只有一个参数而已。神经网络用来训练参数的方法为梯度下降算法。
经过反复迭代让损失函数值无限接近 0,浮动不大时,获得合适的权重,即神经网络训练好了
具体训练过程:一文了解神经网络 - 知乎
【机器学习必用神经网络吗】
机器学习不必须使用神经网络。神经网络只是机器学习中的一种重要技术。除了神经网络,机器学习还包括其他算法模型,如决策树、支持向量机、朴素贝叶斯等。不同的机器学习算法在不同的问题和数据集上表现出不同的性能。神经网络在处理大型数据集和图像、语音等复杂数据时具有优势,尤其是在深度学习领域的发展中,神经网络已经成为主流的模型之一。但机器学习不一定使用神经网络,比如概率图模型、SVM、logistic回归等机器学习模型都不使用神经网络。
【深度学习必用神经网络吗】
深度学习狭义指深度神经网络,广义指任何迭代多层的机器学习模型。
理论上来讲,深度学习是通过很多层的特征抽取得到对原始输入的高效利用(类似投票,人们投出自己的代表,代表再投出代表,这样一层层投票下去,每层的代表都会表示更清晰、明确、强烈的意向)。但由于目前只有神经网络胜任多层特征抽取,深度学习在实践上等价于用有很多层的神经网络进行机器学习。
什么是人工智能/机器学习/深度学习/神经网络?_哔哩哔哩_bilibili
【图文说明彼此关联】
人工智能(AI):涵盖所有
机器学习(ML):人工智能子方向
深度学习(DL):机器学习的一类方法
机器视觉(CV):自然语言处理(NLP):人工智能的两类应用方向
【算法、模型、框架是什么】
算法(Algrithm)
通常做软件开发的同学第一时间想到的是排序算法、搜索算法、图遍历算法、加密算法等等,但在机器学习领域说算法我们可能指的是用于解决分类或者回归问题的逻辑回归、贝叶斯分类、随机梯度下降。
这里提到的算法特指机器学习算法,简单的说机器学习算法就是用来学习、训练一个模型的计算方法,这个模型可以用于解决分类、回归、聚类等问题。
分类问题:推断明天的天气是晴天、多云、下雨。推断一张图片里面的动物是什么
回归问题:预测明天的气温是多少度。预测明天某支股票的价格是多少
聚类问题:根据用户行为特征自动划分用户群体,生成用户标签
模型(Model)
模型是机器学习输出的结果,使用模型可以输入相应的特征从而得到一个预测结果。传统机器学习算法输出的可能是一个概率分布,也可能是一个决策函数,在深度学习中输出的是一个神经网络架构和神经元上的权值信息。
我们千辛万苦的建模过程,从数据加工、特征提取、特征变换、算法选择、模型训练、评估、调参,最终的目的就是得到一个理想的模型。训练好的模型可以导出成一个模型文件,模型文件在指定的运行时环境中可以加载成模型对象用于预测。
框架(Framework)
前面说到的算法通常在书本上可以看到它的原理和相关的统计模型、数学模型的推导过程。让算法能应用到现实工作中需要使用计算机语言编程实现算法的计算过程,所以Tensorflow、pytorch这些就是实现了一系列算法的机器学习框架。
【深度网络架构】
所谓的深度网络架构,就是整个网络体系的构建方式和拓扑连接结构,目前主要分为3 种:前馈神经网络、卷积神经网络和循环神经网络。
1. 前馈神经网络(FNN)
前馈神经网络也叫全连接网络(fully connected neural network)。在这种结构中,所有的节点都可以分为一层一层的,每个节点只跟它的相邻层节点而且是全部节点相连(也就是全连接的)。这些层一般分为输入层、输出层以及介于二者之间的隐含层。这种前馈神经网络是目前应用最多的一类神经网络。
作用:
1、多个全连接层可以从不同角度提取特征;
2、全连接层作为输出层有分类和数值预测的功能;也经常用于卷积神经网络。
缺点:权重多,计算量大。
场景:所有的神经网络均可以利用
2. 卷积神经网络(CNN)
另外一种常见的网络架构就是卷积神经网络(CNN),它一般用于对数字图像进行处理,其架构通常如图所示。图中每一个立方体都是一系列规则排列的人工神经元集合。每个神经元到上一层次的连接称为卷积核,它们都是一种局域的小窗口。图中的小锥形可以理解为从高层的某一个神经元到低层多个神经元之间的连接。这个小锥形在立方体上逐像素的平移就构成了两层次之间的所有连接。到了最后两层,小立方体被压缩成了一个一维的向量,这就与普通的前馈神经网络没有任何区别了。
CNN 这种特殊的架构可以很好地应用于图像处理,它可以使原始的图像即使在经历过平移、缩放等变换之后仍然具有很高的识别准确性。正是因为具有这样特殊的架构,CNN 才成功应用于计算机视觉、图像识别、图像生成,甚至AI 下围棋、AI 打游戏等广阔的领域。
特点:
卷积层:相当于滤镜,将图片进行分块,对每一块进行特征处理,从而提取特征。
池化层:通过对提取的高维特征进行降维。
全连接层:对空间排列的特征化成一维的向量。
场景:人脸识别、图片识别
3. 循环神经网络(RNN)
还有一种常见的网络架构,被广泛应用于自然语言处理任务中的循环神经网络,如图所示。图的左侧为输入节点,右侧为输出节点,中间的隐含层节点互相连接。可以看到,这种网络与普通的三层前馈神经网络非常相似,只不过隐含层彼此之间还具有大量的连接。
RNN 这种特殊架构使得网络当前的运行不仅跟当前的输入数据有关,中间层的输出和下一个样本数据一起作为输入,也叫循环层。因此,这种网络特别适合处理诸如语言、音乐、股票曲线等序列类型的数据。整个网络的循环结构可以很好地应付输入序列之中存在的长程记忆性和周期性。
4. 更多的新型网络架构
最近几年,研究人员提出了越来越多的新型网络架构类型,从而使深度学习的性能得到了大幅提升。在此,我们仅举一个例子进行说明。
可微分计算机(或称为神经图灵机),它是谷歌DeepMind 的研究人员提出的一种融合了神经网络和冯·诺依曼体系式计算机的计算架构,它既可以模仿计算机的工作,又可以通过训练的方式进行学习,如图所示。在这种架构中,整个网络由控制器(a)、读写头(b)、存储器(c),以及存储器运作中的临时连接(d)构成。在控制器中,从输入到输出的映射由一个RNN 网络相连,它调控着读写头,会产生一组权重,用于从存储器部分读取或者写入数据。存储器就像我们计算机中的内存,它也可以被看作一组规则排列的神经元。
这种装置可以用于复杂的推理、阅读理解等高级计算任务,因为它不仅仅是一个神经网络,还结合了冯·诺依曼式体系架构,在问题求解、自然语言处理等任务上的能力已经超越了RNN。
【深度学习框架】
常用深度学习框架:TensorFlow、Pytorch、Keras、Paddle
1. TensorFlow
由Google智能机器研究部门研发,支持Python和C++。随着1.0版本的公布,相继支持了Java、Go、R和Haskell API的alpha版本。2.0版本又把Keras的相关API都嵌入到tf中,使得其功能更加强大。但由于版本变动过大,因此1.0版本的代码在2.0版本好多都报错,造成版本升级迭代困难。在2017年,Tensorflow处于深度学习框架的领先地位;但截至目前已经略输Pytorch,主要用于工业领域。
Tensor 的本意是“张量”,“张量”通常表示多维矩阵。在深度学习项目中,数据大多都高于二维,所以利用深度学习处理的数据的核心特征来命名,是有意义的。
Flow 的本意就是“流动”,它意味着基于数据流图的计算。
合在一起,“TensorFlow”的意思就是,张量从数据流图的一端流动到另一端的计算过程。它生动形象地描述了复杂数据结构在人工神经网络中的流动、传输、分析和处理模式
2. Pytorch
Pytorch目前由Facebook人工智能学院提供支持服务的。Pytorch目前主要在学术研究方向领域处于领先地位,许多学术论文都是用pytorch编写的,因此使用范围更广。其优点在于:PyTorch可以使用强大的GPU加速的Tensor计算(比如:Numpy的使用)以及可以构建带有autograd的深度神经网络。同时,PyTorch 的代码很简洁、易于使用、支持计算过程中的动态图而且内存使用很高效,版本之间差异也不大,没有升级方面的困难。
最浅显易懂的 PyTorch 深度学习入门_哔哩哔哩_bilibili
3. Keras
Keras是基于Tensorflow用纯python编写的深度学习框架,也就是说它是在Tensorflow的基础上再次集成的,所以他的代码会更加简洁方便,适于初学者;但因为它是在Tensorflow的框架上再次封装,运行速度低于Tensorflow。
其主要优点在于:
用户友好
Keras可以说是专为人类的API,提供一致而简洁的API, 极大减少一般应用下用户的工作量
易扩展性
添加新的网络层等是非常容易的,只需要仿照现有的模块编写新的类或函数,然后使用model.add()即可,创建新模块的便利性使得Keras更适合于先进的研究工作。
官方参考文档:主页 - Keras 中文文档
4. Paddle
飞桨(PaddlePaddle)以百度多年的深度学习技术研究和业务应用为基础,集深度学习核心训练和推理框架、基础模型库、端到端开发套件、丰富的工具组件于一体,是中国首个自主研发、功能完备、开源开放的产业级深度学习平台。国内的可以优先选择paddlepaddle,这是因为百度在大力推广该框架,能提供丰富的算力支持和技术支持,且百度开源了众多模型和应用,是人工智能入门的一个好选择,且能在模型上面进行一系列魔改。
【评价指标】
机器学习 之评估指标 召回率,查准率,F1分数(f1值)_f1取值范围-CSDN博客
机器学习评价指标:准确度,精确度,召回率,F1值_precision 、 recall 、 f1-score 、 support分别是-CSDN博客
【计算机视觉常见模型】
【计算机视觉基础杂谈】
计算机视觉 = 数字图像处理方法 + 机器学习
【点睛】
机器学习、深度学习的关键点是找到输入和输出的方法,找到中间的“函数”
【计算机视觉四大任务】
8、SVM实战——HOG+SVM行人检测_hog+svm算法-CSDN博客
【参考资料】
机器学习和深度学习中的学习到底是什么?小白能看懂的AI科普_哔哩哔哩_bilibili
【学习笔记&Python代码】统计学习方法第二版 李航_《统计学习方法》pdf-CSDN博客
「布道师系列」杨健——算法、模型、框架、平台是些什么鬼?_训练