跳到主要内容

神经网络初体验

什么是深度学习

首先,当我们提到人工智能时,我们需要明确定义我们所谈论的内容。什么是人工智能、机器学习和深度学习?它们是如何相互联系的? image.png 为了定义深度学习并理解深度学习和其他机器学习方法之间的区别,首先我们需要了解机器学习算法。机器学习发现了执行数据处理任务的规则,并给出了预期的例子。所以,要做机器学习,我们需要三件事:

  • 输入数据点——例如,如果任务是语音识别,这些数据点可以是说话人的声音文件。如果任务是图像标签,它们可以是图片。
  • 预期输出的示例——在语音识别任务中,可以是人类生成的声音文件副本。在图像任务中,预期的输出可以是“dog”、“cat”等标记。
  • 一种方法来衡量算法是否做得很好——为了确定算法当前输出与预期输出之间的距离,有必要使用一种方法来衡量算法是否做得很好。测量值作为反馈信号用于调整算法的工作方式。这个调整步骤就是我们所说的学习。

深度学习是机器学习的一个特定子领域:学习表征的一个新视角,从不断增强的学习连续层的数据中提取有意义的数据。深度学习不是指任何一种通过这种方法获得更深刻的理解;相反,它代表着连续层的表示。有多少层对数据模型有贡献称为模型的深度。该字段的其他适当名称可以是分层表示学习。现代深度学习通常包括数十甚至数百个连续的层次的表示他们都是通过接触训练数据自动学习的。与此同时,机器学习的其他方法往往只关注学习一层或两层有关数据的表示;因此,有时被称为浅学习。
在深度学习中,这些分层表示层层叠加的神经网络的模型。神经网络这个术语是神经生物学的一个参考,深度学习的概念在一定程度上是受到大脑启发而发展起来的。深度学习也是一个数学框架,用于从数据中学习模型参数。
通过深度学习算法学习的模型是什么样的?让我们研究神经网络为了认出这是什么数字而如何转换多层网络的。 image.png

神经网络将数字图像转换成数据表示形式这与原始图像越来越不同,信息量也越来越大。您可以将深度网络看作一个多级网络信息蒸馏操作,即信息经过连续的过滤器并且变得越来越纯净(也就是说,对于某些任务是有用的)。 image.png

这就是所谓的深度学习,从技术上讲:一种学习数据表示的多阶段方法。这是一个简单的想法,但是,事实证明,非常简单的机制,如果规模足够大,最终可能看起来像魔术。

案例

要解决的问题

我们在这里要解决的问题是对手写的灰度图像进行分类将数字(28×28像素)分成10个类别(0到9),一个经典的机器学习数据集。MNIST数据集含有6万张的训练图片。你可以将解决MNIST问题视为深度学习的“Hello World”——你要做的就是验证你的算法是否按预期工作。当您成为一个机器学习实践者时,您将看到MNIST一次又一次地出现在科学论文、博客文章等中。 image.png

解决方案

在这里,我们将使用深度学习去实现这个分类问题。如果你对于keras,pytorch等框架足够熟悉,可以通过编写脚本来实现这个分类算法,这就需要你对于代码与调试足够的熟悉,并且需要搭建起一套支持这种算法的环境。对于一个简单的实现,显然有许多不是算法研究的工作需要你去实现。
我们推荐你使用算盘去快速验证你的想法,并且已经搭建了一个简单的模板供你参考。

模板

在项目模板中,双击keras教材案例中的神经网络初体验: image.png 可以创建出以下模板,模板中的组件可以在深度学习的pytorch的分类中找到: image.png 可以看出整个模板分了五块:

  • 模型建立——需要有一个输入层,注意填写接收图片的大小与通道数,后面连接linear线性层-RELU激活函数-linear线性层-LogSoftmax激活函数
  • 数据载入——需要RAW-MNIST组件下载MNIST原始数据,图片转Tensor可以将图片格式转换为模型可计算的Tensor数据类型,最后接手写数字识别数据集组件用来解析原始MNIST文件
  • 模型训练——数据载入设置Batch Size,选择RMSprop作为参数寻优器,模型训练节点设置epoch数与Loss Function,最终生成训练好的模型文件
  • 预测评估——预测节点接收测试集数据与训练好的模型进行训练,生成预测图片文件夹与CSV文件(包含每个图片的index,真实值与预测值),CSV文件可以作为多分类评估的输入进行模型评估
  • 图片可视化——Tensor转图片可以将生成好的Tensor数据转换为图片保存,最终生成在转换组合组件的输出节点中。

这样就实现了一个简单的神经网络模型,你可以对其中的网络结构进行重新编辑,验证你的算法!