【机器学习】#1-2

1 基本概念

1.1机器学习(Machine Learning)

什么机器学习?第一个机器学习的定义来自于 Arthur Samuel。他定义机器学习为,在进行特定编程的情况下,给予计算机学习能力的领域。Samuel 的定义可以回溯到 50 年代,他编写了一个西洋棋程序。这程序神奇之处在于,编程者自己并不是个下棋高手。但因为他太菜了,于是就通过编程,让西洋棋程序自己跟自己下了上万盘棋。通过观察哪种布局(棋盘位置)会赢,哪种布局会输,久而久之,这西洋棋程序明白了什么是好的布局,什么样是坏的布局。尽管编写者自己是个菜鸟,但因为计算机有着足够的耐心,去下上万盘的棋,没有人有这耐心去下这么多盘棋。通过这些练习,计算机获得无比丰富的经验,于是渐渐成为了比Samuel 更厉害的西洋棋手。上述是个有点不正式的定义,也比较古老。另一个年代近一点的定义,由 Tom Mitchell 提出,来自卡内基梅隆大学,Tom 定义的机器学习是,一个好的学习问题定义如下,他说,一个程序被认为能从经验 E 中学习,解决任务 T,达到性能度量值P,当且仅当,有了经验 E 后,经过 P 评判,程序在处理 T 时的性能有所提升。我认为经验E 就是程序上万次的自我练习的经验而任务 T 就是下棋。性能度量值 P 呢,就是它在与一些新的对手比赛时,赢得比赛的概率。

1.2监督学习

监督学习指的就是我们给学习算法一个数据集,这个数据集由“正确答案”组成。在房价的例子中,我们给了一系列房子的数据,我们给定数据集中每个样本的正确价格,即它们实际的售价然后运用学习算法,算出更多的正确答案。比如你朋友那个新房子的价格。用术语来讲,这叫做回归问题。我们试着推测出一个连续值的结果,即房子的价格。而在肿瘤的问题中,我们的目的是估算出肿瘤是恶性还是良心的概率,毕竟没人会担心良心肿瘤,这和房价问题不同因为我们将肿瘤分为了良性和恶性,所以这是个分类问题

监督学习的基本思想是,我们数据集中的每个样本都有相应的“正确答案”。再根据这些样本作出预测,就像房子和肿瘤的例子中做的那样。
回归问题,即通过回归来推出一个连续的输出。
分类问题,其目标是推出一组离散的结果。

1.3无监督学习

和监督学习不同,无监督学习中没有任何的标签或者是有相同的标签或者就是没标签。我们只有一个数据集,其他什么也不知道,而我们要做的就是从这些数据中找到某种结构,将他们分为不同的聚集簇。无监督学习算法可能会把这些数据分成两个或多个不同的簇。所以叫做聚类算法。一个例子就是谷歌新闻,谷歌新闻每天都在收集各种新闻,它再将这些新闻分组,组成有关联的新闻。所以谷歌新闻做的就是搜索非常多的新闻事件,自动地把它们聚类到一起。所以,这些新闻事件全是同一主题的,所以显示到一起。

2单变量线性回归(Linear Regression with One Variable)

2.1模型

我们以预测房价为例,我们有一个数据集,他包含了某市的房子价格以及房子的大小。现在我们想知道1000㎡的房子值多少钱。前面说了这是一个监督学习的例子,在建立模型前我们了解以下一些符号:

\(m\) 代表训练集(即监督学习中的数据集)中实例的数量

\(x\) 代表特征/输入变量

\(y\) 代表目标变量/输出变量

\(\left( x,y \right)\) 代表训练集中的实例

\(({{x}^{(i)}},{{y}^{(i)}})\) 代表第\(i\) 个观察实例

