1.单层感知器实现基本逻辑函数
先给大家抛出一道例题
(一)种类
a.OR函数
目标:当至少一个输入为1时,输出1;否则输出0。
权重设置:
输入权重:所有 wi=1(i=1,2,...,m)。
偏置:w0=n-0.5。(n为负文字数量)
b.AND函数
目标: 当所有输入为1时,输出1,否则输出0。
权重设置:
输入权重:所有wi=1。
偏置:w0=0.5-n。
c.NOT函数
目标:输入1,输出0,输入0,输出1。
权重设置:
输入权重:w=-1。
偏置:w0=0.5。
数学原理:
s=0.5−x,当 x=1 时 s=−0.5<0,输出0;x=0 时 s=0.5>0,输出1。
d.NAND(与非)函数
目标:当所有输入为1时输出为0,否则输出1。
权重设置:
输入权重:w1=-1,w2=-1。
偏置:w0=1.5。
e.NOR(或非)函数
目标:当任一输入为1时输出0,否则输出1。
权重设置:
输入权重:w1=-1,w2=-1。
偏置:w0=0.5。
f.imply(蕴含)函数
(二)单层感知器的局限性
2.两层神经网络实现复杂逻辑(CNF)
我们现在利用上述知识来看一下例题:(A∨B)∧(¬B∨C∨¬D)∧(D∨¬E)
步骤一:分解为析取项(OR项)
每个析取项对应一个隐藏层节点:
-
第一隐藏节点:A∨BA∨B
-
第二隐藏节点:¬B∨C∨¬D¬B∨C∨¬D
-
第三隐藏节点:D∨¬ED∨¬E
步骤二:设置隐藏层权重与偏置
-
输入权重:
-
正文字(如A, C, D):权重 +1。
-
负文字(如¬B, ¬D, ¬E):权重 -1。
-
-
偏置:w0=k−0.5,其中 k 是当前析取项中负文字的数量。
简单举个例子:
同理对其他两个进行表达,可分别得出,并将三者进行合并。
步骤三:输出层实现合取(AND项)
-
输入权重:所有隐藏节点到输出的权重为1。
-
偏置:w0=0.5−m,其中 m 是隐藏节点数(本例中 m=3)。
-
偏置 w0=0.5−3=−2.5。
-
-
数学原理:
-
输出层加权和 s=−2.5+h1+h2+h3s=−2.5+h1+h2+h3。
-
仅当所有隐藏节点输出1时,s=−2.5+3=0.5>0s=−2.5+3=0.5>0,最终输出1。
-
所以,最后的神经网络长这样
3.异或(XOR)网络实现
已知单层神经网络是无法解决非线性可分问题(例如XOR),我们只能引入多层神经网络来进行表达。大家先来看一道例题。
网络结构
-
输入层:两个节点 x1 和 x2。
-
隐藏层:两个节点,分别计算以下两个中间逻辑函数:
-
节点 h1:计算 x1∧x2(AND)。
-
节点 h2:计算 x1∨x2(OR)。
-
-
输出层:一个节点,计算 NOR(h1,h2)。
-
关键逻辑:
-
当 h1=1(即 x1=x2=1),输出被抑制为0。
-
当 h2=1(即至少一个输入为1),输出也被抑制为0。
-
唯一输出1的情况是 h1=0 且 h2=0,即 x1=x2=0。
-