Python27 神经网络中的重要概念和可视化实现

1. 神经网络背后的直观知识

神经网络的工作方式非常相似:它接受多个输入,经过多个隐藏层中的多个神经元进行处理,并通过输出层返回结果,这个过程在技术上称为“前向传播”。

接下来,将神经网络的输出与实际输出进行比较。任务是使神经网络的输出尽可能接近实际(期望的)输出。在这个过程中,每个神经元都会产生一些误差,开发人员目标是最小化这些误差。

为了减少误差,尝试调整神经元的值和权重,特别是那些对错误“贡献”更多的神经元。这个过程称为“反向传播”。

为了有效地最小化误差并减少迭代次数,神经网络通常使用梯度下降等优化算法。

2. 多层感知器及其基础知识

就像原子是形成地球上任何物质的基础 - 神经网络的基本形成单位是感知器。那么,什么是感知器呢?感知器可以被理解为需要多个输入并产生一个输出的任何东西。例如,看下面的图片:

图片

上述结构需要三个输入并产生一个输出,下一个逻辑问题是输入和输出之间的关系是什么?从基本的方式着手,寻求更复杂的方法。

下面讨论三种创建输入输出关系的方法:

  1. 通过直接组合输入和计算基于阈值的输出。例如:取x1 = 0,x2 = 1,x3 = 1并设置阈值= 0。因此,如果x1 + x2 + x3> 0,则输出为1,否则为0。可以看出,在这种情况下,感知器会将输出计算为1。

  2. 接下来为输入添加权重。例如,分别为x1,x2和x3分配w1 = 2,w2 = 3和w3 = 4。为了计算输出,将输入与相应权重相乘,并将其与阈值进行比较,如w1 * x1 + w2 * x2 + w3 * x3>阈值。与x1和x2相比,这些权重对于x3显得更重要。

  3. 最后添加偏置量:每个感知器也有一个偏置量,可以被认为是感知器为什么灵活。它与某种线性函数y = ax + b的常数b类似,它允许上下移动线以适应数据更好的预测。假设没有b,线将始终通过原点(0,0),并且可能会得到较差的拟合。例如,感知器可以具有两个输入,在这种情况下,它需要三个权重。每个输入一个,偏置一个。现在输入的线性表示将如下所示:w1 * x1 + w2 * x2 + w3 * x3 + 1 * b。

但是,上面所讲的感知器之间的关系都是线性的,所以人们将感知器演化成现在所谓的人造神经元,对于输入和偏差,神经元将使用非线性变换(激活函数)。

3. 什么是激活函数?

激活函数将加权输入(w1 * x1 + w2 * x2 + w3 * x3 + 1 * b)的和作为参数,并返回神经元的输出。

图片

在上式中,用x0表示1,w0表示b。

激活函数主要用于进行非线性变换,它能够拟合非线性假设或估计复杂函数,有多种激活功能,如:“Sigmoid”“Tanh”ReLu等等。

4. 前向传播,反向传播和训练次数(epochs)

到目前为止,神经网络已经计算了输出,这个过程被称为“正向传播”。但是如果估计的输出远离实际输出(非常大的误差)怎么办?基于错误更新偏差和权重。这种权重和偏差更新过程被称为“反向传播”。

反向传播(BP)算法通过确定输出处的损耗(或误差),然后将其传播回网络来工作, 更新权重以最小化每个神经元产生的错误。最小化误差的第一步是确定每个节点w.r.t.的梯度(Derivatives),最终实现输出。

这一轮的前向和后向传播迭代被称为一个训练迭代也称为“Epoch”。

ps:e(一)poch(波)的意思;一个epoch是指把所有训练数据完整的过一遍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值