Keras 是一个用于定义和训练神经网络的高阶API。简单的说,Keras 是对 TensorFlow 等深度学习框架的更高一层的封装,以提供更加优雅,用户友好的接口设计。因此,Keras 不能独立运行,需要底层框架的支持,这个底层框架可以是 TensorFlow, CNTK, Theano。推荐使用 TensorFlow , 本文也是以 TensorFlow 为例。
1. 预备知识
1.1 什么是神经网络?
在人工智能领域,通常所说的“神经网络”,完整说法应该是“人工神经网络”。它是人类为了使机器具备人类的智力行为,使用计算机算法模拟人类神经系统,开发的一种机器学习技术。人类的神经系统是由一个个神经元彼此相连,构成的复杂网络系统。
下图是大脑神经元结构,神经元从它的多个树突(DENDRITES)接收输入(神经冲动),经过处理,判断是否通过轴突(AXON)输出神经冲动。
1.2 感知器 Perceptron
正如神经元是构成大脑神经系统的基本单元,感知器(Perceptron)是构人工神经网络的基本单元。它接收多个输入( x 1 , x 2 , … , x n x_1, x_2, \ldots, x_n x1,x2,…,xn),通过线性函数和激活函数(Step Function 是激活函数的一种),得到输出 y ^ \hat{y} y^。
线性函数:
f ( x ) = W x + b f(x) = \mathbf{W}\mathbf{x} + b f(x)=Wx+b
其中, W \mathbf{W} W 和 x \mathbf{x} x 为向量, W = ( w 1 , w 2 , … , w n ) \mathbf{W}=(w_1, w_2, \ldots, w_n) W=(w1,w2,…,wn), x = ( x 1 , x 2 , … , x n ) \mathbf{x}=(x_1, x_2, \ldots, x_n) x=(x1,x2,…,x