2021年7月11日
深度学习:狭义地来说,就是具有较多层的神经网络。
整个学习过程; 先看西瓜书,在看 Datawhale吃瓜教程. ,最后要看南瓜书。
2021年7月12日
机器学习:将“经验”以“数据”的方式存储下来 ⇒ \Rightarrow ⇒产生模型算法-学习算法 ⇒ \Rightarrow ⇒ 产生模型-分析新的数据-给出判断
训练模型-学习器
样本:记录一个事件或者一个对象的描述,通常假设 独立同分布
数据集:包含有若干个示例的样本。
属性或者特征:反映事件或对象在某方面的表现或性质的选项。 ⇒ \Rightarrow ⇒ 张成的一个空间称为属性空间
维数:样本空间D中包含了m个示例,每个示例中是d维的样本空间,d称为维数。
训练集:训练过程中使用的数据-训练数据,每一个样本称为训练样本,集合称为训练集。
标记空间:包含样例的集合是“标记空间”或者“输出空间”。
根据预测的结果不同,学习任务的种类也会不同:
只涉及两个样本:
二分类文体 ⇒ \Rightarrow ⇒ 一个类称为“正类”,一个称为“反类”
学习主要分为两类:
1.有监督学习 → \rightarrow → 样本有标记,
举例:预测的是连续值 → \rightarrow → 回归
预测的是离散值 → \rightarrow → 分类
2.无监督学习 → \rightarrow → 样本无标记 举例:聚类-分为若干个组,每一个组称为一个“簇”,学习前无标记,并且很多标签是未知的。
测试和测试样本学习完模型后,进行预测的过程称为“测试”,被预测的样本称之为“测试样本”。
泛化能力:学习模型适应新样本的能力。
假设空间一般很大,会存在一个假设集合,也是版本空间
书中西瓜案例的假设空间和版本空间:
PS:这个地方书中说如果所有假设不存在,不存在好瓜坏瓜。于是整个假设空间的样本数为: 4 ∗ 3 ∗ 3 + 1 = 37 4*3*3+1=37 4∗3∗3+1=37
也就是说:
色泽:青绿、乌黑、浅白、其他
根蒂:硬挺、蜷缩、其他
敲声:清脆、混浊、浊响
奥卡姆剃刀原理:如果有多个假设与观察一致,则选择最简单的那个。
前提:所有样本独立同分布,也就是说所有问题出现的机会和所有问题同等重要 ⇒ \Rightarrow ⇒没有免费的午餐定理NFL定理
考虑一个二分类的总误差和学习算法的关系时,经过计算,总误差和学习算法无关!
1950年图灵测试的文章中就提到了机器学习的可能。
决策树:以信息论为基础,以信息熵的最小化为目标,模拟了人对概念进行判定的树形流程。
二十世纪五十年代:
基于神经网络的连接主义学习:感知机、Adaline
基于逻辑的符号主义学习:结构学习系统、概念学习系统、基于逻辑的归纳学习系统
以决策理论为基础的学习技术强化学习技术:学习机器。
1980年美国卡耐基梅隆大学举行了第一届机器学习研讨会。
1986年Machine Learning机器学习专刊创刊。
R.S.Michalaski把机器学习分为四类:
1.从样例中学习
2.在问题求解和规划中学习
3.通过观察和发现学习
4.从指令中学习
《人工智能手册》把机器学习分为四类:
1.机械学习——“死记硬背式学习”——没有学习只有信息存储和检索
2.示教学习
3.类比学习
4.归纳学习——“从样例中学习”
二十世纪八十年代:机器学习成为解决知识工程瓶颈问题的关键
“从样例中学习"的主流是符号学习–例如决策树
基于逻辑学习的主流代表–归纳逻辑程序设计-可看做机器学习和逻辑程序设计的交叉,使用一阶逻辑进行知识表示,通过修改和扩充逻辑表达式来完成数据的归纳。
另外一个主流是基于神经网络的连接主义学习,这个产生的是黑箱模型,最大的局限性是其试错性,学习过程涉及大量参数,参数设计缺乏理论指导,主要靠手工"调参”。
二十世纪九十年代中期:
"统计学习"闪亮登场,比如支持向量机、核方法
二十一世纪初,连接主义学习卷土重来,掀起"深度学习"的热潮,主要原因是因为数据大了,计算能力强了。
机器学习目前已经覆盖我们生活的方方面面,自动驾驶、推送、甚至影响到政治生活。
总而言之,学就完事。
2021年7月13日
PS:好多地方看傻了。。怎么可以这样算,原来还能这样算。。。
错误率:分类错误的样本数占样本总数的比例称为"错误率"。
精度:精度=1-错误率
例如:
m个样本中,有a个样本分类错误
错误率E=a/m,
精度=1-a/m
错误率:学习器中在训练集上的误差称之为"训练误差"或"经验误差"。
泛化误差:在新样本的误差。
过拟合:训练样本学习的太好了,泛化能力下降。
欠拟合:训练样本学习的较差,泛化能力也不高。
导致过拟合的原因最常见的是学习能力过于强大。
欠拟合比较容易克服,过拟合很麻烦。
需要使用"测试集",利用测试集的泛化误差的近似。
一般在包含m个样例的数据集D中,既要训练S,又要测试T,下面是几种常见的做法。
直接拆分为两个互斥的集合。
问题:如果训练集S包含太多,T小,所以评估不准确,如果T多,S小, S与D的差别更大,所以T评估完也和D有很大的差别。降低了评估结果的保真性。
常见做法:2/3~4/5的样本训练,剩下的样本测试。
数据集D划分为k个子集,k折交叉验证p次,也就是最终的评估结果是p次的k折交叉验证结果的均值。
常见的:10次10折交叉验证法
交叉验证法特例:
留一法:
数据集D,包含m个样本,k=m。
缺陷:训练m个模型开销叫大。
给定包含m个样本的数据集D,采样产生D’,每次随机从D中挑选一个样本,拷贝放入D’,然后在将该样本放入D,重复m次,所以我们就得到了包含m个样本的数据集D’,显然,D中有一部分会在D’中多次出现。
样本在m次采样中不被采到的概率是 ( 1 − 1 / m ) m (1-1/m)^m (1−1/m)m
也就是说,D中的数据有36.8%的概率出现在D’中。
优点:在数据量较小的情况下有用,而且从初始数据集中产生了多个不同的训练集,对集成学习有很大的好处。
缺点:自助法产生的数据集会改变初始数据集的分布,引入估计偏差。
参数配置不同,学得模型的性能会有显著的差别。
学习算法的很多参数在实数范围内取值,可能不行,所以要对每个参数选定范围和变化步长,但是这样的参数往往不是最佳值,但是是权衡计算开销和性能折中的结果。
例子:如果有3个参数,每个参数5个候选值,每一组训练/测试集有 5 3 = 125 5^3=125 53=125个模型考查。
性能度量:衡量模型泛化能力的评价标准
错误率和精度的定义:
更一般的:
横坐标,查全率,纵坐标查准率,比较P-R曲线的面积,面积越大越好。
平衡点:查准率=查全率的值
** F1度量**
F1的一般形式Fβ
β>0度量了查全率对查准率的重要性,β=1退化为F1,β>1查全率更大影响,β<1查准率更大影响。
二分类混淆矩阵时:
ROC全称"受试者工作特征"
横轴是:“假正例率”–FPR
纵轴是:“真正例率”–TPR
AUC的面积越大越好。ACU面积可估算为:
利用统计假设检验,默认错误率为性能度量,用ε表示。
方差度量了同样大小得训练集的波动所导致学习性能的变化,也就是刻画了数据扰动所造成的影响。
噪声表达了当前任务上任何学习算法所能达到的期望泛化误差的下界,刻画了学习问题本身的难度。
偏差-方差分解说买,泛化性能由学习算法的能力、数据的充分性以及学习的本身难度所共同决定的。
偏差和方差是有冲突的。如图。
2021年7月14日
这里其实可以看到,每个特征的权重比就显现出来了,而且书中说,更强大的非线性结构是引入层级结构或者高级映射获得的。所以这种线性模型非常基础也非常重要。
将每一个属性的种类,要数字化,如果说性别,男和女,那就可以是数字1和0,如果说身高,高中低,那就是1, 0.5, 0.,如果没有关系的话那就转化为三维向量。
西红柿(1,0,0),芒果(0,1,0),西瓜(0,0,1)。
回归任务最常用的性能度量是均方误差,因为均方误差有比较好的几何意义,对应了最常用的**“欧氏距离”,最小二乘法就是基于均方误差进行模型求解的。
求解均方误差最小化的过程称为参数估计**
其实就是对w,b分别求导,令其等于0,找到最优的闭式解。
我看到这里就非常好奇,什么是闭式解
后来一看,好家伙,就是解析解。
在解组件特性相关的方程式时,大多数的时候都要去解偏微分或积分式,才能求得其正确的解。依照求解方法的不同,可以分成以下两类:解析解和数值解。
解析解(analytical solution)就是一些严格的公式,给出任意的自变量就可以求出其因变量,也就是问题的解, 他人可以利用这些公式计算各自的问题.
所谓的解析解是一种包含分式、三角函数、指数、对数甚至无限级数等基本函数的解的形式。
用来求得解析解的方法称为解析法〈analytic techniques〉,解析法即是常见的微积分技巧,例如分离变量法等。
解析解为一封闭形式〈closed-form〉的函数,因此对任一独立变量,我们皆可将其带入解析函数求得正确的相应变量。
因此,解析解也被称为闭式解(closed-form solution)
数值解(numerical solution)是采用某种计算方法,如有限元的方法, 数值逼近,插值的方法, 得到的解.别人只能利用数值计算的结果, 而不能随意给出自变量并求出计算值.
当无法藉由微积分技巧求得解析解时,这时便只能利用数值分析的方式来求得其数值解了。数值方法变成了求解过程重要的媒介。
在数值分析的过程中,首先会将原方程式加以简化,以利后来的数值分析。
例如,会先将微分符号改为差分符号等。然后再用传统的代数方法将原方程式改写成另一方便求解的形式。
这时的求解步骤就是将一独立变量带入,求得相应变量的近似解。
因此利用此方法所求得的相应变量为一个个分离的数值〈discrete values〉,不似解析解为一连续的分布,而且因为经过上述简化的动作,所以可以想见正确性将不如解析法来的好。
数值解是在特定条件下通过近似计算得出来的一个数值,而解析解为该函数的解析式。
解析解就是给出解的具体函数形式,从解的表达式中就可以算出任何对应值; 数值解就是用数值方法求出解,给出一系列对应的自变量和解。
对于多元回归,会把数据集表示为m×(d+1)的矩阵,就是d个属性值后,最后一列为1.
如果满秩矩阵或者正定,那有唯一的解析解。现实中很多不是满秩矩阵,那就有很多个解,常见的做法是引入正则化项。
如果我们的线性模型是指数级变化的,那么我们就要对其取个对数,也就是让w,b试图逼近于y。
单位阶跃函数来了,它来了!这个主要是考虑分类任务,至于为什么这么激动,主要是因为这个在数字信号处理上面非常常见这个函数。
转化成一个连续的函数就是对数几率函数,这就是对数几率回归,不需要假设分布,不仅仅可以得到近似的概率也可以预测出类别。
最主要的:对数函数是凸函数,也就是任意阶可导,这样就非常方便寻找最优解。
自己看书的时候,后验概率其实就是一种条件概率。后面关于凸优化理论的优化方法牛顿法和梯度下降法都不太熟悉。
线性判别分析(LDA)的思想就是把一类的点,投影到同一条直线上,并且它们尽可能接近,不一样的点尽可能的远离。
就是说,让不同的点尽量远离,让同类的点尽量接近,这就是转化后的最大化的目标。
定义类内散度矩阵,然后再定义类间散度矩阵,最后发现LDA最大化的目标就是广义的瑞利商。
而且这个LDA可以利用贝叶斯决策理论来证明,两类数据同先验,满足高斯分布而且协方差相等的情况下,LDA达到最优分类。多分类任务中,LDA也可以做相应推广。
多分类问题的话,可以拆解成多个二分类,那么拆解的方法就有一对一(OvO)、一对余(OvR),多对多(MvM)。
如果一对一的话,可以拆分 N ( N − 1 ) / 2 N(N-1)/2 N(N−1)/2个二分类的任务,
如果一对余,那就是一个当正例,其他的都放在一起算做反例。可以拆分 N N N个二分类的任务,
如果多对多 ,就比较特殊,不能随便把一堆分为正,一堆分为反,需要采用比如最简单的“纠错输出码”的技术。
纠错输出码的编码越长,纠错能力也就越强。而编码越长,意味着所需要的训练分类器就越多,所以编码长度有限,而且就是说这个两个不同种类的编码距离余越远,纠错能力就越强。
前面就是觉得每个分类的样本数大概都差不多,如果有一个998个正例,2个反例,只要将结果改成正例,那么正确率就99.8%
需要使用“再缩放”,这个基本策略主要有三种方法:
1,直接去除一些反例,使得正反案例相等。—欠采样–减少案例
2,对正例过采样,增加正例,再进行学习。—过采样–增加案例
3,原始案例不变,然后对预测值调整,-----“阈值移动”
可以很明显的看到,过采样算法开销要远远大于欠采样,同时过采样的算法非常重要,不然就会过拟合,比较著名的是SMOTE算法。对正例插值然后过采样。
欠采样比较著名的算法是EasyEnsemble,利用集成学习的机制,将反例分为若干个集合供不同的学习器学习,这样每个学习器都欠采样,全局来看又不会失去重要信息。
机器学习的三个要素:
对于正定的验证就是求海塞矩阵,然后判断正定性。
概率质量函数的要求: P(1)=P1 P(0)=P0
说到这里我想到了我当时学习决策树的时候用到了这种信息论的相关知识。信息熵其实就是度量随机变量X的不确定性。
信息熵:
2021年7月21日
决策树是一个递归流程,有三种情形会导致递归返回:
1,当前结点的样本都属于同一类,无需划分。
2,当前属性集为空,或者所有样本属性上取值相同。–该结点记作叶结点,将类别设定为该结点的所含样本最多的类别。
3,当前结点包含的样本合集为空,不能划分。
请参考第三章扩展信息信息增益和信息熵
推广信息增益,缺失越多降低越多的权重。
使用斜划分来解决对变量决策树的问题。
2021年7月24日
神经元模型
在这个模型中,神经元接收到来自n个其它神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元接收到的总输入值将神经元的阈值进行比较,然后通过“激活函数”处理以产生神经元的输出。
感知机与多层网络
感知机有两层神经元组成,输入层接收外层输入信号传递给输出层,输出层是M-P神经元,亦称“阈值逻辑单元”。
感知机能容易实现逻辑与、或、非运算。感知机学习规则(权重的学习),感知机权重调整方式如下:
若感知机对训练样例(x, y)预测正确,则y^ = y,则感知机不发生变化,否则将根据错误的程度进行权重调整。
感知机只有输出层神经元进行激活函数(阶跃函数)处理,即只拥有一层功能神经元,学习能力有限。与、或、非问题都是线性可分的,若两类模式是线性可分的,即存在一个线性超平面能将它们分开,则感知机的学习过程一定会收敛而求得适当的权向量w;否则感知学习过程将会发生振荡,w难以稳定下来,不能求得合适姐,eg:”异或“的非线性可分问题。
解决非线性可分问题–> 多层神经元。多层前馈神经网络。神经网络的学习过程,就是根据训练数据来调整神经元之间的“连接权”以及每个功能神经元的阈值;即神经网络学到的东西蕴涵在连接权与阈值中。
误差逆传播算法
训练多层神经网络 --> 误差逆传播算法(BP算法)。通常说“BP网络”一般是指用BP算法训练的多层前馈神经网络。
补充:神经网络输入处理:离散属性需先进行处理,若属性值间存在“序”关系则可进行连续化;否则通常转化为k维向量,k为属性值数。
BP算法基于梯度下降策略,以目标的负梯度方向对参数进行调整。BP算法的目标是要最小化训练集D上的累积误差。(补充:不同层次的学习率可设置不一样)
“标准BP算法”每次仅针对一个训练样例更新连接权和阈值,而且对不同样例进行更新的效果可能出现“抵消”现象。”累积BP算法“直接针对累积误差最小化,它在读取整个训练集D一遍后才对参数进行更新,其参数更新频率低得多。标准BP算法和累积BP算法的区别类似于随机梯度下降(SGD)与标准梯度下降之间的区别。
只需一个包含足够多神经元的隐层,多层前馈网络就能以任意精度逼近任意复杂度的连接函数 --> BP神经网络过拟合。两种策略缓解BP网络的过拟合:1.根据训练集和测试集的误差“早停”。2.正则化(网络复杂度:连接权与阈值的平方和)。λ用于对经验误差与网络复杂度这两项进行折中,常通过交叉验证法来估计。
参数空间内梯度为零的点,只要其误差函数值小于邻点的误差函数值,就是局部极小点。基于梯度的搜索是使用最广泛的参数寻优方法。
跳出局部极小的策略:a.多种不同参数值初始化多个神经网络,按标准方法训练后,取其中误差最小的解作为最终参数。b.使用”模拟退火“技术,模拟退火在每一步都以一定的概率接受比当前解更差的结果(次优解)。c.随机梯度下降。d.遗传算法。
其它常见神经网络
RBF(径向基函数)网络是一种单隐层前馈神经网络,它使用径向基函数作为隐层神经元激活函数,输出层则是对隐层神经元输出的线性组合。
ART(自适应谐振理论)网络[竞争型学习,无监督学习策略,网络的输出神经元相互竞争,每一时刻仅有一个竞争获胜的神经元被激活],ART网络由比较层、识别层、识别阈值和重置模块构成。神经元数目可在训练过程中动态增长以增加新的模式类。
SOM(自组织映射)网络是一种竞争学习型的无监督神经网络,它能将高维输入数据映射到低维空间(通常为二维),同时保持输入数据在高维空间的拓扑结构,即将高维空间中相似的样本点映射到网络输出层的邻近神经元。
级联相关网络(学习网络结构),两个主要成分:”级联“和”相关“。”相关“是指通过最大化新神经元的输出与网络误差之间的相关性来训练相关的参数。级联相关网络无需设置网络层数、隐层神经元数目,且训练速度较快,但其在数据较小时易陷入过拟合。
Elman网络(递归神经网络)允许网络中出现环形结构,从而可让一些神经元的输出反馈回来作为输入信息。
Boltzmann机,基于能量的模型。Boltzmann机训练的过程是将每个训练样本视为一个状态向量,使其出现的概率尽可能大。标准的Boltzmann机是一个全连接图,现实中常用”受限Boltzmann机(RBM)“,受限Boltzmann机仅保留显层与隐层之间的连接,从而将Boltzmann机结构由完全图简化为二部图。
深度学习
增加隐层的数目比增加隐层神经元的数目更有效,因为增加隐层数不仅增加了拥有激活函数的神经元数目,还增加了激活函数嵌套的层数。But,多隐层神经网络难以直接用经典算法(eg:BP算法)进行训练,因为误差在多隐层内逆传播时,往往会”发散“而不能收敛到稳定状态。
无监督逐层训练是多隐层网络训练的有效手段:预训练+微调。
”权共享“:让一组神经元使用相同的连接权,eg:CNN,使用相同的卷积滤波器提取输入的特征。
2021年7月26日
其实这一章整个的假设都是训练的样本在整个样本空间都是线性可分的,也就是存在一个超平面可以将不同的类别完全分开。
硬间隔:就是所有都符合要求
软间隔:允许有一些样本不满足约束条件。
会有很多种损失函数:
学习笔记出处:
Datawhale吃瓜教程
麻烦大家一键三连~~
Datawhale吃瓜教程.
本次组队队伍名称:冰镇西瓜队
感谢Datawhale开源社区