深度学习基础入门篇[一]:神经元简介、单层多层感知机、距离计算方法式、相似度函数
在生物学中,神经元细胞有兴奋与抑制两种状态。大多数神经元细胞在正常情况下处于抑制状态,一旦某个神经元受到刺激并且电位超过一定的阈值后,这个神经元细胞就被激活,处于兴奋状态,并向其他神经元传递信息。基于神经元细胞的结构特性与传递信息方式,神经科学家 Warren McCulloch 和逻辑学家 Walter Pitts 合作提出了“McCulloch–Pitts (MCP) neuron”模型。在人工神经网络中,MCP模型成为人工神经网络中的最基本结构。MCP模型结构如 图1 所示。
图1 MCP 模型结构
从 图1 可见,给定 n 个二值化(0或1)的输入数据 $x_i$(1≤i≤n)与连接参数 $w_i$(1≤i≤n),MCP 神经元模型对输入数据线性加权求和,然后使用函数 Φ()将加权累加结果映射为 0 或 1 ,以完成两类分类的任务: $y=Φ(∑_{n_i=1}w_ix_i)$
其中 $w_i$为预先设定的连接权重值(一般在 0 和 1 中取一个值或者 1 和 -1 中取一个值),用来表示其所对应输入数据对输出结果的影响(即权重)。Φ()将输入端数据与连接权重所得线性加权累加结果与预先设定阈值 θ进行比较,根据比较结果输出 1 或 0。
具体而言,如果线性加权累加结果(即 ∑mi=1wixi)大于阈值 θ,则函数 Φ()的输出为1、否则为0。也就是说,如果线性加权累加结果大于阈值 θ,则神经元细胞处于兴奋状态,向后传递 1 的信息,否则该神经元细胞处于抑制状态而不向后传递信息。
从另外一个角度来看,对于任何输入数据 $x_i$(1≤i≤n),MCP 模型可得到 1 或 0 这样的输出结果,实现了将输入数据分类到 1 或 0 两个类别中,解决了二分类问题。
1957年 Frank Rosenblatt 提出了一种简单的人工神经网络,被称之为感知机。早期的感知机结构和 MCP 模型相似,由一个输入层和一个输出层构成,因此也被称为“单层感知机”。感知机的输入层负责接收实数值的输入向量,输出层则为1或-1两个值。单层感知机可作为一种二分类线性分类模型,结构如 图2 所示。
单层感知机的模型可以简单表示为:$f(x)=sign(w∗x+b)$
对于具有 n个输入 $x_i$以及对应连接权重系数为 $w_j$的感知机,首先通过线性加权得到输入数据的累加结果 $z$:$z=w_1x_1+w_2x_2+...+b$。这里 $x_1,x_2,...,x_n$为感知机的输入,w1,w2,...,wn
为网络的权重系数,b为偏置项($bias$)。然后将 $z$作为激活函数 Φ(⋅)的输入,这里激活函数 Φ(⋅)为 $sign$函数,其表达式为:
$\begin{cases}+1 & x \geq0 \-1 & x < 0\end{cases}$
Φ(⋅)会将 $z$ 与某一阈值(此例中,阈值为0)进行比较,如果大于等于该阈值则感知器输出为 1,否则输出为 −1。通过这样的操作,输入数据被分类为 1或 −1这两个不同类别。
给定一个 n维数据集,如果它可以被一个超平面完全分割,那么我们称这个数据集为线性可分数据集,否则,则为线性不可分的数据集。单层感知机只能处理线性可分数据集,其任务是寻找一个线性可分的超平面将所有的正类和负类划分到超平面两侧。单层感知机与 $MCP$模型在连接权重设置上是不同的,即感知机中连接权重参数并不是预先设定好的,而是通过多次迭代训练而得到的。单层感知机通过构建损失函数来计算模型预测值与数据真实值间的误差,通过最小化代价函数来优化模型参数。
其具体的训练过程为:
图4 单层感知机模拟不同逻辑函数功能的示意图
单层感知机可被用来区分线性可分数据。在 图3 中,逻辑与(AND)、逻辑与非(NAND)和逻辑或(OR)为线性可分函数,所以可利用单层感知机来模拟这些逻辑函数。但是,由于逻辑异或(XOR)是非线性可分的逻辑函数,因此单层感知机无法模拟逻辑异或函数的功能。
由于无法模拟诸如异或以及其他复杂函数的功能,使得单层感知机的应用较为单一。一个简单的想法是,如果能在感知机模型中增加若干隐藏层,增强神经网络的非线性表达能力,就会让神经网络具有更强拟合能力。因此,由多个隐藏层构成的多层感知机被提出。
如 图5所示,多层感知机由输入层、输出层和至少一层的隐藏层构成。网络中各个隐藏层中神经元可接收相邻前序隐藏层中所有神经元传递而来的信息,经过加工处理后将信息输出给相邻后续隐藏层中所有神经元。
在多层感知机中,相邻层所包含的神经元之间通常使用“全连接”方式进行连接。所谓“全连接”是指两个相邻层之间的神经元相互成对连接,但同一层内神经元之间没有连接。多层感知机可以模拟复杂非线性函数功能,所模拟函数的复杂性取决于网络隐藏层数目和各层中神经元数目。
假设当前有两个$n$维向量$x$和$y$(除非特别说明,本文默认依此写法表示向量),可以通过两个向量之间的距离或者相似度来判定这两个向量的相近程度,显然两个向量之间距离越小,相似度越高;两个向量之间距离越大,相似度越低。
Minkowski Distane 是对多个距离度量公式概括性的表述,当p=1时,Minkowski Distane 便是曼哈顿距离;当p=2时,Minkowski Distane 便是欧式距离;Minkowski Distane 取极限的形式便是切比雪夫距离。
$\text { Minkowski Distance }=\left(\sum_{i=1}n\left|x_i-y_i\right|p\right)^{\frac{1}{p}}$
$\text { Manhattan Distance }=\left(\sum_{i=1}^n\left|x_i-y_i\right|\right)$
$\text { Euclidean Distance }=\sqrt{\sum_{i=1}n\left(x_i-y_i\right)2}$
$\lim {p \rightarrow \infty}\left(\sumn\left|x_i-y_i\right|p\right)^{\frac{1}{p}}=\max \left(\left|x_i-y_i\right|\right)$
在信息论中,两个等长字符串之间的海明距离是两个字符串对应位置的不同字符的个数。假设有两个字符串分别是:$x=[x1,x2,...,x_n]$和$y=[y1,y2,...,y_n]$,则两者的距离为:
\text { Hamming Distance }=\sum_{i=1}^n \mathrm{II}\left(x_i=y_i\right)
其中$II$表示指示函数,两者相同为1,否则为0。
给定随机变量$X$和两个概率分布$P$和$Q$,KL散度可以用来衡量两个分布之间的差异性,其公式如下:
$K L(P | Q)=\sum_{x \in X} p(x) \log \frac{P(x)}{Q(x)}$
$\text { Cosine Similarity }=\frac{x \cdot y}{|x| \cdot|y|}=\frac{\sum_{i=1}^n x_i y_i}{\sqrt{\sum_{i=1}^n x_i^2} \sqrt{\sum_{i=1}^n y_i^2}}$
给定两个随机变量X和Y,皮尔逊相关系数可以用来衡量两者的相关程度,公式如下:
$\begin{aligned}
\rho_{x, y} & =\frac{\operatorname{cov}(X, Y)}{\sigma_X \sigma_Y}=\frac{E\left[\left(X-\mu_X\right)\left(Y-\mu_Y\right)\right]}{\sigma_X \sigma_Y} \
& =\frac{\sum_{i=1}n\left(X_i-\bar{X}\right)\left(Y_i-\bar{Y}\right)}{\sqrt{\sum_{i=1}n\left(X_i-\bar{X}\right)^2} \sqrt{\sum_{i=1}n\left(Y_i-\bar{Y}\right)2}}
\end{aligned}$
其中$μ_X$和$μ_Y$分别表示向量X和Y的均值,$σ_X$和$σ_Y$分别表示向量X和Y的标准差。
假设有两个集合X和Y(注意这里的两者不是向量),则其计算公式为:
$\operatorname{Jaccard}(X, Y)=\frac{X \cup Y}{X \cap Y}$