5分钟搞懂什么是机器学习

作者:HexUp
来源:HexUp(微信号:knowforfun)


引子

如果你想让电脑判断一张图片是否是一只猫,识别一张图片中的人脸是谁,或者是设计一个玩游戏的AI,你会发现,显式地编写判断规则是一件非常困难的事情,甚至于会觉得无从下手。

好消息是,这个世界上存在着某些算法,可以让你无需手动编写规则,只需要把大量的数据喂给算法模型,就能让计算机自己学会如何去完成这些任务,这就是机器学习。

机器学习与人工智能在过去的十年左右,几乎是同义词,因为目前的人工智能算法,主要依赖的就是机器学习模型,这也是人类迄今为止,发明的最强大的人工智能,虽然比起人类本身,仍然显得十分弱智。

背景和任务目标

让计算机自己学习如何处理某种任务,而不用人为地写出如何执行任务的具体规则,你可能会觉得这听起来像是魔法,但如何实现这个目标呢?

这个时候,数学家就出场了,开始用他们的数学模型建模我们的世界。为了完成这个目标,我们首先需要准备大量的数据和算法模型,然后用这些数据来训练算法模型。

数据

我们先说数据。

5分钟搞懂什么是机器学习

机器学习大致上有两种任务模式:第一种是分类和判别任务,比如使用摄像头进行人脸识别,判断是谁;一种是预测型的任务,比如接下来你想在B站看到哪个视频,或者是股价明天是涨还是跌。

针对这些任务搜集的数据通常都是以输入值和预测值成对出现的,比如我们想判断图片中的动物种类,图片就是输入数据,猫这个类别信息就是预测的真实标签。

根据数据形式的不同,机器学习主要可以分为两大类,分别是有监督学习、无监督学习。

有监督学习,就是有完整的输入数据和真实的输出数据,可以给模型提供正确的反馈;无监督学习,是指仅有输入数据,但没有标注真实的预测值,算法需要通过观察数据的自身结构来获得训练。

数据是机器学习中最重要的部分,有时候甚至是决定性的部分。一个有用的机器学习模型,必须使用大量的高质量数据才能够训练出来。

算法模型

5分钟搞懂什么是机器学习

有了数据,在训练模型之前,科学家与工程师首先会进行数据清洗,然后将数据集分成训练集、验证集和测试集。用训练集中的数据训练模型,然后在验证集上测试模型效果和筛选模型,最后再用测试集去评估模型真正的效果和准确率。

然后我们需要设计一些模型和算法,然后把数据喂给这些特定的算法和模型。机器学习有很多种不同的模型,比如最简单的线性回归模型,亦或是决策树,和强大的神经网络。当今机器学习和深度学习,绕不开神经网络,甚至可以说,神经网络占据了机器学习的大部分江山。

神经网络是一种模拟大脑神经网络的数学模型,大脑中的神经元互相连接,单个神经元可以接收信号,然后根据激活,发送信号给下一个神经元。最后经过层层信号传递,大脑做出最终的决策,反应到我们的感受或者行动中。

人工神经网络就是一种模拟大脑神经网络的数学模型。

为了完成机器学习,你需要“训练”一个模型,没错,就像训练一个小孩一样,教他完成任务。

你会需要先设计一个网络结构,通常来说,越深的网络表达能力越强,训练出来的模型也就越智能,但相应的训练难度也会加大。

这个模型是一个数学上的参数化模型,包含有大量的参数,或者叫做权重,对于不同的输入,模型中不同的部分会激活,最终成为判断的主力,而哪一部分被激活,则就是由参数决定的。

训练的时候,模型会根据输入数据预测结果,预测的结果跟真实的结果之间通常会有一个偏差。这时损失函数就出场了,通过损失函数我们可以计算这个误差,给模型提供反馈信息。

在数学上,我们通过反向传播来计算模型的梯度,并将梯度作为反馈信息传给模型。

有了反馈信息之后,模型如何分析反馈信息并更新自己的参数呢?这个时候我们就需要用到优化方法,一个优化问题的目标其实就是求解一个函数的最小值或者最大值。

而神经网络是一个非常复杂的函数,我们无法通过简单的方法直接寻找到全局最优解,因此数学家们提出了大量的优化方法,其实SGD是最常用的一种,叫做梯度下降法,也存在着其他的优化方法来改善优化器的性能,例如Adam等等。

我们不断地输入数据、反向传播、更新参数,最终模型的误差就会足够小,这时我们的模型就算是训练完成了,可以拿来做判断和预测了。

以上就是机器学习的原理。


本文转自:微信公众号HexUp,转载此文目的在于传递更多信息,版权归原作者所有,如需转载请联系原作者HexUp。

最新文章