本笔记的作用在于思考与输出,和代码练习
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 | import numpy as np |
2.4 感知机的局限性
感知机的局限性在于它只能表示由一条直线分割的空间,例如使用单层感知机便无法分割逻辑电路异或门的空间。(准确来说这是单层感知机的局限性)
2.5 多层感知机
感知机的绝妙之处在于它可以叠加层/加深层,感知机经过叠加后可以具有更多的表示,能够表示非线性的表示。
多层感知机从左往右分别为第0层,第1层,第2层,…。有人根据实际具有权重的层数来判定是几层感知机,也有人根据实际的神经元层数来判定是几层感知机。
多层感知机甚至可以构造计算机,有理论证明:激活函数使用了sigmoid函数的2层感知机可以表示任意函数。(虽然2层感知机的参数在实际中会非常难以确定)
如果您喜欢此博客或发现它对您有用,则欢迎对此发表评论。 也欢迎您共享此博客,以便更多人可以参与。 如果博客中使用的图像侵犯了您的版权,请与作者联系以将其删除。 谢谢 !