一种可以学习家谱关系的简单神经网络
血缘一共有12种关系:
son, daughter, nephew, niece, father, mother, uncle, aunt, brother, sister, husband, wife
有1个英国家庭以及1个意大利家庭,每个家庭有12个人。各种家庭关系都是可用三元数组表示,即( Agent / Relation / Patient ) 结构:
- (colin has-father james)
- (colin has-mother victoria)
- (james has-wife victoria) 可以由上述关系推导得到
该网络由5层结构组成,如图1所示
图1
- 网络底层左右两边各有12个神经元。
- 第1层左侧神经元输入 Agent 向量,每次只有一个为1,如000100000000。
- 第1层右侧神经元输入 Relation 向量,每次也只有一个为1。
- 第2层左侧神经元用来序列化 Agent 向量,右侧神经元用来序列化 Relation 向量。
- 第3层用以学习 Agent 与 Relation 的关系,预测出 Patient。
- 第4层解析出 Patient 向量。
- 第5层是预测出的实际 Patient,其每次的激活值可能不只一个。
例如:Andrew has-aunt ? 可能对应多个 aunt。
网络学到了什么?
以序列化输入 Agent 的 6 个神经元为例,如图2.
- 1号神经元对不同国籍的输入很敏感,能够进行区分。
- 2号神经元对每次输入 Agent 所属的辈分(Generation)很敏感。
- 6号神经元对每次输入 Agent 所属的家庭很敏感。
图2
关于 概念(Concepts) 的两种理论
- 特征理论(The Feature Theory)
概念是语义特征的集合。
A concept is a set of semantic features.
因此概念就能够 用特征的向量来表示。
- 结构主义理论(The Structuralist Theory)
概念的意义存在于概念与概念之间的关系。
The meaning of a concept lies in its relationships to other concepts.
因此概念可以 用关系图模型表达。 Hinton 认为 *Both sides are wrong* ,因为
神经网络可以使用语义特征来实现关系图模型。
Softmax 输出函数
均方误差有以下缺陷
- 如果目标是1而现在的实际输出是0.00000001,那么返回给神经元的梯度几乎为0.
- 强制指定所属各类概率就会剥夺网络的学习能力。
Softmax作为逻辑回归的推广,能够很好解决这些问题。
构造公式
yi=ezi∑j∈groupezi
梯度公式
∂yi∂zi=yi(1−yi)
代价函数依然使用相互熵
dC / dy 的陡峭正好抵消了 dy / dz 的平坦。
相互熵
C=−∑jtjlogyj
梯度
∂C∂zi=∑j∂C∂yj∂yj∂zi=yi−ti
Theano相应函数
x,y,b = T.dvectors('x','y','b')
W = T.dmatrix('W')
y = T.nnet.softmax(T.dot(W,x) + b)