文章目录
训练集、验证集、测试集
训练集
用于模型拟合的数据样本
用途
- 模型参数调整
验证集
模型训练过程中单独留出的样本集,它可以用于调整模型的超参数和用于对模型的能力进行初步评估。通常用来在模型迭代训练时,用以验证当前模型泛化能力(准确率,召回率等),以决定是否停止继续训练。
用途
-
用于评估模型效果
-
调整超参数
-
判断模型训练情况决定是否继续训练
多次使用,不断调参;是非必需的,评估的效果不是模型最终结果
测试集
用来评估模最终模型的泛化能力。但不能作为调参、选择特征等算法相关的选择的依据。
用途
- 评估模型效果及泛化能力
一些问题
训练集、验证集、测试集传统上比例是:6:2:2,数据采样等方式抽取
一次训练的过程中一般不允许存在交集,多次训练中如交叉验证,则可在不同的训练中,样本所属集合不同
测试集中的样本一定不能是训练样本,否则会低估泛化误差。
k折交叉验证
交叉验证法的作用就是尝试利用不同的训练集/验证集划分来对模型做多组不同的训练/验证,来应对单独测试结果过于片面以及训练数据不足的问题。
交叉验证的做法就是将数据集粗略地分为比较均等不相交的k份,然后取其中的一份进行测试,另外的k-1份进行训练,然后求得error的平均值作为最终的评价。
- 完全不使用交叉验证是一种极端情况,即K=1。在这个时候,所以数据都被用于训练,模型很容易出现过拟合,因此容易是低偏差、高方差(low bias and high variance)。
- 留一法是K折的另一种极端情况,即K=n。随着K值的不断升高,单一模型评估时的方差逐渐加大而偏差减小。但从总体模型角度来看,反而是偏差升高了而方差降低了。
k取值越大,即样本被划分用来训练的次数也就越多,保证了充分利用所有的样本.带来的后果是由偏差bias带来的泛化误差降低,由方差variance带来的泛化误差增加,同时还增加了计算量.总的来说就是过拟合(over fitting).
k值取得越小,即样本被划分用来训练的次数也就越少,没有保证样本被充分利用,此时,模型还没有学到足够多的信息.带来的后果是由偏差bias带来的泛化误差增加,由方差variance带来的泛化误差降低.总的来说就是欠拟合(under fitting).
参数与超参数
区别:是否通过数据来进行调整。模型参数通常是有数据来驱动调整,超参数则不需要数据来驱动,而是在训练前或者训练中人为的进行调整的参数。例如卷积核的具体核参数就是指模型参数,这是有数据驱动的。而学习率则是人为来进行调整的超参数。这里需要注意的是,通常情况下卷积核数量、卷积核尺寸这些也是超参数,注意与卷积核的核参数区分。
超参数
可以将超参数分为三类:网络参数、优化参数、正则化参数。
网络参数:可指网络层与层之间的交互方式(相加、相乘或者串接等)、卷积核数量和卷积核尺寸、网络层数(也称深度)和激活函数等。
优化参数:一般指学习率(learning rate)、批样本数量(batch size)、不同优化器的参数以及部分损失函数的可调参数。
正则化:权重衰减系数,丢弃法比率(dropout)
学习率、损失函数部分超参数、批样本数量、丢弃法、权重衰减系数、优化器动量、模型深度、卷积核尺寸
人工智能、机器学习、深度学习、神经网络
关系
人工智能是让机器具有人类的智能,而机器学习就是实现人工智能的一类方法。
深度学习是机器学习的一个分支,深度学习是一个机器学习问题,从有限的样例中通过算法总结出一般性规律。
神经网络是深度学习主要采用的一种算法模型。
人工智能是计算机科学的一个分支,人工智能的主要领域大体上可分为以下几个方面:
- 感知
- 学习
- 认识
人工智能历史
机器学习
机器学习(MachineLearning,ML)是指从有限的观测数据中学习(或“猜测”)出具有一般性的规律,并利用这些规律对未知数据进行预测的方法。机器学习是人工智能的一个重要分支,并逐渐成为推动人工智能发展的关键因素.
传统的机器学习主要关注如何学习一个预测模型.
机器学习模型一般步骤
(1)数据预处理:对数据的原始形式进行初步的数据清理和加工,并构建成可用于训练机器学习模型的数据集。
(2)特征提取:从数据的原始特征中提取一些对特定机器学习任务有用的高质量特征
(3)特征转换:对特征进行进一步的加工。
(4)预测:学习一个函数并进行预测.
-
数据预处理
- 数据清洗
- 数据集成
- 数据变换(数据加工【缩放、归一化等】)
- 数据规约
-
特征提取
-
特征转换
-
特征抽取
-
特征选择
常用算法有主成分分析(PCA)、线性判别分析(LDA)
-
-
预测
深度学习
深度学习是机器学习的一个子问题,其主要目的是从数据中自动学习到有效的特征表示.
神经网络
神经网络发展历史
-
模型提出1943-1969
MP模型和感知器
-
冰河期1969-1983
指出感知器无法处理“异或”回路问题,当时计算机计算能力不足
反向传播算法和新知机出现
-
反向传播算法引起复兴1983-1995
梯度消失问题阻碍发展
-
流行度降低1995-2006
支持向量机和其他股份简单的算法兴起
-
深度学习崛起2006-至今
计算能力提升
分类、回归、拟合、聚类
回归是拟合的一种方法,拟合包含回归,还有插值和逼近。
回归
确定变量间相互以来的定量关系,由样本点数据进行预测。
通过设定阈值等方式将回归的输出值进行离散化处理实现分类任务。
分类
进一步可细分为二分类和多分类,均属于对指定的模式进行识别,将个体归类为集合。
聚类
学习没有分类标记的训练样本,以揭示数据的内在性质和规律。
分类和聚类的区别:分类是先确定类别再划分数据;聚类则是先划分数据再确定类别。
分类(Classification)与回归(Regression)两者异同之处?
同
均可采用监督学习,对输入数据进行训练,并做出预测
异
- 分类问题输出预测数据的所属类别,回归问题输出预测数据的值;
- 分类问题输出为离散的,用于预测离散值;回归问题输出为连续值,用于预测连续值;
- 分类问题是定性分析,回归问题是定量分析;
- 分类的目的是为了寻找决策边界,回归的目的是为了找到最优拟合;
- 分类问题的求解结果答案分明,最终结果只有一个;回归问题的求解结果是对真实值的一种逼近预测,求解答案较为模糊;
- 两者处理过程的损失函数不同。
分类(Classification)与聚类(Clustering)两者异同之处?
同
本质没有区别,都是构造一个分类器,将数据划分为群簇。
异
学习方法和对数据的要求不同:
- 分类问题已知分类规则或分类标签,利用已知条件进行构造分类器;
- 聚类问题未知分类规则或分类标签,完全通过学习集样本找出分类规则,构造分类器,确定分类。
过拟合、欠拟合
训练误差小,泛化误差大过拟合
训练误差大,学习不够欠拟合
欠拟合产生原因
- 模型过于简单
- 特征差,缺乏强预测能力特征
- 训练次数少
解决方法
- 增加模型复杂度(线性函数增加二次项,提升模型维度等)
- 通过组合、泛化等手段增加合适特征(PCA等方式选择更加合适的特征)
过拟合产生原因
- 训练次数过多
- 模型记住了数据中的噪音(噪声表示样本中的错误数据)
- 训练数据过少,或训练样本类别不合理
- 模型复杂度过高
解决方法
- 减少训练次数
- 清洗样本、异常值处理,去除噪音
- 增加数据(人工合成假样本)
- 降低模型复杂度
- 添加正则化项,减笑傲特征变量的数量级,降低特征变量的影响
- DropOut/EarlyStopping
- 集成学习
- 剪枝
模型容量
模型的容量是指模型拟合各种函数的能力。
- 容量低的模型容易发生欠拟合,模型拟合能力太弱。
- 容量高的模型容易发生过拟合,模型拟合能力太强。
VC维理论:训练误差与泛化误差之间差异的上界随着模型容量增长而增长,随着训练样本增多而下降
泛化误差、偏差、方差
泛化误差
泛化误差是用来衡量一个学习机器推广未知数据的能力。
损失函数:度量预测错误程度的函数。
训练误差:训练过程中的误差。
测试误差:训练完毕、调参完毕的模型,在新的测试集上的误差。
泛化误差:所有的数据来自一个整体,模型在这个整体上的误差。
通常说来,测试误差的平均值或者说期望就是泛化误差。
泛化误差是衡量一个模型推广能力的标准,指示泛化性能。泛化误差越小,表示模型的推广能力越强,泛化性能越优。
偏差
衡量了模型期望输出与真实值之间的差别,刻画了模型本身的拟合能力。
方差
度量了训练集的变动所导致的学习性能的变化,刻画了模型输出结果由于训练集的不同造成的波动。
噪声
度量了在当前任务上任何学习算法所能达到的期望泛化误差的下界,刻画了学习问题本身的难度。
- 高偏差,低方差的算法在不同训练集上训练得到的模型基本一致,但预测值与真实值差距较大;
- 高方差,低偏差的算法得到的模型的预测值和真实值差距小,但在不同训练集上得到的模型输出波动大。
泛化误差分解
泛化误差=偏差+方差+噪声
高偏差对应于模型的欠拟合:模型过于简单,以至于未能很好的学习训练集,从而使得训练误差过高。
高方差对应于模型的过拟合:模型过于复杂,以至于将训练集的细节都学到,将训练集的一些细节当做普遍的规律,从而使得测试集误差与训练集误差相距甚远。
如何降低偏差(bias)(也可为如何解决欠拟合)
-
增加算法的复杂度,比如神经网络中的神经元个数或者层数,增加决策树中的分支和层数等。不过增加模型复杂度可能会导致方差(variance)的增加,如果有必要,需要添加正则化项来惩罚模型的复杂度(降低方差);
-
优化输入的特征,检查特征工程中是否遗漏掉具有预测意义的特征。增加更多的特征也许能同时改善方差(variance)和偏差(bias),不过理论上来说,特征越多方差(variance)也就越大(可能又需要正则化);
-
削弱或者去除已有的正则化约束(L1正则化,L2正则化,dropout等),不过有增加方差的风险;
-
调整模型结构,比如神经网络的结构;
如何降低方差(variance)(如何解决过拟合)
- 扩大训练样本,样本太小(代表性不够)是方差大的首要原因,增加样本是减少方差最简单有效的方式;
- 增加正则化约束(比如L1正则化,L2正则化,dropout等),正则化降低方差的同时也可能增大偏差;
- 筛选输入的特征(featureselection),这样输入的特征变少后,方差也会减小;
- 降低算法模型复杂度,比如对决策树的剪枝、减少神经网络的层数等;
- 优化模型的结构有时候也会有用
正则化项的正则化参数对泛化误差的影响
损失函数为 L = L ( W ) + λ L 2 ( W ) L=L(W)+\lambda L_2(W) L=L(W)+λL2(W)其中 λ \lambda λ为正则化参数,参数越大,整体正则化项权重越大,表示当前对于过大数值的权值进行严厉惩罚,鼓励较小的参数值。
- 正则化参数增大
- 正则项大
- 模型复杂度降低
- 模型过拟合程度降低,欠拟合程度提高
- 方差变小,偏差增大
机器学习三要素
模型、学习准则(策略-损失函数)、优化算法
性能度量、评价指标
准确率Accuracy
模型中预测与实际值相符的个数与样本总量的比值 A = 1 N I ( y = = y ^ ) A=\frac{1}{N}I(y==\hat y) A=N1I(y==y^)
错误率Error Rate
1-准确率
混淆矩阵
真正例(True Positive,TP):一个样本的真实类别为𝑐并且模型正确地预测为类别𝑐
假负例(False Negative,FN):一个样本的真实类别为𝑐,模型错误地预测为其他类
假正例(False Positive,FP):一个样本的真实类别为其他类,模型错误地预测为类别𝑐
真负例(True Negative,TN):一个样本的真实类别为其他类,模型也预测为其他类
精确率和召回率
精确率Precision
也称查准率
查准率越高,说明模型的效 果越好
P
=
T
P
T
P
+
F
P
P=\frac{TP}{TP+FP}
P=TP+FPTP
召回率Recall
Recall(召回率) = Sensitivity(敏感指标, True Positive Rate,TPR)= 查全率
R
=
T
P
T
P
+
F
N
R=\frac{TP}{TP+FN}
R=TP+FNTP
F值 F Measure
F = ( 1 + β 2 ) ∗ P ∗ R β 2 ∗ P + C F=\frac{(1+\beta^2)*P*R}{\beta^2*P+C} F=β2∗P+C(1+β2)∗P∗R
β = 1 \beta=1 β=1时称为 F 1 F_1 F1值
F1分数认为召回率和正确率同等重要
F2分数认为召回率的重要程度是正确率的2 倍,而F0.5分数认为召回率的重要程度是 正确率的一半。
比较常用的是F1分数(F1 Score),是统计 学中用来衡量二分类模型精确度的一种指 标。
TPR
正正类率(True Positive Rate)
T
P
R
=
F
P
T
P
+
F
N
TPR=\frac{FP}{TP+FN}
TPR=TP+FNFP
FPR
负正类率(False Positive Rate, FPR)
FPR计算的是模型错识别为正类的负类 样本占所有负类样本的比例。一般越低 越好。
F
P
R
=
F
P
T
N
+
F
P
FPR=\frac{FP}{TN+FP}
FPR=TN+FPFP
Specificity(特异性)
特异性指标,表示的是模型识别为负类 的样本的数量,占总的负类样本数量的 比值。
Specificity = 1 – FPR= TN/(TN+FP)
总结
Accuracy:描述分类器的分类准确率
计算公式为:Accuracy=(TP+TN)/(TP+FP+FN+TN)
Balanced Error Rate
计算公式为:BER=1/2*(FPR+FN/(FN+TP))
TPR:true positive rate,描述识别出的所有正例占所有正例的比例
计算公式为:TPR=TP/(TP+FN)
FPR:false positive rate,描述将负例识别为正例的情况占所有负例的比例
计算公式为:FPR=FP/(FP+TN)
TNR:true negative rate,描述识别出的负例占所有负例的比例
计算公式为:TNR=TN/(FP+TN
PPV:Positive predictive value
计算公式为:PPV=TP/(TP+FP)
NPV:Negative predictive value
计算公式:NPV=TN / (FN + TN)
其中TPR即为敏感度(sensitivity),TNR即为特异度(specificity)。
ROC、AUC
ROC绘制步骤
第一步:按照属于‘正样本’的概率将所有样本排序
第二步:把分类阈值设为最大,即把所有样例均预测为反例,所以此时得到P和R均为0,即(0,0)
第三步:依次取不同的域值,对应计算TPR、FPR绘制即可。
ROC曲线横坐标为FPR,纵坐标为TPR
PR曲线
步骤大致相同,不过PR曲线横坐标为召回率(Recall),纵坐标为准确率(Precision)
ROC与PR区别
ROC曲线是单调的而PR曲线不是(根据它能更方便调参),可以用AUC的值得大小来评价分类器的好坏。
正负样本的分布失衡的时候,ROC曲线保持不变,而PR曲线会产生很大的变化。
在实际学习中,可以使用ROC来判断两个分类器的优良,然后进行分类器的选择,然后可以根据PRC表现出来的结果衡量一个分类器面对不平衡数据进行分类时的能力,从而进行模型的改进和优化。
https://blog.youkuaiyun.com/qq_44704609/article/details/104573503
AUC
即曲线下面积
S
=
1
2
∑
(
x
i
+
1
−
x
i
)
∗
(
y
i
+
y
i
+
1
)
S=\frac{1}2\sum(x_{i+1}-x_i)*(y_i+y_{i+1})
S=21∑(xi+1−xi)∗(yi+yi+1)
特征学习
特征选择
特征选择(Feature Selection)是选取原始特征集合的一个有效子集,使得基于这个特征子集训练出来的模型准确率最高.简单地说,特征选择就是保留有用特征,移除冗余或无关的特征。
子集搜索方法可以分为过滤式方法和包裹式方法.
(1)过滤式方法(Filter Method)是不依赖具体机器学习模型的特征选择方法.每次增加最有信息量的特征,或删除最没有信息量的特征[Hall, 1999].特征的信息量可以通过信息增益(Information Gain)来衡量,即引入特征后条件分布𝑝𝜃 (𝑦|𝒙)的不确定性(熵)的减少程度.
(2)包裹式方法(Wrapper Method)是使用后续机器学习模型的准确率作为评价来选择一个特征子集的方法.每次增加对后续机器学习模型最有用的特征,或删除对后续机器学习任务最无用的特征.这种方法是将机器学习模型包裹到特征选择过程的内部.
特征抽取
特征抽取(Feature Extraction)是构造一个新的特征空间,并将原始特征 投影在新的空间中得到新的表示.
监督学习 | 无监督学习 | |
---|---|---|
特征选择 | 标签相关的子集搜索、 ℓ1 正则化、决策树 | 标签无关的子集搜索 |
特征抽取 | 线性判别分析 | 主成分分析、独立成分分 析、流形学习、自编码器 |
特征选择的可解释性更好。
激活函数
神经网络-邱锡鹏 P80
线性函数不能作为激活函数
为了增强网络的表示能力和学习能力,激活函数须具备以下性质:
-
连续并可导(允许少数点不可导)的非线性函数。
可导的激活函数可以直接利用数值优化的方法来学习网络参数;
-
激活函数及其导函数要尽可能简单,有利于提高网络计算效率;
-
激活函数的导函数的值域要在合适的区间内,不可过大过小,否则影响训练的效率和稳定性。
激活函数作用:为模型增加非线性因素
常用激活函数:
- sigmoid
- tanh
- relu
线性回归
线性回归(Linear Regression)是机器学习和统计学中最基础和最广泛应 用的模型,是一种对自变量和因变量之间关系进行建模的回归分析.自变量数量 为1时称为简单回归,自变量数量大于1时称为多元回归。
f
(
x
)
=
ω
T
x
+
b
+
e
=
[
ω
b
]
[
x
1
]
+
e
f(x)=\omega^Tx+b+e=\begin{bmatrix}\omega & b\end{bmatrix} \begin{bmatrix} x \\ 1 \end{bmatrix} +e
f(x)=ωTx+b+e=[ωb][x1]+e
e
e
e 为偏置项
定义损失函数为
L
(
ω
)
=
1
2
∣
∣
y
−
X
T
ω
∣
∣
2
L(\omega)=\frac{1}{2}||y-X^T\omega||^2
L(ω)=21∣∣y−XTω∣∣2
1
2
\frac{1}{2}
21为了求导方便
求 m i n L ( ω ) min L(\omega) minL(ω)
直接求得参数方法
L
(
ω
)
L(\omega)
L(ω)对求
ω
\omega
ω偏导得
∂
L
(
ω
)
∂
ω
=
1
2
∣
∣
y
−
X
T
ω
∣
∣
2
∂
ω
=
−
X
(
y
−
X
T
ω
)
∂
L
(
ω
)
∂
ω
=
0
⇒
ω
=
(
X
X
T
)
−
1
X
y
=
(
∑
x
(
n
)
(
x
(
n
)
)
T
)
−
1
(
∑
x
(
n
)
y
(
n
)
)
\frac{\partial L(\omega)}{\partial \omega} =\frac{1}{2}\frac {||y-X^T\omega||^2}{\partial \omega}=-X(y-X^T\omega)\\ \frac{\partial L(\omega)}{\partial \omega} =0\Rightarrow\omega=(XX^T)^{-1}Xy=(\sum x^{(n)}(x^{(n)})^T)^{-1}(\sum x^{(n)}y^{(n)})
∂ω∂L(ω)=21∂ω∣∣y−XTω∣∣2=−X(y−XTω)∂ω∂L(ω)=0⇒ω=(XXT)−1Xy=(∑x(n)(x(n))T)−1(∑x(n)y(n))
说明 X X T XX^T XXT可逆,什么时候不可逆,怎么解决
X X T ∈ R ( D + 1 ) × ( D + 1 ) XX^T\in\R^{(D+1)×(D+1)} XXT∈R(D+1)×(D+1) 必须存在逆矩阵
X X T XX^T XXT不可逆情况:当样本数量 𝑁 小于特征 数量(𝐷 + 1), X X T XX^T XXT的秩为 N N N
- 不可逆情况
-
减少不必要的特征
-
放弃直接求偏导方式求解,用梯度下降法初始化 ω = 0 \omega=0 ω=0
ω ∗ = a r g m i n ∣ ∣ y − X T ω ∣ ∣ ω ← ω + α X ( y − X T ω ) \omega^*=arg\ min\ ||y-X^T\omega|| \\\omega\leftarrow\omega+\alpha X(y-X^T\omega) ω∗=arg min ∣∣y−XTω∣∣ω←ω+αX(y−XTω)
有关梯度下降法
逻辑回归
线性回归外套一层sigmoid函数
线性回归解决的是回归问题,逻辑回归相当于是线性回归的基础上,来解决分类问题.
联系:
逻辑回归实则为在线性回归问题的基础上增加了sigmoid函数用于鉴别分类
区别:
线性回归用于预测连续值,逻辑回归预测类别为离散值
线性回归的参数计算方法是最小二乘法,逻辑回归的参数计算方法是似然估计的方法
经验风险、结构风险、期望风险
https://blog.youkuaiyun.com/liyajuan521/article/details/44565269
二分类模型做多分类
- 一对多(做n遍
- 一对一(做 C n 2 C_n^2 Cn2遍
- 多对多(类似one-hot编码
多分类可用softmax回归
前馈神经网络
线性回归与前馈神经网络的区别与联系
网络结构不同:前馈神经网络为网络结构,可用于拟合各类函数,线性回归模型为线性模型,只能用于预测线性函数。
训练方式不同:前馈神经网络可由不同的激活函数与损失函数在训练集上通过梯度下降等方式训练得到局部最优参数;线性模型在一定条件下可直接求出最优解,且损失函数一般为均方误差。
神经网络一般可以看作一个非线性模型,其基本组成单元为具有非线性激活函数的神经元,通过大量神经元之间的连接,使得神经网络成为一种高度非线性的模型
二者差异过大,联系暂且不谈
第
l
l
l层参数
w
l
,
b
l
w^l,b^l
wl,bl,有
z
l
=
w
l
a
l
−
1
+
b
l
∂
L
(
y
,
y
^
)
∂
w
i
j
l
=
∂
z
l
∂
w
i
j
l
∂
L
(
y
,
y
^
)
∂
z
l
∂
L
(
y
,
y
^
)
∂
b
l
=
∂
z
l
∂
b
l
∂
L
(
y
,
y
^
)
∂
z
l
δ
l
=
∂
L
(
y
,
y
^
)
∂
z
l
=
∂
a
l
∂
z
l
∂
z
l
+
1
∂
a
l
∂
L
(
y
,
y
^
)
∂
z
l
+
1
=
d
i
a
g
(
f
l
′
(
Z
l
)
)
(
w
l
+
1
)
T
δ
l
+
1
∈
R
M
l
z^l=w^la^{l-1}+b^l \\ \frac{\partial L(y,\hat y)}{\partial w_{ij}^l}=\frac{\partial z^l}{\partial w_{ij}^l}\frac{\partial L(y,\hat y)}{\partial z^l} \\ \frac{\partial L(y,\hat y)}{\partial b^l}=\frac{\partial z^l}{\partial b^l}\frac{\partial L(y,\hat y)}{\partial z^l} \\ \delta^l=\frac{\partial L(y,\hat y)}{\partial z^l} \\ =\frac{\partial a^l}{\partial z^{l}}\frac{\partial z^{l+1}}{\partial a^l}\frac{\partial L(y,\hat y)}{\partial z^{l+1}} \\ =diag(f'_l(Z^l)) (w^{l+1})^T \delta^{l+1} \ \in \R^{M_l}
zl=wlal−1+bl∂wijl∂L(y,y^)=∂wijl∂zl∂zl∂L(y,y^)∂bl∂L(y,y^)=∂bl∂zl∂zl∂L(y,y^)δl=∂zl∂L(y,y^)=∂zl∂al∂al∂zl+1∂zl+1∂L(y,y^)=diag(fl′(Zl))(wl+1)Tδl+1 ∈RMl
可得第
l
l
l层权重和偏置项的梯度分别为
∂
L
(
y
,
y
^
)
∂
w
i
j
l
=
δ
l
(
a
l
−
1
)
T
∈
R
M
l
×
M
l
−
1
∂
L
(
y
,
y
^
)
∂
b
l
=
δ
l
∈
R
M
l
\frac{\partial L(y,\hat y)}{\partial w_{ij}^l}=\delta^l(a^{l-1})^T \in \R^{M_l×M_{l-1}} \\ \frac{\partial L(y,\hat y)}{\partial b^l}=\delta^l \in \R^{M_l}
∂wijl∂L(y,y^)=δl(al−1)T∈RMl×Ml−1∂bl∂L(y,y^)=δl∈RMl
梯度消失和梯度爆炸
卷积神经网络
卷积神经网络结构特点
卷积神经网络由卷积层、汇聚层(池化层)和全连接层(输出层)交叉堆叠组成的前馈神经网络
- 局部链接 局部性
- 权值共享 相同性
- 汇聚 不变性
全连接神经网络处理图片存在的问题
-
首先将图像展开为向量会丢失空间信息;
-
其次参数过多效率低下,训练困难;
-
同时大量的参数也很快会导致网络过拟合。
解决的问题:
- 前馈神经网络参数太多训练耗时长,用卷积层代替全连接,减少参数降低模型训练难度
单个卷积核只能提取一种类型的特征
池化层作用
为有效地减少计算量,池化就是将输入图像进行缩小,减少像素信息,只保留重要信息;
为了有效地解决过拟合问题,池化可以减少数据,但特征的统计属性仍能够描述图像,而由于降低了数据维度,可以有效地避免过拟合。
用于特征降维,压缩数据和参数的数量,减小过拟合,同时提高模型的容错性。
卷积核大小计算
若图像为矩形:设输入图像尺寸为WxH,卷积核的尺寸为FxF,步幅为S,图像深度(通道数)为C,Padding使用P,卷积后输出图像大小:
W
=
W
−
F
+
2
P
S
+
1
H
=
H
−
F
+
2
P
S
+
1
W=\frac{W-F+2P}{S}+1\\ H=\frac{H-F+2P}{S}+1
W=SW−F+2P+1H=SH−F+2P+1
给定灰色图像I其大为mn,假设卷积卷大小为kk,卷积滑动步长为s,边界像素填充为p,则计算卷积后的特征映射图的大小。
W = W − F + 2 P S + 1 = ⌊ m − k + 2 ∗ p s ⌋ + 1 H = H − F + 2 P S + 1 = ⌊ n − k + 2 ∗ p s ⌋ + 1 W=\frac{W-F+2P}{S}+1 = \lfloor\frac{m-k+2*p}{s}\rfloor+1 \\ H=\frac{H-F+2P}{S}+1 = \lfloor\frac{n-k+2*p}{s}\rfloor+1 W=SW−F+2P+1=⌊sm−k+2∗p⌋+1H=SH−F+2P+1=⌊sn−k+2∗p⌋+1
https://blog.youkuaiyun.com/qq_41168327/article/details/104742226
几种典型的卷积神经网络
LeNet-5
优点:
- 输入图像和网络的拓扑结构能很好的吻合;
- 特征提取和模式分类同时进行,并同时在训练中产生;
- 权重共享可以减少网络的训练参数,使神经网络结构变得更简单,适应性更强。
AlexNet
优点:
- AlexNet使用ReLU代替了Sigmoid,其能更快的训练,同时解决sigmoid在训练较深的网络中出现的梯度消失,或者说梯度弥散的问题.
- Dropout随机失活,随机忽略一些神经元,以避免过拟合,
- 重叠的最大池化层。在以前的CNN中普遍使用平均池化层,AlexNet全部使用最大池化层,避免了平均池化层的模糊化的效果,并且步长比池化的核的尺寸小,这样池化层的输出之间有重叠,提升了特征的丰富性.
- 提出了LRN层。局部响应归一化,对局部神经元创建了竞争的机制,使得其中响应小打的值变得更大,并抑制反馈较小的.
- 使用了GPU加速计算。使用了gpu加速神经网络的训练
- 数据增强。使用数据增强的方法缓解过拟合现象.
Inception网络
GoogLeNet
优点:
- 用多层效的卷积核代替大的卷积核,减少了参数量,减少了计算量
残差网络
残差单元
优点:
- 一定程度上解决了网络退化问题
- 避免了梯度消失现象
- 增加特征多样性、加快训练目的
循环神经网络
前馈神经网络是一个静态网络,信息的传递是单向的,网络的输 出只依赖于当前的输入,不具备记忆能力。
循环神经网络通过使用带自反馈的神经元,使得网络的输出不仅 和当前的输入有关,还和上一时刻的输出相关,于是在处理任意 长度的时序数据时,就具有短期记忆能力。
循环神经网络的应用模式
序列到类别模式
输入为序列,输出为类别
- 最后时刻状态
- 平均时刻状态
同步的序列到序列模式
每一时刻都有输入和输出,输入序列和输出序列的长度相同
用于序列标注
异步的序列到序列模式。
也称为编码器-解码器
参数学习
随时间反向传播实时循环学习
长期依赖问题
输入序列较长,梯度消失和梯度爆炸
问题解决:引入门控机制
- 对于梯度爆炸问题,可以通过截断的方式来有效避免。
- 而对梯度消失问题,则有很多不同的方案:
- 有效初始化+ReLU激活函数
- 算法优化
- 模型改进,例如LSTM、GRU单元都可以有效解决长期依赖问题
- 在算法中加入skip connection,此时误差可以间歇的向前传播
LSTM
输入门
i
t
i_t
it、遗忘门
f
t
f_t
ft 和输出门
o
t
o_t
ot
i
t
=
σ
(
W
i
∗
[
h
t
−
1
,
x
t
]
+
b
i
)
c
ˉ
t
=
t
a
n
h
(
W
c
∗
[
h
t
−
1
,
x
t
]
+
b
c
)
c
t
=
f
t
∗
c
t
−
1
+
i
t
∗
c
ˉ
t
o
t
=
σ
(
W
o
∗
[
h
t
−
1
,
x
t
]
+
b
o
)
h
t
=
o
t
∗
t
a
n
h
(
c
t
)
i_t=\sigma(W_i*[h_{t-1},x_t]+b_i) \\ \bar c_t=tanh(W_c*[h_{t-1},x_t]+b_c) \\\\ c_t=f_t*c_{t-1}+i_t*\bar c_t \\\\ o_t=\sigma(W_o*[h_{t-1},x_t]+b_o) \\ h_t=o_t*tanh(c_t)
it=σ(Wi∗[ht−1,xt]+bi)cˉt=tanh(Wc∗[ht−1,xt]+bc)ct=ft∗ct−1+it∗cˉtot=σ(Wo∗[ht−1,xt]+bo)ht=ot∗tanh(ct)
GRU
无监督学习
主要分为三类:
- 无监督特征学习:从无标签的训练数据中挖掘有效的特征或表示。常用来进行降维、数据可视化或监督学习前期的数据预处理
- 概率密度估计:根据一组训练样本来估计样本空间的概率密度
- 聚类:将一组样本根据一定的准则划分到不同的组
PCA
稀疏编码
优点:
- 计算量 稀疏性带来的最大好处就是可以极大地降低计算量.
- 可解释性 因为稀疏编码只有少数的非零元素,相当于将一个输入样本表示为少数几个相关的特征.这样我们可以更好地描述其特征,并易于理解.
- 特征选择 稀疏性带来的另外一个好处是可以实现特征的自动选择,只选择和输入样本最相关的少数特征,从而更高效地表示输入样本,降低噪声并减轻过拟合。
自编码器
自编码器是一种利用反向误差传播算法使得输出值等于输入值的神经网络,它先将输入压缩成潜在空间表征,然后通过 这种表征来重构输出。
- 将数据映射到特征空间中得到每个样本的编码
- 通过编码能够还原出原来的数据
类型:
-
低维编码
-
稀疏自编码器:优点具有很高的可解释性,并同时进行了隐式的特征选择
-
堆叠自编码器:
仅使用两层神经网络的自编码器还不足以获取一种好的数据表示,深层神经网络作为自编码器提取的数据表示一般会更加抽象,多个自编码器叠加使用解决上述问题
-
降噪自编码器:通过引入噪声来增加编码鲁棒性
作用
- 可以实现非线性降维
- 利用自编码器来进行神经网络预训练
与前馈神经网络的比较
- 自编码器是前馈神经网络的一种,最开始主要用于数据的降维以及特 征的抽取,随着技术的不断发展,现在也被用于生成模型中,可用来 生成图片等。
- 前馈神经网络是有监督学习,其需要大量的标注数据。自编码器是无 监督学习,数据不需要标注因此较容易收集。
- 前馈神经网络在训练时主要关注的是输出层的数据以及错误率,而自 编码的应用可能更多的关注中间隐层的结果.
简述主成分分析与自编码器的关联与区别
- PCA 只能做线性变换;而自编码器既可以做线性变换,也可以做非线性变换。
- PCA可直接计算得到参数的值;而自编码器需要通过梯度下降算法进行训练。
- PCA 将数据投影到若干正交的方向;而自编码器降维后数据维度并不一定是正交的。
- PCA 是输入空间向最大变化方向的简单线性变换;而自编码器是一种更复杂的技术,可以对相对复 杂的非线性关系进行建模。
- PCA 适用于数据量较小的场景,自编码器可以用于复杂的大型数据集。
- PCA 唯一的超参数是正交向量的数量;而自编码器的超参数则是神经网络的结构参数。
- 多层结构的自编码器较PVA性能要好
TODO:
- 激活函数(求导)
- 信息熵交叉熵
- 均方误差
- 线性回归
- 最小二乘法
- 矩阵求导
- 拉格朗日乘子法
- 极大似然估计
- 循环神经网络
- LSTM
- GRU
ridge 岭回归