人工智能基础复习5——学习

来源:互联网 发布:java线程安全集合类 编辑:程序博客网 时间:2024/05/19 21:42

18 Learning-1

Outline
机器学习概述
监督学习
    决策树学习
    线性预测
    支持向量机
无监督学习

学习
学习对于未知的环境是必要的,即当设计者缺少全知时
学习作为一个系统构建方法是有效的,即将Agent置于现实当中,而不是尝试去把它写下来
学习修改了Agent的决策机制来提高其性能

学习Agent
学习元素
设计一个学习的元素被以下所影响:
性能元素的哪些部件被学习
学习这些部件能得到什么反馈
部件的表示方法是什么

机器学习
搜索引擎、垃圾邮件检测、机器翻译、人脸识别等

为什么需要机器学习
解决分类问题
学习数据的模型
理解和提高人类学习的效率
发现人类未知的新的事务或结构
大数据:网络数据、医疗数据、生物数据…
手工分析的代价太大
计算机更廉价但越来越强大
不能手工对应用进行编程:无人驾驶、手写识别、自然语言处理、计算机视觉

自动语音识别;
计算机视觉,如物体、脸部和手写识别等
信息检索:对一个大的文本数据库进行阅读、摘要和归类对人类来说难度太大;网页:检索、分类、聚类、网页间关系
金融预测
医学诊断
生物信息学:对基因微阵列进行建模,蛋白质结构预测
机器人技术
电影推荐系统:提高电影偏好预测精度

机器学习
机器学习是一个交叉学科的领域,着重于研究具有学习、推理和行动的系统所需要的数学基础以及实际应用
其他相关名词:模式识别、神经网络、数据挖掘、统计模型等
思想来源于:统计学、计算机科学、工程学、应用数学、认知科学、心理学、计算神经学、经济学
课程目标:介绍机器学习中重要的概念、模型和算法
定义:一个计算机程序从关于任务T的经验E中学习,性能指标为P
对于垃圾邮件的例子,任务T是分类邮件为垃圾邮件或不是垃圾邮件,经验E是观察你标注邮件是否为垃圾邮件,性能指标为对垃圾邮件分类的正确数

学习的类型
一个Agent或机器接受一系列的传感器输入x1,x2,x3,x4,...
监督学习:机器同时还给了目标输出y1,y2,...,它的目标是通过学习来对一个新的输入给出正确的输出结果
无监督学习:输出未给,Agent仍旧需要对x建立可以用来推理、作出决策、预测和交流的模型
半监督学习

机器学习中的对象表示
一个实例x,表示一个特殊的对象
x通常用一个d维的特征向量x=(x1,...,xd)∈R^d来表示
每一维称为特征或者属性
连续或者离散
x在d维特征空间中是一个点
对对象进行抽象,忽视其他任何方面

特征向量表示
文本文档
词汇大小 d(~100,000)
"bag of words":每个词汇条目的数目
通常去除停用词:the, of, at, in, ...
特殊的“out-of-vocabulary"(OOV)条目捕获所有不认识的单词
图像:像素、颜色柱状图
软件:Execution profile:the number of times each line is executed
银行账户:信用评估、余额、上次存款、星期、月份、年、提款...
你和我:医疗测试1,测试2,...

关键组成部分
数据:数据集D包含了N个数据点,D = {x1,x2,...,xN}
预测:我们通常喜欢基于观测数据集对某些事务进行预测,给定D,能预测xN+1么?
模型:为了做决策,我们需要做一些假设,我们可以将这些假设表示为一个模型,同时带有一些参数
给定数据D,我们学习模型参数,从中我们可以预测新的数据点
特征抽取→模型参数学习

学习问题
房价预测:监督学习:正确答案给定;回归:预测连续的输出值(价格)
乳腺癌(恶性、良性):监督学习:正确答案给定;分类:预测离散输出值

18 Learning-2

监督学习
输入数据空间X
输出(标签、目标)空间Y
未知函数 f : X → Y
我们给定了一个标记样例的集合(xi,yi),i=1,...,N,xi∈X,yi∈Y
有限Y => 分类(classification)
连续Y => 回归(regression)

