Blog

自动扶梯上升到明亮的天空,周围是金属墙。【人工智能】神经网络的本质

神经网络是一种模拟人脑神经元工作方式的算法,通过训练可以自动从数据中提取有用特征。

如何工作?

将一堆特征向量代入神经网络后得到输出。

到这里,你理解了吗?相信你还是有点懵逼的。

理解神经网络

想要真正理解神经网络,还得从我们大脑的神经元开始:

神经元的基本结构

上游神经元通过树突传递信息到达胞体,当信息总和达到一定程度时,这个神经元就会被激活,继续用轴突向下游神经元传递信息。而不同的树突承载信息的能力是不同的,就说明了不同的信息对于神经元来说其重要程度是不同的

而抽象成数学语言就是:

  1. 每一个从上游传递的信息就是 XiX_{i}
  2. 因为不同的信息对于神经元来说其重要程度是不同的,所以每一个 XX 在到达神经元前都需要乘上一个权重 WW
f(x)=W1X1+W2X2f(x)=W_{1}X_{1}+W_{2}X_{2}
  1. 将所有信息求和后到达神经元,如果 >> 阈值 bb 则输出1,<< 阈值 bb 则输出 00
y={0 if f(x)b1 if f(x)>by=\begin{cases} 0 \text{ if } f(x)\le b \\ 1 \text{ if } f(x) > b \end{cases}

神经网络的本质

其实这个公式还能变一下:

f(x)=W1X1+W2X2bf(x)=W_{1}X_{1}+W_{2}X_{2}-b

阈值 bb 移到等式另一边:

y={0 if f(x)=W1X1+W2X2b1 if f(x)=W1X1+W2X2>by=\begin{cases} 0 \text{ if } f(x)=W_{1}X_{1}+W_{2}X_{2}\le b \\ 1 \text{ if } f(x)=W_{1}X_{1}+W_{2}X_{2} > b \end{cases} y={0 if f(x)=W1X1+W2X2b01 if f(x)=W1X1+W2X2b>0y=\begin{cases} 0 \text{ if } f(x)=W_{1}X_{1}+W_{2}X_{2}-b\le 0 \\ 1 \text{ if } f(x)=W_{1}X_{1}+W_{2}X_{2}-b > 0 \end{cases}

则输出值变为:

y={0 if f(x)01 if f(x)>0y=\begin{cases} 0 \text{ if } f(x)\le 0 \\ 1 \text{ if } f(x) > 0 \end{cases}

我们做的只有移项,所以新公式的输出值与旧公式的输出值是一样的。

假设现在有以下数据(橙色点目标值为 11,蓝色点为 00 ):

一个坐标轴包含两类数据

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

一个坐标轴中有两类数据和一条分割线完美地分开了两类点

现在看起来,神经网络的用处只是分类。但分类有什么用呢?

让我们仔细想想:

  • 我们看到危险后就会逃跑
  • 我们看到食物就会靠近

这些行为的本质都是分类。

将外部环境作为输入 XiX_{i},经过神经网络后,输出 y=1y=1 为逃跑,输出 y=0y=0 为靠近。

通过不断试错,最终桑代克的猫也能走出笼子。而这个过程则称之为训练(Training)

这就是神经网络产生智慧的原因了,你所见到网上的那些图片分类和AI聊天都是由这些简单的神经元组成的。

但想想看,如何才能让神经网络分开两类点?

补充:为什么神经网络能够提取特征?

其实答案已经很明显了:不同的信息对于神经元来说其重要程度是不同的,所以每一个X在到达神经元前都需要乘上一个权重 WW

而其中的权重 WW 控制了上游信息的重要程度,同时阈值 bb 控制了信息向下游神经元的传递。

还是刚才的那些点,将它们作为训练集训练这个神经网络(让输出值等于目标值),在训练过程中它发现:

  1. 目标值为 11 的点 x1x_{1} 通常较小,x2x_{2} 通常较大
  2. 目标值为 00 的点 x1x_{1} 通常较大,x2x_{2} 通常较小

此时它调小 W1W_{1},调大 W2W_{2} 就能让:

  1. 代入目标值为 11 的点 f(x)f(x) 会变得更大,yy 就更容易为 11
  2. 代入目标值为 00 的点 f(x)f(x) 会变得更小,yy 就更容易为 00

最后调整 bb 直到所有输出值等于目标值。

About

Avatar

Mark Ivory

一个草稿本而已

Series