【神经网络学习】5——Hamming网络初识

神经网络学习5——Hamming网络初识

文章目录

    • 神经网络学习5——Hamming网络初识
    • @[toc]
      • 1. 前景导入
      • 2. 符号说明
      • 3. Hamming距离
      • 4. Hamming网络结构
      • 5. Hamming网络的特性和工作机制
        • 5.1 Hamming网络的特性
        • 5.2 Hamming网络的工作机制
          • 5.2.1 前馈层机制
          • 5.2.2 递归层机制
      • 6. 结语

1. 前景导入

上一篇,我们学习了单神经元感知机,该神经网络结构能够完成简单的分类任务。本篇将介绍一种同时采用前馈层和递归层的网络——Hamming网络,它是一种专门为求解二值模式识别问题而设计的网络,该网络有许多的特性。


2. 符号说明

数学描述 表示方式 数学符号
标量 小写斜体字母 a , b , c a, b, c a,b,c
向量 小写正体加粗字母 a , b , c \mathbf{a,b,c} a,b,c
矩阵 大写正体加粗字母 A , B , C \mathbf{A,B,C} A,B,C

下文用到的一些传输函数(激活函数)的解释可见:神经网络学习1——神经元模型


3. Hamming距离

学习Hamming网络结构之前,首先给出Hamming距离的定义,Hamming网络将根据Hamming距离来做出重要决策,因此Hamming距离的概念是十分重要的。

  • 对于二进制字符串:设 x = ( x 1 , x 2 , ⋯   , x n ) x=(x_1, x_2, \cdots, x_n) x=(x1,x2,,xn) y = ( y 1 , y 2 , ⋯   , y n ) y=(y_1, y_2, \cdots, y_n) y=(y1,y2,,yn)是两个长度为n的二进制字符串,其中 x i , y i ∈ { 0 , 1 } x_i,y_i \in \{0, 1\} xi,yi{0,1} i = 1 , 2 , ⋯   , n i=1,2, \cdots,n i=1,2,,n. 则他们的Hamming距离为: d ( x , y ) = ∑ i = 1 n ∣ x i − y i ∣ d(x,y)=\sum_{i = 1}^{n}|x_i - y_i| d(x,y)=i=1nxiyi

  • 对于一般字符串:对于两个长度为 n n n的字符串 s = s 1 s 2 ⋯ s n s = s_1s_2\cdots s_n s=s1s2sn t = t 1 t 2 ⋯ t n t = t_1t_2\cdots t_n t=t1t2tn( s i , t i s_i, t_i si,ti取自某个字符集),它们的汉明距离是使得 s i ≠ t i s_i \neq t_i si=ti i i i的个数。例如,对于字符串 “hurry” 和 “worry”,它们的长度都是5,只有第一个和第二个字符不同,所以这两个字符串的汉明距离为2。

所以不难发现,其实就是观察对应位置的元素是否一样,不一样则Hamming距离加1。


4. Hamming网络结构

本篇只对Hamming网络进行初步了解,因此在本篇只介绍两层的标准Hamming网络结构,其结构图如下:
【神经网络学习】5——Hamming网络初识_第1张图片

网络工作流程如下:

  • 前馈层处理输入:输入向量 p \mathbf{p} p与前馈层权重矩阵 W 1 \mathbf{W}^1 W1、偏置 b 1 \mathbf{b}^1 b1进行运算 ,通过公式 n 1 = W 1 p + b 1 \mathbf{n}^1 = \mathbf{W}^1 \mathbf{p} + \mathbf{b}^1 n1=W1p+b1 计算线性组合结果 n 1 \mathbf{n}^1 n1,再利用纯线性激活函数 p u r e l i n \mathbf{purelin} purelin处理 n 1 \mathbf{n}^1 n1,得到前馈层输出 a 1 = p u r e l i n ( W 1 p + b 1 ) \mathbf{a}^1 = \mathbf{purelin}(\mathbf{W}^1 \mathbf{p} + \mathbf{b}^1) a1=purelin(W1p+b1),作为递归层的初始输入。
  • 递归层迭代:递归层初始输入 a 2 ( 0 ) = a 1 \mathbf{a}^2(0) = \mathbf{a}^1 a2(0)=a1,每一步迭代中,先通过权重矩阵 W 2 \mathbf{W}^2 W2计算 n 2 ( t + 1 ) = W 2 a 2 ( t ) \mathbf{n}^2(t+1) = \mathbf{W}^2 \mathbf{a}^2(t) n2(t+1)=W2a2(t),再利用正线性激活函数 p o s l i n \mathbf{poslin} poslin处理,得到 a 2 ( t + 1 ) = poslin ( W 2 a 2 ( t ) ) \mathbf{a}^2(t+1) = \text{poslin}(\mathbf{W}^2 \mathbf{a}^2(t)) a2(t+1)=poslin(W2a2(t))

