亚马逊AWS官方博客
Apache MXNet 版本 0.12 扩展了 Gluon 功能以支持前沿的研究
上周,Apache MXNet 社区发布了 MXNet 版本 0.12。主要功能是支持 NVIDIA Volta GPU 和 sparse tensor。该版本还包括一些新的 Gluon 编程接口功能。特别是,可以通过这些功能在您的深度学习模型中轻松开展前沿的研究:
- 变分丢弃;可用于有效地应用丢弃技术以减轻递归神经网络 (RNN) 中的过拟合问题
- 卷积 RNN、长短期记忆 (LSTM) 和门控循环单元 (GRU) 单元;可用于对具有基于时间的序列和空间维度的数据集进行建模
- 七个新的损失函数、导出功能和训练器函数增强功能
变分丢弃 (VariationalDropoutCell) 根据最新的研究提供一种新的工具以减轻 RNN 中的过拟合问题。本文参考了“A Theoretically Grounded Application of Recurrent Neural Networks”和“RNNDrop: A Novel Approach for RNNs in ASR”。过拟合是一种建模错误,其中拟合的模型与训练数据集非常接近,以至于在查看新数据或测试数据集时,将会降低其预测精度。丢弃是一种建模技术,它随机地将模型参数归零,以便模型在训练过程中不会过度依赖于任何单个输入或参数。不过,这种技术尚未成功应用于 RNN。迄今为止的研究侧重于仅将丢弃完全随机地应用于输入和输出,即,在 RNN 的所有时间步长中将其归零。变分丢弃消除了这种涵盖所有时间步长的随机性,并在每个时间步长将相同的随机丢弃数组 (或掩码) 应用于 RNN 的输入、输出和隐藏状态。
卷积 RNN、LSTM 和 GRU 单元 (例如,Conv1DRNNCell、Conv1DLSTMCell、Conv1DGRUCell) 简化了具有序列和空间维度 (例如,随时间捕获的视频或图像) 的数据集的建模过程。卷积 LSTM 模型首次成功应用于“Convolutional LSTM Network: A Machine Learning Approach for Precipitation Nowcasting”中介绍的研究。LSTM 网络设计用于分析顺序数据,同时跟踪长期相关性。它们提高了自然语言处理 (NLP) 的技术水平。不过,在应用于数据集空间维度以及具有基于时间的序列的时空使用案例时,它们产生的效果非常有限。时空使用案例的示例包括预测未来六小时香港的不同低洼地区的总降雨量 (如前面引用的研究论文所讨论的一样),或者检测视频是否包含暴力内容。为了识别图像,卷积神经网络 (CNN) 对图像应用卷积运算以使模型能够捕获空间上下文,从而提高了技术水平。卷积 RNN、LSTM 和 GRU 分别将这些卷积运算加入 RNN、LSTM 和 GRU 架构中。
该 MXNet 版本还在 Gluon 支持的损失函数集中增加了七个损失函数:(1) S 形二叉交叉熵损失、(2) 联结主义时间分类 (CTC) 损失、(3) Huber 损失、(4) 铰链损失、(5) 平方铰链损失、(6) 逻辑损失和 (7) 三重损失。损失函数根据某个目标衡量您的模型效果是否良好。这些损失函数使用不同的数学计算来衡量这种效果,因此,它们在模型训练期间对优化过程具有不同的影响。选择损失函数更多地是一门艺术而不是一门科学,并且没有简单的启发式方法帮助确定选择哪个函数。相反,您可以参考对这些损失函数的广泛研究,以了解何时可以成功应用这些损失函数,而何时无法成功应用这些损失函数。
该版本还引入了一些有用的附加功能,例如,导出 API 和训练器优化程序函数的学习速率属性。通过使用导出 API,您可以将神经网络模型架构和相关的模型参数导出为中间格式,可以在以后或不同位置使用该格式加载模型。该 API 仍然是实验性的,因此,尚不支持所有功能。此外,您现在还可以使用新增的训练器学习速率属性设置和读取学习速率。
后续步骤
MXNet 非常容易上手,可以在发行说明中找到该版本的完整更改列表。要了解 Gluon 接口的详细信息,请访问 MXNet 详细信息页面或教程。
作者简介
Vikram Madan 是 AWS 深度学习高级产品经理。他负责开发让深度学习引擎变得更易于使用的产品,工作重点是开源 Apache MXNet 引擎。在业余时间,他喜欢长跑以及看纪录片。