前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Keras系列(二) 建模流程

Keras系列(二) 建模流程

作者头像
MeteoAI
发布2019-07-22 18:10:13
1.4K0
发布2019-07-22 18:10:13
举报
文章被收录于专栏:MeteoAIMeteoAIMeteoAI

上周铁柱分享了Keras的优势,本周继续介绍深度学习的核心和建模流程。

神经网络核心

训练神经网络主要围绕以下四个方面:层、数据输入与目标、损失函数、优化器,如图一

图一 层、数据输入、损失函数和优化器之间的关系

从上图可以看出,训练神经网络是一个迭代的过程,输入X经过层的变化后,预测值与真实目标值在损失函数下计算出损失值,再通过优化器重新学习更新权重,经过N轮迭代后停止权重更新,也就确定了模型。

层(layer)是神经网络的核心组件,神经网络的基本数据结构,它是一种数据处理模块,你可以将它看成数据过滤器。每一层只接受特定形状的输入张量,并返回特定形状的输,将一个或多个输入张量转换为一个或多个输出张量。有些层是无状态的,但大多数的层是有状态的,即层的权重。权重是利用随机梯度下降学到的一个或多个张量。

从层中进去一些数据,出来的数据变得更加有用。具体来说,层从输入数据中提取表示——我们期望这种表示有助于解决手头的问题,这也是深度学习与传统机器学习算法的不同之处,深度学习是自动学习特征,而传统的机器学习,如lightgbm,对特征非常敏感,在铁柱的工作中,铁柱使用lightgbm对未进行特征工程的气象数据进行风功率预测,预测结果非常糟糕,接近于一条直线,手动筛选特征后,预测效果才和LSTM的预测效果达到同一水平。 对于现代深度学习,神经网络能够从原始数据中自动提取有用的特征。这是否意味着,只要使用深度神经网络,就无须担心特征工程呢?注意,能够自动提取特征并不代表特征工程不重要,原因有两点: 1良好的特征仍然可以让你用更少的资源更优雅地解决问题。 2 良好的特征可以让你用更少的数据解决问题。深度学习模型自主学习特征的能力依赖于大量的训练数据。如果只有很少的样本,那么特征的信息价值就变得非常重要。也就是说,哪个忽悠你说深度学习中特征工程不重要,纯属瞎扯淡,如果你的样本量不多(比如风场运行初期训练样本数据少得可怜),或者计算资源有限(某些领导不一定会给你配服务器,只能在小小的笔记本上跑模型),特征工程还是很重要的。

输入数据和相应的目标

数据数据涉及到数据集的划分、归一化、缺失值处理、特征工程等等。我们需要将数据整理为预定的格式feed给模型,不同的张量格式与不同的数据处理类型需要用到不同的层。例如,简单的向量数据保存在形状为(samples, features) 的2D 张量中,通常用密集连接层[densely connected layer,也叫全连接层(fully connected layer)或密集层(dense layer),对应于Keras 的Dense 类]来处理。序列数据保存在形状为(samples, timesteps, features) 的3D 张量中,通常用循环层(recurrent layer,比如Keras 的LSTM 层)来处理。图像数据保存在4D 张量中,通常用二维卷积层(Keras 的Conv2D)来处理。相应的目标可分为分类任务(比如云的分类)和回归任务(比如AQI预测)。

损失函数
在训练过程中需要将其最小化,它能够衡量当前任务是否已成功完成,它应该匹配你要解决的问题的类型。对于分类、回归、序列预测等常见问题,你可以遵循一些简单的指导原则来选择正确的损失函数。例如,对于二分类问题,你可以使用二元交叉熵(binary crossentropy)损失函数;对于多分类问题,可以用分类交叉熵(categorical crossentropy)损失函数;对于回归问题,可以用均方误差(mean-squared error)损失函数;对于序列学习问题,可以用联结主义时序分类(CTC,connectionist temporal classification)损失函数,等等。
优化器

决定学习过程如何进行。你要使用哪种优化器?学习率是多少?当然 ,你也可以选择动态学习率。

图二 keras 优化器

铁柱最近在学习有关自然语言处理书籍的时候,恰巧看到了优化算法可视化的案例(基于tensorflow的SGD,方便大家进一步理解keras的底层后端,铁柱再唠叨两句,此书是花39美刀真金白银买的2018年的新书,大家一定要好好珍惜它,想了解tensorflow 阅读第二章即可。另外不得不感叹印度三哥整体的AI实力,书籍可在文章末尾下载哦,百度云链接保留7天有效)

建模顺序

在编写模型时,通常围绕这四个方面依次进行,如下图三:

第一步 选择序贯模型还是函数式模型。

第二步 构建网络层,包含输入层、隐藏层、输出层。

第三步 编译,确定优化函数,损失函数、评估方法、迭代次数、batch大小等。

第四步 预处理好数据后,feed给算法。

第五步 预测。

图三 建模顺序

本文主要参考如下网络资源:

keras学习笔记(3)—优化器 - ice_actor的博客 - CSDN博客

https://blog.csdn.net/ice_actor/article/details/78335093

深度学习:Keras入门(一)之基础篇

https://blog.csdn.net/zdy0_2004/article/details/74736656

百度云链接:

链接:https://pan.baidu.com/s/1-gB6VlZcGNqAqFp2rKfJ8w

提取码:z8ka (第二章含有SGD的可视化过程和tensorflow入门基础)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-12-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 MeteoAI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 上周铁柱分享了Keras的优势,本周继续介绍深度学习的核心和建模流程。
  • 神经网络核心
    • 图一 层、数据输入、损失函数和优化器之间的关系
      • 输入数据和相应的目标
        • 损失函数
          • 在训练过程中需要将其最小化,它能够衡量当前任务是否已成功完成,它应该匹配你要解决的问题的类型。对于分类、回归、序列预测等常见问题,你可以遵循一些简单的指导原则来选择正确的损失函数。例如,对于二分类问题,你可以使用二元交叉熵(binary crossentropy)损失函数;对于多分类问题,可以用分类交叉熵(categorical crossentropy)损失函数;对于回归问题,可以用均方误差(mean-squared error)损失函数;对于序列学习问题,可以用联结主义时序分类(CTC,connectionist temporal classification)损失函数,等等。
            • 优化器
            • 建模顺序
            • 在编写模型时,通常围绕这四个方面依次进行,如下图三:
            相关产品与服务
            NLP 服务
            NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档