什么是神经网络
概述
简而言之,神经网络就是函数:输入数据,输出结果。
函数
我们以MNIST手写数字图像识别 为例,来定义一下对应的函数形式:

- 任务类型 :图像分类
- 输入 :一张图像包含28 x 28=784个像素,每个像素用一个实数表示
- 输出 :0-9
- 任务描述 :从图像张识别出唯一的数字
- 函数定义
y = f(x_1, x_2, ..., x_{784})
x_i \in \mathbb R, i = 1, ..., 784
y \in \{0, 1, ..., 9\}
这是神经网络的一个入门级应用,输入是一张低分辨率(28 x 28)的黑白图片,对应的是一个拥有784个输入变量的函数。如果是一张百万像素的彩色图片,对应的输入变量就会达到300万个。
由此可见,用神经网络解决的都是一些复杂的问题,对应的也是复杂的函数。实现算法就是要构造对应的函数。
如此复杂的函数如何构造呢?我们可以从简单的函数开始,最简单且最成功的的例子就是数字电路。
数字电路
数字电路是计算机的基石,构建了我们庞大的数字世界。但是其核心却是由与、或、非逻辑门所构成。
什么是逻辑门?其实就是函数。而且都是最简单的函数。
| 逻辑门 | 表达式 | 函数形式 |
|---|---|---|
| 与门 AND | x \land y | z = \land(x, y) |
| 或门 OR | x \lor y | z = \lor(x, y) |
| 非门 NOT | \lnot x | y = \lnot(x) |
- 变量类型: 都是布尔变量,只有2个值:\{T, F \},远比自然数(\mathbb N)、实数(\mathbb R)简单。
- 变量数:一元或二元函数,也是最简单的函数形式
- 函数表示:使用真值表进行描述。为什么不用图像呢?因为是离散函数,在图像上是一些孤立的点,不太好看。
非门NOT
| x | \lnot x |
|---|---|
| T | F |
| F | T |

与门AND、或门OR
| x | y | x \land y | x \lor y |
|---|---|---|---|
| T | T | T | T |
| T | F | F | T |
| F | T | F | T |
| F | F | F | F |
与门图像

或门图像

组合逻辑门
将简单的逻辑门进行组合,可以获得更强大的函数。
构造新的二元函数:
异或: x \oplus y = (x \land \lnot y) \lor (\lnot x \land y)

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

构造多元函数:
3位与: f(x,y,z) = x \land y \land z

8位加法器: f(x_1, ..., x_8, y_1, ..., y_8)
* 它是一个包含16个布尔变量的16元函数
通过对简单函数的复合,可以构造复杂的函数。这一思想也适用于神经网络。
神经网络
神经网络也是函数。像数字电路一样,它也是由简单的函数复合而成。数字电路的基本单位是与、或、非门,而神经网络的基本单位则是神经元。
神经元
那什么是神经元呢?生物神经元是一个细胞,有输入的树突,有输出的轴突。而神经网络上的神经元是人工神经元,它也是一个函数,更准确地说,它是一类函数。
神经元的输入数量是可以变化的,也就是说它代表的是一个n元函数f(x_1, ..., x_n),而不同神经元的n是可以不同的。

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

该神经网络包含三个神经元:
- f_1(x_1, ..., x_n)
- f_2(x_1, ..., x_n)
- f_3(x_1, x_2)
神经网络所代表的函数为:
f(x_1, ..., x_n) = f_3(f_1(x_1, ..., x_n), f_2(x_1, ..., x_n))
问题
神经元所代表的函数到底是什么?
只知道是个n元函数可不够,数字电路中的基本单元与、或、非门可都是列出了真值表,画出了图像的,而神经元呢?
参考软件
可交互图表版本,请参考: 
