神经网络是一种模拟人脑神经元工作方式的算法,通过训练可以自动从数据中提取有用特征。
如何工作?
将一堆特征向量代入神经网络后得到输出。
到这里,你理解了吗?相信你还是有点懵逼的。
理解神经网络
想要真正理解神经网络,还得从我们大脑的神经元开始:

上游神经元通过树突传递信息到达胞体,当信息总和达到一定程度时,这个神经元就会被激活,继续用轴突向下游神经元传递信息。而不同的树突承载信息的能力是不同的,就说明了不同的信息对于神经元来说其重要程度是不同的。
而抽象成数学语言就是:
- 每一个从上游传递的信息就是 Xi
- 因为不同的信息对于神经元来说其重要程度是不同的,所以每一个 X 在到达神经元前都需要乘上一个权重 W
f(x)=W1X1+W2X2
- 将所有信息求和后到达神经元,如果 > 阈值 b 则输出1,< 阈值 b 则输出 0
y={0 if f(x)≤b1 if f(x)>b神经网络的本质
其实这个公式还能变一下:
f(x)=W1X1+W2X2−b将阈值 b 移到等式另一边:
y={0 if f(x)=W1X1+W2X2≤b1 if f(x)=W1X1+W2X2>by={0 if f(x)=W1X1+W2X2−b≤01 if f(x)=W1X1+W2X2−b>0则输出值变为:
y={0 if f(x)≤01 if f(x)>0我们做的只有移项,所以新公式的输出值与旧公式的输出值是一样的。
假设现在有以下数据(橙色点目标值为 1,蓝色点为 0 ):

如果这个神经网络的所有点的输出值等于目标值,令 f(x)=0,就能得到一条线完美地分开了两类点:

现在看起来,神经网络的用处只是分类。但分类有什么用呢?
让我们仔细想想:
这些行为的本质都是分类。
将外部环境作为输入 Xi,经过神经网络后,输出 y=1 为逃跑,输出 y=0 为靠近。
通过不断试错,最终桑代克的猫也能走出笼子。而这个过程则称之为训练(Training)。
这就是神经网络产生智慧的原因了,你所见到网上的那些图片分类和AI聊天都是由这些简单的神经元组成的。
但想想看,如何才能让神经网络分开两类点?
补充:为什么神经网络能够提取特征?
其实答案已经很明显了:不同的信息对于神经元来说其重要程度是不同的,所以每一个X在到达神经元前都需要乘上一个权重 W。
而其中的权重 W 控制了上游信息的重要程度,同时阈值 b 控制了信息向下游神经元的传递。
还是刚才的那些点,将它们作为训练集训练这个神经网络(让输出值等于目标值),在训练过程中它发现:
- 目标值为 1 的点 x1 通常较小,x2 通常较大
- 目标值为 0 的点 x1 通常较大,x2 通常较小
此时它调小 W1,调大 W2 就能让:
- 代入目标值为 1 的点 f(x) 会变得更大,y 就更容易为 1
- 代入目标值为 0 的点 f(x) 会变得更小,y 就更容易为 0
最后调整 b 直到所有输出值等于目标值。