- 感知器算法(以神经网络为基础)是用来分类的,也就是用来回答是否问题的。
- 神经网络
神经网络是机器学习中的一个模型,可以用于两类问题的解答:
分类:把数据划分成不同的类别
回归:建立数据间的连续关系 - 如何分类?(找线划分)
红蓝色都是我们的数据集,如何找出中间的那条直线?这条直线满足如下的数学式子:
如果是三个输入,一个输出就可以写成下图的方式。
如果是n个输入就如下图所示
-
感知器
把上面方程的计算过程用神经网络的形式表示出来就是感知器。
对于常数项b我们可以单独作为输入,也可以当作常数。
或者
n维的就会是
w称为权重,b称为偏差。 -
用感知器实现与或的逻辑
-
如何实现找到合适的方程?
- 随机生成一个线性方程
- 用分类错误的数据不断调整方程
如何根据错误数据调整直线方程呢?
红色的数据出错了,我们希望直线把它划分正确,所以准备让直线向红数据靠近,如上图右边所示,第一行是直线的参数,第二行是点的参数,相减,得到新的直线。但是这条直线波动很大,我们希望它波动小一点,所以设置一个学习率控制波动速度,如下图所示
若是蓝色的数据出错,就加上相关参数
伪代码如下:
def perceptronStep(X, y, W, b, learn_rate = 0.01):
for i in range(len(X)):
y_hat = prediction(X[i],W,b)
if y[i]-y_hat == 1:
W[0] += X[i][0]*learn_rate
W[1] += X[i][1]*learn_rate
b += learn_rate
elif y[i]-y_hat == -1:
W[0] -= X[i][0]*learn_rate
W[1] -= X[i][1]*learn_rate
b -= learn_rate
return W, b