人工智能,一个看上去非常高端的词,但是在当今这个内存过剩的时代,它离我们的生活不再遥远,实现它也非常容易。人工智能的分类如下思维导图,而人工智能最核心的算法应是深度学习的神经网络。在前面我们学习了机器学习后,请跟我一起学习深度学习。

1、感知机
感知机是神经网络中一种典型的结构,它的结构可以看做是一个生物神经细胞。我们都知道神经元的结构有胞体和突起(树突和轴突),当产生膜电位差时会沿轴突并在轴突末端的突触小体上通过释放神经递质传递给下一个神经元。


而感知机中输入的数字(x)就相当于神经元胞体,而输出(y)相当于另一个神经元,两(或多个)数字x与y相接则相当于轴突。而突触小体则起到的是激活作用,这就相当于下式。

我们都知道,计算机中通常是使用二进制来进行运算的,所以我们构造一个分段函数,其y在一定条件下为1(激活状态),又在另一条件下为0(静息状态)。而我们实际生活中不同x对y的影响程度不一样,就如同神经递质中因为各种因素作用的大小不一样。所以我们引入权重(weight),记作w。而在实际生活中,有很多数据其实并不是非常理想的情况,而这时候就需要引入一个常数来尽量修正数据(拟合思想),所以我们引入常数b,我们通常称它为偏置(bias)。也就是当大于等于某值时是激活状态,而小于这个值时是静息状态,我们称这个类似于界限值的值为阈值。
我们利用python中的numpy库实现如下
import numpy as np# 当输入的数字为x1, x2# 权重分别为0.4, 0.6# b值为-0.7# theta值为0.7def AND(x1, x2):x = np.array([x1, x2])w = np.array([0.4, 0.6])b = -0.7theta = 0.7tmp = np.dot(w, x) + bif tmp <= theta:return 0else:return 1
2、神经网络的基本结构
神经网络,全称人工神经网络(ANN)。其基本单位我们可以类比感知。神经网络的结构大致分为三层:输入层,隐藏层和输出层。

3、激活函数

以我的理解,其实把我们前面推导出来的分段函数值带入到以下这些激活函数中其实就可以。
(1) sigmoid函数


python实现:
import numpy as npdef Sigmoid(x):y = np.exp(x) (np.exp(x) + 1)return y
(2) Tanh函数


python实现:
import numpy as np# 你可以自己写函数def Tanh(x):y = (np.exp(x)-np.exp(-x))/(np.exp(x)+np.exp(-x))return y# 当然强大的numpy库已经帮你写好了tanh函数了~y = np.tanh(x)
(3) ReLU及其衍生函数




python实现:
import numpy as npdef ReLU(x):y = np.where(x < 0, 0, x)return ydef LeakyReLU(x, a):# LeakyReLU的a参数不可训练, 人为指定y = np.where(x < 0, a * x, x)return ydef PReLU(x, a):# PReLU的a参数可训练y = np.where(x < 0, a * x, x)return ydef ReLU6(x):y = np.minimum(np.maximum(x, 0), 6)return y
(4) Swish和Mish函数



当然不同的激活函数使用的场景也可能不太一样,下一次我们具体学习。