分类
给定一个集合,包含N个观察数据{(xi,yi)}i=1..N
需要映射x∈X到一个标记y∈Y
例如:数字识别Y={0,...,9} ;从微阵列数据中预测Y={desease present / absent}

决策树
学习决策树
问题:在饭店中是否等待餐桌,基于下列属性:
1.Alternate:附近是否有一个合适的候选饭店
2.Bar:饭店中是否有舒适的酒吧等待区
3.Fri/Sat:今天是否是星期五或星期六
4.Hungry:是否饿了
5.Patrons:饭店中有多少客人(None,Some,Full)
6.Price:饭店价格区间($,$$,$$$)
7.Raining:天是否下雨
8.Reservation:是否预定
9.Type:饭店类型(French,Italian,Thai,Burger)
10.WaitEstimate:对等待时间的估计(0~10,10~30,30~60,>60)

基于属性的表示方法
图见课本P585 图18.3
样例通过属性值(Boolean,discrete,continuous)来描述
对样例的分类是T或者F

决策树
一个可能的表示的假设
课本P594 图18.2
Learn Model -> Decision Tree -> Apply Model

表达能力
决策树能够表达输入属性的任何函数
例如,函数真值表的每行对应于树中的一条路径

决策树学习
目标:在训练样例中找到最小的树常数值
策略:(递归)选择最重要的属性作为(子树的)根节点
function DTL(examples,attributes,default) returns a decision tree    if examples is empty then return default    else if all examples have the same classification then return the classification    else if attributes is empty then return MODE(examples)    else        best ← CHOOSE-ATTRIBUTE(attributes,examples)        tree ← a new decision tree with root test best        for each value vi of best do             examplesi ← { elements of examples with best = vi }            subtree ← DTL(expmplesi,attributes-best, MODE(examples))            add a branch to tree with label vi and subtree subtree        return tree

选择一个属性
策略:一个好的属性将样例划分为“全正”或“全负”的子集(理想状态下)
相比于Type,Patrons是个更好的选择

利用信息论
为了实现DTL算法中的Choose-Attribute
信息量(Entropy熵):

信息增益:


决策树从12个样例中学习,图见课本P586 图18.6

性能评价
我们怎么知道h≈f
1.利用计算/统计学习理论
2.让h在新的样例测试集上进行尝试(利用相同样例空间作为训练集的分布)
学习曲线 = % correct on test set as a function of training set size

基于分类的决策树评价
优点:
建造的费用不高;对于未知的记录进行分类时速度极快;对于小规模的树比较容易解释;对于许多简单的数据集,相比其他分类技术准确度更高

K nearest neighbor classifier 最近邻模型
Section 20.4

Linear predictions 线性预测
二进制分类(如预测是否是垃圾邮件):x → f → y∈{-1,+1}
回归(如预测房价):x → f → y∈R

分类
分类=从有限离散的标记中学习,机器学习中的主要问题

线性分类器
二进制分类可以看成是在特征空间中分离类别的任务
w^T x + b > 0     w^T x + b = 0     w^T x + b < 0
定义y^ = 1 ,如果w^T x + b > 0;否则y^ = -1
y^ = h(x) = sign(w^Tx + b)
需要寻找界限的w(方向)和b(位置)
希望最小化分类器h:X→Y的期望0/1损失
L(h(x),y) = 0 if h(x)=y; =1 if h(x)≠y

线性分类器→损失最小化
理性情况下我们希望找到分类器h(x)=sign(s^Tx + b)使得0/1损失最小:minw,b∑i L0/1 (h(xi),yi)
不幸的是,这是个困难的问题
Alternate loss functions:
L2(h(x),y) = (y - w^Tx - b)^2 = (1 - y(w^Tx + b))^2
L1(h(x),y) = |y - w^Tx - b| = |1- y(w^Tx + b)|
Lhinge(h(x),y) =  (1-y(w^Tx + b))+

