您将学习如何赢得帆船比赛以及完成此任务所需的基本的机器学习观点。

从'为什么'开始

问“我们为什么这样做?”该当是我们在任何机器学习项目中提出的第一个问题。
很多时候我们看到项目失落败,是由于一个缺点的缘故原由开始,以是我们对付这个新项目首先开始问下:

我们为什么要制作自动驾驶帆船?

简短回答:它为学习如何运用机器学习供应了一个绝佳的环境。

我是这样用机械进修轻松将帆船变成赛艇的

这并不是由于人们厌倦了自己驾驶帆船,也不是我们想用新的智能系统去赢得比赛,而是发起的这个寻衅有一些成分在内,使得它非常适宜学习:

帆船赛实在是一场比赛

这种所谓的“对抗性”设置意味着我们不仅要考虑自己的行为,还要考虑一个或多个对手的行为。
这在无形中增加了一层全新的繁芜性,从而供应了一个非常具有寻衅性的学习环境。

环境是真实的

这种设置不是人为的,而是现实的和无情的。
有许多成分须要考虑:风、波浪、船的状况等。
这些是大多数算法在现实天下中事情时所面临的现实。

知识会更稳定

人们常日会在调动起所有的感官的时候学习效果更为显著。
乘坐帆船的时候,会刺激到所有人,并供应丰富的学习履历,这会有助于您更为深入理解这些观点。

在我们的课程中,我们采取的方法与大多数其他AI课程不同。
我们不会从基本观点开始,直到我们办理难题这种方法。
我们将采纳不同的路线,赢得胜利。
通过不断保持紧张目标(创建自主帆船),您将在全体过程中保持更多的参与和积极性。

目标

让我们轻微细化一下我们的目标。
创建一艘自动驾驶的帆船听起来比较大略,但可能会涉及到很多的内容。

我们可以按如下办法定义目标:

为帆船创建一个自动驾驶仪(转向机构),使其能够以竞争的办法参加帆船比赛。

到现在它仍旧看起来像是一个非常大的难题。
常日有助于将问题分解为我们可以单独办理的较小问题。
这样的事情可能会有所帮助:

目标1:探求最佳驾驶路线,考虑风向和速率目标2:让船沿着最佳航线航行目标3:运用比赛策略,以便我们可以选择最大化得胜机会的行动

目标1彷佛现在看起来更加实用了。
我们可以提出一些详细的问题:在给定风向和速率的情形下,帆船的最佳航线是什么?

能够提出这样一个问题是很有帮助的,接下来我们一起看下

目标1:找到最佳航线

在我们可以通过机器学习做些什么之前,我们首先须要学习一两件关于航行的知识。
这种“领域知识”对付机器学习项目的成功至关主要。
除了缺点的动机之外,缺少领域知识是许多机器学习项目失落败的第二个缘故原由。
有时候,要么是我们办理问题的缘故原由错了,要么是我们办理了缺点的问题。

考虑下图1中的情景。
假设我们须要到达顶部的标志点,风是直接来自上方的。
根据航行方面的知识问题,您可能知道:我们无法直接驶入风中。
但如果风来自侧面,我们就永久不汇合中目标。
以是在这两个极度之间存在一个最佳状态。
找到这个最优是我们的目标。

图1:逆风梯(风来自顶部)

风角、风速和船速之间的关系常日由梢公用极坐标显示。
图2显示了这样一个图的一个例子。

图2:极坐标图

粗黑线表示在某些风角(相对付船)和速率下的船速。
针对6,8,10,12和20节的风速绘制不同的曲线。
船速常日以1节≈1,85kph的结节来丈量。
现在变得非常随意马虎阅读船速:10度风在110度风角(答案约为7节)。
更主要的是,这个图有助于我们找到最佳的VMG(见视频:Velocity Made Good)。

粗黑线表示在一定的风角(相对付船)和速率下的船速。
风速分别为6、8、10、12和20节时绘制了不同的曲线。
船的速率常日用绳结来打算,绳结≈每小时1,85公里。
现在的船速就很随意马虎阅读了

它变得很随意马虎读的船速说:10节风在110度角(答案是大约7节)。
更主要的是,这个图帮助我们找到最优的VMG(拜会视频:Velocity Made Good)。

比较大略吧?我们不须要机器学习。
只是我们没有为每艘船供应这些极坐标图。
常日船艇设计师会供应一些理论上的内容,但专业团队须要创造自己的最佳性能。

现在我们可以将第一个目标重新定义为更详细的内容:

根据风速和风向,预测某个方向的船速。

有了这样的模型,我们可以很随意马虎地预测最大VMG的过程。
现在让我们连续看看如何利用机器学习来实现这一目标!

始终牢记目标

在课程中,我们将利用除自动帆船以外的示例。
当我们先容新观点时,我们将利用如下插入将它们链接到我们的目标:

目标:探求最佳航线

什么是机器学习?

那么,什么是机器学习?让我们首先定义学习本身。
Google网络定义见告我们:

学习:通过学习、履历或被教导得到知识或技能

这适用于打算机以及人类。
后来我们确实会看到:人类和打算机实在因此非常相似的办法学习。

在机器中,得到的知识存在于所谓的模型中。
该模型在演习阶段学习,稍后将用于在运用程序中实行其终极任务。
以预测为例。

模型:系统的天下不雅观,包含系统学到的东西

机器学习的类型

根据上面的学习定义,机器学习有三大类:

监督学习(正在教授)强化学习(履历)无监督学习(学习)

监督学习

目前,这是最常见的机器学习形式。
我们知道结果必须是什么,通过供应好的和坏的数据示例“教导”机器更靠近。

更详细:我们希望我们的模型能够将给定输入(常日名为X)转换为特定输出(常日命名为y)。
我们通过输入具有相应输入的输出示例来演习模型,这称为演习集。

图3:输入、输出和模型

定义它的另一种方法是将其写为数学公式:

y = f(X)

这里f是将输入转换为输出的函数(模型)。

强化学习

这在技能上是一种监督学习形式,但老师不是真实的人类。
系统会通过反复试验从其环境中学习。

该模型仍有输入和输出,但我们没有带示例的演习集。
相反,我们有一个称为褒奖函数的东西,模型试图最大化。

无监督学习

纵然没有老师,机器也可以学习如何在收到的数据中找到构造。
例如:'clustering'和'dimensionality reduction'。
请参阅下面的维数减少示例。
系统找到看起来相似的照片示例。

图4:t-SNE降维示例

目标 - 探求最佳航线

问题

什么机器学习类型最适宜我们的目标?

回答

我们有一个标签数据集,以是我们可以利用监督学习。

问题的类型

在有监督的学习中,我们可以办理两种紧张类型的问题。
类型取决于所需的输出。

想象一下,您想要确定某个图像是否包含狗或猫。
这将是分类的一个例子。

分类:目标是预测一个类或种别

另一个例子:假设我们想根据景象预报和时令来预测北京的烟雾量。
这将是一个回归问题。

回归:目标是预测实数

目标 - 探求最佳航线

问题

我们的目标是分类还是回归类问题?

回答

显然是一个回归问题,由于我们想要预测的船速是一个实数。

特色

现在,我们来看一下机器学习系统的输入数据。
模型须要知道我们想要理解的东西的属性,这些属性称为特性。

我们以水果为例:水果的重量和颜色都是特色。

图5:橙子和猕猴桃的不同特色

该模型可以利用这些特色来预测我们不雅观察到的水果种类。
这将是分类。

试图根据重量和颜色预测直径是一个回归问题。

目标 - 探求最佳航线

问题

对付我们的目标,模型的特色是什么?

回答

风角和风速

演习模型

好的,但我们如何从特色到预测呢?首先,我们必须演习我们的模型。

演习分类模型

让我们连续水果的例子,我们想根据重量和颜色来确定水果的类型。
首先,我们须要将颜色转换为数字。
我们选择以nm为单位的光波长。
绿色变为520nm,橙色为600nm。
我们把两个数字都绘制在图表中。

图6:带有数据点的散点图

演习的目标是找到一条分出猕猴桃和橙子的线。
该线完备是随机开始的。
在每个演习步骤中,模型都试图将直线往精确的方向移动一点点。
一段韶光后,越来越多的水果将终极落在精确的一侧。

图7:对橙子和猕猴桃进行分类

经由5个步骤,我们对结果感到满意。
演习停滞,我们现在可以利用我们全新的演习模型进行预测。

演习回归模型

这遵照相同的基本原则,现在我们将根据重量预测每个橙子的价格。
目标是绘制一条与我们用于演习的示例非常匹配的线。

图8:回归模型的示例

演习后,模型给出了给定重量的每个橙子的估计价格。

回到帆船上

那么考虑到风速和风向,我们如何利用机器学习模型来预测某个方向的船速?在我们开始演习之前,我们须要数据!

假设您的团队去年每次航行时都记录了风速、风向和船速。
你碰着了很多不同的景象(和波浪)条件。
清理完这些数据后,终极会得到一个带数字的大表。
来自该数据帧的随机样本如图9所示。

图9:数据集的随机样本

在这种情形下,boat_speed是我们的目标变量。
我们的输入功能是wind_speed和angle_of_attack。

在我们的课程中,我们利用船上网络的数据来演习机器学习模型。
参与者将利用这些预测来制作他们自己的船的极坐标图。
如前所述,这将使船舶可以自动驾驶,并在竞赛中发挥主要浸染。

然后我们用帆船将它们挂在水面上测试模型。
我们还与所有参与者进行虚拟竞赛,以找出最适宜的模型!

总结

在这篇博客文章中,您已经创造了我们实现自主航行寻衅子目标1的方法——找到最佳航线,并学习了一些机器学习的关键观点。

那么子目标2和3呢?子目标1在一篇博客文章中已经涵盖了很多内容,以是请连续关注后续的文章。

编译出品