在前景导入提到过,Hamming网络是一种专门为求解二值模式识别问题而设计的网络,具有许多的特性。但是目前学到这里,我们通过直接观察该网络结构,除了发现其同时具有前馈层和递归层,且指定了特殊的传输函数外,我们并没有发现Hamming网络的其他特性,对其二值模式识别的工作机制也暂时没有了解。


5. Hamming网络的特性和工作机制

接下来,我们将详细介绍Hamming网络的特性和工作机制。

5.1 Hamming网络的特性

Hamming网络的特性主要体现在网络结构输入向量的要求前馈层偏置值的选取权值矩阵的选取模式传输函数的选择神经元数量要求。我们先来列出这些具体特性,而后结合具体实例来介绍工作机制并对特性进行解释。
【神经网络学习】5——Hamming网络初识_第2张图片

5.2 Hamming网络的工作机制

为了理解Hamming网络的工作机制,我们举例 R = 3 , S = 2 R=3, S=2 R=3,S=2(即输入向量是3维,前馈层和递归层神经元数量均为2)且二值模式选取二值为-1和1时的一个问题:代表猫的标准向量为 p 1 = [ 1 − 1 − 1 ] \mathbf{p_1} = \begin{bmatrix}1 \\ -1 \\ -1 \end{bmatrix} p1= 111 ,代表狗的标准向量为 p 2 = [ 1 1 − 1 ] \mathbf{p_2} = \begin{bmatrix}1 \\ 1 \\ -1 \end{bmatrix} p2= 111 ,任务是基于Hamming网络工作原理来判断 p = [ − 1 − 1 − 1 ] \mathbf{p} = \begin{bmatrix}-1 \\ -1 \\ -1 \end{bmatrix} p= 111 是猫还是狗。

5.2.1 前馈层机制

Hamming网络的前馈层通过计算输入模式与标准模式的Hamming距离衡量相似度,并生成初始激活信号供反馈层竞争,以确定最匹配的标准模式。针对上面提到的问题,根据前面指出的Hamming网络特性,有
W 1 = [ p 1 T p 2 T ] = [ 1 − 1 − 1 1 1 − 1 ] , b 1 = [ R R ] = [ 3 3 ] (1) \mathbf{W}^1 = \begin{bmatrix} \mathbf{p}_1^T \\ \mathbf{p}_2^T \end{bmatrix} = \begin{bmatrix} 1 & -1 & -1 \\ 1 & 1 & -1 \end{bmatrix}, \mathbf{b}^1 = \begin{bmatrix}R \\ R \end{bmatrix}=\begin{bmatrix}3 \\ 3 \end{bmatrix}\tag{1} W1=[p1Tp2T]=[111111],b1=[RR]=[33](1)
由于该层采用的是线性传输函数,故该层的输出为 a 1 \mathbf{a}^1 a1
a 1 = p u r e l i n ( W 1 p + b 1 ) = W 1 p + b 1 = [ p 1 T p 2 T ] p + [ 3 3 ] = [ p 1 T p + 3 p 2 T p + 3 ] = [ 4 2 ] (2) \mathbf{a}^1 =\mathbf{purelin}( \mathbf{W}^1 \mathbf{p} + \mathbf{b}^1) =\mathbf{W}^1 \mathbf{p} + \mathbf{b}^1= \begin{bmatrix} \mathbf{p}_1^T \\ \mathbf{p}_2^T \end{bmatrix} \mathbf{p} + \begin{bmatrix} 3 \\ 3 \end{bmatrix} = \begin{bmatrix} \mathbf{p}_1^T \mathbf{p} + 3 \\ \mathbf{p}_2^T \mathbf{p} + 3 \end{bmatrix}=\begin{bmatrix} 4 \\ 2 \end{bmatrix}\tag{2} a1=purelin(W1p+b1)=W1p+b1=[p1Tp2T]p+[33]=[p1Tp+3p2Tp+3]=[42](2)
说明

  • 关于输入模式与每个标准模式进行内积计算:我们知道,对于等长的两个向量,内积在两个向量指向同方向时最大,通过这样的内积计算,可以将与输入模式Hamming距离小的标准模式筛选出来(对应于内积结果的值越大)。
  • 关于偏置的选取:将输入模式与每个标准模式的内积加上一个常数 R R R,可以确保输出不会全为负值(若全为负值,那么递归层将输出零向量,那么将达不到筛选的需求与效果),从而为递归层的正确操作提供保障。