最小二乘分类
最小二乘损失函数:L2(h(x),y) = (y - w^Tx - b)^2
目标:学习分类器h(x) = sign(w^Tx + b)使得最小二乘损失最小化:
Loss = min∑L2(h(xi),yi) = min ∑ (yi - w^Txi - b)^2

解最小二乘分类
解w
见PPT
通用线性分类
基函数
f(x,w) = b + ω1Φ1(x) + ω2Φ2(x) + ... + ωmΦm(x)

回归
回归=从连续标记数据中学习

通用线性/多项式回归
模型复杂度和过度拟合
见PPT
奥卡姆剃刀原则:优先选择与数据一致的最简单的假设

预测误差
训练误差:出现在训练集上的误差
测试误差:出现在测试集上的误差
泛化误差:未知记录上的期望误差

低度拟合:当模型过于简单,训练误差和测试误差都比较大
过度拟合:当模型过于复杂,训练误差较小,但测试误差较大

规范化
L1规范化、L2规范化
解决L2规范化:minw (Xw - y)^2 + λ ||w||^2
L2:易于优化,闭合形式的解
L1:稀疏

大于两类?
给定
N×d数据矩阵X
N×k标记矩阵Y
N=#训练样例
d=#特征
k=#目标
假设k<d
学习模型fw: X → Y的参数W(d×k)
见PPT

最小二乘分类的评价
不是分类的最好方法,但是 
易于训练,闭式解;做好了和其他分类学习原则联系的准备

交叉验证
基本策略:如果一个模型过拟合了(对数据太敏感),那么该模型不稳固,移除数据的部分会改变拟合;我们可以取出部分数据,将模型与剩下的部分进行拟合,并进行测试
见PPT

模型/参数学习范例
选择一个模型类别
NB,KNN,决策树,loss/regularization combination
模型选择:交叉验证
训练:优化
测试

总结
监督学习
    分类:贝叶斯模型、决策树、最小二乘分类
    回归:最小二乘回归

20 Support vector machines

线性分类
哪个线性分类器是最优的?
分类间距
线性分类的几何学
判别式函数:y^(x)=w^Tx + b
如果按比例放大:w → aw,b → ab,距离不会改变
样例xi到分类器的距离是r=|w^Txi + b| / ||w||
定义一个线性分类器的间距为在碰到数据点之前界限能够扩展的距离
与样例接近的超平面称为支持向量,分类器的间距m指的是支持向量间的距离

最大间距分类
根据intuition和PAC理论,扩大间距是有利的;注意到只有在支持向量中才有用,在其他训练样例中被忽略
怎样由w和b计算得到m呢?
训练集{(xi,yi)}j=1..N,xi∈R^d,yi∈{-1,1}让超平面以间距m分离开,则对每个训练样例(xi,yi):
w^Txi + b <= -c if yi=-1
w^Txi + b >= c if yi = 1        <=>        yi(w^Txi + b) >= c
对于每个支持向量xs,上述不等式是个等式: ys(w^Txs + b) = c
在等式中,可得每个xs和超平面的距离是
r = |w^Txs + b| / ||w|| = ys(w^Txs + b) / ||w|| = c / ||w||
此时,间距可以用w和b来表示:
m = 2r = 2c / ||w||
这就是我们的最大间距分类问题:
maxw,b 2c / ||w|| subject to yi(w^Txi + b) >= c, ∀i
maxw,b c / ||w|| subject to yi(w^Txi + b) >= c, ∀i
注意到c的大小只是和w、b成比例,不会改变分类界限
所以,我们有了一个更简洁的问题:
maxw,b 1 / ||w|| subject to yi(w^Txi + b) >= 1, ∀i
这引出了有名的支持向量机——最好的“off-the-shelf"监督学习算法

学习作为优化
参数学习
对象函数→优化算法

