2022年01月07日,第一周记录第一篇文章
本篇主要用于记录阅读《深度学习入门-基于python的理论与实现》中的随笔记录,便于加深个人理解。对于一些处理和概念会加上括号,括号内表示个人理解。
感知机(人工神经元/朴素感知机):朴素感知机是指单层网络,指的是激活函数使用了阶跃函数。接收多个信号,输出一个信号,如下图所示:
图中的⭕️代表“神经元”(信号处理方式方式像生物中的神经元)或者“节点”(像数学中关于二叉树等的表示都是用⭕️,当时的称呼是节点)。这个感知机接收x0, x1 两个信号,输出信号y,其中x0,x1对于输出y的权重(weight, 影响程度)分别为w0,w1。输入信号送往神经元时,会乘以固定的权重,神经元y会计算传送过来的信号总和,计算公式表示为 。当信号总和超过某个数值(好听点的名称:阈值)时,神经元y 才会输出1, 否则一直输出0。当神经元输出为1时,表示该神经元被激活 。如下公式:
theta end{cases}" height="55" src="https://latex.codecogs.com/gif.latex?y%20%3D%20%5Cbegin%7Bcases%7D%200%20%26%20%5Ctext%7B%20if%20%7D%20w_%7B0%7D%20*%20x_%7B0%7D%20+%20w_%7B1%7D%20*%20x_%7B1%7D%20%5Cleq%20%5Ctheta%20%5C%5C%201%20%26%20%5Ctext%7B%20if%20%7D%20w_%7B0%7D%20*%20x_%7B0%7D%20+%20w_%7B1%7D%20*%20x_%7B1%7D%20%3E%20%5Ctheta%20%5Cend%7Bcases%7D" width="262" />
调整一下的位置,公式可以变为:
0 end{cases}" src="https://latex.codecogs.com/gif.latex?y%20%3D%20%5Cbegin%7Bcases%7D%200%20%26%20%5C%20%5C%20w0*x0%20+%20w1*%20x1%20-%20%5Ctheta%20%5Cleqslant%200%20%5C%5C%201%20%26%20%5C%20%5C%20w0*x0%20+%20w1*%20x1%20-%20%5Ctheta%20%3E%200%20%5Cend%7Bcases%7D" />
使用 , 则公式换为:
0) end{cases}" src="https://latex.codecogs.com/gif.latex?y%20%3D%20%5Cbegin%7Bcases%7D%200%20%26%20%28w0%20*%20x0%20+%20w1*%20x1%20+%20b%20%5Cleqslant%200%29%20%5C%5C%201%20%26%20%28w0%20*%20x0%20+%20w1*%20x1%20+%20b%20%3E%200%29%20%5Cend%7Bcases%7D" />
其中b 称为偏置 ,用于控制神经元被激活的容易程度。
这种效果就好比一个分段函数,例如下:
0 \ 0 & text{ if } x leq 0 end{cases}" src="https://latex.codecogs.com/gif.latex?y%3D%20%5Cbegin%7Bcases%7D%20%5C%20%5C%201%20%26%20%5Ctext%7B%20if%20%7D%20x%20%3E%200%20%5C%5C%20%5C%20%5C%200%20%26%20%5Ctext%7B%20if%20%7D%20x%20%5Cleq%200%20%5Cend%7Bcases%7D" />
只不过这个分段函数的影响因素只有一个。
可以使用感知机解决一些简单的问题,例如设计简单的逻辑电路:与门,与非门,或门等。
参考与门的真值表,与非门的真值表,或门的真值表确定满足真值表的w0, w1,以及阈值。例如与门:
在x0,x1同时为1时,y 为1,此时可以确定无数个(w0, w1,以及阈值,只要3个取值带入公式后能保证和真值表的结果一样就行,例如:0.5,0.5,1. / 1 , 1, 1) 。确定一组w0, w1,以及阈值后就可以使用python实现这样一个与门了,例如:
def AND(x0,x1): w0,w1,theta = 0.5, 0.5, 0.7 # 这里可以随意设置,只要计算结果满足与门真值表即可 tmp = x0 * w0 + w1 * w1; if tmp <= theta: return 0 elif tmp > theta: return 1
如果放在图形中表示的话可以表示如下图:
图1
⭕️表示y结果为0,菱形表示,可以看出y的输出结果能够使用一条直线拆分开。
尽管通过感知机能够实现像与门,与非门,或门这些简单的逻辑运算,但是感知机无法实现复杂的 *** 作例如异或门。
将异或门的神经元输出结果绘制成图:
图2
对于与非门是无法使用一条直线分割开的,无论如何都做不到。感知机的局限性就在于他只能表示由一条直线分割的空间。像图2这样是无法用直线分割的空间称为非线性空间,由直线分割而成的空间称为线性空间。
多层感知机:
感知机虽然不能表示异或门,但是感知机可以叠加层被称为多层感知机,通过这种方式可以实现异或门如下图:
图三
图三中的感知机总共有3层,但是因为拥有权重的层实质上只有2层(第0层和第一层之间,第一层和第2层之间)所以称为“2层感知机”。
1.第0层的两个神经元接受输入信号,并将信号发送至第1层的神经元。
2.第1层的神经元将信号发送到第2层的神经元,第2层的神经元输出y。
总结:
感知机是具有输入和输出的算法,给定一个输入后,将输出一个既定的值。感知机将权重和偏置设定为参数使用感知机可以表示与门和或门等逻辑电路异或门无法通过单层感知机来表示,多层感知机可以。单层感知机只能表示线性空间,而多层感知机可以表示非线性空间。多层感知机可以实现比之前见到的电路更复杂的电路。多层感知机(在理论上)可以表示计算机。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)