0%

机器学习原理

监督学习

由带标签的数据集∑(x_i,y)进行模型训练

线性回归

假设函数:image

代价函数(损失函数):

线性回归问题即求解代价函数的最小值

梯度下降法

img

α为步长,控制更新速率,参数同时更新

确定步长:网格搜索或梯度限制

Batch梯度下降

批量梯度下降

每一步更新都遍历整个·训练集,与随机梯度下降相对应

多元梯度下降法

img

img

x0=1,两边公式本质相同

特征缩放

将所有特征的取值范围缩放至[-1,1]范围中(通常),加速找到偏导数为0点的进程

均值归一化:用xi-μi代替xi使均值为0

多项式回归

用单一变量的不同次方作为不同的特征值(仅适用于线性回归)

img

正规方程

参数少时(n<10000)适用,不需要迭代计算

X第一列始终置1

设计矩阵

正规矩阵方法证明:https://blog.csdn.net/chenlin41204050/article/details/78220280

若X不可逆,可以使用伪逆矩阵代替,一般不可逆的原因为特征变量过多

img

需要考虑XTX是否可逆的问题

线性回归的正则化

image-20201210200832545

梯度下降

image-20201210203219234

正规方程

image-20201210203942596

XTX+λ[1]必可逆

逻辑回归

二分类

x与ln(y/1-y)之间具有线性关系,y可视为时间的概率,1-y视为反例得概率。

h_θ(x)表示在给定x和θ情况下预测y=1的概率

img

决策边界

即θTx所构成的边界,(在二分类中)用于区分h_θ(x)是取1还是0

逻辑回归的代价函数

img

如y=1的cost函数表示,当h(x)->0预测得到y=0的结果时若y=1需要无穷大的代价来修正假设函数;当h(x)->1预测得到y=0的结果时若y=1需要极小的代价来修正假设函数

结论(由最大似然法得到):image-20201210151452334

得到代价函数后再使用梯度下降的方法(包括特征缩放等)来推算假设函数

其他可选的回归方法(除了第一条梯度下降,其他方法都具有右边的优点)

image-20201210154839479

多分类问题

一对多思想

image-20201210174846099

将多分类问题转化为多个二分类问题(分类器)的集合,一一求解

ps:然而多分类问题一般采用深度学习方法解决

线性判别分析(LDA)

image-20210125195311118

减少过拟合的方法

1.减少特征数量

2.正则化

image-20201210200832545

右边整项为正则化项,λ为正则化参数

第一项越低表示拟合程度越高;第二项越低,参数越小,模型越简单,避免过拟合的可能越高

若λ过大,可能会将所有参数全都消去,转变成欠拟合

逻辑回归的正则化

添加后一项以减少变量数量

image-20201210210317379

非线性假设

神经网络

MP模型

image-20201221102012721

每一层添加偏置项x0

image-20201210215010914

第一层为输入层,第二层之上为隐藏层

image-20201210215556818

设z=前一层的拟合函数,如image-20201210223649313

则下一层的拟合函数可表示为image-20201210223737857

可以用神经网络实现与、或、非、与非等逻辑判别:

image-20201210231351345

代价函数

逻辑回归代价函数

image-20201214160809963

均方误差

image-20201221102433489

反向传播(BP)算法

从前向后计算误差,从后向前对参数求导

前向传播:

image-20201214171814412

反向传播:

image-20201214172833844

算法参照https://blog.csdn.net/ft_sunshine/article/details/90221691

梯度检测

对每一个θ使用双侧差分来近似获得偏导

image-20201214230104478

缺点:比反向传播慢得多

随机初始化

若一层layer中的每个θ都被设置成同一值(如0),那么每次经过梯度下降更新θ时J(θ)和θ都会取得相同的结果,造成隐藏层的冗余。

随机初始化能够较好的解决这一问题

image-20201214231752712

INIT_EPSILON为[-ε,ε]之间的一个随机值

神经网络实现流程

  • 选择网络结构:通常只有一个隐藏层,隐藏层元的数量需要一致
  • 随机初始化
  • 前向算法计算假设函数h_θ(x)
  • 实现算法计算代价函数J(θ)
  • 后向算法计算偏导数
  • 用梯度检测计算检验后向算法是否正常运行,若正常则取消梯度检测
  • 使用梯度下降或其他高级算法减小代价函数