支持向量机
带有线性约束的凸二次规划问题
maxw,b 1 / ||w|| subject to yi(w^Txi + b) >= 1, ∀i
获得的间距现在给定为1 / ||w||
只有很少的分类约束相关——支持向量
约束优化
我们可以通过使用商业的二次规划quadratic programming(QP)代码来解决
但是我们想更深入了解拉格朗日对偶性,因此上述问题的解决方法是它的对偶形式
更深入的了解:支持向量、核……

二次规划
Minimize(with respect to x)
g(x) = 1/2 x^TQx + c^Tx subject to one or more constraints of the form:
Ax <=b (不等式约束)
Ex = d (等式约束)
如果Q>=0,那么g(x)是个凸函数,此时二次规划具有全局最小量
支持向量机的二次规划:
minw,b w^Tw subject to yi(w^Txi + b) >= 1, ∀i

解决最大间距分类
我们的最优化问题:
minw,b w^Tw subject to 1-yi(w^Txi + b) <= 0,∀i      (1)
拉格朗出:
L(w,b,α) = 1/2w^Tw - ∑i=1~n αi [ yi(w^Txi + b)-1 ] = 1/2w^Tw + ∑i=1~n αi [1-yi(w^Txi + b)]
考虑每个约束: maxαi>=0 αi [ 1-yi(w^Txi + b)] = 0        if w, b satisfies primal constraints        = ∞ otherwise
(1)式可以重新写为:minw,b maxα>=0 L(w,b,α)
对偶问题为:max α>=0 minw,b L(w,b,α)
首先通过w和b使L最小化:
公式见PPT17页
详细过程也不再给出(公式太多)

支持向量机的解释
最优w是少量的数据点的线性联合,稀疏可以视作可NN分类器构建中的数据压缩
要计算加权αi,并且利用支持向量机,我们需要详细说明样例xi^Txj之间的内积(或核)
我们通过比较新样例x'和支持向量y*=sign(∑i∈SVαiyi(x^Tix') + b)来做决策

软间距分类
如果训练集不是线性分离的呢
允许加入松弛变量ξi来支持错误分类和噪声样例,产生的间距称为软间距
公式见PPT25页
如果xi没有错误则ξi=0
ξi是错误数量的上限
参数C可以视为控制软度的一种方式:它权衡了扩大间距和拟合训练集(减少错误)的关系;大C→更不易犯错

优化问题
这个新约束优化问题的对偶形式为:……
这和线性分类情形中的优化问题很类似,除了现在对αi有了一个上界C
可以再次用QP方法来求解αi

Loss in SVM
损失用ξi来表示, hinge loss
损失函数:
回归:平方根损失L2;绝对损失L1
二进制分类:0/1损失、平方根损失L2、绝对损失L1、Hinge loss(支持向量机)、Logictic loss(Logistic regression)

线性SVM回顾
分类器是个分类的超平面
最重要的训练集是支持向量,它们定义了超平面
二次优化算法可以确定哪一个训练点xi是带有非零拉格朗日乘数αi的支持向量
在问题的对偶形式和训练点中均出现了内积

非线性:样例
输入:x,病人信息和健康状况征兆
输出:y,健康(positive is good)

线性空间特征
哲学:几乎任何特征都是相关的
医疗诊断特征:健康、重量、体温、血压等
三个问题:非单调性、非线性、特征间的相互影响

非单调性
特征Φ(x) = (1; temperature(x))
输出:health y
问题:favor extremes; true relationship is non-monotonic
Solution: transform inputs
Φ(x) = (1; (temperature(x)-37)^2)
缺点:requires manually-specied domain knowledge
Φ(x) = (1; temperature(x); temperature(x)^2)
通常:features should be simple building blocks to be pieced together

特征间相互作用
Φ(x) = (height(x); weight(x))
输出: health y
问题:不能得到身高和体重之间的关系
Φ(x) = (height(x)-weight(x))^2
解决:定义联系输出的特征
缺点:requires manually-specified domain knowledge
Φ(x) = [height(x)^2;weight(x)^2;height(x)weight(x)] cross term
解决:添加多量度特征

