天天动画片 > 八卦谈 > 神经网络简介

神经网络简介

八卦谈 佚名 2023-07-11 18:21:17

        假设你想创建一个机器学习分类模型, 其分类结果有两种情况:正面评价、负面评价。


而构建任何一个机器学习模型都包括两步:

  1. 使用大量的已经分类好的数据进行训练

  2. 使用训练好的模型对未见过的新的数据进行分类


更具体的,我们来看图:

  1. 首先提供大量数据,例如 IMDB 网站对电影的评价,这些数据已经被标记好是正面或负面的。

  2. 数据进入训练阶段,该阶段会使用机器学习模型通过现有数据进行学习;

  3. 这个分类器通过你的机器学习模型来进行预测,根据预测结果与实际结果对比,对模型会有一个反馈,从而让你的模型进行学习,这个反馈通常是损失函数的形式。

  4. 这个反馈就是用来改进你模型的参数,以便能够更好的预测。


        在这里,机器学习模型的数据叫做“特征”,而模型的输出通常叫做目标或标记。

        这类机器学习的系统会自行确定需要注意哪些特征,神经网络就是这类系统的例子。


神经网络

  • 神经网络是一种深度学习算法,可以说它是最常见的深度学习算法,有时候会用神经网络来代表深度学习词。

  • 神经网络可以从输入数据进行学习到哪些特征比较重要。

  • 神经网络模型里最基本的构建块就是神经元。

  • 我们可以把神经元当作活跃的学习单元,它们就是能够从数据进行学习的构建块。


神经网络的结构是什么样的?

        神经网络由很多层构成,每层都有很多神经元组成,也就是很多的活跃学习单元,每一层都能从数据学到些不同的东西。最后这些层组成的输出结果就是预测结果。



其中,输入层和输出层(第一层和最后一层)叫做可视层:


而在可视层之间的就是隐藏层,一个神经网络可以有任意多个隐藏层:


每一层都会对输入数据进行处理,每一层都由互联的神经元组成:


神经元(Neuron)

一个神经元就是一个简单的数学函数,这个函数把一系列 X 值作为它的输入, 它输出的是单个结果,也就是 Y 值。如下图:

然后这个神经元输出的 Y 值就会作为输入传递给神经网络下一层中的神经元:

对于处于活跃学习状态的神经元,一旦输入改变了,那么它的输出也会改变。

 

对于神经网络两个层中的两个神经元之间的连接,都关联了一个权重 W:

这个权重 W 就是两个神经元之间连接强度的指示器。

如果下一层的神经元对上一层神经元的结果很敏感,那么它们之间的连接就更强:

 

在神经网络计算图中,这些节点(Node)就是神经元(也就是简单的构建块):

 

而下图中的这些带箭头的边(Edge),就是神经元操作的数据:

神经元的数学函数对输入数据进行运算并产生输出数据,这些数据就叫做 Tensor(张量)。

而 TensorFlow 就是指 Tensor 在整个神经网络计算图里面流动。

 

我们经常把神经网络训练的过程叫做寻找模型的参数, 这些参数其实就是上图中这些边(Edge)的权重。一旦神经网络被训练完,这些边(Edge),也就是不同层神经元之间的连接,就都有了权重。这些权重就是模型的参数,这样的话模型就可以用来做预测了。


接下来,让我们仔细看一下单个神经元。

每个神经元只会对输入数据应用两个简单的函数:

  • 第一个函数就是仿射变换(Affine Transformation)

  • 第二个函数是激活函数(Activation Function)


仿射变化

其中,仿射变换自己只能学习输入和输出之间的线性关系:

仿射变换只是对各个输入的加权求和,还加上一个偏移量(b),也就是 Wx + b;而仿射变换的输出会被传入给激活函数。


激活函数

神经网络层中的每个神经元都可以配置不同的激活函数,激活函数负责发现神经元输入和输出之间的非线性关系。


最简单的激活函数就是恒等函数(Identity Function),也就是输入等于输出。而这时这个神经元就是一个线性的神经元,它只能从数据中学习线性关系。

 

而仿射变换和激活函数的组合就可以学习任意的关系了。

 

激活函数本质上不是线性的,它负责学习你数据中非线性的关系。常见的激活函数有以下几种:

 

而最常使用的激活函数应该就是 ReLU 函数:

ReLU 的全拼是:Rectified Linear Unit(修正线性单元)。

ReLu 函数非常简单:ReLU(x) = max(0, x),这里,如果 x < 0,那么输出就是 0;否则输出就是 x。

 

另外一个使用较多的,经常用于分类模型的激活函数就是 SoftMax:

SoftMax 函数的输出在 0 到 1 之间,而这个输出可被解释为概率, 结合这个概率使用一个阈值就可以让你判定输入是否属于某个类型。

SoftMax 的曲线是 S 型的,这个曲线也叫做 logit 曲线。

 

 

为神经网络模型选择激活函数是非常重要的一件事,它会严重影响神经网络的性能。

 

仔细看这些激活函数就会发现:

这些激活函数都有一个梯度(Gradient)或者叫活跃(Active)这样的一个区域,这使得它们对输入的变化非常敏感。

 

当神经元是一个活跃神经元时(也就是正在活跃的从输入数据进行学习时,或者说它不是死神经元 ),那么它就会操作在活跃区域。

为了训练和调整神经网络的权重,那么你的激活函数就应该操作在活跃区域而不是饱和区域(下图箭头指向的就是饱和区域):

在饱和区域,即使调整输入,但是输出也不会发生变化。

 

对于神经网络,所需要了解的基本知识大概就是这些:


就是这样,很多非常简单的神经元在各层组合到一起就可以做很多神奇的事情。

 

训练过程中就会确定单个神经元对输入的那些权重和偏移量。


本文标题:神经网络简介 - 八卦谈
本文地址:www.ttdhp.com/article/36619.html

天天动画片声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
扫码关注我们