5.2.2 递归层机制

Hamming网的递归层即所谓的“竞争”层。该层的神经元用前馈层的输出进行初始化(即 a 2 ( 0 ) = a 1 \mathbf{a}^2(0)=\mathbf{a}^1 a2(0)=a1),然后相互竞争以决定胜者。竞争后只有一个神经元的输出值不等于 0,这将表示输入模式所属的类别。当前馈层和递归层有 S S S个神经元时,权值矩阵 W 2 \mathbf{W}^2 W2 的形式为
W 2 = [ 1 − ε − ε ⋯ − ε − ε 1 − ε ⋯ − ε − ε − ε 1 ⋯ − ε ⋮ ⋮ ⋮ ⋱ ⋮ − ε − ε − ε ⋯ 1 ] (3) \mathbf{W}^2 = \begin{bmatrix} 1 & -\varepsilon & -\varepsilon & \cdots & -\varepsilon \\ -\varepsilon & 1 & -\varepsilon & \cdots & -\varepsilon \\ -\varepsilon & -\varepsilon & 1 & \cdots & -\varepsilon \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ -\varepsilon & -\varepsilon & -\varepsilon & \cdots & 1 \end{bmatrix}\tag{3} W2= 1εεεε1εεεε1εεεε1 (3)
其中 ε \varepsilon ε为小于 1 / ( S − 1 ) 1/(S-1) 1/(S1)的数(本节说明中进行了解释), S S S为递归层神经元的个数。

针对我们举例的问题,其前馈层和递归层中神经元数量为2,则权值矩阵 W 2 \mathbf{W}^2 W2 的形式为
W 2 = [ 1 − ε − ε 1 ] (4) \mathbf{W}^2 = \begin{bmatrix} 1 & -\varepsilon \\ -\varepsilon & 1 \end{bmatrix}\tag{4} W2=[1εε1](4)
那么递归层的每次迭代过程如下: a 2 ( t + 1 ) = p o s l i n ( W 2 a 2 ( t ) ) \mathbf{a}^2(t+1) = \mathbf{poslin}(\mathbf{W}^2 \mathbf{a}^2(t)) a2(t+1)=poslin(W2a2(t)),即
a 2 ( t + 1 ) = p o s l i n ( [ 1 − ε − ε 1 ] a 2 ( t ) ) = p o s l i n ( [ a 1 2 ( t ) − ε a 2 2 ( t ) a 2 2 ( t ) − ε a 1 2 ( t ) ] ) (5) \mathbf{a}^2(t+1) = \mathbf{poslin}\left(\begin{bmatrix} 1 & -\varepsilon \\ -\varepsilon & 1 \end{bmatrix} \mathbf{a}^2(t)\right) = \mathbf{poslin}\left(\begin{bmatrix} a_1^2(t) - \varepsilon a_2^2(t) \\ a_2^2(t) - \varepsilon a_1^2(t) \end{bmatrix}\right) \tag{5} a2(t+1)=poslin([1εε1]a2(t))=poslin([a12(t)εa22(t)a22(t)εa12(t)])(5)
从上式可以看出,向量中每个元素都减去另一个元素的一部分,而减少的比例相同,均为 ε \varepsilon ε。具有较大值的元素减去的量较少,而具有较小值的元素减去的量较大,这将导致元素值的大小差别进一步扩大,最终使得除了初始值最大的元素的值继续保持较大的值之外,其他元素的值将逐步变为0。而输出值大于0的元素所对应的神经元便对应于以Hamming距离和输入模式最靠近的标准模式。

接下来,我们针对给出的问题进行递归层的迭代,其中取 ε = 0.5 ε=0.5 ε=0.5(由前面证明可知,实际上,这里也可采用其他任何小于1的数)。

  • 递归层的第一次迭代

