深度学习笔记(1)——感知机

Liana ·
更新时间:2024-09-21
· 775 次阅读

目录 感知机概念 几种感知机 与门(and_gate) 或门(or_gate) 非与门 (not_and_gate) 感知机叠加 异或门 一、感知机概念

接触深度学习的第一个概念就是感知机,感知机是与门、或门的逻辑电路,是一种判别模型。常见的感知机分为与门、或门、非与门。
通过感知机,相当于是用一条直线将空间进行了划分。

二、几种感知机 1. 与门(and_gate)

我们都知道,与门只有在输入的 x1 和 x2 都是1的情况下才会输出1,即:

(0, 0) -> 0 (1, 0) -> 0 (0, 1) -> 0 (1, 1) -> 1

与门的代码实现如下:

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. 或门(or_gate)

或门只有在输入的 x1 和 x2 都是0的情况下才会输出0,即:

(0, 0) -> 0 (1, 0) -> 1 (0, 1) -> 1 (1, 1) -> 1

或门的代码实现如下:

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. 非与门(not_and_gate)

原理类似:

(0, 0) -> 1 (1, 0) -> 0 (0, 1) -> 0 (1, 1) -> 0

非与门的代码实现如下:

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

划分曲线和与门相同。

三、感知机叠加

上面说的3种逻辑都可以通过一条直线将区域划分,但是对于处理异或门的时候,情况就变的 有些复杂。

1. 异或门

异或门输入与输出的关系如下:

(0, 0) -> 1 (1, 0) -> 0 (0, 1) -> 0 (1, 1) -> 1

这时就很难用一条直线将区域进行划分。除了可以使用曲线之外,还可以通过将感知机进行叠加,实现功能。

运算过程如下:

输入 NAND OR AND
(0,0) 1 0 0
(0,1) 1 1 1
(1,0) 1 1 1
(1,1) 0 1 0

代码实现如下:

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

这样就成功将数据分成了2组,其实这里就实现了一个简单的神经网络。

神经网络就是这样一个过程,当无法直接获取输出结果的时候,就通过一系列的运算,将最后的结果输出。
理解了感知机,对后面深度学习的理解就迈出了第一步。


作者:iiChor Jum



学习笔记 感知机 学习 深度学习

需要 登录 后方可回复, 如果你还没有账号请 注册新账号