《深度学习入门:基于Python的理论与实现》第二章笔记

最近想从头开始看起,所以就挑了《深度学习入门:基于Python的理论与实现》这本书来阅读
《深度学习入门:基于Python的理论与实现》第二章笔记_第1张图片

1、感知机的定义

 虽然听起来名字比较高大上,但是结构没有这么恐怖,简单来说可以与电流经过电线进行一个类比,理解为能够接收多个输入信号,输出一个信号的模型,但是,和实际的电流不同的是,感知机的信号只有“流/不流”(1/0)两种取值。
 以下图为例,x1,x2是输入信号,w1,w2是权重,如果计算出的结果超过某个阈值,那么就可以输出1或0,即对应的信号。
《深度学习入门:基于Python的理论与实现》第二章笔记_第2张图片
 如果将上面的描述转换成公式,就可以得到如图所示的公式
《深度学习入门:基于Python的理论与实现》第二章笔记_第3张图片

2、简单的逻辑电路

 根据真值表,可以简单的将与门,或门,与非门表示出来

2.1 与门

《深度学习入门:基于Python的理论与实现》第二章笔记_第4张图片

def AND(x1,x2):
    x = np.array([x1,x2])
    w = np.array([0.5,0.5])
    b = -0.7
    tmp = np.sum(w * x) + b
    if tmp <= 0:
        return 0
    else:
        return 1

2.2 与非门

 简单来说,与非门就是输出与与门输出结果颠倒了的逻辑电路。
《深度学习入门:基于Python的理论与实现》第二章笔记_第5张图片

def NAND(x1,x2):
    x = np.array([x1,x2])
    w = np.array([-0.5,-0.5])
    b = 0.7
    tmp = np.sum(w * x) + b
    if tmp <= 0:
        return 0
    else:
        return 1
    

2.3 或门

《深度学习入门:基于Python的理论与实现》第二章笔记_第6张图片

def OR(x1,x2):
    x = np.array([x1,x2])
    w = np.array([0.5,0.5])
    b = -0.2
    tmp = np.sum(w * x) + b
    if tmp <= 0:
        return 0
    else:
        return 1

3、感知机的局限性

 感知机的局限性就在于它只能表示由一条直线分割的空间,只能划分线性的空间,而如果要使用感知机来表示异或门(真值表如下图所示)就会发现不少问题。
《深度学习入门:基于Python的理论与实现》第二章笔记_第7张图片
 将其转换为图表,会发现想要用一条直线将下图中的○和△分开是不可能做到的。
《深度学习入门:基于Python的理论与实现》第二章笔记_第8张图片
 因此,感知机的局限性就在于它只能表示由一条直线分割的空间。但如果去除“直线”这一条件,使用多层感知机,就可以用曲线划分空间,即划分成非线性空间。
《深度学习入门:基于Python的理论与实现》第二章笔记_第9张图片
 因此,我们可以将异或门拆成两个部分,通过 与门,与非门,或门即可实现(如下图所示)
《深度学习入门:基于Python的理论与实现》第二章笔记_第10张图片
 可以进一步写出中间部分的真值表(如果考虑成s1,s2逆推x1,x2,会比较容易理解)
《深度学习入门:基于Python的理论与实现》第二章笔记_第11张图片
 而实现比较简单,其实就是前面部分的组合

def XOR(x1,x2):
    s1 = NAND(x1,x2)
    s2 = OR(x1,x2)
    y  = AND(s1,s2)
    return y

总结

《深度学习入门:基于Python的理论与实现》第二章笔记_第12张图片

你可能感兴趣的:(python,深度学习)