一种能够学习家谱关系的简单神经网络

血缘一共同拥有12种关系:

有1个英国家庭以及1个意大利家庭,每一个家庭有12个人。

各种家庭关系都是可用三元数组表示。即( Agent / Relation / Patient ) 结构:

  • (colin has-father james)
  • (colin has-mother victoria)
  • (james has-wife victoria) 能够由上述关系推导得到

该网络由5层结构组成,如图1所看到的

Neural Networks for Machine Learning by Geoffrey Hinton (4)-LMLPHP

图1

  • 网络底层左右两边各有12个神经元。

  • 第1层左側神经元输入 Agent 向量,每次仅仅有一个为1,如000100000000。
  • 第1层右側神经元输入 Relation 向量。每次也仅仅有一个为1。
  • 第2层左側神经元用来序列化 Agent 向量,右側神经元用来序列化 Relation 向量。

  • 第3层用以学习 Agent 与 Relation 的关系,预測出 Patient。
  • 第4层解析出 Patient 向量。
  • 第5层是预測出的实际 Patient。其每次的激活值可能不仅仅一个。

网络学到了什么?

以序列化输入 Agent 的 6 个神经元为例。如图2.

- 1号神经元对不同国籍的输入非常敏感。能够进行区分。

- 2号神经元对每次输入 Agent 所属的辈分(Generation)非常敏感。

- 6号神经元对每次输入 Agent 所属的家庭非常敏感。

Neural Networks for Machine Learning by Geoffrey Hinton (4)-LMLPHP

图2

关于 概念(Concepts) 的两种理论

  • 特征理论(The Feature Theory)

因此概念就能够用特征的向量来表示

  • 结构主义理论(The Structuralist Theory)

因此概念能够用关系图模型表达

Hinton 觉得 *Both sides are wrong* ,由于

Softmax 输出函数

均方误差有下面缺陷

  • 假设目标是1而如今的实际输出是0.00000001。那么返回给神经元的梯度差点儿为0.
  • 强制指定所属各类概率就会剥夺网络的学习能力。

    Softmax作为逻辑回归的推广,能够非常好解决这些问题。

构造公式

梯度公式

代价函数依旧使用相互熵

dC / dy 的陡峭正好抵消了 dy / dz 的平坦。

相互熵

梯度

Theano相应函数

x,y,b = T.dvectors('x','y','b')
W = T.dmatrix('W')
y = T.nnet.softmax(T.dot(W,x) + b)
05-17 06:37