开始

Neural Networks & Deep Learning

Neural Networks, a beautiful biologically-inspired programming paradigm which enables a computer to learn from observational data.

Deep learning, a powerful set of techniques for learning in neural networks

摘自Neural Networks and Deep Learning

为什么要使用神经网络?

因为目前,神经网络和深度学习为图像识别,语音识别和自然语言处理中的许多问题提供了最佳的解决方案。

经过数百万年乃至数千万年(数字不怎么准确反正很长就是了。。。)的进化,图像识别,语音识别和自然语言处理等领域的问题,在大多数人眼里都是不是一件困难的事(当然听外语。。。)。人类在处理视觉问题时的优势是传统编程方法所无法比拟的,所以自然而然的,人们开始对人类、动物的中枢神经系统进行观察,从中产生了神经网络的这个概念,高中生物中就介绍了许多关于神经网络的基本知识,仿照神经网络就有了现在的人工神经网络

现在的神经网络经过了许多年的发展,与其说是一个类生物模型,不如说是基于统计学和信号处理的一个数学模型或者计算模型。

Perceptrons

说到神经网络,自然离不开Perceptrons(感知机),它是一个简单的neuron。

感知机现在已经不在使用了,更常见的事使用其他模型的神经网络,例如Sigmoid neurons。但是要了解为什么这样定义Sigmoid neurons,是值得花时间先了解感知器的。

So how do perceptrons work?简单来说,感知器得到几个二进制输入x1,x2,…,并输出单个二进制结果:

感知机

通过引入权重W1,W2,…(表示各个输入x1, x2, …,重要性的实数)和阈值(像权重一样,是一个实数,是神经元的一个参数),以及输入,感知机计算出输出。由输入与权重的加权和小于或大于某个阈值,来确定neuron的输出是0或1。

output={0,if   阈值iwixi1,if  > 阈值iwixioutput = \begin{cases} 0, & \text {if $\sum_i w_ix_i$ $\leq$ 阈值} \\ 1, & \text{if $\sum_i w_ix_i$ > 阈值} \end{cases}

这就是(Perceptrons)感知机,一个基本的数学模型。你可以认为感知器是一个通过对不同的因素加重来做出决定的一种模型。举个例子,帮助理解,虽然可能并没有什么用,假设你有一份offer,有三个因素决定你是否选择这家公司:

  1. 你对薪水是否满意
  2. 从你住的地方到公司的时间短吗
  3. 公司的福利你满意吗

对于第一种和第三种因素,满意则是1,不满意则为0,同理到达公司的时间短为1,时间长为0。这时就需要权重w1、w2、w3帮我们表示这三种因素的重要程度,假设对你来说,薪水的重要程度为第一位的,薪水的重要程度可以让你忽略别的因素,则可以考虑将第一种因素的权重w1置为10,其他两种因素权重置为3、5,阈值设为9,这样只有当你对薪水满意,这样的output才会为1。同理,也可以考虑下其他情况。假设w1为7,w2为4,w3为5,阈值为8,这样只有三个因素中的两个因素满足时output为1。这样通过设置不同的权重和阈值,就可以产生不同的决策模型。

显然,感知器是一个非常简单的模型。 但是,这个例子说明了感知器如何衡量不同类型的因素来做出决定。这样我们就可以看到,一个复杂的感知器网络可能会做出一些相当微妙的决定:

多层感知机

在这个网络中,感知器的第一列,即为感知器的第一层,通过权衡输入来得到三个非常简单的输出。 第二层感知器中的每一个都通过权衡第一层决策的结果来作出决定。 以这种方式,第二层中的感知器可以在比第一层中的感知器更复杂和更抽象的水平上做出决定。 更复杂的决定可以由感知器在第三层完成。以这种方式,感知器的多层网络可以进行复杂的决策。

重写一下感知机计算公式,使之更加简洁:

output={0,if   0WX+b1,if  > 0WX+boutput = \begin{cases} 0, & \text {if $W·X + b $ $\leq$ 0} \\ 1, & \text{if $ W·X+ b$ > 0} \end{cases}

其中

W=[w1,w2,w3]W = [w1, w2, w3]

X=[x1,x2,x3]TX = [x1, x2, x3]^T

b(bias) = -阈值

感知器可以使用的另一种方法是计算我们通常认为是底层计算的基本逻辑函数,诸如AND,OR和NAND的函数。 例如,假设我们有一个感知器有两个输入,每个输入的权重为-2,总体偏差为3。如下所示:

NAND

这就是一共NAND门,数字电路里面我们知道与非门是逻辑完备的,任何布尔函数都能用与非门来实现。

全加器电路

这是一个一位全加器我们可以将与非门换成之前的与非门感知机,得到一个全加器的感知机网络。

全加器网络

尽管结构简单,感知机能够学习并解决相当复杂的问题,但是感知机主要的缺陷是它不能处理线性不可分问题。