a 2 ( 1 ) = p o s l i n ( W 2 a 2 ( 0 ) ) = { p o s l i n ( [ 1 − 0.5 − 0.5 1 ] [ 4 2 ] ) p o s l i n ( [ 3 0 ] ) = [ 3 0 ] (6) \mathbf{a}^2(1) = \mathbf{poslin}(\mathbf{W}^2 \mathbf{a}^2(0)) = \begin{cases} \mathbf{poslin}\left( \begin{bmatrix} 1 & -0.5 \\ -0.5 & 1 \end{bmatrix} \begin{bmatrix} 4 \\ 2 \end{bmatrix} \right) \\ \mathbf{poslin}\left( \begin{bmatrix} 3 \\ 0 \end{bmatrix} \right) = \begin{bmatrix} 3 \\ 0 \end{bmatrix} \end{cases}\tag{6} a2(1)=poslin(W2a2(0))= poslin([10.50.51][42])poslin([30])=[30](6)

  • 递归层的第二次迭代

a 2 ( 2 ) = p o s l i n ( W 2 a 2 ( 1 ) ) = { p o s l i n ( [ 1 − 0.5 − 0.5 1 ] [ 3 0 ] ) p o s l i n ( [ 3 − 1.5 ] ) = [ 3 0 ] (7) \mathbf{a}^2(2) = \mathbf{poslin}(\mathbf{W}^2 \mathbf{a}^2(1)) = \begin{cases} \mathbf{poslin}\left( \begin{bmatrix} 1 & -0.5 \\ -0.5 & 1 \end{bmatrix} \begin{bmatrix} 3 \\ 0 \end{bmatrix} \right) \\ \mathbf{poslin}\left( \begin{bmatrix} 3 \\ -1.5 \end{bmatrix} \right) = \begin{bmatrix} 3 \\ 0 \end{bmatrix} \end{cases}\tag{7} a2(2)=poslin(W2a2(1))= poslin([10.50.51][30])poslin([31.5])=[30](7)

由于递归层在后面的迭代过程中得到的都是同样的结果,这表明网络已经收敛。这时只有第一个神经元的输出为非0值,因此选择第一个神经元所代表的标准模式(猫)作为匹配结果。由于猫的标准向量和该输入模式的Hamming 距离为1,而狗的标准向量和该输入模式的Hamming距离为2,据此可以看出该网络的识别结果是正确的。

说明

  • 关于 ε \varepsilon ε的选取的证明

在Hamming网络的递归层中,参数 ε \varepsilon ε必须小于 1 / ( S − 1 ) 1/(S-1) 1/(S1),其中 S S S是递归层神经元的个数。接下来我们来证明:

当递归层有个神经 S S S元时,权值矩阵 W 2 \mathbf{W}^2 W2一个 S × S S \times S S×S的矩阵,其中对角线元素为1,非对角线元素为 − ε -\varepsilon ε。递归过程为
a 2 ( t + 1 ) = p o s l i n ( [ a 1 2 ( t ) − ε a 2 2 ( t ) − ε a 3 2 ( t ) ⋅ ⋅ ⋅ − ε a S 2 ( t ) ⋮ − ε a S − 1 2 ( t ) − ε a S − 2 2 ( t ) ⋅ ⋅ ⋅ − ε a 1 2 ( t ) + a S 2 ( t ) ] ) (8) \mathbf{a}^2(t+1) =\mathbf{poslin}\left( \begin{bmatrix} a_1^2(t) - \varepsilon a_2^2(t)-\varepsilon a_3^2(t)···-\varepsilon a_S^2(t) \\⋮\\ - \varepsilon a_{S-1}^2(t)-\varepsilon a_{S-2}^2(t)···-\varepsilon a_1^2(t)+ a_S^2(t)\end{bmatrix}\right)\tag{8} a2(t+1)=poslin a12(t)εa22(t)εa32(t)⋅⋅⋅εaS2(t)εaS12(t)εaS22(t)⋅⋅⋅εa12(t)+aS2(t) (8)
我们不妨假设 a 1 2 ( t ) a_1^2(t) a12(t)为最大,那么我们要确保
a 1 2 ( t ) − ε a 2 2 ( t ) − ε a 3 2 ( t ) ⋅ ⋅ ⋅ − ε a S 2 ( t ) > a 1 2 ( t ) − ε ( S − 1 ) a 1 2 ( t ) > 0 (9) a_1^2(t) - \varepsilon a_2^2(t)-\varepsilon a_3^2(t)···-\varepsilon a_S^2(t) >a_1^2(t) - \varepsilon (S-1)a_1^2(t) >0\tag{9} a12(t)εa22(t)εa32(t)⋅⋅⋅εaS2(t)>a12(t)ε(S1)a12(t)>0(9)
从而得出结论。


6. 结语

  • 引用:[- 书名Neural Network Design - 作者:[美] Martin T. Hagan,Howard B. Demuth,Mark H. Beale]

  • 本篇通过学习上述书籍而总结之,图片由ppt、AxGlypy创作。本篇为神经网络学习的第五小节,接下来将会陆续更新神经网络学习内容。若有不正确不严谨之处,还请见谅并期待反馈!

你可能感兴趣的:(神经网络,学习,网络,人工智能,机器学习,深度学习)