概述
简而言之,神经网络就是函数:输入数据,输出结果。
函数
我们以MNIST手写数字图像识别为例,来定义一下对应的函数形式:
- 任务类型:图像分类
- 输入:一张图像包含28 x 28=784个像素,每个像素用一个实数表示
- 输出:0-9
- 任务描述:从图像张识别出唯一的数字
- 函数定义
y = f ( x 1 , x 2 , . . . , x 784 ) y = f(x_1, x_2, ..., x_{784}) y=f(x1,x2,...,x784)
x i ∈ R , i = 1 , . . . , 784 x_i \in \mathbb R, i = 1, ..., 784 xi∈R,i=1,...,784
y ∈ { 0 , 1 , . . . , 9 } y \in \{0, 1, ..., 9\} y∈{ 0,1,...,9}
这是神经网络的一个入门级应用,输入是一张低分辨率(28 x 28)的黑白图片,对应的是一个拥有784个输入变量的函数。如果是一张百万像素的彩色图片,对应的输入变量就会达到300万个。
由此可见,用神经网络解决的都是一些复杂的问题,对应的也是复杂的函数。实现算法就是要构造对应的函数。
如此复杂的函数如何构造呢?我们可以从简单的函数开始,最简单且最成功的的例子就是数字电路。
数字电路
数字电路是计算机的基石,构建了我们庞大的数字世界。但是其核心却是由与、或、非逻辑门所构成。
什么是逻辑门?其实就是函数。而且都是最简单的函数。
逻辑门 | 表达式 | 函数形式 |
---|---|---|
与门 AND | x ∧ y x \land y x∧y | z = ∧ ( x , y ) z = \land(x, y) z=∧(x,y) |
或门 OR | x ∨ y x \lor y x∨y | z = ∨ ( x , y ) z = \lor(x, y) z=∨( |