1700537910
Z = − Z1− Z2+1
1700537911
1700537912
0
1700537913
1700537914
1
1700537915
1700537916
0
1700537917
1700537918
0
1700537919
1700537920
0
1700537921
1700537922
1
1700537923
1700537924
0
1700537925
1700537926
0
1700537927
1700537928
1
1700537929
1700537930
1
1700537931
1700537932
0
1700537933
1700537934
0
1700537935
1700537936
问题2 如果只使用一个隐层,需要多少隐节点能够实现包含n元输入的任意布尔函数?
1700537937
1700537938
难度:★★★☆☆
1700537939
1700537940
分析与解答
1700537941
1700537942
包含n元输入的任意布尔函数可以唯一表示为析取范式(Disjunctive Normal Form,DNF)(由有限个简单合取式构成的析取式)的形式。先看一个n=5的简单示例
1700537943
1700537944
1700537945
1700537946
1700537947
(9.2)
1700537948
1700537949
在式(9.2)中,最终的输出Y可以表示成由6个合取范式所组成的析取范式。该函数可由包含6个隐节点的3层感知机实现,如图9.2所示。
1700537950
1700537951
1700537952
1700537953
1700537954
图9.2 用多层感知机实现由6个合取范式组成的析取范式
1700537955
1700537956
1700537957
首先证明单个隐结点可以表示任意合取范式。考虑任意布尔变量假设Xi,若它在合取范式中出现的形式为正(Xi),则设权重为1;若出现的形式为非(i),则设权重为−1;若没有在合取范式中出现。设权重为0;并且偏置设为合区范式中变量的总数取负之后再加1。可以看出,当采用ReLU激活函数之后,当且仅当所有出现的布尔变量均满足条件时,该隐藏单元才会被激活(输出1),否则输出0,这与合取范式的定义的相符的。然后,令所有隐藏单元到输出层的参数为1,并设输出单元的偏置为0。这样,当且仅当所有的隐藏单元都未被激活时,才会输出0,否则都将输出一个正数,起到了析取的作用。
1700537958
1700537959
我们可以使用卡诺图表示析取式,即用网格表示真值表,当输入的合取式值为1时,则填充相应的网格。卡诺图中相邻的填色区域可以进行规约,以达到化简布尔函数的目的,如图9.3所示,由图可见,有W、X、Y、Z共4个布尔变量,WX的取值组合在纵轴显示,YZ的取值组合在横轴显示。7个填色网格最终可规约为3个合取式,故该函数可由包含3个隐节点的3层感知机实现:
[
上一页 ]
[ :1.70053791e+09 ]
[
下一页 ]