AI基础 笔记
《人工智能技术》 摘抄
在图书馆翻到一本结构比较清晰的ai入门介绍书。华为公司的教材《人工智能技术》,翻阅后受益匪浅,遂整理如下,以备后用
人工智能 概述
人类智能
人类智能 分为8个范畴 :
- 语言
- 逻辑
- 数学
- 空间
- 身体-动觉
- 音乐
- 人际
- 内省
- 自然探索
AI 分类:
弱人工智能:专能,特定领域
强人工智能:通用人工智能,AGI,达到人类水平
超人工智能:超越人类
发展关键里程
- 图灵游戏 预言 人工智能 概念
- 1956 达特茅斯会议 提出 人工智能
- 机器学习:ibm Athur Samuel 西洋跳棋程序
- 模式识别:感知器被提出
- 模式匹配:聊天程序 Eliza 自然语言处理 开端
- LISP语言 初代AI开发语言
- 多层神经网络 ,反向传播 等算法出现
- 感知机无法解决 异或 XOR问题,引发质疑,第一次 AI低谷期
- 多层感知器 解决 异或问题
- BP 促进 神经网络发展
- XCON 专家系统 兴起 掀起AI繁荣
- LISP 硬件销售市场崩溃,第二次AI低谷
- LICE 能利用和互联网增加数据集,优化内容 的 聊天机器人
- 1996 深蓝 战胜 卡斯帕罗夫
- 2006 Geoffrey Hinton 开启 深度学习时代
- 2011 Watson 答题竞赛 战胜人类
- 深度学习开始占据主流,ImageNet 识别率霸榜
- 2016 AlphaGo 战胜人类
AI 三大学派
- 符号主义:强调符号推理
- 连接主义:强调神经元 模拟人脑工作模式
- 行为主义:强调 环境交互,感知-动作
机器学习
对于某类任务 T 和 性能度量 P,一个计算机程序在T上以P衡量的性能随着 经验 E 而 自我完善,那么 我们就称这个计算机程序在从 经验 E 学习
经过训练的计算机程序 称为 模型
机器学习适用的主要场景:
- 规则十分复杂 或 无法描述,如 人脸识别 语音识别
- 数据分布本身随时间变化,需要程序不停重新适应
问题规模足够小,或者复杂度不高的情况下,人工规则 即可解决,不必使用机器学习
机器学习在做什么
机器学习算法的本质 是 函数拟合
设 f 为目标函数,提供 x - f(x) 数据集,机器学习的目的 是构造一个 g(x) 与 f(x) 在 x 范围内尽可能地接近,并通过 误差的 均值 方差 来评判 拟合效果如何
x 形式:标量 - 向量 - 矩阵 - 张量
机器学习解决的问题:分类、回归、聚类 等
分类
监督学习
输入:特征(X)
输出:标签(Y)
呈现 属性 之间的映射关系
标签值连续 - 回归 值域可以为无穷集合
标签值离散 - 分类 类别集合由训练集决定,类别个数为 K
无监督学习
呈现 样本内在相似性
聚类
半监督学习
监督学习的全部样本需要标注
部分样本标注 + 聚类,在少量样本标注的条件下 得到结果,降低人工成本
强化学习
多步骤决策
奖励函数
强化学习系统 核心:模型 + 环境
模型 产生行动 - 行动 对环境 产生影响
机器学习基础流程
数据收集 - 数据清洗 - 特征选择 - 模型构建(训练) - 模型评估(测试)-模型部署与整合
数据收集
训练集:测试集 = 4 : 1
数据预处理:
- 数据清洗:
- 数据过滤
- 处理缺失值
- 处理错误或异常值
- 合并多数据源数据
- 数据汇总
- 降维:防止维度爆炸
- 标准化:统一量纲,降低训练难度
特征选择
- 过滤法
评估每个特征与 目标属性的相关性,使用统计度量 为每个特征评分
评估特征和目标的相关性方法 Pearson相关系数,卡方(Chi-square)系数 互信息(mutual information
遍历所有特征 - 选择最佳特征子集 - 学习算法 - 性能评估
- 包装器法
使用预测模型 对 特征子集评分,模型是评估特征子集的工具,模型预测越准,则特征组合越应该保留
递归消除法
遍历所有特征 - 每个特征子集,使用学习算法 生成一个模型 - 模型评估 - 选择最佳特征子集
- 嵌入法
特征选择作为模型训练的一部分,在训练中 动态学习如何进行特征选择
正则化方法(惩罚方法): 岭(Ridge)回归,Lasso回归
模型构建(训练)
模型评估
- 泛化能力:模型适用于新样本的能力
避免过拟合,欠拟合
简化模型,提前结束训练(早停机制),随机失活(Dropout),权重衰减 (Weight decay)
模型容量:拟合各种函数的能力,复杂度
选择适合问题的模型容量
泛化误差
总误差 = 偏差^2 + 方差 + 不可消解的误差
方差:预测结果在均值附近偏移的程度
偏差:预测结果均值与正确值的差异
不可消解误差:模型不完美以及数据有限 导致的误差
回归模型评价指标:
平均绝对误差 MAE
均方误差 MSE
相关系数 R^2
分类模型评价指标:混淆矩阵
准确率: (TP + TN) / (P + N)
查全率: TP / P
查准率: TP / (TP + FP)
可解释性
预测速率
模型部署
模型调参
- 参数
从数据学习中获得。模型的组成部分 - 超参数
模型的外部配置,人工设定
模型训练 指 参数优化 通过 梯度下降 算法完成
超参数优化 依据训练结果 采用 搜索算法 完成
梯度下降
将当前位置 负梯度方向作为搜索方向
w k + 1 = w k − η ∇ f w k ( x ) w_{k+1} = w_k - \eta\nabla{f_{wk}(x)} wk+1=wk−η∇fwk(x)
η \eta η 为学习率, w k w_k wk为 模型 第k次迭代的参数,f为目标函数(通常是损失函数 loss)
训练终止条件:
- 目标函数值的变化非常小, 称为 算法收敛
- 达到最大迭代次数
注 :当目标函数非凸时,梯度下降算法可能会随不同初值 收敛至不同结果
梯度下降变种:
- 批量梯度下降(BGD):使用所有样本在当前点的梯度均值对权重参数进行更新
- 随机梯度下降(SGD):随机选取某一样本,使用该样本在该点的梯度进行参数更新
- 小批量梯度下降(MBGD):每次选取n个样本的梯度均值 更新参数
超参数搜索
由于测试集不参与训练,为验证超参数效果,在训练集中划分 验证集,做超参数搜索
- 网格搜索:穷举
- 随机搜索:粗调 + 精调
交叉验证
k-折交叉验证 训练集分为 k 组,轮流做验证集 避免验证集划分的偶然性
ML常见算法
线性回归 Linear Regression
h ( x ) = w T x + b y = h ( x ) + ϵ ϵ ∼ N ( 0 , σ 2 ) h(x) = w^Tx + b \\ y = h(x) + \epsilon \\ \epsilon \sim N(0, \sigma^2) h(x)=wTx+by=h(x)+ϵϵ∼N(0,σ2)
扩展
多项式回归
h ( x ) = w 1 x + w 2 x 2 + . . . + w n x n + b h(x) = w_1x + w_2x^2 + ... + w_nx^n + b h(x)=w1x+w2x2+...+wnxn+b
n 为超参数
逻辑回归 Logic Regression
分类模型
h ( x ) = P ( Y = 1 ∣ X ) = g ( w T x + b ) g ( x ) = 1 1 + e x p ( − x ) h(x) = P(Y = 1 | X ) = g(w^Tx + b) \\ g(x) = \frac{1}{1 + exp(-x)} h(x)=P(Y=1∣X)=g(wTx+b)g(x)=1+exp(−x)1
w表示 权重,b称为 偏置
线性函数值 通过 Sigmoid 计算,结果与阈值t进行比较,获得分类结果
阈值 t 为超参数
扩展:
Softmax 回归:k 分类, 结果为 k 维向量,表示样本所属各个类别的概率分布,和为1
决策树 DT Decision Tree
每个节点表示一个特征属性上的测试,每个分支 表示这个特征属性在该值域上的输出,每个叶子 为一个类别
树的构造(属性的选择):
按所有特征属性进行划分,对所有划分的结果集进行纯度比较,选择纯度最高的属性 作为分割数据集的依据
决策树构造算法:ID3, C4.5, CART
纯度量化指标:
p k p_k pk 为 样本属于类别 k 的概率,K表示总的类别数
- 信息熵
H ( X ) = − ∑ k = 1 K p k log 2 p k H(X) = -\sum_{k=1}^Kp_k\log_2p_k H(X)=−k=1∑Kpklog2pk
- 基尼系数
G i n i = 1 − ∑ k = 1 K p k 2 Gini = 1 - \sum_{k = 1}^Kp_k^2 Gini=1−k=1∑Kpk2
纯度差异越大,说明对某个特征进行判断越有利于类别划分
决策树构建过程:
-
特征选择
选择特征作为当前节点的分裂标准
不同标准 产生不同 决策树算法 -
决策树生成
根据所选特征,自上而下递归生成子节点,直到数据集不可分,停止决策树生长 -
剪枝
缩小树的规模,抑制过拟合
分为 预剪枝 后剪枝
决策树模型是可解释的
支持向量机 SVM Support Vector Machine
定义在特征空间上的间隔最大的线性分类器
求解凸二次线性规划的最优算法
直线可以将数据分割到不同类别中
可以找到多条直线分割数据
在符合上述条件的直线中找到一条,使离直线最近的点 尽可能远离这条线
线性可分数据集:线性SVM
非线性数据集:核函数 非线性SVM
核函数:线性核函数,多项式核函数,sigmoid核函数 高斯核函数
K近邻算法 KNN K Nearest Neighbor
如果一个样本在特征空间中的K个最相似(特征空间中最近邻)的样本中的大多数属于某一类别,那么该样本也属于这个类别
K为超参数
分类:多数表决
回归:均值法
计算量大,需要遍历所有样本 才能 待测样本的K个最近邻
朴素贝叶斯 Naive Bayes
贝叶斯定理
特征独立假设
集成学习
聚类
代表算法:K-均值聚类,层次聚类
深度学习
传统机器学习,特征人工选定
特征个数越多,外界输入信息越多,模型表达能力越强
特征数增加,算法复杂度提升,搜索空间增大,训练数据在特征空间中变得稀疏,影响相似性判断,此之谓 维度爆炸
深度学习 寻求一种自动提取特征的方法
深度神经网络
感知器的堆叠
结构和功能上 对 人脑 的抽象
感知器算法
X 为 输入,W 为 权重, w0 为 偏置(b)
X = [ x 0 , x 1 , . . . , x n ] T W = [ w 0 , w 1 , . . . , w n ] T n e t = W T X = ∑ i = 0 n w i x i x 0 = 1 , w 0 = b \boldsymbol X = [x_0, x_1, ... , x_n]^T \\ \boldsymbol W = [w_0, w_1, ..., w_n]^T \\ net = \boldsymbol W^T \boldsymbol X = \sum_{i = 0}^n w_ix_i \\ x_0 = 1, w_0 = b X=[x0,x1,...,xn]TW=[w0,w1,...,wn]Tnet=WTX=i=0∑nwixix0=1,w0=b
回归问题,net 为 感知器输出
分类问题,net 需要经过激活函数 sgn(net)
感知器本质上是一种线性模型,只能处理线性问题,无法处理非线性数据,对于 XOR 无法运算
多层感知机,前馈神经网络,可实现非线性处理能力
隐藏层增加,非线性能力增强
训练法则
损失函数
机器学习模型训练的核心 是 损失函数,描述目标分类的错误
损失函数反映 感知器 目标输出 与 实际输出 之间的误差
常用 损失函数:
均方误差(主要用于 回归问题)
J ( w ) = 1 2 n ∑ x ∈ X , d ∈ D ( t d − o d ) 2 J(\boldsymbol w) = \frac1{2n} \sum_{x\in X, d \in D} (t_d - o_d)^2 J(w)=2n1x∈X,d∈D∑(td−od)2
交叉熵误差 (主要用于 分类问题)
J ( w ) = − 1 n ∑ x ∈ X , d ∈ D ( t d ln o d + ( 1 − t d ) ln ( 1 − o d ) ) J(\boldsymbol w) = -\frac1n \sum_{x\in X, d \in D} (t_d \ln o_d + (1 - t_d) \ln (1 - o_d)) J(w)=−n1x∈X,d∈D∑(tdlnod+(1−td)ln(1−od))
x 为 模型参数,X 为训练集,n为X大小,D 为 输出层神经元集合,t为目标输出,o为实际输出
损失函数随w改变
训练模型的目标 是 搜索使损失函数最小的权值向量
使用梯度下降方法 更新 参数 以 使损失函数 达到最小
梯度下降算法
梯度
∇ f ( x 1 , x 2 , . . . , x n ) = [ ∂ f ∂ x 1 , ∂ f ∂ x 2 , . . . ∂ f ∂ x n ] T ∣ x \nabla f(x_1, x_2, ..., x_n ) = \left [ \frac {\partial f} {\partial x_1}, \frac {\partial f} {\partial x_2}, ... \frac {\partial f} {\partial x_n} \right]^T \Bigg |_x \\ ∇f(x1,x2,...,xn)=[∂x1∂f,∂x2∂f,...∂xn∂f]T x
梯度下降
δ w = ∑ ∂ J ∂ w ∣ x w = w − η δ w \delta w = \sum \frac{\partial J} {\partial w} \bigg |_x \\ w = w - \eta \delta w δw=∑∂w∂J
xw=w−ηδw
常见梯度下降:
批量梯度下降 BGD
随机梯度下降 SGD
小批量梯度下降 MBGD
反向传播
误差是逐层累积的
将误差从最后一层开始向前传递求取
每一层只知道当前层 的导数,逐层求当前层权重调整,以及前一层偏差,向前传导,直到第一层
激活函数 Activation Function
在感知器后附加的运算,将非线性特征引入神经网络
Sigmoid
在反向传播算法中,容易导致 梯度消失
softsign
ReLU (Rectified Linear Unit)
Softplus
正则化
降低泛化误差
参数惩罚
对目标函数 J 添加 参数惩罚项 Z(w) 来限制模型的学习能力
J ˉ ( w ) = J ( w ) + a Z ( w ) \bar J(w) = J(w) + a Z(w) Jˉ(w)=J(w)+aZ(w)
a 为 非负惩罚系数,超参数
一般只对 模型参数 w 添加约束,不对偏置项 添加约束
-
L1正则化 Lasso 回归
L1 范数 向量中 全部元素绝对值之和 -
L2 正则化 岭回归 Ridge
L2 范数 欧几里得距离 模长
数据集扩充
防止过拟合最有效的方法 是 增加训练集
训练集越大,过拟合概率越小
噪声注入 标签平滑
Dropout
训练过程中 随机丢弃部分神经元的输出,被丢弃的神经元参数 不参与更新
相当于 构造出一系列子网络 进行 集成学习
提前停止训练
定时对验证集进行测试,当验证集损失函数开始上升,提前停止训练,避免过拟合
把握好 早停 的阈值设计,有可能损失函数只是波动一下 还会继续下降
优化器
梯度下降算法 有各种 改进版本
不同梯度下降算法被封装成独立的对象,称为 优化器
常见优化器“:SGD优化器,动量优化器,Nesterov,Adagrad, Adadelta, RMSprop, Adam, Adamax, Nadam 等
- 动量优化器
d ( n ) = − η ∇ w J + a d ( n − 1 ) d(n) = -\eta \nabla_w J + a d(n - 1) d(n)=−η∇wJ+ad(n−1)
- Adagrad
- RMSprop
- Adam
神经网络类型
卷积神经网络 CNN Convolution Neural Network
卷积:对图像(或 特征图)和 滤波矩阵(滤波器 卷积核)做内积
图像 是 神经网络的输入 RGB 0-255 像素亮度
特征图 是 卷积层 + 池化层 的输出 值由神经元计算获得,不受限制
- 卷积层 convolution layer
卷积层可以有多个卷积核,不同卷积核 提取不同特征
每个卷积核 对 卷积层 所有神经元 共用
卷积核通过 反向传播 优化
卷积运算 除了点乘 也含有 偏置 bias
卷积层内所有卷积核 尺寸相同,特征图尺寸相同
卷积层输出特征图往往需要激活 通常用 relu
- 池化层 pooling layer
合并附近单元,减小特征图尺寸,降维
通过设置池化窗口尺寸和步长,将任意尺寸的输入 映射到 固定尺寸的输出
最大池化层:取区域最大值
平均池化层:取区域均值
池化层没有参数
通常 卷积 与 池化 交替进行
- 全连接层 fully connected layer
cnn的输出
特征图向量化
循环神经网络 RNN Recurrent Neural Network
通过隐藏层节点周期性连接,捕捉序列化数据中的动态信息
可以保存序列化数据中的上下文状态
时间序列上 有所延拓
本时刻的记忆单元和下一时刻的记忆单元 可以相连
处理序列有关场景 音视频 句子 等
时序反向传播 back propagation through time BPTT
BP算法在时间序列上的拓展
记忆单元在 t 时刻的误差 = 隐藏层在 t 时刻传播来的分量 + 记忆单元 在 t -1 时刻 传播来的分量
两种分量的计算方法 与 BP 相同
反向遍历所有时间节点后,得到 每个参数 U V W 的 T 个 梯度,T个梯度之和即为 U V W 总梯度,再应用 梯度下降求解
对单个神经元,t时刻的状态 对其后的影响有限,RNN 长时间的记忆信息 会 衰减
长短期记忆网络 LSTM long short term memory
lstm块 输入门 遗忘门 输出门 选择性记忆
变体 GRU 模型 Gate Recurrent Unit
生成对抗网络 GAN Generative Adversarial Network
同时训练 生成器G 和 判别器D 两者博弈
判别器的目标 是 判断一个样本是真的 还是 G 生成的
生成器的目标 是 生成一个 D 无法分辨的样本
生成器输入z 为 噪声
判别器输入 为 生成器输出 和 真实图像
目标函数
G = m i n G m a x D E x [ log D ( x ) ] + E z [ log ( 1 − D ( G ( z ) ) ) ] G = min_Gmax_DE_x[\log D(x)] + E_z[\log (1 - D(G(z)))] G=minGmaxDEx[logD(x)]+Ez[log(1−D(G(z)))]
判别器的目标是 最大化 目标函数
生成器的目标是 最小化 目标函数 只与目标函数第二项 有关
一般训练过程 交替训练 G D 直到 D(G(z)) 稳定在 0.5 左右,达到 纳什均衡
常见问题
数据不平衡
分类任务,各种类的样本数目可能不均匀,极端情况下,可能影响模型性能
- 随机欠采样
随机删除 数量足够的 类别 的样本
- 随机过采样
复制现有样本
- 合成少数过采样
从少数类别中 选取子集,合成新样本
梯度消失与 梯度爆炸
反向传播公式
δ 1 = δ 3 f 2 ′ ( o 1 ) w 3 f 1 ′ ( o 0 ) w 2 \delta_1 = \delta_3 f^{\prime}_2(o_1) w_3 f^{\prime}_1(o_0) w_2 δ1=δ3f2′(o1)w3f1′(o0)w2
网络太深,多项连乘,权值更新可能不稳定
应对方法:预训练,使用ReLU激活函数,使用LSTM 使用参差模块,梯度剪切 等
过拟合
获取更多数据,数据增强
调整参数,简化模型,正则化 等
补充
epoch, batch, iteration, episode
在机器学习和深度学习的训练过程中,episode、epoch、batch 和 iteration 是描述不同训练阶段和数据处理方式的关键概念,它们的关系如下:
-
Epoch(轮次)
一个 epoch 指的是将整个训练数据集完整地输入模型进行训练一次的过程。例如,如果训练集有 10,000 张图片,那么一个 epoch 就表示这 10,000 张图片都参与了模型的一次完整学习。训练通常会持续多个 epoch。 -
Batch(批次)
由于内存限制,通常不会一次将所有数据输入模型。Batch 指的是在一次前向传播和反向传播过程中所使用的数据子集。例如,可以将 10,000 张图片分成 100 个 batch,每个 batch 包含 100 张图片。 -
Iteration(迭代)
一次 iteration 是指完成一个 batch 数据的前向传播和反向传播,并更新一次模型参数的过程。一个 epoch 所包含的 iteration 次数等于训练数据被划分成的 batch 数量。沿用上面的例子,一个 epoch 包含 100 个 iteration。 -
Episode(回合)
这个术语主要用于强化学习和序列任务中,特指智能体与环境从初始状态交互直到达到终止状态(如游戏结束)的一个完整序列。它更侧重于任务情节的完整性,而非数据集的遍历。
核心关系总结:
在监督学习中,训练过程通常由多个 epoch 构成。
每个 epoch 包含多次 iteration。
每次 iteration 处理一个 batch 的数据,并更新一次模型参数。
Episode 是强化学习等任务中的特有概念,与 epoch 有相似之处(都表示一个完整周期),但衡量对象不同。
集成学习
构建并结合多个机器学习器来完成学习任务
个体学习器
- 同质:基学习器
- 异质:组件学习器件
集成形式
- bagging
弱学习器之间没有依赖关系,可并行生成运行,最终采用集合策略
代表算法:随机森林
减小方差,抑制过拟合
- boosting
得到首个弱学习器后,针对其误差较大部分,未改善误差表现,训练第二个学习器,以此类推,顺序构建学习器
由于boost特性,无法并行,只能串行训练
代表算法:adaboost, 梯度提升树(GBDT)
减小偏差,容易造成过拟合
- stacking
以第一层学习器的输出 作为特征,输入第二层学习器进行学习训练
贝叶斯定理
更多推荐

所有评论(0)