评论

收藏

[其他] BP神经网络可以用来找女朋友吗

网络安全 网络安全 发布于:2021-07-08 13:27 | 阅读数:260 | 评论:0

  神经网络博大精深
  BP神经网络算法就是一个非常神奇的算法,它的美丽就在于它的反向传播,就在于它可以学习,要有足够的数据,它就会越来越强大它就像是模仿人类的神经元,不不不,应该是在模仿某些不会思考的动物的神经元,虽然现在只能模仿几层,但是就是特别像不过学习率的设置应该还要调整一下,调整成前面学习快,后面慢慢学习速度慢这样才行。为什么不像人类呢,我感觉人类的大脑中还有一些更加神奇的神经元,正是由它们的存在让人类区别于一般动物,好奇这些东西是什么样子,我们是不是也可以利用计算机将它们模拟出来,如果有,如果模拟出来人工智能必然会上升一个台阶。
  神经网络算法概述
  神经网络的特点
  1.模拟人类神经元。
  2.具有自学习,自组织,较好的容错性,优良的非线性逼近。
  3.8、9成的人工神经网络采用误差反向传播。
  它每次根据训练得到的结果与预想结果进行误差分析,进而修改权值和阈值,一步一步得到能输出和预想结果一致的模型。
  神经网络的应用
  在人工神经网络的实际应用中,绝大部分的神经网络模型都采用BP网络及其变化形式。它也是前向网络的核心部分,体现了人工神经网络的精华。
  BP神经网络主要用于以下四个方面。
  1)函数逼近:用输入向量和相应的输出向量训练一个网络逼近一个函数。
  2)模式识别:用一个待定的输出向量将它与输入向量联系起来。
  3)分类:把输入向量所定义的合适方式进行分类。
  4)数据压缩:减少输出向量维数以便于传输或存储。
  5)数学近似映射:1.拟合,预测2.分类,聚类分析等
DSC0000.png

  如图中,一般神经网络分为三层:输入层,隐藏层,输出层。
  神经元的信息处理通常可以看做一个多输入单输出的非线性过程,就好比说,我在路上看到一个女孩,我的眼睛捕捉到她的很多信息,比如说大眼睛,小酒窝,长睫毛以及衣服的颜色,等无数无数信息,你要我举例还能举出一堆来,但是呢,我最后只得出一个或者几个结论:例如她是不是我喜欢的类型,我要不要上前去要微信等等。这就是明显的多输入,单输出,我们的神经元就是这样工作的,不然每一个输入都要一个输出我们早就累死了。
  以上述我看见的女孩的各种特征为输入,这些信息经过大脑中隐藏层(我们大脑里面肯定不止一个隐藏层)再到输出层输出我得出的结论。
  下面我简单介绍一下BP神经网络的实现方法。
  BP神经网络
  首先我们知道一般神经网络分为三层:输入层,隐藏层,输出层,在这里我们现要有这么几个随机的权重举证来表明上一层到这一层的关系(结合上次发布的代码)我设置了输入层24层,隐藏层25层,输出层4层。看了上一篇文章的代码,下面我给大家阐明几个表达式的概念。
  01
  w1:输入层到隐藏层权重
  w1为输入层到隐藏层权重矩阵,24行,25列:这个矩阵什么意思呢,我们知道我设计的神经网络中输入数据为24个,输出数据为25个,w1矩阵就是这24个数分别对25个值的权重矩阵,如果觉得权重矩阵比较难理解,你可以思考一下24个数对一个值的权重向量。
  02
  b1:输入层到隐藏层偏置
  b1为偏置就是说输入层到隐藏层之后不是直接乘权重就完事了的,我们可以这样理解,就是只乘个权重不是很奇怪吗,就连一元一次方程都要有个ax+b的那个常数b呢就是我们的偏置,此时的b为1行,25列的向量。
  03
  学习率xite
  学习率是指神经网络在每一次训练中学习的速率,学习率大就会学的比较快,但是更可能导致最后的结果误差较大,学习率小就会学习的比较慢,我们需要自己去权衡其中的利弊。
DSC0001.jpeg

  BP神经网络利用输出后误差来估计输出层的直接前导层的误差,再用这误差来估计更前一层的误差,如此一层一层的反传下去,就获得了所有其他层的误差关系。
  第一步,首先计算各层神经元的输入和输出。
  第二步,利用网络期望输出和实际输出,计算误差函数对输出层各神经元的偏导数,输出层各神经元又计算对隐藏层到输出层权重的偏导数,就可以通过两式相乘计算误差函数对各权重的偏导数。
  第三步,利用上一步计算出的方法计算出误差对隐藏层的偏导数和隐藏层对输入层到隐藏层权重的偏导数,两式相乘得误差函数对各层神经元的偏导数。
  第四步,利用误差函数对输出层各神经元的偏导数和隐藏层各神经元的输出来修正连接权值。其结果=原有权重-学习率*第二步求得的偏导数(学习率越小越慢越好)。
  第五步,修正上一层权重=原权重-学习率*第三步求得的偏导数。
  第六步,计算全局误差。
  第七步,判断误差是否满足要求直到学习完毕。
  那么讲了这么半天听的挺高大上的,那这个是不是可以帮我找到心仪的女朋友呢?
DSC0002.png

  理论上是可以的,假设能够拿到足够多的成功和失败的数据,通过设置合理的学习率和神经网络结构,我认为是有可能做到的,但是这机器少了情感这一部分就觉得很别扭,像是少了什么核心的东西。
  总的来说上面那个理论的条件是比较难达成的,不过我们也由此引出了BP神经网络算法的缺陷
  ①学习速度慢,需要数据量大,一般也要几百次甚至上千次的学习才能收敛。
  ②容易陷入局部最优解值(这也可以想象到)。
  ③网络层数、神经元个数的选择没有相应的理论指导(你也不知道到底要建几层,因为输入的东西太多了)等问题。
  现在,大家都在找神经网络算法的改进方法,而且有很多改进的方法都已经被用到了我们身边,比如说人脸识别,手势识别等,不可否认神经网络算法的强大魅力,但我隐隐感觉未来还会有更有意思的东西,颠覆性的东西,让我们拭目以待!
  最后提一嘴,算法找女朋友是肯定实现不了的,因为你无法想象到如果全世界都用算法来找伴侣,世界将会是什么模样。

  
关注下面的标签,发现更多相似文章