contents
0. 需解决的知识储备
范数:
https://blog.csdn.net/qq_25736745/article/details/83269808
边长各自的 p 次方,求和,再开 p 次方根.(我们生活在一个范2空间。。。)
简单由向量的距离拓展,求解一个向量的长度为:
p
=
p=
p=
欧式空间:
https://blog.csdn.net/weixin_36811328/article/details/81207753
范数L0,L1
1.前期知识储备
联合分布:
https://blog.csdn.net/tick_tock97/article/details/79885868
联合概率指的是包含多个条件且所有条件同时成立的概率,记作P(X=a,Y=b)或P(a,b),有的书上也习惯记作P(ab)
条件概率
条件概率表示在条件Y=b成立的情况下,X=a的概率,记作:
P ( X = a ∣ Y = b ) 或 P ( a ∣ b ) P(X=a|Y=b)或P(a|b) P(X=a∣Y=b)或P(a∣b)
它具有如下性质:
“在条件Y=b下X的条件分布”也是一种“X的概率分布”,因此穷举X的可取值之后,所有这些值对应的概率之和为1即:
Σ P ( X = a ∣ Y = b ) = 1 \Sigma P(X=a|Y=b)=1 ΣP(X=a∣Y=b)=1
联合分布与条件概率的关系有待思考
边缘分布
边缘概率是与联合概率对应的,P(X=a)或P(Y=b),这类仅与单个随机变量有关的概率称为边缘概率
先验概率与后验概率
范数的理解
https://blog.csdn.net/qq_25736745/article/details/83269808
2.统计学习分类
基本分类:监督学习,无监督学习,强化学习,半监督学习,主动学习
监督学习
使用标注数据学习(已知的数据特性)
无监督学习
无标注数据中学习(未知的数据特性)
强化学习
可根据环境进行自我更新
半监督学习
标注与未标注数据同时使用(已知特性的数据与未知特性的数据)
由于标注数据的筛选花费较大,使用未标注数据辅助标注数据可以减少成本
主动学习
由机器给出实例让人进行判断以减少标注的代价。
3.感知机
条件:
线性可分
输入输出函数:
f ( x ) = s i g n ( w x + b ) f(x)=sign(wx+b) f(x)=sign(wx+b)
损失函数:
L ( w , b ) = − ∑ x i ∈ M y i ( w ⋅ x i + b ) L(w,b)=-\sum_{x_i\in{M}}y_i(w\cdot x_i+b) L(w,b)=−xi∈M∑yi(w⋅xi+b)
随机梯度下降法:
对某一个变量求梯度,即为对那个变量进行求导,找到最小的值
4.k近邻
k近邻三要素:
距离度量;
k值选择;
分类决策规划;
KNN作为一种有监督分类算法,是最简单的机器学习算法之一。
算法主体思想:根据距离相近的邻居类别,来判定自己的所属类别。
算法的前提:是需要有一个已被标记类别的训练数据集。
优点:
思想简单,易于实现,无需估计参数,无需训练;
适合对稀有事物进行分类;
特别适合于多分类问题
K值的设定
k值就是在该点附近包含k个点。
K值设置过小会降低分类精度;
若设置过大,且测试样本属于训练集中包含数据较少的类,则会增加噪声,降低分类效果。
通常,K值的设定采用交叉检验的方式(以K=1为基准)
经验规则:K一般低于训练样本数的平方根。
5.朴素贝叶斯
朴素贝叶斯就是基于贝叶斯定理的一种分类方法;
核心公式:
P ( Y ∣ X ) = P ( X , Y ) P ( X ) = P ( Y ) P ( X ∣ Y ) P ( X ) = P ( Y ) P ( X ∣ Y ) ∑ Y P ( Y ) P ( X ∣ Y ) P(Y|X)=\frac{P(X,Y)}{P(X)}=\frac{P(Y)P(X|Y)}{P(X)} =\frac{P(Y)P(X|Y)}{\sum_Y{P(Y)P(X|Y)}} P(Y∣X)=P(X)P(X,Y)=P(X)P(Y)P(X∣Y)=∑YP(Y)P(X∣Y)P(Y)P(X∣Y)
(具体实例理解可以参见书上p63例子)
6.决策树
https://blog.csdn.net/weixin_36586536/article/details/80468426
决策树的核心是使特征分类节点精度不断提高的过程
主要有三个算法:1. ID3算法(信息增益)。2. C4.5算法(信息增益比)。3.CART算法(基尼指数)
1. 特征选择
特征选择也即选择最优划分属性,从当前数据的特征中选择一个特征作为当前节点的划分标准。我们希望在不断划分的过程中,决策树的分支节点所包含的样本尽可能属于同一类,即节点的“纯度”越来越高。而选择最优划分特征的标准不同,也导致了决策树算法的不同。
2.决策树生成
3.决策树剪枝
1.特征选择
熵:
H ( x ) = − ∑ p i log 2 p i H(x)=-\sum p_i \log_2{p_i} H(x)=−∑pilog2pi
H(x)越大,表示不确定性越大。
条件熵:
H
(
Y
∣
X
)
=
−
∑
i
=
1
n
p
i
H
(
Y
∣
X
=
x
i
)
H(Y|X)=-\sum_{i=1}^{n}p_iH(Y|X=x_i)
H(Y∣X)=−i=1∑npiH(Y∣X=xi)
个人理解:
在某个条件分类下的最终的概率x最终分类的概率在该条件下的熵。
(参考书p75)
官方定义:
设有随机变量(X,Y)。条件熵H(Y|X)表示:在已知随机变量X的条件下随机变量Y的不确定性。
随机变量X给定的条件下随机变量Y的条件熵H(Y|X)定义为:
X给定条件下Y的条件概率分布的熵对X的数学期望
经验熵
在已有的信息下的对分类的熵;
信息增益:
g
(
D
,
A
)
=
H
(
D
)
−
H
(
D
∣
A
)
g(D,A)=H(D)-H(D|A)
g(D,A)=H(D)−H(D∣A)
经验熵-条件熵。
H
(
D
)
=
−
∑
k
=
1
K
∣
C
k
∣
∣
D
∣
l
o
g
2
C
k
D
H(D)=-\sum_{k=1}^K\frac{|C_k|}{|D|}log_2\frac{C_k}{D}
H(D)=−k=1∑K∣D∣∣Ck∣log2DCk
H
(
D
∣
A
)
=
∑
i
=
1
n
∣
D
i
∣
∣
D
∣
H
(
D
i
)
H(D|A)=\sum_{i=1}^n\frac{|D_i|}{|D|}H(D_i)
H(D∣A)=i=1∑n∣D∣∣Di∣H(Di)
最终结果:
信息增益大的就是最优特征。
信息增益比
信息增益比细节待研究
基尼指数
G
i
n
i
(
p
)
=
∑
k
=
1
K
(
∣
C
k
∣
∣
D
∣
)
2
Gini(p)=\sum_{k=1}^K(\frac{|C_k|}{|D|})^2
Gini(p)=k=1∑K(∣D∣∣Ck∣)2
与熵类似,值越大,表示不确定性越大。
2.决策树生成
1.ID3算法 2.c4.5算法 3.CART算法
ID3算法
- 算出经验熵
- 根据一个条件算出最大信息增益(g(D,A))
- 选定一个条件,算出该条件下的各个状态下的各自的熵。
- 不断迭代,直至最后一个条件。
因为只有树生成,所以容易过拟合。
C4.5算法
与ID3类似使用信息增益比来代替。由于如果在某一条件下会产生条件熵为0的情况,所以不是很可靠。
3.决策树剪枝
对未知的分类不准确,所以会生成过拟合现象。
7.隐马尔可夫模型
https://www.cnblogs.com/vpegasus/p/hmm.html
P:图像深度学习入门:
1. k-近邻(不可用K近邻用于图像分类)
定义:根据附近元素的类别决定自己的类别
概述:
- 简单:lazy-learning 算法
- 不需要训练集
- 与元素是数据相关
最近邻
超参数:
L1 (Manhattan)distance:
d
1
(
I
1
,
I
2
)
=
∑
p
∣
I
1
p
−
I
2
p
∣
d_1(I_1,I_2)=\sum_p{|I_1^p -I_2^p| }
d1(I1,I2)=p∑∣I1p−I2p∣
L2(Euclidean,欧式)distance:
d
1
(
I
1
,
I
2
)
=
∑
p
(
I
1
p
−
I
2
p
)
2
d_1(I_1,I_2)=\sqrt{\sum_p{(I_1^p -I_2^p)^2 }}
d1(I1,I2)=p∑(I1p−I2p)2
实现方法:
距离计算
两矩阵元素分别相减再相加
交叉验证:
使用的原因:
训练集再次切分,将一份作为验证,其他作为训练。
验证集用来调节参数消除偏高或偏低效果
2. 神经网络
线性分类:
得分函数:
f ( x , W ) = W x + b f(x,W)=Wx+b f(x,W)=Wx+b
举例:
假设有一个图片(32x32x3),要分为10种类别中的一个,将图片变换为[3072x1]的矩阵,权重系数为[10x3072]。即:图像中的每个像素点在这10个类别中所占的权重。(可以将图片任意切分。例如可以首先对图片进行4等分)。最后可以得到各个分类的数值,得到的数值哪个大就是哪个种类。
SVM损失函数
L i = ∑ j ≠ y max ( 0 , s j − s y i + Δ ) L_i=\sum_{j\ne y} { \max (0,s_j-s_{y_i}+\Delta )} Li=j=y∑max(0,sj−syi+Δ)
其中:
S
j
S_j
Sj为其他类别得分值;
S
y
i
S_yi
Syi为正确分类的得分值;
Δ
\Delta
Δ为容忍程度(例如:
Δ
=
1
\Delta=1
Δ=1意思是,如果数值小于1,都可以接受)
举例
损失函数
L i = 1 / N ∑ i = 1 N ∑ j ≠ y max ( 0 , s j − s y i + Δ ) L_i= 1/N \sum_{i=1}^N\sum_{j\ne y} { \max (0,s_j-s_{y_i}+\Delta )} Li=1/Ni=1∑Nj=y∑max(0,sj−syi+Δ)
将所有的样本进行求平均值。
正则化
增加了正则化惩罚项: λ R ( W ) \lambda R(W) λR(W)
L i = 1 / N ∑ i = 1 N ∑ j ≠ y max ( 0 , s j − s y i + Δ ) + λ R ( W ) L_i= 1/N \sum_{i=1}^N\sum_{j\ne y} { \max (0,s_j-s_{y_i}+\Delta )}+\lambda R(W) Li=1/Ni=1∑Nj=y∑max(0,sj−syi+Δ)+λR(W)
sofmax 分类器:
通过概率值代替得分值
sigmoid 函数:
g ( z ) = 1 / ( 1 + e − z ) g(z)=1/(1+e^{-z}) g(z)=1/(1+e−z)
例
第一步:
e
x
e^x
ex 将大的数变的很大,小的数变的很小,负数变为0.xx。
第二步:归一化,将所有数相加作为分母,各部分作为分子,映射到(0,1)区间。
第三步:使用正确类别求-
l
o
g
log
log,由下图可知,log函数可以表达出我们的目的,当x趋近于1时,y趋近于0,当x离0近时,y趋近于无穷,为了好计算,将数据取负号。
机器学习的优化
使用梯度下降的方法使 J ( θ ) J(\theta) J(θ)最小,即求梯度的反方向。(下山)
梯度下降可能会出现浮动,只要趋势是下降。(以万为单位)
最优化
s
=
f
(
x
;
W
)
=
W
x
s=f(x;W)=Wx
s=f(x;W)=Wx
softmax:
L
I
=
−
l
o
g
(
e
s
y
i
∑
j
e
s
j
)
L_I=-log(\frac{e^sy_i}{\sum_je^sj})
LI=−log(∑jesjesyi)
SVM:
L
i
=
∑
j
≠
y
max
(
0
,
s
j
−
s
y
i
+
Δ
)
L_i=\sum_{j\ne y} { \max (0,s_j-s_{y_i}+\Delta )}
Li=j=y∑max(0,sj−syi+Δ)
FULL LOSS:
L
i
=
1
N
∑
i
=
1
N
L
i
+
R
(
W
)
L_i=\frac{1}{N}\sum_{i=1}^N L_i+R(W)
Li=N1i=1∑NLi+R(W)
找到最好的权重函数W,让loss最小
前向传播:
x*weight ->s->loss
反向传播:(链式法则)
更新权重参数,使loss减少
loss-> weight
学习率(learning rate)
即步长,学习率过大会到导致loss过大。一般为小的学习率,多次迭代。
BP算法
batch: 一次取的数据
batchsize:2的整数倍(
2
n
2^n
2n),例:32,64,128
sigmoid function
δ ( x ) = 1 / ( 1 + e − x ) \delta (x)=1/(1+e^{-x}) δ(x)=1/(1+e−x)
随着层数的增加会产生梯度消失,无法进行求导,无法做反向传播,永远无法收敛
reLU函数
首选
m
a
x
(
0
,
x
)
max(0,x)
max(0,x)
神经网络
https://cs.stanford.edu/people/karpathy/convnetjs/demo/classify2d.html
神经元的数量就像切刀,一个就是一刀(线性函数),多了会导致过拟合。
输入->隐层1->隐层2->输出
隐层1与隐层2就是权重系数的计算结果。
输出=
w
3
[
w
2
(
w
1
∗
x
)
]
w_3[w_2(w_1*x)]
w3[w2(w1∗x)] (x 为输出)
为什么要隐层?
加更多的激活函数,可以将神经网络效果更好。
线性方程: f = W x f=Wx f=Wx
线性函数不够灵活
非线性方程:
f
=
W
2
max
(
0
,
W
1
x
)
f=W_2\max(0,W_1x)
f=W2max(0,W1x), 其中:
max
(
0
,
W
1
x
)
\max(0,W_1x)
max(0,W1x)为激活函数。神经网络中需要加入激活函数使其变为非线性。
单层神经网络
f = W 2 m a x ( 0 , W 1 x ) f=W_2max(0,W_1x) f=W2max(0,W1x)
多层神经网络
f = W 3 m a x ( 0 , W 2 m a x ( 0 , W 1 x ) ) f=W_3max(0,W_2max(0,W_1x)) f=W3max(0,W2max(0,W1x))
正则化项(过拟化方案)
有错误点,异常点,离群点。
λ
w
2
\lambda w^2
λw2 正则化项可以减少过拟合现象
随着
λ
\lambda
λ 越大,泛化能力就越强。
越多的神经元(权重参数)可以表达越复杂的模型
数据预处理
将数据处理到0~1之间。
减mean,再除以标准差
权重初始化
w:随机(高斯初始化),不可是0值或者相同的值。
b:用1(使用常值初始化)。
drop out
当对神经网络进行迭代的时候(训练),可以不对某些神经元进行更新,不进行前向传播后向传播,随机筛选,可减少过拟合的风险(减小大小),还可以减少计算量。
附(数据库样例:CIFAR-10)
10类标签
50000个训练数据
100000个测试数据
大小均为32
×
\times
× 32
To Be Continued