\(h\) 代表学习算法的解决方案或函数也称为假设(hypothesis

我们把训练集里房屋价格喂给我们的学习算法,学习算法的工作了,然后输出一个函数,通常表示为小写 ℎ表示。ℎ 代表 hypothesis(假设),ℎ表示一个函数,输入是房屋尺寸大小,就像你朋友想出售的房屋,因此 ℎ 根据输入的 𝑥值来得出 𝑦 值,𝑦 值对应房子的价格 因此,ℎ 是一个从𝑥到 𝑦 的函数映射。我将选择最初的使用规则ℎ代表 hypothesis,因而,要解决房价预测问题,我们实际上是要将训练集“喂”给我们的学习算法,进而学习得到一个假设ℎ,然后将我们要预测的房屋的尺寸作为输入变量输入给ℎ,预测出该房屋的交易价格作为输出变量输出为结果。那么,对于我们的房价预测问题,我们该如何表达 ℎ?
一种可能的表达方式为:
\(ℎ_{𝜃}(𝑥) = 𝜃_{0} + 𝜃_{1}𝑥\),因为只含有一个特征/输入变量,因此这样的问题叫作单变量线性回归问题

2.2代价函数

对于前面的假设函数,我们现在要做的就是选择出可以使得建模误差的平方和能够最小的模型参数。即
代价函数
\(J \left( \theta_0, \theta_1 \right) = \frac{1}{2m}\sum\limits_{i=1}^m \left( h_{\theta}(x^{(i)})-y^{(i)} \right)^{2}\)最小。

2.3梯度下降

梯度下降算法就是用来求最小值的。梯度下降背后的思想是:开始时我们随机选择一个参数的组合(𝜃0, 𝜃1, . . . . . . , 𝜃𝑛),计算代价函数,然后我们寻找下一个能让代价函数值下降最多的参数组合。我们持续这么做直到到到一个局部最小值(local minimum),因为我们并没有尝试完所有的参数组合,所以不能确定我们得到的局部最小值是否便是全局最小值,选择不同的初始参数组合,可能会找到不同的局部最小值。
梯度下降公式如下

\({\theta }_{j} :={\theta }_{j} -\alpha \frac{\partial }{\partial {{\theta }_{0}}}J({{\theta }_{0}},{{\theta }_{1}})\)

注意:更新指同步更新

其中:对\(\theta\)赋值,使得\(J\left( \theta \right)\)按梯度下降最快方向进行,一直迭代下去,最终得到局部最小值。
\(a\)是学习率(learning rate),它决定了我们沿着能让代价函数下降程度最大的方向向下迈出的步子有多大。

在梯度下降法中,当我们接近局部最低点时,梯度下降法会自动采取更小的幅度,这是因为当我们接近局部最低点时,很显然在局部最低时导数等于零,所以当我们接近局部最低时,导数值会自动变得越来越小,所以梯度下降将自动采取较小的幅度,这就是梯度下降的做法。所以实际上没有必要再另外减小𝑎。

2.4梯度下降的线性回归

求出代价函数的导数
\(\frac{\partial }{\partial {{\theta }_{j}}}J({{\theta }_{0}},{{\theta }_{1}})=\frac{\partial }{\partial {{\theta }_{j}}}\frac{1}{2m}{{\sum\limits_{i=1}^{m}{\left( {{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)}}^{2}}\)

带入得到:
\({\theta_{0}}:={\theta_{0}}-a\frac{1}{m}\sum\limits_{i=1}^{m}{ \left({{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)}\)

\({\theta_{1}}:={\theta_{1}}-a\frac{1}{m}\sum\limits_{i=1}^{m}{\left( \left({{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)\cdot {{x}^{(i)}} \right)}\)}

在梯度下降的每一步中,我们都用到了所有的训练样本,在梯度下降中,在计算微分求导项时,我们需要进行求和运算,所以,在每一个单独的梯度下降中,我们最终都要计算这样一个东西,这个项需要对所有𝑚个训练样本求和。因此,批量梯度下降法这个名字说明了我们需要考虑所有这一"批"训练样本,而事实上,有时也有其他类型的梯度下降法,不是这种"批量"型的,不考虑整个的训练集,而是每次只关注训练集中的一些小的子集。

posted @ 2020-07-17 20:20  Bekbek  阅读(130)  评论(0编辑  收藏  举报