Linear in what?
Prediction driven by score:wΦ(x)
Linear in w? Yes
Linear in Φ(x)? Yes
Linear in x? No!
Key idea : non-linearity
Predictors fw(x) can be expressive non-linear functions and decision boundaries of x
Score wΦ(x) is linear function of w and Φ(x)

非线性SVM
特征空间
原先的特征空间总是可以映射到更高维的数据集分离的特征空间

The "Kernel Trick"
回忆SVM优化问题:……
……
定义核函数K为K(xi,xj) = Φ(xi)^TΦ(xj)

核方法
Features viewpoint : construct and work with Φ(x) (think in terms of properties of inputs)
Kernel viewpoint : construct and wok with K(xi,xj) (think in terms of similarity between inputs)

特征映射和核的一个实例
……

核函数的更多例子
……
核矩阵
……

矩阵公式
……
非线性SVM——RBF核
……
总结:支持向量机
线性分类案例→硬间距SVM
一次规划
二次规划
非线性分类→软间距SVM
非线性SVM→核技巧
(这一章建议结合PPT复习)

21 Unsupervised learning

监督学习的成功:
文档分类、蛋白质预测、人脸识别、语音识别、汽车转向等
但是:
标记数据在某些领域可能会比较稀缺或者比较昂贵:语音、医疗数据、蛋白质
无标记数据可能会更易获得也更廉价
我们可以使用无标记数据来学习么

无监督学习
从无标记数据中学习(无监督)
训练集D={x1,x2,...,xN} → 学习算法 → 预测规则f(x)→y
我们可以从无标记数据中预测什么?
低维结构——主元分析(PCA)(线性)
流行学习(非线性)
数据中的组(Groups)或者群(clusters)
密度估计

主元分析
什么是维数降低
为什么会维数降低
主元分析(PCA)
利用核进行非线性PCA

维数降低
维数降低是指从原先的高维数据映射到一个低维空间
维数降低的标准在不同的问题背景中可能不一样:无监督背景:最小化信息损失;监督背景:最大化分类区别
给定d个变量的数据点集合{x1,x2,...,xn},计算线性转换(projection)
P∈R^(d×m) : x∈R^d → y = P^Tx ∈ R^m( m << d)
高维数据:基因表示、人脸图像、手写数字

为什么会维数降低
许多机器学习和数据挖掘技术可能对于高维数据都不是很有效
维数灾害
随着维数的增加,查询的精度和效率快速降低
本征维度可能很小

维数灾害
当维数增加时,数据在其占据的空间开始变得稀疏了
对群和偏离检测十分重要的点之间的密度和距离定义开始变得没有意义了
如果N1=100代表了对于一个单一输入问题的样例密度,那么N10=100^10是维度为10时保持相同的样例密度所需的样例大小
……

可视化:将高维数据投射到2D或者3D
数据压缩:有效的存储和检索
噪声移除:对于查询精度有着积极的效果

特征减少的应用:人脸识别、手写数字识别、文本挖掘、图像检索、微阵列数据分析、蛋白质分类等

主元分析
PCA:
寻找一个比原变量集更小的新的变量集合,来降低数据的维度
能获得大多数样例的信息
对于数据压缩和分类十分有效
新的变量,称为主元(PCs),是无关联的,按照每个主元所获得的信息量进行排序

主元的几何表示:见PPT

代数解释——1D
毕达哥拉斯:与线间的最小平方距离等同于在线上的投影的最大平方

主元的代数推导
PPT26
主元的最优性质
PPT32
使用核的非线性PCA
PPT36

Clustering 聚类
在数据中有分组么?
每个分组是什么?
多少个分组?
怎么确认它们?

聚类
将数据对象分组为子集或群:在群内有高的相似度,在群之间有低的相似度

输入:输入点的训练集:Dtrain = {x1,...,xn}
输出:每个点对群赋值:(C(1),...,C(n)) where C(i)∈{1,...,k}

K-means聚类
具体介绍和算法略
特点:
简单、有效
总是聚集的
局部最小值
但是:
K-means问题是NP-hard的
没有全局解
对于噪声和偏离点不够健壮






原创粉丝点击