Python:感知器和梯度下降 (六十四)

感知器和梯度下降

我们将感知器算法与梯度下降算法进行对比,在梯度下降算法中,我们将权重从 Wi 更改为 w i +(y hat −y)x i ,在感知器算法中,并非每个点都会更改权重,只有分类错误的点才会。这里当 x 分类错误时,如果点标签是正的,我们将 Xi 加到 Wi 上,如果是负值,则用 Wi 减去 xi, 现在的问题是,两者是一回事吗?

在感知器算法中,标签是 1 和 0,预测 y hat 也是 1 和 0, 所以,如果点分类正确,则 y - y^ = 0, 因为 y = y^。如果点标为蓝色,则 y = 1.如果分类错误,那么预测必须是 y^ = 0, 所以, y^ -y = -1;

梯度下降算法中的 y^ 可以是 0~1 之间的任何值,而感知器算法(Perceptron algorithm) y^ 只能是值 0 或 1,很神奇,对不对?

file

我们再仔细研究下梯度下降算法,在感知器算法和梯度下降算法中,分类错误的点都会告诉直线靠近点,因为最终都希望点穿过它,使其位于正确的区域,如果点分类正确,会怎样呢?感知器算法就会说什么也不要做,在梯度算法中,你会更改权重,但是在干什么呢?如果仔细观察,就会发现点是在告诉直线离得更远些,有道理,对吧?

如果是分类正确的话,假设是蓝色区域的蓝点,你会希望跑到蓝色区域的更远处,这样预测就更接近1,误差就会更小,梯度下降算法就是这么做的,分类错误的点要求直线靠近点,分类正确的点要直线离远点,直线聆听所有点的需求,并采取错误,最终获得很好的解决方案

file

为者常成,行者常至