无监督学习

由无标签数据集∑(x_i)进行模型训练

聚类

k-means

簇分配策略

m表示数据数量,K表示聚类中心个数

image-20201216211849397

若出现无点聚类中心,一般会直接移除这个中心,若确实需要K个中心,则可以将这个中心重新随机初始化

代价函数

失真函数

image-20201216220511562

c_i为xi距离最近的簇中心的距离,μi为各个簇心位置

image-20201216221225896

先固定μi计算c_i的代价函数,在计算μi的代价函数

多次随机初始化来防止局部最优解(K较小时比较有效)

K的选择

肘部原则

从1逐渐增大k的个数直到m,对于每一个k值计算失真函数,选择如图的”肘部”作为聚类的个数

image-20201216232149551

缺点:得到的图像不一定都有”肘部”,难以确定聚类个数

下游目的决定K值:根据聚类的目的决定

降维

二维降一维

将二维特征投影到一维直线上

image-20201217152951803

三位降二维

将三位特征投影到二维平面上

image-20201217153135338

主成分分析(PCA)

将所有特征投影到低维平面,本质:舍弃掉一些信息来降低维度

与线性回归差异:线性回归为y与预测值之间的差,而PCA为与该方向距离的差,即每个特征具有同等地位

最近重构性:样本点到该支线距离足够近

最大可分性:样本点在这个直线的投影尽量分散

image-20201217155914810

svg/eig函数输出结果

image-20201217161825209

输出U为n乘n矩阵,选取前k列进行转置后乘x矩阵,得到一个输出n乘k矩阵即为降维结果

image-20201217162516657

选择压缩维度K

选择<=0.01表示保留99%的方差

image-20201217170202391

image-20201217171115111

从K=1开始不断增大K值,直到满足check式,使用svd函数一次返回的s矩阵可以满足K=1到K=n的要求

image-20201217171416462

压缩重现

有损失x=Uz

image-20201217163517574

运用PCA

PCA运用在训练集上,当建立了从x到z的映射后再将映射应用在交叉验证集和测试集上

image-20201217172423895

PCA不推荐应用于过拟合问题的处理上,因为PCA不顾y值,仅依靠x值来判断舍弃一些信息

当模型的运行过于缓慢,计算量过大时推荐使用PCA,以减少对内存和硬盘空间的需求,或用来可视化数据(需要较低的维度)

异常检测

当p<设定值ε时判断为异常

image-20201217195831567

高斯分布(正态分布)

使用独立概率的高斯分布作为p函数

image-20201217203231304

带标签数据

一个数据集中有数个已知异常样本,将这些样本仅放于交叉验证集和测试集中

用训练集来拟合p函数

image-20201217210852029

评估异常检测模型

image-20201217211700590

异常检测vs监督学习

image-20201217213041022

若负样本远多于正样本使用异常检测,若正样本较多则使用监督学习

选择异常检测的特征

对于非高斯特征,调用对数或幂函数使其满足高斯分布的特征

也可以根据实际情况根据已有特征创造出新的特征,如

image-20201217215556364

多元高斯分布

image-20201217222317108

多个单独的高斯分布无法正确的判别异常时,选择P~N(μ,Σ)作为检测函数,其中,μ为n1矩阵,Σ为nn协方差矩阵(Σ元值可设为负值)

image-20201217222107036

原始模型/多元模型

image-20201217223332100

原始模型需要人工选择特征之间的关系,多元模型能够自动分配关系;由于多元计算的复杂性一般仅当m>>n(m>=10n)时才选择多元高斯分布

推荐系统

案例:电影推荐

将每一部电影的特征分别表示维xi,将每个用户的偏好表示为θ,用户的接受程度就是θTx

根据电影特征估计用户评分x->θ

image-20201218104501666

image-20201218110107467

优化函数,1/m不影响函数本身,因此省略

image-20201218110427300

协同过滤

特征过滤

通过用户的评分可以反向判断出电影特征θ->x

image-20201218223104264

image-20201218215241513

经过不断过滤可以最终收敛到合理的θ和x值

image-20201218215440598

协同过滤算法

image-20201218224736370

不需要设置x0=1,算法会由其需求自动修改

image-20201218225056897

向量化实现

image-20201218231005778

将评分数据转换为矩阵

