配合陈云霁版书籍和b站视频使用
第一章
1.人工智能的主要方法
行为主义 感知动作反应型
符号主义 基于符号逻辑表示知识
连接主义 模拟大脑神经元结构
2.人工智能的发展 第一代二代三代
第一代 1980-2010 面向符号主义 运行智能编程语言Prolog和LISP
第二代2010-今天 面向连接主义 主要研究面向连接主义(深度学习)处理的计算机或处理器
第三代未来 沙盒虚拟世界 无限计算能力 在虚拟世界中成长的海量智能主体
第一章习题简述题
1.弱人工智能:完成某个特定任务的人工智能
强人工智能:和人类同级别的智能
2.见1人工智能的主要方法
3.一个只有两个输入的单个神经元构成的感知机可以用来完成二分类任务。感知机是一种最简单的人工神经网络模型,它由输入层、权重和偏置、激活函数以及输出层组成。
在这个特定的感知机中,两个输入表示为 x1 和 x2,每个输入都与相应的权重 w1 和 w2 相连。感知机会对这两个输入进行加权求和,并将结果与阈值进行比较。如果加权和大于或等于阈值,则神经元被激活,输出为1;否则,神经元不被激活,输出为0。
这个简单的感知机可以用来解决一些线性可分的问题。例如,可以使用感知机来进行逻辑运算,如 AND 运算、OR 运算、NAND 运算等。通过调整权重和阈值,感知机可以学习到正确的分类边界,实现对输入数据的分类。然而,感知机无法解决线性不可分的问题,如异或运算,因为它只能表示线性决策边界。
需要注意的是,这里提到的感知机只有一个神经元,适用于简单的二分类问题。对于更复杂的任务,需要使用多个神经元构建更深层次的神经网络模型,如多层感知机(MLP)或卷积神经网络(CNN),以更好地处理非线性和复杂的数据模式。
4.
缺乏推理能力
模型泛化性能有限
缺乏可解释性
鲁棒性欠佳
5.从外界获取输入能解决现实问题的智能的物质载体
在硬件上是集成通用cpu和智能芯片的异构系统
在软件上包括一套面向开发者的智能计算编程环境
6.
以通用cpu为中心的传统计算系统的速度和能效远远达不到智能应用的需求,人工智能不可能依赖于传统的计算系统,必须有自己的核心物质载体-智能计算系统
7.8.9.
见2.人工智能的发展
第二章
1.神经网络训练
通过调整隐层和输出层的参数,使得神经网络计算的结果和真实结果尽量接近
主要包括正向传播和反向传播
正向传播是通过权重,偏置再激活函数得到下一隐层,逐层迭代,将输入的特征向量从低级特征逐步提取为抽象特征最终到计算结果
反向传播是通过计算结果,用梯度下降的方法,链式求导,计算出损失函数对每个权重和偏置的偏导,根据它们对损失的影响,更新权重和偏置
2.p28三个函数 激活函数 损失函数
激活函数:为神经网络提供非线性特征,解决非线性可分问题,激活函数必须可微且输出值的范围有限
Sigmoid--tang--ReLU---PReLU/Leaky ReLU-ELU
损失函数:基于梯度下降法的神经网络反向传播过程首先要定义的
均方差损失函数
交叉熵损失函数
3.p33 过拟合 欠拟合
过拟合:模型过度逼近训练数据,影响模型的泛化能力,表现为在训练集上误差小,在验证数据集上误差大,在神经网络层数多,参数多时容易出现【泛化:模型不仅在训练集上误差小,而且在测试集上也要表现好】
欠拟合:训练的特征少,拟合函数无法有效逼近训练集,导致误差大
一般可以通过增加训练样本和增加模型复杂度等方法来解决
4.p34处理过拟合的方法
正则化:参数范数惩罚,在损失函数中增加对高次项的惩罚
稀疏化:在训练时让神经网络中的很多权重或神经元为0,在正向传播时可以跳过不计算减少90%的计算量
Bagging集成学习:通过训练不同的模型来共同决策测试样例的输出
Bagging数据集是从原始数据就中通过重复采样获取的,大小与原始数据集一致
可以多次重复相同模型也可以重复不同模型来减小神经网络的识别误差
Dropout:在训练阶段随即删除一些隐层节点,降低神经网络模型的复杂度
5.p37 交叉验证
将数据划分成训练集和测试集,避免过拟合以及能判断模型是否真的建的好
p39习题2.1 3 5 6 7
1.
结构层数:感知机是单层的神经网络模型,只有输入层和输出层,中间没有隐藏层。而多层感知机则至少包含一个或多个隐藏层,其结构更加复杂。
可解决问题的复杂度:由于多层感知机具有隐藏层,它可以处理更复杂的非线性问题。而感知机仅适用于线性可分问题,对于线性不可分问题无法有效分类。
激活函数:感知机使用阶跃函数(step function)作为激活函数,即根据输入信号的正负输出0或1。而多层感知机可以采用更多种类的激活函数,如Sigmoid函数、ReLU函数等,能够更好地处理非线性关系。
训练算法:感知机使用的是感知机学习算法,是一种基于梯度下降的简单算法。而多层感知机可以使用反向传播算法(Backpropagation)进行训练,通过计算输出误差并反向传播更新权重和偏置值。
产生区别的原因主要有两点:
首先,感知机只有单层结构,无法处理线性不可分问题。非线性问题往往需要更复杂的模型来捕捉其特征和关系,因此多层感知机引入了隐藏层,增加了模型的表达能力。
其次,感知机使用阶跃函数作为激活函数,导致了模型不可导性,使得梯度下降等优化算法无法直接应用于多层感知机。为了解决这个问题,多层感知机引入了可导的激活函数,并结合反向传播算法,使得模型能够通过梯度下降等方法进行训练。
综上所述,多层感知机相对于感知机具有更强的建模能力和适应性,能够解决更复杂的问题。这些区别源于对神经网络模型的改进和演化,以便更好地应对实际应用中的挑战。
3.
见1.神经网络训练 中反向传播
5.
见4.p34处理过拟合的方法
6.sigmoid=1/(1+e^(-x))
求导得 e^(-x)/(1+e^(-x))^2
代入x=0 得 1/4=0.25
7.
求导得 (1+v^2)^(1/2)+v^(2)*(1+v^2)^(-1/2)
代入x=0 得 1
第三章
1.三个层 卷积 池化 全连接
卷积层+池化层——>特征提取器
全连接层——>分类器
卷积层:每个卷积层有一组卷积核来抽取特定的特征,卷积层的输入输出的特征图一般变化不大
局部链接:不相邻的区域不会放在一起计算
权重共享:一对输入特征图和输出特征图共享一个权重(浅层神经网络所有连接采用不同的权重p44图3.3)
卷积运算:对输入子矩阵和卷积核做矩阵内积(同位置元素相乘的结果之和)内积结果为输出矩阵同位置的元素,当卷积步长为1时,6*6的输入矩阵与3*3的卷积核做卷积运算,形成4*4的输出矩阵,输出矩阵元素Y(0,0)为输入矩阵的子矩阵(以X(0,0)为矩阵左上角的与卷积核同阶的)与卷积核的内积,为一次卷积运算,向右或下移动卷积步长个长度,进行下个元素的卷积运算(如向右移动一个步长则算出(0,1),向下则算出(1,0),以此类推算出输出矩阵,为一个特征图【此处矩阵行列从0开始,按照计算机的数组定义而非线性代数定义】
所以输入特征图/图片/矩阵的大小为n*n,卷积核大小为a*a
则卷积输出特征图的大小为(n-a+1)*(n-a+1)
卷积步长:在进行卷积运算时取子矩阵时移动的距离
边界扩充:卷积之后的输出尺寸会被动地变小,为保证输入特征图和输出特征图的尺寸相同,所以在矩阵外围补上一圈0,边界扩充n,输出矩阵的长宽加上n
一个卷积核只能提取一个特征,形成一个特征图
池化层:缩小特征图的尺寸,减少参数数量和计算量,抑制过拟合。出现在卷积层之后,卷积层池化层交替出现使得特征图的尺寸不断减小,抽取出的特征数量不断增多
池化层的步长,扩充含义与卷积步长和边界扩充相同
最大池化法【最常用】:在以输入矩阵(0.0)为左上角的池化窗口找到最大值作为输出矩阵的(0,0)位置元素,如2*2的池化窗口,6*6的输入矩阵不作边界扩充,步长为2,扩充为0,则输出为3*3的矩阵
平均池化法:对池化窗口元素取平均值,它会把图像的一些特征值平均化,模糊化
L2池化法:对池化窗口元素的所有数计算平方累加之后再开方
全连接层:将特征提取到的高维特征图映射成一维特征向量,该特征向量包含所有特征信息,可以转化为最终分类为各个类别的概率。(出现在最后一个卷积层之后,将输入神经元和输出神经元全部链接起来,在内部有向量卷积,激活函数在最后还会用到softmax函数进行分类概率的凸显,抑制以及归一化)
Softmax:有的卷积神经网络的最终输出由全连接层决定,也有的用softmax做最终输出,它对输出进行归一化,输出分类概率,输入和输出数据规模相同,通过归一化计算,可以凸显较大的值抑制较小的值,从而显著地抑制次要特征,决定分类概率
各个图像分类检测和图像检测方法 各个方法的优缺点
2.图像分类检测方法
AlexNet:Dropout(随机失活)和数据扩充缓解过拟合,LRN(局部响应归一化),MAX Pooling(最大池化),ReLU激活函数 提高训练速度,真正把深度学习应用到复杂问题上,通过使用多个卷积层提高图像识别的精度
VGG:更多层的神经网络,使用预训练(浅层神经网络的权重参数来初始化更深层的神经网络的浅层权重参数)提高训练收敛速度,使用规则的小卷积替代大卷积,在相同视野下有效减少权重参数的数量,提高训练速度,使用更深的卷积神经网络,更多的卷积层和激活函数提高了准确率
Inception:使用BN减少梯度消失或爆炸,加速深度神经网络训练,进一步减小卷积核大小、参数数量,加入辅助分类网络,可以提前反向传播调整参数,减小梯度消失,解决多层神经网络训练问题
ResNet:采用不同于常规卷积神经网络的残差网络,使得神经网络的层数没有了上限,对数据的波动更灵敏,更容易求得最优解
3.图像目标检测方法
评价指标:交并比(IoU):判断一个物体图像定位的准确性
平均精度均值(mAP):衡量图像测试集中所有物体的准确性
召回率:选出的N个样本中选对的k个样本占总的M个样本的比例:k/M
精度:选对的k个样本占选出的N个样本的比例:k/N
置信度:预测结果的可靠程度或概率
R-CNN系列:两阶段检测算法,即先产生候选区域再进行CNN分类
R-CNN优点:区域卷积神经网络,结合候选区域提取和CNN特征提取,并采用线性分类SVM(支持向量机)分类和边界框回归
缺点:重复计算,svm分类(当标注数据足够多时,做图像分类比svm准确),训练测试分为多个步骤(中间数据需要单独保存,反复读写内存,导致效率低),检测速度慢(重复计算和分为多个步骤导致的)
Fast R-CNN:提出ROI Pooling对不同候选区域的特征图进行尺寸归一化,使其对应到固定尺寸的特征图 ,使用softmax分类代替svm,直接对整张图做卷积不再分别对每个候选区域做卷积,减少了大量重复计算,将边界框回归器和网络一起训练每个类别对应一个回归器
ROI Pooling感兴趣区域池化,复用卷积层提取的特征图并向全连接层提供固定尺寸的特征图,(根据映射关系,从卷积特征图上提取出不同尺寸的候选区域对应的特征图,并池化为维度相同的特征图,由于只做一次卷积神经网络处理,)大幅减少计算量,提高图像处理速度。
softmax分类:用边界回归器修正边界框位置和大小,再对每个类别做NMS,去除冗余候选框
Faster R-CNN:使用RPN(区域候选网络)生成候选区域,把候选区域提取也用神经网络来实现,进一步提高了图像目标检测的速度
目标检测的四个基本步骤:候选区域提取,特征提取,分类,边界框回归
YOLO:一阶段检测算法,将目标分类和定位用同一个神经网络统一,实现端到端的目标检测
优点:检测速度非常快,背景误判少,泛化性更好
缺点:精度不是很高:每个格子只能预测两个边界框和一种分类,损失函数设计过于简单,直接预测边界框的坐标位置,模型训练不易
SSD:单次检测器,基于YOLO直接回归边界框和分类概率的一阶段检测算法,借鉴了Faster R-CNN中的anthor box思想,使用多尺度特征图检测,用一个深度神经网络就可以完成目标检测,满足检测速度的同时提高检测精度,更容易训练
4.什么是循环神经网络和生成对抗网络?
循环神经网络(RNN):有效保存序列数据(序列数据中相邻数据之间有相关性)历史信息,适合处理序列数据,属于序列模型。使用带自反馈的神经元,可以处理任意长度的序列数据,采用基于时间的反向传播。使用长短期记忆模型(LSTM)或门限循环单元(GRU)来解决梯度消失的问题
生成对抗网络:用小样本训练出准确的神经网络,让生成网络和判别网络相互对抗,相互提高,由生成网络和判别网络组成,最终使得生成网络能够生成出以假乱真的假样本,判别网络能够准确地判别
第四章
1.p104计算图和会话之间的关系
会话用于执行计算图
TensorFlow的计算图并没有真正给输入赋值并执行计算,真正的计算过程需要在会话中定义并执行,会话为程序提供了求解张量、执行操作的运行环境,将计算图转化为不同设备上的执行步骤
2.p110会话流程
创建会话:TensorFlow用tf.Session()函数来创建会话
执行会话:基于计算图和输入数据来求解张量或执行计算
关闭会话:会话负责管理TensorFlow程序的所有运行资源,完成计算,关闭会话从而完成关闭资源和释放资源的工作
3.p112 求解张量值的方法
通过调用run()函数求解
使用tensor.eval()函数进行张量的计算
4.p123 深度学习训练的步骤
加载数据并进行预处理
对模型进行迭代训练:启动会话初始化计算图,加载输入输出数据结果节点,进行前向计算,反向梯度计算及更新参数
在训练过程中,可以借助TensorFlow的检查点机制实时保存模型结果