搜索
您的当前位置:首页正文

使用机器学习预测天气(第三部分神经网络)

来源:步旅网

概述

  这是使用机器学习预测平均气温系列文章的最后一篇文章了,作为最后一篇文章,我将使用google的开源机器学习框架tensorflow来构建一个神经网络回归器。关于tensorflow的介绍、安装、入门,请自己google,这里就不做讲述。

  这篇文章我主要讲解一下几点:

  • 了解人工神经网络理论

  • tensorflow高级API:Estimators

  • 构建DNN模型预测天气

人工神经网络基础理论

  上一篇文章主要讲解了如何构建线性回归模型(这是最基础的机器学习算法)来预测内布拉斯加州林肯市每天的平均气温。线性回归模型非常有效,并且可以被用于数值化(比如分类)、预测(比如预测天气)。线性回归算法也比较与局限性,它要求数据之间具有线性关系。   针对于非线性关系的场景,数据挖掘和机器学习有数不清的算法来处理。近些年最火的要数神经网络算法了,它可以处理机器学习领域的好多问题。神经网络算法具备线性和非线性学习算法的能力。   神经网络受到大脑中的生物神经元的启发,它们在复杂的交互网络中工作,根据已经收集的信息的历史来传输,收集和学习信息。我们感兴趣的计算神经网络类似于大脑的神经元,因为它们是接收输入信号(数字量)的神经元(节点)的集合,处理输入并将处理后的信号发送给其他下游代理 网络。 信号作为通过神经网络的数字量的处理是一个非常强大的特征,不限于线性关系。   在这个系列中,我一直关注一种称为监督学习的特定类型的机器学习,也就说说训练的数据结果是已知的,根据历史已知的输入和输出,预测未来的输入对应的输出。 此外,预测的类型是数值的真实值,这意味着我们使用的是回归预测算法。   从图形上看,类似于本文中描述的神经网络如图:

上面描述的神经网络在最左边包含一个输入层,即图中的x1和x2,这两个特征是神经网络输入值。这两个特征被输入到神经网络中,通过被称为隐藏层的两层神经元进行处理和传输。这个描述显示了两个隐藏层,每层包含三个神经元(节点)。 该信号然后离开神经网络,并作为单个数值预测值汇总在输出层。   让我花一点时间来解释箭头背后的含义,箭头表示数据在层间从一个节点到另一个节点的传输处理。 每个箭头代表一个数值的数学变换,从箭头的底部开始,然后乘以特定于该路径特定的权重。 一个图层中的每个节点将以这种方式得到一个值。 然后汇总所有在节点收敛的值。 这个就是我之前提到的神经网络的线性操作。

在每个节点上进行求和之后,将一个特殊的非线性函数应用到总和上,这在上面的图像中被描述为Fn(...)。 这种将非线性特征引入神经网络的特殊功能称为激活功能。 激活函数所带来的这种非线性特性赋予了多层神经网络以其功能。 如果不是将非线性加入到过程中,则所有层都将有效地代数地组合成一个常数运算,其中包括将输入乘以某个平坦系数值(即线性模型)。 好吧,这一切都很好,但是这怎么转化为学习算法呢? 那么最直接的答案就是评估正在进行的预测,即模型“y”的输出,到实际预期值(目标),并对权重进行一系列调整,以改善整体 预测准确性。   在回归机器学习算法的世界中,通过使用成本(又名“损失”或“客观”)函数(即平方误差之和(SSE))评估准确性。 请注意,我把这个声明推广到整个机器学习的连续体,而不仅仅是神经网络。 在前面的文章中,普通最小二乘算法完成了这一工作,它发现了使误差平方和(即最小二乘)最小化的系数组合。   我们的神经网络回归器会做同样的事情。 它将迭代训练数据提取特征值,计算成本函数(使用SSE),并以最小化成本函数的方式调整权重。 通过算法迭代推送特征的过程和评估如何根据成本函数来调整权重。   模型优化算法在构建鲁棒神经网络中非常重要。 例如通过网络体系结构(即宽度和深度)馈送,然后根据成本函数进行评估,调整权重。 当优化器函数确定权重调整不会导致成本函数计算代价的变化,该模型被认为是“学习”。

TensorFlow Estimator API

  tensorflow由好几个部分组成,其中最常用的是Core API,它为用户提供了一套低级别的API来定义和训练使用符号操作的任何机器学习算法。这也是TensorFlow的核心功能,虽然Core API能应对大多数的应用场景,但我更关注Estimator API。   TensorFlow团队开发了Estimator API,使日常开发人员可以更方便地使用该库。这个API提供了训练模型、评估模型、以及和Sci-Kit库相似的对未知数据的预测接口,这是通过实现各种算法的通用接口来实现的。另外,构建在高级API中的是机器学习最佳实践,抽象和可伸缩性的负载。   所有这些机器学习的优点使得基础Estimator类中实现的一套工具以及多个预先封装的模型类型,降低了使用TensorFlow的入门门槛,因此可以应用于日常问题。通过抽象出诸如编写训练循环或处理会话之类的问题,开发人员能够专注于更重要的事情,如快速尝试多个模型和模型架构,以找到最适合他们需要的模型。   在这篇文章中,我将介绍如何使用非常强大的深度神经网络估计器之一DNN Regressor。

建立一个DNNRegressor来预测天气

  我们先导入一些我们需要用到的库。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top