低秩矩阵分解

image-20201218231341779

推送最相关的内容

image-20201218231820338

均值归一化

添加新用户时,θi=0,θTx恒为0

image-20201218234345939

令Y矩阵=X矩阵,Y的每一项减去这一行的均值

大规模机器学习

进行大数据集的学习

随机梯度下降

Stochastic梯度下降

image-20201219152530144

Stochastic梯度下降对于每一个数据xi都进行一次θ的更新,拟合的过程也与批量梯度下降不同,最终会落在全局最小值附近,需要自己选择重复次数来使模型可用

Min-batch梯度下降

使用较小的批量大小,一般在有合适的向量化表示时选择这种算法

1<b<100

image-20201219152820521

检验梯度下降

每隔(如1000)次迭代后画出代价函数的图像,当增大每次间隔的迭代次数时曲线会变得更加平滑,更容易看出总体趋势

image-20201219154751851

为了让随机梯度下降更好的收敛,可以设置α随迭代次数的增大慢慢减小

image-20201219155037539

动量梯度下降

image

动量可以理解为每次迭代具有前一次迭代的惯性

在线学习

通过持续不断输入的数据进行学习,类似Stochastic梯度下降,并舍弃已使用的数据

MapReduce

image-20201219171308772

用来处理一台电脑无法处理的大规模数据问题,每个机器计算数据集的一部分,并将结果送至中央服务器结合更新θ

image-20201219165731957

在一个计算机中应用(多核)

image-20201219171048147

案例分析

OCR图像识别

image-20201219172916138

识别出图像中的文字信息

  • 定位文字位置区域
  • 对文字进行标记和分割
  • 进行文字识别
  • (识别纠正)

流水线工作流程

image-20201219172938391

行人检测系统

将图像分割成同一大小的正样本和负样本

识别对象

image-20201219173105736

滑动窗口

  • 对一个小的图像区域进行检测,然后将图像区域向右移动一个参数值,行末移至下一行进行遍历
  • 增大图像区域大小,将截得到的图像进行缩放至原有大小再次遍历,重复这一过程

image-20201219173617142

这一识别方法可以同样应用于文字识别的定位步骤

放大算子

image-20201219174239462

识别识别到的区域周围是否有其他识别到的区域,缩小其间距来进行区域链接,舍弃不合理的区域之后在周围添加矩形边框。

分割字符

image-20201219175310861

一维:训练模型后从左到右进行识别

人工数据合成

先确定增加训练样本数量能够提升算法效率再进行样本数据的扩充

  • 从零生成新数据,如将一种字体转换成一种新的字体

  • 转换已有数据(失真合成数据),如

    image-20201219211145222

上下限分析

对算法进行优化时预测每一步的优化对于准确率的影响,据此决定优化方向流水线的哪一部分

image-20201219214150609

卷积神经网络

边缘检测示例

image-20210129171616418

Padding

用0像素点来填充边缘

image-20210129121230172

  • 不使用Padding时图像会持续缩小,下一层的图像边长为n-f+1;使用Padding填充边缘使得下一层图像边长变为n=2p-f+1,当填充的像素点边长p=(f-1)/2时下一层的图像边长将于上一层相等。(f大多数都是奇数)
  • 不使用Padding时图像边缘得像素点信息无法得到有效利用,而使用Padding能够减轻这一后果

Valid卷积:不填充

Same卷积:输出大小等同输出大小

步长Stride

卷积核向右或向下移动的步长s,则输出的图像大小为[(n+2p-f)/s+1],若不为整数则向下取整

三维卷积

image-20210129144710712

通过设计不同通道得卷积样式来获得不同的输出效果,通道数与输入通道数必须相同

image-20210129145812574

添加多个过滤器来提取不同的特征,然后将各过滤器输出结果作为不同维度合成为一个立体输出层

输出层的维度(通道数)等于过滤器的个数(提取的特征量)

一般来说,随着卷积神经网络层数的增加,输出层边长不断减小,维度不断增大

池化

最大池化/平均池化:在一个过滤层大小的位置上选取最大值或平均值直接输出

池化层没有权重和参数,只有超参数,因此在计算卷积神经网络层数时经常把池化层和卷积层合并算为一层

超参数:

  • f:卷积核大小
  • s:步长

卷积神经网络示例

image-20210129162830655