参与:吴攀、蒋思源、李亚洲 初学者在学习神经网络的时候往往会有不知道从何处入手的困难,甚至可能不知道选择什么工具入手才合适。近日,来自意大利的四位研究者发布了一篇题为《神经网络初学者:在 MATLAB、Torch 和 TensorFlow 中的快速实现(Neural Networks for Beginners A fast implementation in Matlab, Torch, TensorFlow)》的论文,对 MATLAB、Torch 和 TensorFlow 这三种神经网络工具进行了介绍和比较。机器之心对其中部分内容进行了编译介绍(其中第 6 节比较结论部分进行了全部介绍),论文原文请点击文末「阅读原文」查阅。
本报告的目的 本报告提供了最常见的开发环境内一些机器学习工具的介绍。本报告主要关注实际问题,跳过了任何理论介绍。本报告面向的读者是想要进入机器学习领域的学生和正在寻找新框架的专家。 这篇论文是关于人工神经网络(ANN,[1,2])的,因为这是目前最热门的主题,并且在许多人工智能任务上都达到了当前最佳的水平。在单独介绍了每一种框架之后,我们同时也给出实现一些一般常见问题的设置方法,从而使它们的比较更简单。 因为这个主题已经得到了广泛的研究,而且还在持续快速地增长,所以我们将这个文档和一个 GitHub 库进行了配对,这个库中的文档是动态更新的,而且以后可能还会扩大规模。 GitHub 地址:https://github.com/AILabUSiena/NeuralNetworksForBeginners 目录 1 MATLAB:一个统一友好的环境 1.1 介绍 1.2 设置异或实验 1.3 停止准则和正则化 1.4 绘制分离面 2 Torch 和 Lua 环境 2.1 介绍 2.2 起步 2.2.1 Lua 2.2.2 Torch 环境 2.3 设置异或实验 2.4 停止准则和正则化 2.5 绘制分离面 3 TensorFlow 3.1 介绍 3.2 起步 3.2.1 Python 3.2.2 TensorFlow 环境 3.2.3 安装 3.3 设置异或实验 4 MNIST 手写字符识别 4.1 MATLAB 上的 MNIST 4.2 Torch 上的 MNIST 4.3 TensorFlow 上的 MNIST 5 卷积神经网络 5.1 MATLAB 5.2 Torch 5.3 TensorFlow 6 关键比较 6.1 MATLAB 6.2 Torch 6.3 TensorFlow 6.4 比较总体概览 6.5 计算问题 1 Matlab:一个统一的友好环境 1.1 介绍 Matlab 是一个强大的工具,能够对大部分类型的数值运算、算法、编程和测试进行简单又快速的处理。其直观且友好的交互式接口使得它能简单地对数据进行处理、可视化与分析。针对各种类型的任务,该软件提供了大量的内置数学函数,以及丰富的、易于获取的文档。其主要设计是处理矩阵的,因此,几乎所有的函数和运算都向量化了,也就是说它们可以管理标量以及向量、矩阵和张量(往往会有)。因此,其能更高效地避免循环(可能的时候),以及建立利用矩阵乘法的运算。 在此文档中,我们只展现了一些简单的用于上手人工神经网络(ANN)的机器学习相关的工具。我们假设读者有基础知识,并把重点放在了进一步信息的官方文档上。例如,你可以从 Matlab 的官网发现如何掌握该软件的相关信息。确实,其许可证并非免费的,虽然大部分大学会为学生提供教学用许可证,但可能也无法获取目前所有的程序包。特别是 Statistic and Machine Learning Toolbox 和 Neural Network Toolbox 提供了大量内置函数和模型,可用于实现适用于各类任务的不同 ANN 架构。 即使我们参考一些简单独立的案例,这两个工具也是基本所需的。最容易理解的是 nnstart 函数,其能激活一个简单的 GUI 并通过简单的 2 层架构来引导用户。它能允许加载可用的数据样本或使用用户自定义数据(即输入数据和对应目标的两个矩阵),还能训练网络并分析结果(误差趋势、混淆矩阵、ROC 曲线等)。 然而,还有更多可用于特定任务的函数。比如说,直播,patternnet 函数是专为模式识别问题而设计的、newfit 函数适用于回归问题,而 feedforwardnet 函数是最灵活的,其允许构建自定义的和复杂的网络。所有的版本都以类似方式实现,主要的选项和方法适用于所有函数。在下一章节中,我们展示了如何管理可定制架构,并开始解决非常基础的问题。相关详细信息可以在官方网站找到: 2 Torch 和 Lua 环境 2.1 介绍 (责任编辑:本港台直播) |