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

这个书各位大佬都很熟悉,我就不多说了。这个系列的文章肯定不是很长,整个整合到
机器学习-笔记目录

深度学习笔记——《深度学习入门——基于Python的理论与实现》

第2章——感知机

先概括一下,整个第二章写的是感知机(perceptron)。
先说什么是感知机,到逻辑电路,感知机的实现,最后是多重感知机。
.
.

2.1什么是感知机

接收多个信号,输出一个信号,且这个信号只有两种取值,1/0.
在我的理解来看,这就是一个函数,可以接受多个参数,然后在f法则下映射0或者1,有点像sgn
也有人是这样说的——感知机目的在求一个可以将实例分开的超平面。
详细这里有一个文,我没有完全吃透这段的。大概需要多一些运用~

  • https://zhuanlan.zhihu.com/p/25696112 (暂时扔在这里)

文中很形象地把感知机比喻成神经元,神经元接受刺激,达到一定阈值被激活传向下一级。

这么比喻是很形象的,神经元接受的信号来自不止一个,且不同的信号达到的效果不同。所谓激活,就是所有刺激的综合效益,是否激活取决于阈值,同样的信号,有些只需要一点就能激活,而有些需要很大量才能激活,这就牵扯到了权重

2.1简单逻辑逻辑

四种门。

  • 与门——仅在两个输入均为1,输出1,其他为0
  • 与非门——仅两个输入均为1,输出0,否则为1.(与门的对立,不全为1时为真)
  • 或门——两者一者为1,输出1,否则0.
  • 异或门——只有两者一者为1,输出1,否则为0.
    .
    异或门不能被前面的不等式表达出来的。
    这里引出异或门,我现在有点懂了他想表达的意义。在于原始的表达式w1x1+w2x2<=theta是一个线性判定,一条直线可以将一个平面划分成两个区域,像异或门分布在了直线的两侧,就无法被直线表达。但是它却可以通过多层感知机表达,非线性也可以。

这一节告诉了一个信息,感知机是可以表达逻辑的。

2.2简单逻辑逻辑电路的实现

对于有两个输入的感知机可以有w1x1+w2x2<=theta时,y=0,否则y=1

  • 2.2.2.

与门——仅在两个输入均为1,输出1,其他为0
默认表达一个y=0.5x1+0.5x2

import numpy as np
def perceptron_AND(x1,x2,w1=0.5,w2=0.5,theta=1):
    y = x1*w1+x2*w2 
    if y >= theta:
        print(1)
    else:
        print(0)
def perceptron_AND_Plus(X,W,B):
    s = np.sum(W*X)+b
    if s>=0:
        print(1)
    else:
        print(0)
w = np.array([0.5,0.5,0.3])
b = 0.8
x = np.array([1,0,1])
perceptron_AND(x1=1,x2=1)
perceptron_AND_Plus(X=x,W=w,B=b)

后面一次是与非门和或门,异或门。
书的2.3节开始讲述,感知机的实现,代码不贴了。
在2.4开始遇到一个问题,异或门的实现。因为感知机是线性的,所以单层的感知机是无法做到的,这里提到感知机的局限性。
感知机的局限性就在于它只能由一条直线分割空间。
所以弯曲的曲线无法用线性空间表示,所谓线性空间就是由直线分割而成的空间。

[画蛇添足]
在提到 门的实现的时候,我就在想一个问题,A和B的开闭状态决定了C的答复,那么实际情况就会有很多种,对于AB两个的情况有四种形式
a.A1B1、b.A1B0、c.A0B1、d.A0B0
就数量来说,可以只接受1个,比如只接受a、只接受b的情况,也可以接受多个,a或者b都可以触发c,那么一共可以接受的集合元素的数量为4c1+4c2+4c3+4c4,共有4+6+4+1=15种接受模式。(n取4,去除一个空集,实际可以2^n-1)由AB两个触发点可以区分15种,当规模很大的时候还是很庞大的。
如果这样来看,像是用感知机进行一个线性筛选,不是这个集合,就返回一个0,想象三维空间的情形。魔方的8个角点是满足条件的,中心都是不满足的,而你要用一个平面把满足条件和不满足条件的分离,蛮有意思的。
有时间我可以绘制一下这个面。
想象一下通过一层一层感知机让计算机来识别这个空间~~
[画蛇添足-完]

2.6

1.进行运算的加法器也可以用感知机实现
2.二进制转化成十进制的编码器
3.感知机甚至可以表示计算机,感知机和计算机一样,有输入也有输出,只需要通过与非门的组合就能在先计算机进行的处理。理论上,两层感知机就能构建计算机。已有证明,2层感知机(激活函数使用非线性的sigmoid函数的感知机)可以表示任意函数,

参考书籍《计算机系统要素:从零开始构建现代计算机》,论述通过NAND构建可运行俄罗斯方块的计算机的过程。通过简单的NAND原件就可以实现计算机这样复杂的系统。

4.实际上,在用与非门低级元件构建计算机的情况下,分段制作模块,即先实现门和或门,然后实现半加速和全加速,接着实现算术和逻辑单元ALU,然后实现CPU。

总结
1.感知机是一种有输入也有输出的算法。
2.感知机将权重和偏置设为参数。
3.单层感知机无法表示异或门,两层可以。
4.单层感知机只能表示线性空间,多层可以表示非线性空间。
5.多层感知机理论上可以表示计算机。

问题汇总
1.我对感知机的认识不深,说到底感知机意味着什么,有什么意义我是云里雾里的。
2.这个CPU的实现是有点意思的~~~

更新日志及进度

2018.10.23——写了个标题。(4.2/8.5)
2018.10.24——更完

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