感知机

Posted by Kay on 2023-06-20
Estimated Reading Time 3 Minutes
Words 832 In Total
Viewed Times

本笔记的作用在于思考与输出,和代码练习

2.1感知机是什么

感知机是作为神经网络的起源的算法,它接受多个信号作为输入,然后输出一个结果信号。感知机中的一个圆圈称为一个“神经元”或“节点”,有向箭头和上面的数字代表信号传递方向和权重,多个信号向同一个神经元传递时会被加和,当这个和超过一个限度(阈值)时,神经元才会输出1,也被称为“神经元被激活”。

权重控制着信号的重要性(强度)。一个有两个输入信号的单层感知机可以用下式来表示:

$$ y = \begin{cases}0, & (w_1x_1+w_2x_2 < \theta)\
1, & (w_1x_1+w_2x_2 >= \theta)\end{cases}
$$

2.3 感知机的实现

2.3.1 感知机的简单实现

我们通过认为确定感知机参数来简单实现一个逻辑电路中的与门(代码在下面)。

我们目前是人为确定感知的参数,而机器学习和深度学习的研究课题是让计算机确定参数。计算机学习的过程就是选择合适的参数的过程,研究员要做的就是确定模型的结构,以及把训练数据交给计算机。

2.3.2 引入偏置项

我们引入偏置b,当计算好权重与信号的乘积的和之后,我们再加上偏置,当最后的结果小于等于0时,神经元不被激活,大于0时,被激活。例如下面代码中的OR函数。权重决定输入信号的重要性,偏置决定了神经元被激活的容易程度。

补充:在深度学习模型中,我们经常要进行数组和矩阵的计算,NumPy外部库中的array类为我们提供了许多便捷的方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import numpy as np


def AND(a, b):
w1, w2, theta = 0.5, 0.5, 0.8
temp = w1*a+w2*b
if temp <= theta:
return 0
else:
return 1

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

print(AND(0,0), AND(1,0), AND(0,1),AND(1,1))
print(OR(0,0), OR(1,0), OR(0,1), OR(1,1))

2.4 感知机的局限性

感知机的局限性在于它只能表示由一条直线分割的空间,例如使用单层感知机便无法分割逻辑电路异或门的空间。(准确来说这是单层感知机的局限性)

2.5 多层感知机

感知机的绝妙之处在于它可以叠加层/加深层,感知机经过叠加后可以具有更多的表示,能够表示非线性的表示。

多层感知机从左往右分别为第0层,第1层,第2层,…。有人根据实际具有权重的层数来判定是几层感知机,也有人根据实际的神经元层数来判定是几层感知机。

多层感知机甚至可以构造计算机,有理论证明:激活函数使用了sigmoid函数的2层感知机可以表示任意函数。(虽然2层感知机的参数在实际中会非常难以确定)


如果您喜欢此博客或发现它对您有用,则欢迎对此发表评论。 也欢迎您共享此博客,以便更多人可以参与。 如果博客中使用的图像侵犯了您的版权,请与作者联系以将其删除。 谢谢 !