什么是神经网络

502 阅读3分钟

概述


简而言之,神经网络就是函数:输入数据,输出结果。

函数


我们以MNIST手写数字图像识别为例,来定义一下对应的函数形式:

  • 任务类型:图像分类
  • 输入:一张图像包含28 x 28=784个像素,每个像素用一个实数表示
  • 输出:0-9
  • 任务描述:从图像张识别出唯一的数字
  • 函数定义 y=f(x1,x2,...,x784)y = f(x_1, x_2, ..., x_{784}) xiR,i=1,...,784x_i \in \mathbb R, i = 1, ..., 784 y{0,1,...,9}y \in \{0, 1, ..., 9\}

这是神经网络的一个入门级应用,输入是一张低分辨率(28 x 28)的黑白图片,对应的是一个拥有784个输入变量的函数。如果是一张百万像素的彩色图片,对应的输入变量就会达到300万个。

由此可见,用神经网络解决的都是一些复杂的问题,对应的也是复杂的函数。实现算法就是要构造对应的函数。

如此复杂的函数如何构造呢?我们可以从简单的函数开始,最简单且最成功的的例子就是数字电路。

数字电路


数字电路是计算机的基石,构建了我们庞大的数字世界。但是其核心却是由与、或、非逻辑门所构成。

什么是逻辑门?其实就是函数。而且都是最简单的函数。

逻辑门表达式函数形式
与门 ANDxyx \land yz=(x,y)z = \land(x, y)
或门 ORxyx \lor yz=(x,y)z = \lor(x, y)
非门 NOT¬x\lnot xy=¬(x)y = \lnot(x)
  • 变量类型: 都是布尔变量,只有2个值:{T,F}\{T, F \} ,远比自然数(N\mathbb N)、实数(R\mathbb R)简单。
  • 变量数:一元或二元函数,也是最简单的函数形式
  • 函数表示:使用真值表进行描述。为什么不用图像呢?因为是离散函数,在图像上是一些孤立的点,不太好看。

非门NOT

xx¬x\lnot x
TTFF
FFTT

与门AND、或门OR

xxyyxyx \land yxyx \lor y
TTTTTTTT
TTFFFFTT
FFTTFFTT
FFFFFFFF

与门图像

或门图像

组合逻辑门

将简单的逻辑门进行组合,可以获得更强大的函数。

构造新的二元函数:

  • 异或: xy=(x¬y)(¬xy) x \oplus y = (x \land \lnot y) \lor (\lnot x \land y)

  • 同或: xy=(xy)(¬x¬y)x \ominus y = (x \land y) \lor (\lnot x \land \lnot y)

构造多元函数:

  • 3位与: f(x,y,z)=xyz f(x,y,z) = x \land y \land z

  • 8位加法器: f(x1,...,x8,y1,...,y8)f(x_1, ..., x_8, y_1, ..., y_8)

    • 它是一个包含16个布尔变量的16元函数

通过对简单函数的复合,可以构造复杂的函数。这一思想也适用于神经网络。

神经网络


神经网络也是函数。像数字电路一样,它也是由简单的函数复合而成。数字电路的基本单位是与、或、非门,而神经网络的基本单位则是神经元。

神经元

那什么是神经元呢?生物神经元是一个细胞,有输入的树突,有输出的轴突。而神经网络上的神经元是人工神经元,它也是一个函数,更准确地说,它是一类函数。

神经元的输入数量是可以变化的,也就是说它代表的是一个nn元函数f(x1,...,xn)f(x_1, ..., x_n),而不同神经元的nn是可以不同的。

神经网络

神经元之间相互组合,就构成了神经网络。如下图所示:

该神经网络包含三个神经元:

  • f1(x1,...,xn) f_1(x_1, ..., x_n)
  • f2(x1,...,xn) f_2(x_1, ..., x_n)
  • f3(x1,x2) f_3(x_1, x_2)

神经网络所代表的函数为: f(x1,...,xn)=f3(f1(x1,...,xn),f2(x1,...,xn))f(x_1, ..., x_n) = f_3(f_1(x_1, ..., x_n), f_2(x_1, ..., x_n))

问题


神经元所代表的函数到底是什么?

只知道是个nn元函数可不够,数字电路中的基本单元与、或、非门可都是列出了真值表,画出了图像的,而神经元呢?

参考软件


可交互图表版本,请参考: 神经网络与深度学习