首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

002 机器不学习 介绍(二)

001 机器不学习 | 介绍(一)

的最后提到,机器学习就是:

找到一个函数

给它输入

它输出结果很不错

那么问题来了,怎样才能找到这个函数呢?怎么样的输出结果才叫很不错呢?下面我们就来探讨一下。

不过在这之前要先弄明白,这里所说的一个函数并不是说要找一个统一的、能解决所有问题的函数(不太可能有这样的函数吧),而是针对某一个问题,存在一个函数在解决这个问题时表现很不错。

下文的描述中,假设都是针对某一个问题,目标是找到一个解决这个问题时表现“最好”的函数

下面我们开始介绍机器学习的步骤!

第一步:选择合适的模型

我们画一个方框表示所有可能的函数,你能想到的、想不到的函数都在这个方框里。

很容易想象,这个方框里一定会有我们要找的那个函数。不妨把这个函数表示成方框内的一个点:

找这一个函数也太难了吧!!!

把这个点画大一点啊喂!!(好的

不管那么多,就是干!我们在大框框里“随便”画个小框框!

运气真好!正好把要找的这个函数包含进去了,范围还缩小了那么多!我们画的这一个小框框同样包含一系列函数,这些函数具有相似的特征,我们把这个小框框叫做一个函数集合

这个函数集合在机器学习中就是一类模型(Model),而找函数集合的过程就是在选择模型,这个模型要(尽可能)包含我们要找的那个函数,同时还不要太复杂。

这就是机器学习第一步:

选择合适的模型

举个例子,假设我们选择的函数集合里的函数都长这个样子:

这是一个线性模型x表示模型的输入f(x)表示在x的输入下模型的输出kb是这个模型的参数

我们可以通过调整 k 和 b 的值得到不同的模型,这些模型都有相似的特征,在图像上都是一条直线。

在解决实际问题中,我们的输入和输出可能不止一维(可以理解成输入和输出不止一个),输入和输出之间的关系也可能更加复杂(非线性的),因此需要具体问题具体分析,选择适合的模型。

后续的更新就是围绕着各种机器学习的模型来进行讲解。

现在我们先假设输入和输出就只有一个,并且选定线性模型来解决问题,接下来要怎么做呢?

第二步:判断模型的好坏

在选定线性模型之后,还有模型参数kb等待我们去确定,这时我们就要收集数据来帮助我们确定模型的参数。

由于待解决问题来源于实际,我们可能只能在自然条件下进行观察(可能无法指定一个输入x得到一个输出y),就像是封一个在玻璃柜里的黑盒。但是我们可以通过观察收集到一些输入、输出数据。

我们先随意选一组模型参数 k=1和b=0,模型就变成:

收集到的数据看看这个模型表现得怎么样。

给模型一个输入x,看看模型的输出f(x)和实际的ŷ(在 y 的头顶加一个 ^ 表示真实值)差距是多少。一般来说,我们希望差距越小越好!

这就是机器学习第二步:

判断的模型好坏

我们把模型的一项输出f(x)和实际的ŷ的差距叫做这一项的误差(error)模型的误差就是把每一项的误差进行求和。那么怎么定义每一项的误差呢?

最直观的方法,把ŷ 和 f(x) 相减得到的结果当作误差:

但这样得到的误差有正有负,会相互抵消,这不是我们想要的结果!

正负误差不应互相抵消,我们可以取绝对值再求和,就能把每一项的误差加起来了。

但是绝对值在实际运算中,需要判断正负号,干脆直接取平方,所以每一项的误差变成:

最后把每一项误差求和,得到模型的误差

模型的误差是由模型的输出、真实值共同决定的,所以模型的误差是关于模型的输出和真实值的一个函数,我们把这个函数叫做模型 f 的损失函数(Loss Function),记作 L(f)

输出结果是数值的问题,我们可以这么定义损失函数,但如果输出的结果是分类时,我们应该怎么定义损失函数呢?

在后续的更新中,会介绍针对不同的模型,如何定义它们的损失函数。

第三步:训练模型

在定义损失函数之后,我们就可以衡量一个模型的好坏了。在上一步中,我们为模型设置了一组参数,得到一个模型。把收集的数据输入到这个模型中,用定义的损失函数检验模型的好坏

如果模型得表现十分糟糕,说明模型的参数不太正确,需要重新调整参数

如果模型表现得还不错,就看看能不能再调整一下参数,让模型变得更好

根据收集的数据,不断调整模型的参数,使模型表现有所改变的过程,我们称为训练(Train),用作训练模型的数据称为训练数据(Training Data)

这就是机器学习第三步:

训练模型

那么该如何调整模型的参数让模型变得更好呢?

你懂的

最后,通过一些例子,简单概括一些名词。

回归(Regression):模型的输出是一个数值(scalar)

预测明天的AQI

84

分类(Classification):模型的输出是一个向量(vector)

邮件分类

开piao

这是垃圾邮件

结构化学习(Structured Learning):模型输出是一个对象(object),可理解为除了回归、分类以外的问题。

信息检索

附近的美食

一食堂、二食堂、三食堂

有监督学习(Supervised Learning):模型训练的时候,把标注告诉机器,再给机器别的数据,机器会告诉你更像哪个标注。

识别猫和狗

这是猫

这是狗

比较像猫

无监督学习(Unsupervised Learning):模型训练的时候,不把标注(labelled)告诉机器,机器自己归类。

识别猫和狗

我觉得是这样子的

半监督学习(Semi-supervised Learning):介于有监督学习和无监督学习之间,大多数情况下,拥有一丢丢有标注的数据和大量的无标注的数据(比较符合现实情况)。

识别猫和狗

迁移学习(Transfer Learning):把一个领域的知识迁移到另一个领域。

强化学习(Reinforcement Learning):让机器不断地尝试,从错误中学习,最后找到规律,学会达到目的的方法。

机器人客服

你好

......

你好

......

你好

再见

(我是不是应该说你好)

这一部分概括得比较简单,目的是让大家大致了解一下这些名词的含义。

机器学习的介绍到这里就结束啦!从下一次开始,正式进入机器学习模型和方法介绍,敬请期待!

各位小伙伴有什么建议或者想法,欢迎留言!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190109G18G5K00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券