初步印象
机器学习并没有明确而严格的定义,下面是两个大师给出的定义(描述)
亚瑟·塞缪尔(Arthur Samuel)将其描述为:“让计算机无需明确编程即可学习的研究领域。” 这是一个较旧的非正式定义。
Tom Mitchell 提供了一个更现代的定义:“如果计算机程序在 T 中的任务上的性能(以 P 衡量)随着经验 E 提高,则称其从经验 E 中学习关于某类任务 T 和性能度量 P。“
我把机器学习看做一个黑盒子的训练过程。黑盒子的内部结构是可变,当然,盒子的初步结构和变化规则由编程者确定。黑盒子内部结构的变化过程就是黑盒子的训练过程,训练的目的当然是为了更好地执行我们给它布置的任务。有时候人类能很好地推测出盒子里的结构,更多时候,即当机器在处理大量数据、复杂问题时,我们很难再准确地描述出这个黑盒子的内部结构。
机器学习分为有监督学习和无监督学习两大类。
有监督学习
有监督学习指我们知道正确的输出应该是什么样子,给出样本的输入,机器应该得到样本的输出。机器从没有正确得到样本输出,到得到了样本输出或逐渐接近样本输出的过程,就是有监督学习的过程。有监督指的是样本中有正确答案。
有监督学习问题中分为回归问题和分类问题。简单理解为回归是拟合问题,分类是判断正确问题。
无监督学习
无监督学习指没有基于预测结果的反馈,我们从数据中无法获知正确答案。然而,无监督学习可以通过基于数据中变量之间的关系对数据进行聚类来推导出数据的结构。例如可以将许多人的基因通过某种方法以不同的特征分类,年龄、身高、体重等。著名的“鸡尾酒会”算法可以分辨出两个人的声音,也可以从人声与音乐声的混合音频中分辨出人声和音乐声。
模型和代价函数
模型即可以理解为黑盒子里的结构。下面以单参数输入,单参数输出的线性”黑盒子“为例写出模型函数。其中x为输入参数,h为输出结果。
h
θ
(
x
)
=
θ
0
+
θ
1
x
假
设
函
数
(
模
型
的
表
示
)
h_θ(x)=θ_0+θ_1x \qquad假设函数(模型的表示)
hθ(x)=θ0+θ1x假设函数(模型的表示)
代价函数可以理解为黑盒子预测结果与样本中正确结果的误差。其中m代表样本数量。
J
(
θ
0
,
θ
1
)
=
1
2
m
Σ
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
J(θ_0,θ_1)={1\over2m}\Sigma_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})^2
J(θ0,θ1)=2m1Σi=1m(hθ(x(i))−y(i))2
我们需要根据代价函数,了解到黑盒子完成任务的情况,代价函数(理想的与现实的差距)越大,这个黑盒子执行任务的效果就越差,它需要改变自己的内部结构,以缩小误差。在上述单输入单输出线性模型中,可以看出,改变内部结构,实际上就是改变线性方程的两个参数。那么如何改变呢?梯度下降与正规方程法。梯度下降的公式如下所示。其中alpha是梯度下降中的一个参数,也称它为学习速率,它太小,会导致收敛慢,太大则可能导致不收敛。
θ
0
=
θ
0
−
α
d
d
θ
0
J
(
θ
0
)
θ
1
=
θ
1
−
α
d
d
θ
1
J
(
θ
1
)
\theta_0=\theta_0-\alpha{d\over{d\theta_0}}J(\theta_0)\\ \theta_1=\theta_1-\alpha{d\over{d\theta_1}}J(\theta_1)
θ0=θ0−αdθ0dJ(θ0)θ1=θ1−αdθ1dJ(θ1)
正规方程法则直接计算出最优的theta,当然,它只适用于线性回归和小变量情况,其公式如下
θ
=
(
X
T
X
)
−
1
X
T
y
\theta=(X^TX)^{-1}X^Ty
θ=(XTX)−1XTy
关于梯度下降法和正规方程法的优劣如下表所示
梯度下降 | 正规方程 |
---|---|
要选择参数alpha | 不用选择参数 |
需要多次迭代 | 不需要迭代 |
时间复杂度为k的n次方 | 要计算矩阵转置 |
当n很大时效果很好 | n很大时算的就很慢 |
Tips
- Matlab中求矩阵的逆是inv(A),Octave中是pinv(A)
- Matlab中矩阵转置是A’
- Matlab中矩阵各元素对应相乘为.*,对应相除为./
- 将多项式乘法转换为矩阵相乘
- 对变量进行放缩有利于梯度下降的计算,减去样本点,除以标准差
- 可以通过改变特征量来更好地拟合样本数据
声明:本文为吴恩达Machine learning课程的学习笔记