人工智能基础知识理解
人工智能基础知识理解
近年来,人工智能、机器学习和深度学习的概念十分火热。本文将为您介绍这些概念的基本知识,帮助您理解它们之间的关系以及深度学习的核心要素。
人工智能、机器学习、深度学习的关系
在研究深度学习之前,首先要搞清楚人工智能、机器学习和深度学习三者的关系。概括来说,这三者覆盖的技术范畴是逐层递减的,即:人工智能 > 机器学习 > 深度学习。
人工智能(Artificial Intelligence,AI)是最宽泛的概念,是一门研发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的新的技术科学。由于这个定义只阐述了目标,而没有限定方法,因此实现人工智能存在诸多方法和分支,导致其变成一个“大杂烩”式的学科。
机器学习(Machine Learning,ML)是当前比较有效的一种实现人工智能的方式。
深度学习(Deep Learning,DL)是机器学习算法中最热门的一个分支,近些年取得了显著的进展,并替代了大多数传统机器学习算法。
影响深度学习的三大要素
在深度学习领域,算法、数据和硬件是成功开发和部署高性能模型的三大核心要素。每个要素在整个深度学习过程中都扮演着至关重要的角色,并且三者之间存在着紧密的协同关系。
算法:深度学习算法是模型训练的核心,决定了如何从数据中提取特征、优化模型参数以及执行预测。常见的算法类型包括卷积神经网络(CNN)、循环神经网络(RNN)和生成对抗网络(GAN)等。
数据:数据是深度学习的基石,没有大量高质量的数据,模型无法有效地学习。数据用于模型的训练、验证和测试,通过提供实例和反馈来优化模型的性能。
硬件:高性能硬件是支撑深度学习计算需求的基础。GPU、TPU等专用硬件能够加速复杂计算,使得在合理时间内处理大量数据和训练复杂模型成为可能。
深度学习中用到的一些算法和概念,如CNN、RNN等,其实在上世纪80、90年代就已经提出来了,但是由于当时的硬件发展还没达到算法的要求,所以并非机器学习的热门方向。直到2010年以后,大数据的流行及GPU硬件技术的发展,深度学习才开始崭露头角,并且得到爆发的增长。
可以看出,深度学习既讲究方法,又要求大力出奇迹。
机器学习的基础知识
机器学习的三大要素
机器学习模型的设计和实现可以视为三个关键要素的组合:模型假设、评价函数(损失/优化目标)、和优化算法。
以房价预测为例
表格中展示了房屋面积对应的房价数据。转换成坐标图后的散点图:
我们会很自然地想,能不能让计算机通过现有的数据,得到一个函数来预测房屋面积和房价的关系。(模型假设)
上面两条线都能反映房屋面积和房价之间的变化趋势,但是哪条更加符合实际场景呢?
评估函数的引入
对于这种回归问题,我们会想到用均方差来评估我们推演出的函数是否更加接近实际。
可以看出,均方差的值越小,说明我们的模型越符合实际。这时,我们的机器学习就转换成求评价函数极小化的优化问题。
优化算法-梯度下降法
优化算法用于最小化(或最大化)评价函数,通过调整模型参数来找到最优解。不同的优化算法适用于不同规模和复杂度的问题。
梯度下降法(Gradient Descent):基础的优化方法,通过计算评价函数的梯度来更新参数。
在现实中存在大量的函数正向求解容易,但反向求解较难,被称为单向函数,这种函数在密码学中有大量的应用。密码锁的特点是可以迅速判断一个密钥是否是正确的(已知x,求y很容易),但是即使获取到密码锁系统,也无法破解出正确得密钥(已知y,求x很难)。
这种情况特别类似于一位想从山峰走到坡谷的盲人,他看不见坡谷在哪(无法逆向求解出Loss导数为0时的参数值),但可以伸脚探索身边的坡度(当前点的导数值,也称为梯度)。那么,求解Loss函数最小值可以这样实现:从当前的参数取值,一步步的按照下坡的方向下降,直到走到最低点。这种方法称它为“盲人下坡法”。哦不,有个更正式的说法“梯度下降法”。
过拟合和欠拟合
如果数据背后的属性变量X和目标变量Y之间存在简单的线性关系,用线性模型是合适的。
但如果实际中是含有二次关系的规律,那使用线性模型就没法捕捉到二次项的规律,这种情况就叫欠拟合。
同样,如果将模型的次数提高到三次或者更高的次上,这时模型会越来越复杂,对数据的解释会越来越精确。但是这会导致X和Y之间任何微小的噪声都会被模型拟合出来,而弱化了X和Y之间本质关系的刻画。这种现象叫做过拟合。
回归问题与分类问题
房价预测例子中的Y(房价)是连续型随机变量,但我们实际生活中,还有一些Y是离散型变量。例如垃圾邮件分类问题中,根据邮件的标题和正文,判断该邮件是正常邮件还是垃圾邮件。或者我们可以根据一个人的身高、体重、心率、代谢水平、头发长度来判断这个人的性别,男是1,女是0。
激活函数
为了适应分类问题处理的需要,可以使用激活函数将线性问题转换成非线性问题。
常见的激活函数有:
- Sigmoid函数
- Tanh函数
- ReLU函数
引入激活函数后,可以看出在二分类的情况下,当模型得到的结果>0.5时,样本是正样本的概率要大于负样本的概率,这时模型会判断该样本是正样本,否则为负样本。
Softmax激活函数
前面学习的sigmoid等激活函数解决了Y值转换成二分类的问题,实际上更一般的问题是多分类问题,例如将邮件分类成工作邮件、私人邮件和垃圾邮件。
假如有k个(k>=2)的分类问题,由于各个分类的概率等于1,所以问题转换成1-计算k-1个参数的概率。
神经网络
看起来机器学习理论能够处理所有的分类问题,但是在1969年,美国数学家及人工智能先驱Minsky在其著作中证明了感知器本质上是一种线性模型,只能处理线性分类问题,就连最简单的XOR(异或)问题都无法正确分类。这一结果清晰地指出上述浅层模型框架下的方法在处理线性不可分数据方面的能力局限性(图像识别也是属于线性不可分问题)。
浅层模型在处理非线性问题方面的局限性最先被突破的工作来自深度学习先驱Hinton和Rumelhart等人在1986年的工作,他通过在原来两层感知器这一浅层模型基础上,采用sigmoid进行非线性映射,并用反向传播BP算法训练多层感知器(MLP),有效地解决了非线性分类和学习的问题。
模型假设
神经网络:假设数据关系可以通过层层神经元的非线性组合进行表示。
以OCR识别为例,和人眼接收光信息不一样,计算机接收到的信息是一个数字矩阵,比如一张512*512像素的图片,在计算机中,就是一个[3, 512, 512]的三维数组。从像素到高级语义概念中间要经历的信息变换的复杂性是难以想象的,所以人们借鉴了人脑神经元的结构,设计出神经网络的模型,其处理信息的方式与人脑中的单一神经元有很强的相似性,类似于人脑中多种基于大量神经元连接而形成的不同职能的器官。
神经网络基本结构
反向传播的基本原理
- 前向传播(Forward Propagation):
- 首先,输入数据从输入层开始,经过网络中的各个隐藏层进行运算(包括线性变换和非线性激活),最后到达输出层,生成模型的预测值。
- 计算损失(Loss Calculation):
- 使用损失函数(如均方误差或交叉熵损失)计算预测结果与实际目标之间的误差。损失函数的值反映了模型在当前参数下的预测性能。
- 误差反向传播(Error Backpropagation):
- 从输出层开始,计算损失函数对每个参数的梯度。这一步利用链式法则(Chain Rule)来计算误差相对于每层网络权重的偏导数。
- 损失从输出层逐层往回传播,每一层的误差会影响前一层的权重更新。
- 参数更新(Parameter Update):
- 使用优化算法(如梯度下降或Adam)来更新每一层的权重和偏置。参数的更新方向与梯度的方向相反,目的是使损失函数的值逐渐减小,逼近最优值。
反向传播的核心步骤
- 梯度计算:通过链式法则,计算每个神经元的误差贡献。
- 权重更新:通过梯度下降等优化算法调整网络权重,使得下一次前向传播时的预测误差减少。
- 多层传播:反向传播通过网络的多层结构,逐步更新每层的权重,使整体网络逐渐逼近全局最优解。
反向传播的直观理解
可以将反向传播比作教导一个学生解决问题。学生先给出自己的答案(前向传播),老师检查答案的错误程度(损失计算),并告诉学生哪个部分错了、如何纠正(误差反向传播)。接着,学生根据这些反馈调整自己的做法(参数更新),直到他的答案接近正确(模型的预测越来越好)。