深度学习入门基础概念(1)

转载自|CSDN  Star先生

作者专栏|http://dwz.cn/80rGi5

 

神经网络基础


1)神经元(Neuron):就像形成我们大脑基本元素的神经元一样,神经元形成神经网络的基本结构。想象一下,当我们得到新信息时我们该怎么做。当我们获取信息时,我们一般会处理它,然后生成一个输出。类似地,在神经网络里,神经元接收输入,处理它并产生输出,而这个输出被发送到其他神经元用于进一步处理,或者作为最终输出进行输出。

2)权重(Weights)当输入进入神经元时,它会乘以一个权重。例如,如果一个神经元有两个输入,则每个输入将具有分配给它的一个关联权重。我们随机初始化权重,并在模型训练过程中更新这些权重。训练后的神经网络对其输入赋予较高的权重,这是它认为与不那么重要的输入相比更为重要的输入;权重为0则表示该输入的特征是微不足道的。

让我们假设输入为a,并且与其相关联的权重为W1,那么在通过节点之后,输入变为a*W1

3)偏差(Bias):除了权重之外,另一个被应用于输入的线性分量被称为偏差。它被加到权重与输入相乘的结果中。基本上添加偏差的目的是来改变权重与输入相乘所得结果的范围的。添加偏差后,结果将看起来像a*W1+偏差。这是输入变换的最终线性分量。

4)激活函数(Activation Function):一旦将线性分量应用于输入,将会需要应用一个非线性函数。这通过将激活函数应用于线性组合来完成。激活函数将输入信号转换为输出信号,应用激活函数后的输出看起来像f(a*W1 + b),其中f()就是激活函数。

  • n个输入为$x_1$到$x_n$,与其相应的n个权重为$W_{k1}$到$W_{kn}$。
  • 偏差为$b_k$,激活函数为f()
  • 权重首先乘以与其对应的输入,然后与偏差加在一起,得到u;激活函数被应用于u,即f(u),并且我们会从神经元接收最终输出,即$y_k = f(u)=f(\sum_{i=1}^{n}{W_{ki}*x_i}+b_k)$。

    

常用的激活函数


最常用的激活函数就是Sigmoid,ReLU和softmax

a)Sigmoid:最常用的激活函数之一

  • 定义为: $sigmoid(x)=\frac{1}{1+e^{-x}}$
  • Sigmoid变换产生一个值为0到1之间更平滑的范围。我们可能需要观察在输入值略有变化时输出值中发生的变化,光滑的曲线使我们能够做到这一点,因此优于阶跃函数。

  

 

b)ReLU(整流线性单位):与Sigmoid函数不同的是,最近的网络更喜欢使用ReLu激活函数来处理隐藏层。

  • 该函数定义为: $f(x)=max(x,0)$
  • 当X>0时,函数的输出值为X;当X<=0时,输出值为0。
  • 使用ReLU函数的最主要的好处是对于大于0的所有输入来说,它都有一个不变的导数值,常数导数值有助于网络训练进行得更快。

  

c) Softmax激活函数通常用于输出层,用于分类问题。

  • 它与Sigmoid函数是很类似的,唯一的区别就是输出被归一化为总和为1
  • Sigmoid函数将发挥作用以防我们有一个二进制输出,但是如果我们有一个多类分类问题,Softmax函数使为每个类分配值这种操作变得相当简单,而这可以将其解释为概率
  • 以这种方式来操作的话,我们很容易看到——假设你正在尝试识别一个可能看起来像8的6。该函数将为每个数字分配值如下。我们可以很容易地看出,最高概率被分配给6,而下一个最高概率分配给8,依此类推……

   

 

5)神经网络(Neural Network):神经网络构成了深度学习的支柱。

  • 神经网络的目标是找到一个未知函数的近似值
  • 它由相互联系的神经元形成,这些神经元具有权重和在网络训练期间根据错误来进行更新的偏差;激活函数将非线性变换置于线性组合,之后激活的神经元的组合给出输出值。

一个很好的神经网络定义:

“神经网络由许多相互关联的概念化的人造神经元组成,它们之间传递相互数据,并且具有根据网络”经验“调整的相关权重。神经元具有激活阈值,如果通过其相关权重的组合和传递给他们的数据满足这个阈值的话,其将被解雇;发射神经元的组合导致“学习”。

6)输入/输出/隐藏层(Input / Output / Hidden Layer):

  • 输入层是接收输入那一层,本质上是网络的第一层。
  • 输出层是生成输出的那一层,也可以说是网络的最终层。
  • 处理层是网络中的隐藏层,这些隐藏层是对传入数据执行特定任务并将其生成的输出传递到下一层的那些层。
  • 输入和输出层是可见的,而中间层则是隐藏的。

 

7)MLP(多层感知器):由于单个神经元无法执行高度复杂的任务,因此,我们使用堆栈的神经元来生成我们所需要的输出

  • 在最简单的网络中,我们将有一个输入层、一个隐藏层和一个输出层;每个层都有多个神经元,并且每个层中的所有神经元都连接到下一层的所有神经元
  • 这些网络也可以被称为完全连接的网络。


8)正向传播(Forward Propagation):正向传播是指输入层→隐藏层→输出层运动。在正向传播中,信息沿着一个单一方向前进,输入层将输入提供给隐藏层,然后生成输出;这过程中是没有反向运动的。

9)反向传播(Backpropagation):当我们定义神经网络时,我们为我们的节点分配随机权重和偏差值。一旦我们收到单次迭代的输出,我们就可以计算出网络的错误;然后将该错误与成本函数的梯度一起反馈给网络以更新网络的权重;最后更新这些权重,以便减少后续迭代中的错误

  • 使用计算出的网络错误及成本函数梯度来更新网络权重的过程,被称为反向传播。
  • 在反向传播中,网络的运动是向后的,错误随着梯度从外层通过隐藏层流回,权重被更新

10)成本函数(Cost Function):

当我们建立一个网络时,网络试图将输出预测得尽可能靠近实际值。我们使用成本函数来衡量网络的准确性,其会在发生错误时尝试惩罚网络

  • 我们在运行网络时的目标是提高我们的预测精度并减少误差,从而最大限度地降低成本。
  • 最优化的输出是那些成本函数值最小的输出
  • 如果我将成本函数定义为均方误差,则可以写为:$C= \frac{1}{m}\sum∑(y–a)^2$,其中m是训练输入的数量,a是预测值,y是该示例的实际值。

11)梯度下降(Gradient Descent):梯度下降是一种最小化成本的优化算法。其背后的思想是:开始时我们随机选择一个参数的组合(θ0,θ1,...,θn),计算代价函数,然后我们寻找下一个能让代价函数值下降最多的参数组合。我们持续这么做直到到到 一个局部最小值(local minimum),因为我们并没有尝试完所有的参数组合,所以不能确定 我们得到的局部最小值是否便是全局最小值(global minimum),选择不同的初始参数组合,可能会找到不同的局部最小值。

image_thumb[4]image_thumb[2]

12)学习率(Learning Rate):它决定了我们沿着能让代价函数下降程度最大的方向 向下迈出的步子有多大;在批量梯度下降(Batch gradient descent)中,我们每一次都同时让所有的参数减去学习速 率乘以代价函数的导数。我们应该非常仔细地选择学习率,因为它不应该是非常大的,以至于最佳解决方案被错过,也不应该非常低,以至于网络需要融合。

posted @ 2019-02-27 10:46  清风与归_G  阅读(170)  评论(0编辑  收藏  举报