第一章(1) 神经网络如何工作

---恢复内容开始---

1.1 尺有所短,寸有所长

问题 计算机 人类
快速的对成千上万的大数字进行计算 简单 困难
在一大群人的照片中寻找面孔 困难 简单

1.2预测器

  1.所有有用的计算机系统都有一个输入和输出,并在输入和输出之间进行某种类型的计算,神经网络也是如此。

  2.机器接受了一个输入,并作出应有的预测,输出结果。我们称之为预测器。我们根据结果与已知的真实案例进行比较所得到的误差,调整内部参数,使预测更加的精确。

1.3分类器与预测器并无太大差别

1.4训练简单的分类器

  1.我们使用简单的数学,理解了线性分类器输出误差值和可调节斜率参数之间的关系,也就是说我们知道了在何种程度上调节斜率,可以消除误差值。

    初始值:   y=Ax                   目标值:  t=(♠+A)x  

         应变化的斜率:    ♠=(t-y)/x

  2.使用普通的调整方法会有一个问题,就是改进后的模型只会与最后一次的样本最匹..解决该问题的最好的办法就是使用学习率,调节改进速率,这样单一的训练样本就不能主导整个学习过程了.

  3.来自真实世界的训练样本可能充满噪声或包含错误.适度的跟新有助于限制这些错误样本的影响.

1.5 有时候一个分类器不足以求解问题

  1.如果数据本身不是由单一线性过程支配,那么一个简单的线性分类器就不能对数据进行划分.例如,逻辑XOR运算符支配的数据说明了这一点.

  2.解决方案很容易,你只需要使用多个线性分类器来划分由单一直线无法分离的数据就可以了.

  3.使用多个分类器一起工作是神经网络的核心.

1.6 神经元--大自然的计算器

  1.神经元不希望传递微小的噪声信号,而是传递有意识的明显的信号, 只有输入超过了阀值(threshold),足够接通电路,才会产生输入信号.在数学上一个简单的S函数(阶跃函数的改进版)就可以实现这一行为了.

  2.虽然比起现代的计算机,生物大脑看起来储存空间少得多,运行速度比较慢,但是生物大脑却可以执行复杂的任务,如飞行,寻找食物,学习语言喝逃避天敌.

  3.相比于传统的计算机系统,生物大脑对损坏和不完善信号具有难以置信的弹性

1.7 在神经网络中追踪信号

1.8 凭心而论,矩阵乘法大有用处

  1.整体过程

   X=W*I     W是权重矩阵,I是输入矩阵,X是组合调节后的信号.

   O=sinmoid(X)        O代表输出矩阵     sinmoid代表激活函数

  2.通过神经网络向前馈送信号所需的大量运算可以表示为矩阵乘法.

  3.不管神经网络的规模如何,将输入输出表达为矩阵乘法,使得我们可以更简洁的进行书写.

  4.更重要的是,一些计算机编程语言理解矩阵计算,并认识到潜在的计算方法的相似性.这允许计算机高速高效地进行这些计算.

1.9 使用矩阵乘法的三层神经网络的示例

  1.神经网络的三层 输入层,输出层,隐藏层

  2. 过程 输入 -> 矩阵乘法->隐藏层->激活函数->输出->矩阵乘法->输出层的输出

1.10 学习来自多个节点的权重

  我们在两件事情上使用的权重

  1. 在神经网络中,我们使用权重,将信号输入向前传播到输出层

  2.我们使用权重,将误差,从输出向后传播到网络中,我们称这种方法称为反向传播

    大权重分到的误差大,小权重分到的误差小

1.11 多个输出节点反向传播误差

  1.多个输出节点只是重复第一个节点所做的事情

1.12 反向传播误差到更多层中

  1.神经网络通过调整链接权重进行学习.这种方法由误差引导,误差就是训练数据所给出正确答案和实际输出之间的误差.

  2.简单的说,在输入节点处的误差等于所需值与实际值之间的差值.

  3.但是,与内部节点相关联的误差却并不显而易见.一种方法是按照链接接权重的比例来分隔输出层的误差,然后在每个内部节点处重组这些误差.

1.13 使用矩阵乘法进行反向传播误差

  1.关键点    errorhidden = WT  •  erroroutput

     2.这意味这向前馈送信号和反向传播误差都可以使用矩阵计算而变得高效

1.14 我们实际上如何跟新权重 (难点)

  1. 梯度下降法 --- 假设在一个非常复杂,有波峰波谷的地形以及连绵群山俊岭.在黑暗中,伸手不见5指,你知道你是在一个山坡上,你需要到达坡底,对于整个地形,你没有精确的地图,只有一把手电筒

,你能做什么呢?你可能会使用手电筒,做近距离的观察,你不能使用手电筒看的更远,无论如何你肯定看不到整个地形,你可以看到,某一块土地是上坡还是下坡,于是你就小步的往这个方向走,通过这种方

式,你不需要完整的地图,也不需要实现制定路线,你一步一个脚印,缓慢前进,慢慢的下山.

  我们将复杂困难的函数当作网络误差,那末下山找到最小值就意味着最小化误差,这样我们就可以改进网络输出,这就是我们希望做到的!

  2.正梯度意味着减小x值,负梯度意味着增大x值.

  3.为了避免终止于错误的山谷或错误的函数最小值.我们从山上不同点开始,多次训练神经网络,确保并不总是终止于错误的山谷.不同的起点,意味这选择不同的起始参数,在神经网络的情况下,这意味着选择不同的起始链接权重.

  4.误差函数的选择

  5. 误差的公式 

   误差权重的计算:

   新权重的计算:

1.15 权重更新成功的范例

1.16 准备数据

  1.如果输入,输出和初始权重数据的准备与网络的设计和实际求解的问题,不匹配,那么神经网络并不能很好的工作.

  2.一个常见的问题就是饱和,在这个时候,大信号(这有时是大权重带来的)导致了应用在信号上的激活函数的斜率变得非常平缓,这降低铝,神经网络学习到更好权重的能力

  3.另一个问题是零值信号或零值权重,这也会使网络丧失学习更好权重的能力.

  4.内部链接的权重应是随机的,值较小,但要避免零值.如果节点的传入链接较多,应采取其他方法,例如,减小这些权重的大小.

  5.输入应该调整到较小值,但不能为零.一个常见的范围为,0.01~0.99或-1.0~1.0,使用那个范围,取决于是否匹配遇到了问题

  7.输出应该在激活函数能够生成的值的范围内.逻辑S函数是不可能生成小于等于0或大于等于1的值,将训练目标值设置在有效的范围外,将会驱使权重越来越大,导致网络饱和,一个合适的范围是0.01~0.99

猜你喜欢

转载自www.cnblogs.com/liu247/p/11050465.html