机器学习的动机?
人们在现实世界中在越来越多的事物上输给了机器。例如计算速度。但是机器很死板,只能按照固定的程序来运作。就像编程中的硬代码。人刚出生的时候,也是懵懂无知,刚开始学习的时候也是别人给我们填充,和机器的硬代码差不多。所以我们也希望能教会机器学习、让他自己学习。从而让机器在更多人类无法做到或者做得不够好的领域发挥更大的作用。
学习是什么样的一个过程?
人类在刚开始学习的时候是父母教我们说话。例如指着苹果说这是苹果,把他的注意力引到父亲,对着他说让他叫爸爸等等。再例如学英语单词时有中文对照、实物对照。这些过程都包括了学习的资料data,教导的行为,结果的反馈。所以我们希望提高data给机器,教导的行为(对于函数),结果的反馈(对应评价标准)。
学习需要满足什么样的条件:
1、是能够学习的
2、有可以学习的data
3、是人类不愿意或者做不到的事。我们教机器学习是希望他帮我们做我们做不好或者不容易做到的事。否则,我们要他有何用。
即学习是这样的一个过程:
input:X
ouput:Y
s.t.
∃
d
a
t
a
,
真
映
射
f
:
x
−
−
>
y
\exist data,真映射f:x-->y
∃data,真映射f:x−−>y
这样我们可以通过演算法
A
,
获
得
映
射
g
:
x
−
−
>
y
,
g
∈
m
a
t
h
c
a
l
H
,
且
\mathcal A,获得映射g:x-->y,g \in mathcal H,且
A,获得映射g:x−−>y,g∈mathcalH,且s.t.
∣
f
−
g
∣
<
ϵ
|f-g|<\epsilon
∣f−g∣<ϵ
学习的类型
根据特征空间的不同分为:分类、回归、结构化学习等
根据Y来区分:有监督学习、无监督学习、半监督学习(只存在部分y)。另外强化学习是一个比较特殊的类别:模型无法给出真实的输出y。对偏向正向的y给予正向激励,负向的给予负激励。一步步逼近真实解。
根据获得数据的方式分为:
①批量学习:一次性拿到一整批数据,然后学习。应用最广泛。
②在线学习:数据实时更新,来一个数据,更新一次模型。绝大多数生成模型都可以使用这种方式。例如朴素贝叶斯。判别模型中的PLA、原始形式的SVM也可以。(个人认为对偶形式SVM最好不要这种形式,对偶形式的模型只记录了SV,添加很少的点就去再求一次SV丧失了对偶形式的优势——内存优势、计算优势)
③active learning:让机器自己提出问题。优势之一是获取样本比较困难时,只对一些重要的label提出要求,可以节约时间和成本。