人工智能的几个概念
一、什么是人工智能
人工智能不是最近几年才兴起的,它已经有几十年发展的历史,下面是业内公认的一种关于人工智能概念的定义:人工智能(ArtificialIntelligence):缩写为AI,是研究开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。
这里边我们强调四个关键词:“模拟”“延伸”“扩展”“人的智能”,关于人工智能,在不同的视角下,是有不同的观点的,但是回归到人工智能的本质,是模拟、延伸和扩展人的智能,就比较容易理解人工智能是什么概念。
该领域的研究包括交互机器人、自然语言处理、语音识别、计算机视觉(图像识别)、知识表示、专家系统等。
二、人工智能、机器学习和深度学习的关系
人工智能(ArtificialIntelligence)涵盖范围最广,三环以内都可以叫人工智能,它关注的问题和方法也最杂,包括知识推理、逻辑规划以及机器人等方面。
机器学习(MachineLearning)住在二环,是人工智能的核心区域,也是当前发展最迅猛的一部分,子算法流派枝繁叶茂,但思想比较统一。
至于当下的网红——深度学习(DeepLearning),其实原本是从机器学习的神经网络子算法分支发展出来的一系列成果,知识体系一脉相承,只不过近年大出风头,干脆重新起了个名字“单飞”了。人工智能人工智能的目的是让计算机模拟人类的思维,让它解决一些不能用代码描述的问题,比如判断一朵花是不是玫瑰、通过CT照片检测一个人的病情等,这些问题就不能用传统的编程方法解决,因为没有一个确定的公式,或者说没有一个确定的算法。
但是我们人类就很容易解决这些问题,人类大脑不是根据固定的算法来推导的,而是根据以往的认知或者经验来推理。人工智能的目的也是如此,就是不给计算机编写固定的算法,让计算机根据已有的经验或者认知来帮助人们做事情。计算机的思维方式和人类相似,所以称为人工智能。机器学习人工智能是一个很美好的憧憬,那么,如何才能实现人工智能呢?答案就是让计算机不断地学习,也就是喂给它大量的数据,让它从数据中积累经验,逐渐形成认知。这就是机器学习。
人工智能是最终目标,机器学习是实现目标的一种方案。
机器学习是一件很麻烦的事情,需要先搭建一个模型,这个模型包含了很多参数,然后把准备好的数据(包括正确的结果)输入到模型中,不断调整模型的参数,直到它非常接近或者完全符合正确的结果,这个时候我们就说模型训练好了。
机器学习的模型有很多种,已经有人帮我们开发好了,我们从中选择其一即可,这个不用担心。最要命的是数据,机器学习需要大量的数据才能训练好模型。人类看一两张猫的照片就认识猫了,但是机器学习需要看成千上万张照片。
如何收集大量有效的数据,是机器学习的重中之重,所以才有了爬虫,有了数据挖掘,有了数据清洗等分支。深度学习机器学习的模型是一个不断发展的过程,后来人们逐渐研究出了一种更加智能和通用的模型,就是卷积神经网络(CNN)。CNN模拟人类大脑神经突触之间的连接,通过调整参数来模拟突触连接的强弱。
三、人工智能的两大主要特征:自动化+智能化
想象一下,你和一个机器人谈天说地的场景,是不是有点科幻?但现在,这种情况已经不再遥远了。最近,一家人工智能公司推出了一款名为“AI对话”机器人,可以和用户进行人机交互,让我们一起来看看吧!这款“AI对话”机器人有两个主要特征:自动化和智能化。首先,它采用了自动化技术,可以根据用户的输入自动产生回复,无需人工干预。其次,它还拥有强大的智能化能力,能够理解用户的意图,回答问题,甚至可以进行情感分析,与用户进行更加深入的互动。除此之外,“AI对话”机器人还有很多惊人的特点。它可以随时学习新的知识,不断提升自己的智能水平;它还可以进行语音识别和合成,实现真正的人机对话。不过,同时也存在一些问题,比如隐私保护和道德问题,需要引起重视。
四、人工智能的发展简史
1950年,计算机之父、人工智能之父阿兰·图灵提出图灵测试1956年,斯坦福大学AI实验室创办人约翰·麦肯锡第一次提出AI的概念。前面的所讲到的人工智能的概念,就是1956年由约翰·麦肯锡提出的。1986年,Rumelhart等人提出分布式并行处理,人工智能的发展离不开分布式计算。2006年,Geoffrey.EHinton&Lecunetc提出深度学习概念2011年,IBM开发Waston认知系统,人脑生物芯片开创者2016年,GoogleAlphaGo战胜了世界围棋冠军、职业九段选手李世石2017年,百度宣布开放自动驾驶平台Apollo2018年,DeepMind的Alphafold破解了出现五十年之久的蛋白质分子折叠问题,谷歌推出BERT模型,将自然语言处理技术推进到新的时代。2022年,chatGPT五、人工智能市场生态格局
人工智能基础中的问题解答
1、机器学习的形式化定义用在LeNet中第一次出现,每一个样本对应这样的一张图片,每一个样本有多少个像素点。样本:在手写数字数据集每一张图片都是样本。特征:784个数字就是它的特征,特征的取值就是784每一个数字的取值,取值范围是0-255。特征向量:784个数字看作成一个一维的向量。验证集,由训练集划分而来。通过验证集对模型性能的评价,去调模型,一般是选择超参数所使用。把模型确定下来去测试集上去做测试。训练集和验证集是机器学习和深度学习中常用的两个数据集,它们具有以下区别:
用途不同:训练集用于模型的参数学习和调整,而验证集用于模型的选择和调优。
数据划分方式不同:通常,原始数据集会被划分成训练集和验证集,比例可以根据实际情况设定。训练集用于训练模型的参数,验证集用于评估模型的性能。
模型训练过程中的使用方式不同:在训练过程中,训练集被用来训练模型的参数,通过反向传播和优化算法来更新模型的权重。验证集在训练过程中用于监控模型的性能,帮助选择最佳的模型。
目标不同:训练集的目标是让模型尽可能地拟合训练数据,以提高模型的泛化能力。验证集的目标是评估模型在未见过的数据上的性能,并进行模型选择、调参等操作。
用于防止过拟合:验证集可以用于监控模型在训练过程中的性能,并及时停止训练以避免过拟合。通过与训练集和验证集上的性能比较,可以判断模型是否过拟合或欠拟合。
数据不同:训练集通常是模型学习的主要数据源,它包含了丰富的样本和标签。验证集是用来估计模型在未见过数据上的性能,应该与训练集有一定的差异性。
总之,训练集用于模型参数的学习和拟合,验证集用于模型的选择和调优,二者在数据划分和使用方式上有所不同。正确使用训练集和验证集可以帮助优化模型并提高其在未知数据上的性能。以P评价计算机程序关于某类任务T上的性能,如果某程序利用经验E使T中的任务获得了性能改善,则称该程序对经验E进行了学习。参数是根据经验去找的,是习得的超参数是没有什么经验去找,是试出来的,对解决当前的问题去确定超参数,比如学习率,网络的层数,等不是从经验里面去让模型调参,调出来的数值,它是你自己去找的一个值。机器学习的目的就是找到适合这个网络的偏置和权重。分类问题:输出是一些离散值
回归问题:输出是一些连续值(比如人的健康指数,数值越大,健康指数越好)聚类问题:没有类别的数据,以某种方式分成几波。聚类问题和分类问题是机器学习中两个不同的任务,它们有一些重要的区别。特征降维:特征降维(FeatureDimensionalityReduction)是一种降低数据集中特征数量的方法,它可以在减少计算复杂度的同时,保留数据的主要信息。特征降维的目的是减少噪声、冗余、过拟合等问题,提高模型的泛化能力和性能。
特征降维的方法可以分为两类:特征选择(FeatureSelection):直接从原始特征集中选择一个子集,包括过滤法(Filtermethods)、包装法(Wrappermethods)和嵌入法(Embeddedmethods)。过滤法:根据特征自身的统计信息或者与目标变量的关联程度来选择特征,例如:相关系数、卡方检验、互信息等。包装法:将特征选择过程看作一个搜索问题,通过不断尝试特征子集,找到最优子集。例如:递归特征消除(RecursiveFeatureElimination,RFE)。嵌入法:在模型训练过程中进行特征选择,例如:Lasso回归(L1正则化)和决策树。特征提取(FeatureExtraction):通过某种变换,将原始特征映射到一个新的、较低维度的空间。常用的特征提取方法包括:主成分分析(PrincipalComponentAnalysis,PCA):通过线性变换将原始数据映射到一个新的坐标系,使得映射后的数据在新坐标系下的方差最大。线性判别分析(LinearDiscriminantAnalysis,LDA):与PCA类似,但LDA是有监督的降维方法,目标是使得不同类别之间的距离最大化,同类别之间的距离最小化。流形学习(ManifoldLearning):一类非线性降维方法,试图在低维空间中保留数据的拓扑结构。例如:等度量映射(Isomap)、局部线性嵌入(LocallyLinearEmbedding,LLE)和t-distributedStochasticNeighborEmbedding(t-SNE)。在实际应用中,特征降维方法的选择取决于具体的问题和数据。在进行特征降维之前,通常需要对数据进行预处理,例如:缺失值处理、数据标准化等。
监督与无监督学习:分类问题是监督学习任务,而聚类问题是无监督学习任务。在分类问题中,我们有一组已标注的训练数据,其中每个数据点都有对应的类别标签。而在聚类问题中,我们没有预先标注的类别信息,只是根据数据之间的相似性或距离进行聚类。
任务目标:分类问题的目标是建立一个模型,能够根据输入数据预测其所属的类别标签。模型通过学习训练数据的特征和类别关系来进行预测。而聚类问题的目标是将数据划分为不同的簇或群组,使得同一组内的数据相似度高,不同组之间的相似度低。
数据标注:分类问题的训练数据已经进行了标注,每个数据点都有明确的类别标签。这些标签用于监督模型的学习过程。在聚类问题中,数据没有预先的类别标签,算法根据数据的内在结构和相似性进行自主的聚类。
评估方法:在分类问题中,可以使用各种指标(如准确率、精确度、召回率等)来评估模型的性能,通过与真实标签进行比较来确定模型的预测准确性。而在聚类问题中,评估方法更加灵活,常用的指标包括轮廓系数、Calinski-Harabasz指数等,用于衡量聚类结果的紧密度和分离度。
总体而言,分类问题和聚类问题在任务目标、数据标注和评估方法上存在明显差异。分类问题关注对新样本进行准确分类,而聚类问题则是探索数据之间的内在结构并进行无监督的分组。特征降维?监督学习:如手写数据集已经标注好类别,已经标注好类别的称为有监督学习,没有标注类别的称为无监督学习。监督学习(SupervisedLearning)是机器学习的一种常见任务,其目标是根据输入数据和对应的标签(或输出值),建立一个模型来预测未标记数据的标签或输出。在监督学习中,我们有一个已知标签的训练数据集,其中每个数据点都有一个与之对应的标签或输出值。这些数据点由输入特征和对应的标签组成,模型通过学习输入特征与标签之间的关系来进行预测。监督学习可以分为两个主要的问题类型:分类(Classification):分类问题的目标是将数据点分为不同的类别或类标签。例如,根据一些房屋的特征(如面积、地理位置等),预测其属于哪个价格范围(例如高价、中价、低价)。回归(Regression):回归问题的目标是根据输入数据预测连续的输出值。例如,根据一个人的年龄、性别、收入等特征,预测其未来一年的医疗费用。监督学习的一般步骤包括数据准备、选择合适的模型、模型训练、模型评估和预测。常用的监督学习算法包括线性回归(LinearRegression)、逻辑回归(LogisticRegression)、决策树(DecisionTrees)、支持向量机(SupportVectorMachines)、随机森林(RandomForests)和神经网络(NeuralNetworks)等。监督学习在各个领域中都有广泛应用,包括自然语言处理、图像识别、推荐系统、金融预测等。通过监督学习,我们可以从标记的训练数据中学习到模式和规律,并将这些知识应用于新的未标记数据的预测和决策。无监督学习(UnsupervisedLearning)是机器学习的一种任务,与监督学习相对应。在无监督学习中,我们面对的是没有标签或输出值的训练数据,目标是通过发现数据中的内在结构、模式或关系,对数据进行探索、聚类、降维等操作。
无监督学习主要涉及以下两种类型的问题:聚类(Clustering):聚类问题旨在将数据点划分为不同的组别或簇,使得同一组内的数据点彼此相似,而不同组之间的数据点差异较大。聚类算法通过计算数据点之间的相似性或距离来进行簇的形成。降维(DimensionalityReduction):降维问题是通过减少数据的维度,保留数据的主要信息,来简化数据表示、减少计算复杂度或可视化数据。降维算法可以将高维数据转换为低维表示,同时尽量保持原始数据的特征和结构。无监督学习的一般步骤包括数据准备、选择合适的算法或方法、模型训练和结果分析。常见的无监督学习算法包括K-means聚类、层次聚类、DBSCAN聚类、主成分分析(PCA)、独立成分分析(ICA)等。
无监督学习在各个领域中都有广泛应用。例如,在市场分析中,无监督学习可以帮助发现不同类型的消费者群体;在图像处理中,无监督学习可以用于图像分割和特征提取;在推荐系统中,无监督学习可以用于发现用户兴趣和群体等。无监督学习的特点是不依赖于标签或输出值,而是通过数据自身的统计特性和结构来进行学习和发现。这使得无监督学习成为探索未知模式、发现隐藏信息的重要工具。强化学习(ReinforcementLearning)是一种机器学习的分支,其目标是通过智能体与环境的交互学习如何做出一系列动作来最大化长期累积的奖励。在强化学习中,智能体通过观察环境的状态,选择相应的动作来影响环境,并接收来自环境的奖励或惩罚作为反馈。智能体的目标是通过与环境的互动,找到一个最优的策略,使得在不同的状态下选择动作能够获得最大的累积奖励。
强化学习中的关键概念包括:状态(State):描述环境的特定情况或条件,它可以是完整的环境观测或经过特征提取的表示。动作(Action):智能体在某个状态下可选择的行为或决策。奖励(Reward):在智能体执行动作后,从环境中获得的即时反馈,用于评估动作的好坏。策略(Policy):智能体的决策规则,它根据当前的状态选择最优的动作。强化学习通过不断的试错和学习来优化智能体的策略。常见的强化学习算法包括Q-learning、深度Q网络(DeepQ-Network,DQN)、策略梯度(PolicyGradient)等。强化学习在许多领域中有广泛的应用,例如自动驾驶、机器人控制、游戏玩法优化等。通过强化学习,智能体可以从与环境的交互中不断学习和改进,逐渐掌握复杂的任务和策略,并实现自主决策和智能行为。一个经典的强化学习的例子是使用强化学习训练一个自主驾驶车辆。在这个例子中,智能体是自主驾驶车辆,环境是道路和交通情况,智能体的目标是安全地驾驶车辆并按时到达目的地。
在训练阶段,智能体与环境进行交互。智能体通过观察当前的状态(例如车辆位置、速度、周围车辆的位置等)来决策下一步的动作(例如加速、减速、转向等)。在每个时间步,智能体根据选择的动作与环境进行交互,并从环境中接收奖励信号(例如根据行驶的距离、遵守交通规则、避免事故等给予奖励或惩罚)。通过与环境的反复交互,智能体通过强化学习算法学习到一个最优的策略,使得在不同的道路和交通情况下,能够选择出最佳的驾驶动作以最大化累积的奖励。
训练完成后,智能体可以应用学到的策略来进行自主驾驶。它能够根据当前的道路和交通状况,做出适当的驾驶决策,比如加速、刹车、转弯等,以实现安全、高效的驾驶。
这个例子展示了强化学习在实际应用中的潜力。通过与环境的交互和不断的试错,智能体可以学习到适应复杂环境的最优策略,从而实现复杂任务的自主决策和智能行为。交叉验证:找超参数的方法1、样本不太多,就在样本里划分为训练集和验证集,在样本里用训练集对模型进行训练,用验证集对模型进行测试。2、k-交叉验证,模型结构就是一个超参数,只要不是模型训练能够调整的参数都是超参数,只要不是模型从经验里面可以习得的参数都是超参数。Numpy:矩阵的计算、数值的计算Pandas:excel、对表格数据做数据分析Mstplotlib:画图Numpy:定义一个数据类型ndarray(多维数组)Pandas:DataFrame(二维数据)在Python的数值是指向的ndarray同一类型的
对角线上的数替换为0。
激活函数是为了实现非线性函数。阶跃函数。激活函数一定在所有隐藏层的神经元中用到。输入层一般会有激活函数,输出层一般有,有的没有开始时预制一个随机值或者预制为0怎么选择激活函数(超参数的选择)阶跃函数不连续,所以不可导,不用阶跃函数,而改成sigmoid函数。
异或问题超参数:不是网络训练习得的参数。神经网络的层数、每一层有多少个神经元、每一层神经元之后会经历什么样的激活函数,最后用什么样的损失函数。然后把样本丢给模型,学习训练得到的就是参数。超参数一定凭着经验吗?经验是一部分。参数过多,会导致过拟合。
激活函数是决定向下一个神经元传递何种信息的单元。将神经元的输出信号限制在有限的范围之内。增强网络的表达能力,没有激活函数相当于矩阵相乘。增加网络模型的拟合能力,让其更有弹性。激活函数和损失函数的区别激活函数是对于一个神经元处理过前面的计算之后,给他进行一个特定的挤压,挤压至0到1之间,挤压到-1到1之间,而进行的一个非线性的转换。损失函数是求得结果和真实结果得差距有多大。
回归问题,均方误差损失函数损失函数的选取也是一个超参数的选取,根据不同的任务进行选取。损失函数是一个关于w,b的函数。随着w取不同的值,L取不同的值。梯度下降怎么判断是局部最小值还是全局最小值。振荡问题如何解决,减少学习率。
在梯度下降算法中,判断是否达到局部最小值或全局最小值是一个挑战性的问题。通常情况下,梯度下降只能保证收敛到一个局部最小值,而无法保证找到全局最小值。然而,有几种方法可以在一定程度上判断梯度下降是否达到了最优解:初始点的选择:梯度下降算法对初始点非常敏感。不同的初始点可能会导致不同的局部最小值,甚至使算法陷入局部最小值。因此,通过尝试多个不同的初始点,可以增加找到全局最小值的机会。多次运行:运行梯度下降算法多次,每次使用不同的初始点,可以得到多个局部最小值。通过比较这些局部最小值的损失函数值,可以找到其中最小的值,作为近似的全局最小值。改变学习率:学习率是梯度下降中一个重要的超参数,它控制每次更新参数时的步长。选择不同的学习率可以影响算法的收敛速度和结果。如果使用过大的学习率,可能会错过最优解;如果使用过小的学习率,可能收敛速度太慢。通过尝试不同的学习率,可以找到更好的结果。其他优化算法:梯度下降是最基本的优化算法,还有其他更高级的优化算法,例如随机梯度下降(SGD)、动量法(Momentum)、AdaGrad、Adam等。这些算法可以在一定程度上帮助避免陷入局部最小值,并更快地找到全局最小值。尽管上述方法可以提高梯度下降算法找到全局最小值的机会,但在某些复杂的非凸优化问题中,仍然无法保证找到全局最小值。在这些情况下,通常需要结合领域知识、其他启发式方法或使用更高级的优化算法来处理。
梯度下降是一种优化算法,被广泛应用于机器学习和深度学习中。它的主要意义如下:最小化损失函数:梯度下降的主要目标是最小化损失函数。在许多机器学习问题中,我们希望找到一组参数,使得模型的预测结果与实际观测值之间的误差最小化。通过计算损失函数关于参数的梯度,并沿着梯度的反方向更新参数,梯度下降算法能够逐步调整参数,使得损失函数逐渐减小,从而找最优的参数设置。
参数优化:梯度下降可以用于对模型中的参数进行优化。在许多机器学习模型中,存在大量的参数需要进行调整,以使模型更好地拟合训练数据。通过使用梯度下降算法,我们可以自动地计算参数的梯度并进行参数更新,以便找到使模型最优的参数值。深度学习中的反向传播:在深度学习中,梯度下降与反向传播密切相关。反向传播是一种计算神经网络中参数梯度的方法,它使用链式法则将输出层的误差逐层传播回输入层。在反向传播过程中,梯度下降被用于根据梯度更新神经网络的权重和偏置,以使网络逐渐学习到更好的表示和预测能力。收敛到局部最优解:尽管梯度下降无法保证找到全局最优解,但它可以收敛到局部最优解或近似最优解。在实际应用中,往往不需要完美的全局最优解,而是寻找一个在实际问题中表现良好的局部最优解。梯度下降提供了一种有效的方式来达到这个目标。总而言之,梯度下降的意义在于通过迭代优化参数,最小化损失函数,优化机器学习模型和神经网络,使其能够更好地拟合数据,提供更准确的预测结果。它是许多机器学习和深度学习算法的基础,并在实践中发挥着重要的作用。动量梯度下降。pytorch能调用显卡。
手撕3层神经网络偏置是指
在神经网络中,偏置(bias)是一种可学习的参数,用于调整神经元的激活阈值。每个神经元都有一个偏置项,它与输入的权重相乘后加到神经元的输入总和上,然后通过激活函数进行激活。
偏置的作用如下:
偏置引入非线性:偏置允许神经元在输入空间中发生偏移,从而引入了非线性的能力。偏置项通过改变神经元的激活阈值,使得神经元可以在输入空间中适应不同位置的模式,从而更好地捕捉输入数据的非线性特征。
神经元激活的控制:偏置项对神经元的激活具有影响力。当输入信号的加权和(加上偏置)超过某个阈值时,神经元会被激活。通过调整偏置的值,可以控制神经元的激活程度,使其对输入的敏感度发生变化。
增加网络的灵活性:偏置参数增加了神经网络的灵活性,使其能够适应更广泛的输入模式。通过学习适当的偏置值,神经网络可以在不同的数据分布和复杂度下更好地表达函数关系。
改善模型的拟合能力:偏置项允许神经网络在不同的输入数据分布中进行平移和扩展,从而提高模型的拟合能力。通过适当调整偏置参数,可以更好地拟合训练数据,并提高神经网络的预测性能。
总结而言,偏置在神经网络中起到引入非线性、控制神经元激活、增加网络的灵活性和改善模型的拟合能力等作用。它是神经网络中重要的可学习参数之一,对于网络的表达能力和性能具有重要影响。小批量梯度下降只要能生成计算图就能求梯度。计算图是指从前往后计算过程中能够生成一张图的。在神经网络中同时求每个参数的梯度,当每个参数都求得合适的值时,整个网络是最佳网络吗?
在神经网络中,通过求解每个参数的梯度并进行更新,可以使得网络在训练数据上达到更好的性能。然而,当每个参数都求得合适的值时,并不能保证整个网络就是最佳网络。
神经网络的性能不仅取决于每个参数的取值,还取决于网络的结构、超参数的选择、训练数据的质量等多个因素。因此,仅仅通过优化每个参数的梯度来达到最佳网络是不够的。
下面是一些原因:欠拟合和过拟合:神经网络可能面临欠拟合或过拟合问题。欠拟合指网络无法捕捉到数据的复杂性和模式,而过拟合指网络在训练数据上表现良好,但在新数据上泛化能力差。优化每个参数的梯度并不能解决这些问题,可能需要调整网络结构、增加正则化技术或调整超参数来解决欠拟合或过拟合。
局部最优和鞍点:神经网络的损失函数通常是高度非凸的,存在多个局部最优点和鞍点。即使每个参数都求得合适的值,也无法保证网络达到全局最优解。因此,优化每个参数的梯度只是在局部范围内搜索最优解,并不能保证全局最优解。
数据质量和分布:神经网络的性能也取决于训练数据的质量和分布。如果训练数据存在噪声、标签错误或不平衡的问题,仅优化每个参数的梯度可能无法解决这些问题。可能需要进行数据清洗、增强或重新采样来改善数据质量。综上所述,虽然优化每个参数的梯度是训练神经网络的重要步骤,但它并不能保证整个网络就是最佳网络。为了达到最佳网络,需要综合考虑网络结构、超参数选择、优化算法的使用、数据质量等多个因素,并进行适当的调整和优化。