Python神经网络关键点

版权声明:来源请注明出处 https://blog.csdn.net/qq_40196164/article/details/83089721
  • 所有有用的计算机系统都有一个输入和一个输出,并在输入和输出之间进行某种类型的计算。神经网络也是如此。
  • 当我们不能精确知道一些事情是如何运作时,我们可以尝试使用模型来估计其运作方式,在模型中,包括了我们可以调整的参数。
  • 改进这些模型的一种好的方法是:基于模型和已知真实实例之间的比较,得到模型偏移的误差值,调整参数。
  • 我们使用简单的数学,理解了线性分类器输出的误差值和可调节斜率参数之间的关系。也就是说,我们知道了在何种程度上调整斜率,可以消除输出误差。
  • 使用朴素的调整方法会出现一个问题,及改进后的模型只与最后一次的训练样本最匹配,“有效的”虎忽略了所有以前的训练样本,解决这个问题的最好的一种方法是使用学习率,调节改进学习率,这样单一的训练样本就不能主导整个学习过程。
  • 来自真实世界的训练样本可能充满噪声或包含错误。适度更新有助于限制这些错误样本。
  • 如果数据本身不是由单一线性过程支配,那么一个简单的线性分类器不能对数据进行划分。例如:有逻辑XOR运算符支配数据说明了这一点。
  • 但是解决方案很容易,你只需要使用多个分类器来划分有单个无法分离的数据。
  • 相比于现代计算机,生物大脑看起来存储空间少得多,运行速度比较慢,但是生物大脑可以执行复杂的任务,如飞行、寻找食物等;相比于传统的计算机系统,生物大脑对损坏和不完整信号具有难以置信的弹度。
  • 有互相连接的神经元组成的生物大脑是人工神经网络的灵感来源。
  • 通过神经网络向前馈送信号所需的大量运算可以表示为矩阵乘法。
  • 不管神经网络规模如何,将输入输出表达为矩阵乘法,使得我们可以更简洁地进行书写。更重要的是,一些计算机编程语言理解矩阵,并认识到潜在的计算方法的相似性。这允许计算机高速高效地进行这些计算。
  • 反向传播误差可以表示为矩阵乘法。
  • 无论网络规模大小,这使得我们能够简洁地表达反向传播误差,同时也允许理解矩阵计算的计算机语言更高效、更快速地完成工作。这意味着前向馈送信号和反向传播误差都可以使用矩阵计算而变的高效。
  • 梯度下降法是求解函数最小值的一种很好的方法,当函数非常复杂困难,并且不容易使用数学代数求解函数时,这种方法却发挥了很好的作用,更重要的是,当函数有很多参数,一些其他方法不切实际,或者会得出错误答案,这种方法依然可以适合。这种方法也具有弹性,可以容忍不完善的数据,如果我们不能完美地描述函数或我们偶尔意外地走错了一步,也不会错的离谱。
  • 神经网络地误差是内部链接权重的函数。改进神经网络,意味着通过改变权重减少这种误差。
  • 直接选择合适地权重太难了,另一种方法是,通过误差函数地梯度下降,采取小步长,迭代地改进权重。所迈出的每一步的方向都是在当前位置向下斜率最大的方向,这就是所谓的梯度下降法;使用微积分可以很容易地计算出误差斜率。
  • 如果输入、输出和初始权重数据地准备与网络设计和实际求解地问题不匹配,那么神经网络并不能很好的工作,一个常见的问题是饱和。在这个时候,大信号(这有时候是由大权重带来的)导致了应用在信号上地激活函数地斜率变得非常得平缓,这降低了神经网络学习到更好权重地能力。另一个常见的问题是零值信号或者零值权重这也可以使得网络丧失学习更好的权重的能力。
  • 内部链接的权重应该是随机的,值较小,但要避免零值。如果节点的传入链接较多,有一些人会使用相对复杂的规则,如减少这些权重的大小,输入应该调整到较小值,但不能为零。一个常见的范围为0.01-0.99,或-1.0-1.0,使用哪个范围,取决于是否匹配了问题。
  • 输出应该在激活函数能够生成的值的范围内。逻辑S函数是不可能生成小于等于0或者大于等于1的值。将训练目标值设置在有效的范围内之外,将会驱使产生越来越大的权重,导致网络饱和。一个合适的范围为0.01-0.99.

猜你喜欢

转载自blog.csdn.net/qq_40196164/article/details/83089721