老饼讲解:一步一步上手学习
欢迎大家来学习BP神经网络,BP神经网络是一个常用的黑箱模型,在学习BP神经网络之前,我们先来看看BP神经网络有什么用、用来解决什么样的问题,以及BP神经网络的一些常见的使用场景。
一般来说,我们已知 X 和 y 存在某种关系( X 和 y 可以是一个向量),而我们希望得到 X 与 y 明确的数学关系,这样在知道 X 的值时,就可以知道对应的y是什么。
怎么找出X和y的数学关系?对于这个问题一般有三种场景:

场景一:完全白箱
第一种场景是,我们完全知道X和y的内部机制,那么我们可以根据X和y的逻辑关系推导出X和y的数学关系。例如物体进行自由落体时,时间与位置的关系,我们完全可以根据物理关系推导出来。
场景二:半白箱(带参模型)
第二种场景是,我们只知道X和y的部分逻辑关系,得到的数学表达式带有参数,那么,我们可以通过采集历史数据,用最小误差的方法,去估算参数。例如,根据胡克定律,我们知道力和形变量成线性关系:F=-kx,k待定,可以采集数据,估算出k。
场景三:完全黑箱
第三种场景是,我们完全不知道X和y的逻辑关系。这时的解决方案是,采集到大量历史数据样本,在没有任意背景假设的前提下、用模型尽量的拟合历史样本数据,然后留出一部分数据测试模型的准确性。
可以知道,第一种场景得到的数学关系是非常可靠的,第二种略差一点,而第三种就纯粹黑箱拟合了,纯粹的"根据数据来找关系",最不可靠就是它了。
在x、y之间的逻辑较清晰时,第三种方案一般用不上,但无奈在许多问题中,我们就是完全不知道X和y的内部逻辑(或复杂到不知道),这时,第三种黑箱拟合的方案,反而是我们唯一可用的方案了!而BP,就是解决这种黑箱拟合的众多方法中极为出彩的方法之一!
总的来说,如果完全不知道X和y的关系,那么就可以用BP来拟合,可能不够100%精准、但至少能模仿。
例如,我们不知道系统的输入X和输出y之间的关系,那么我们可以对系统采集一些历史样本,然后投放到一个3个隐神经元的网络(实际就是一个函数F(X))中训练,如下:

在通过充分的训练、让BP神经网络拟合到历史数据的关系后,就可以投入生产中预测了(例如,输入【0.5,0.5】,网络就输出0.7636的预测值),这样,即使不知道输入输出的关系,仍然可以预测到系统的输出值。
虽然BP神经网络最本质的功能就是用来拟合输入与输出之间的关系,但是它可以延伸出许多玩法,解决各种实际问题,例如:数值预测、模式识别、曲线拟合、数据压缩(特征提取)等等。

这些问题,我们以后会举具体的例子、以及代码来展示,这里随便看看就好了。
好了,现在我们都知道了,BP神经网络其实就是一种完全自由的黑箱模型,可以拟合任意关系,虽然未必100%可靠,但还是可以用到各种各样的场景,大展身手,这里我们先泛泛而谈,后面就会了解得非常具体了。
评论