机器学习理论介绍中说过,深度学习是机器学习的一种技术,下面我们具体来看下。

1、 定义

深度学习首先是一种机器学习。深度学习的基础,叫做神经网络,这本身就是一种机器学习算法。
深度神经网络(Deep Neural Networks, 以下简称DNN)是深度学习的基础。

代表案例:
多层感知机(Multi-Layer perceptron,MLP)

2、感知机

感知机的模型,它是一个有若干输入和一个输出的模型。
输出和输入之间学习到一个线性关系,得到中间输出结果,接着是一个神经元激活函数,从而得到想要的结果1或者-1
在这里插入图片描述
感知机局限性

这个模型只能用于二元分类,且无法学习比较复杂的非线性模型,因此在工业界无法使用。
在这里插入图片描述
异或问题,我们可以看到感知机是无法区分异或问题的,也就是无法找到一条直线将上图中的xor进行划分。异或问题使得人工神经网络的发展停止了很久。

3、改进

后来有人根据人类神经元的特点引入到了深度学习。
人类信息的传递,首先传入到输入神经树突,根据传递的状态在输出到输出神经轴突
在这里插入图片描述
神经元默认是抑制状态,经过传递后可产生兴奋,兴奋后会进行传输
生物的神经元一层一层的连接起来,当神经信号达到某一个条件时,这个神经元就会激活,然后传递下去,为了解决线形不可分的问题,采取神经网络的输入端和输出端插入更多的神经元。

4、多层感知机

根据人脑信息的传递原理,对感知机进行了改进,提出了多层感知机。

1、 加入了隐藏层,隐藏层可以有多层,增强模型的表达能力
2、 输出层的神经元也可以不止一个输出,可以有多个输出
3、 使用不同的激活函数,神经网络的表达能力进一步增强

在这里插入图片描述

5、激活函数

定义,是一种添加到人工神经网络中的函数,旨在帮助网络学习数据中的复杂模式
作用,解决线形不可分问题
常见激活函数,Sigmoid、Tanh、ReLU等

在这里插入图片描述

神经网络中每一层的输入输出都是一个线性求和的过程,下一层的输出只是承接了上一层输入函数的线性变换,所以如果没有激活函数,那么无论你构造的神经网络多么复杂,有多少层,最后的输出都是输入的线性组合,纯粹的线性组合并不能够解决更为复杂的问题。

而引入激活函数之后,我们会发现常见的激活函数都是非线性的,因此也会给神经元引入非线性元素,使得神经网络可以逼近其他的任何非线性函数,这样可以使得神经网络应用到更多非线性模型中。

6、超参数理解

  1. Batch,用于定义在更新内部模型参数之前要处理的样本数
  2. Epoch,它定义了学习算法在整个训练数据集中的工作次数
    在这里插入图片描述

7、TensorFlow游乐场

为了方便大家理解,我们可以在TensorFlow游乐场里面进行演示。

7.1 默认状态

首次进入我们可以看到如下的页面。
在这里插入图片描述

7.2 异或问题的展示

我们选择左边的数据中的第二个,异或问题的类型(当然大家也可以用其他的数据进行学习)
激活函数使用线性函数(即不使用激活函数),我们点击左上角的开始按钮进行模拟训练。
在这里插入图片描述
随着训练的进行,我们发现右上角的损失变化很小,右侧中间的数据集也没有进行划分。

7.3 加入激活函数

我们使用relu函数作为激活函数进行训练,我们可以发现

  • 右上角的损失变化,一开始迅速下降,随后平稳
  • 右侧中间的数据已经被很好的区分
    在这里插入图片描述

7.4 多神经元的影响

我们选取环形数据集进行演示
隐藏层使用一层,选择两个神经元进行训练
在这里插入图片描述

我们可以发现,我们训练了几千次都没有区分开
下面我们增加神经元
在这里插入图片描述
很快就分好了

理论上随着神经元和隐藏层数的增加,模型的拟合效果会越来越好

Logo

更多推荐