介绍机器学习所有算法前,首先介绍两个最基本的算法,即 Perceptron 感知机 和adaptive linear neurons 自适应线性神经元。了解这两个基本算法有助于帮助理解后续的高级算法。
机器学习发源于对神经元的模仿,即神经元的反射过程:信号输入–>信号处理–>信号输出。
而一个巨大的飞跃,就是Frank Rosenblatt在1957年提出的在上述过程中加入自动学习过程,即 [ 信号输入–>信号处理–>信号输入权重更新 ] —> 信号输出。
自动权重更新过程的概念提出及实现是里程碑式的跨越,也让机器学习算法拥有了强大的适应数据的能力,因此才能逐渐发光发热。
下面可以从两个基础的机器学习模型来见证 权重更新 的过程,即Perceptron感知机 和 adaptive linear neurons 自适应线性神经元。
Perceptron 感知机
假设你有一个二维数据,包含100个样本量,表示为x1,x2,x3。。。x100,假设每个样本包含10个特征值,表示为x1,x2,x3。。。x10
1、首先给每一个特征值加一个权重w,即w1,w2,w3。。。w10,每一个w和每一个x的特征值一一对应,另外还有一个w0作为常数项(类比于一元线性回归方程)
2、Perceptron感知机的计算函数是unit step function(单位跃阶函数)。所谓unit step function,其实理解起来很简单,就是如果f(x)<0,输出-1,如果f(x)>0,输出1,即
f(x)={1, if f(x)>=0−1, otherwise
f(x) =
\begin{cases}
1,\,if \ f(x)>= 0 \\
-1, \, otherwise \\
\end{cases}
f(x)={1,if f(x)>=0−1,otherwise
-1和1分别代表我们数据的标签label,,例如在预测患者是否吸烟中,1为吸烟,-1为不吸烟。
3、Perceptron感知机的权重更新是
Δw=η(yi−yi^)xi\Delta w=\eta(y^i-\widehat{y^i})x^iΔw=η(yi−yi)xi
其中eta(η\etaη)就是我们在机器学习中经常看到的专有名词:学习率。简单解释一下,首先初始权重w为非零值,然后在初始情况下,根据特征值xi乘以wi来计算yi^\widehat{y^i}yi,如果模型预测正确,即yi^=y=1\widehat{y^i}=y=1yi=y=1,则Δw=0\Delta w=0Δw=0,不需要更新权重;假如我们预测错误,例如yi^=1,y=−1\widehat{y^i}=1, y=-1yi=1,y=−1,则需要更新权重,而学习率η\etaη是为了控制我们每次更新权重的大小,比如你可以选择一点一点的增加权重,也可以很多很多的更新权重。
4、不断循环更新权重这个过程,直至所有的预测都正确,然后权重更新停止,所有Δw=0\Delta w=0Δw=0,就得到了最终的模型。
5、理解收敛过程(convergence)和迭代次数(epochs,iteration times)。以感知机为例,在第四点中,设想一下,假如数据是线性可分的,那么经过几次权重更新,就可以让Δw=0\Delta w=0Δw=0,从而停止更新,得到最终模型。那么,假如数据是非线性不可分呢?那Δw\Delta wΔw将会一直变化,不停止。这个时候怎么办呢?有两种方法,一个是设置epochs,即最大的迭代次数,超过这个次数我就自动停止,二个是设置允许误差和阈值,达到了能容忍的误差我就停止。因此,设置epochs就是避免模型陷入循环中导致系统崩溃,而从初始状态到达到Δw=0\Delta w=0Δw=0或者允许误差的过程就是convergence收敛。
理解上述过程非常重要。
当然,感知机是最基础的模型,有很多缺陷,例如由Δw\Delta wΔw的计算公式可以看出,它是在一个样本计算Δw\Delta wΔw,并且所有w增加同样的Δw\Delta wΔw(w += Δw\Delta wΔw),然后再纳入下一个样本继续更新w,然后再纳入下下一个样本继续更新w。所有w的增加都相同,不会对权重大小进行区分,很粗糙,所以感知机目前基本不用了,但是它的原理很关键,尤其是Δw\Delta wΔw,机器学习的魅力就在于此。
adaptive linear neurons 自适应线性神经元
Bernard Widrow和Tedd Hoff在1960年提出了adaptive linear neurons模型(adaline),他们在Perceptron模型中改变了Δw\Delta wΔw的计算公式,加入了一个activation function,如下:
Δw=η∑i(yi−ϕ(zi))xi\Delta w=\eta \sum_{i} (y^i-\phi(z^i))x^iΔw=ηi∑(yi−ϕ(zi))xi
其中,zi=wTxiz^i=w^Tx^izi=wTxi,而ϕzi\phi z^iϕzi是ziz^izi经过计算后的结果。
可以看出来,activation function是加入了一个求和公式(平均误差和,SSE),并且改变了yi^\widehat{y^i}yi。
1、首先给每一个特征值一个初始非零w,计算实际结果与预计结果的差值error。其中,实际结果是wixi的真实值(有小数点,不经过跃阶),预计结果是-1和1。这样会产生一个error矩阵,且数字都不同。
2、把error和所有样本的特征值进行点积,乘以学习率,就得到Δw\Delta wΔw,这个Δw\Delta wΔw是一个矩阵,数字都不同。
3、error是一个矩阵,计算error的平方和,作为损失值(cost)。
4、重复上述1-3过程。
由此可以看出,adaline的思想优势在于两点,(1)在每一次迭代中,所有样本和所有特征值均纳入分析,(2)在每一次迭代中,每一个特征值的权重w更新值不同。
adaline模型给领域注入了全新的活力和强大的性能,极大的扩宽了应用场景。
gradient descent 梯度下降
梯度下降,听的很高级,其实就是,通过不断的权重更新过程,让损失函数(cost funtion)变得最小 / 最优。
对于一般大小的数据集,可以用批量梯度下降法(batch gradient descent);
对于大规模的数据集,内存一次性放不下这么大的数据,则使用随机梯度下降法(stochastic gradient descent),有些时候也称为在线梯度下降法(online gradient descent);
随机梯度下降法的另一个高级方法就是在线学习(online learning);
还有一种介于 batch 和 stochastic 的gradient descent方法,就是mini-batch learning(小批量学习)
批量梯度下降法:其实就是上面描述的adaline的过程,在每次迭代中,纳入所有的样本,进行权重更新。
Δw=η∑i(yi−ϕ(zi))xi\Delta w=\eta \sum_{i} (y^i-\phi(z^i))x^iΔw=ηi∑(yi−ϕ(zi))xi
随机梯度下降法:在整个样本中,随机抽取部分样本进行权重更新,注意,这个时候的权重更新方法不是adaline,而是类似perceptron。之所以去掉求和公式,是因为只是取整体的部分,所以不需要计算cost function(计算了也没用),所以就去掉了。当然,要理解随机梯度下降求出的结果,并不会是最小或者最优,而是在允许误差范围内的较好选择(也不排除碰巧是最小),相当于是牺牲了部分精度而追求速度。
Δw=η(yi−ϕ(zi))xi\Delta w=\eta (y^i-\phi(z^i))x^iΔw=η(yi−ϕ(zi))xi
本文介绍了机器学习的两个基础算法——感知机和自适应线性神经元(Adaline),阐述了它们的工作原理和权重更新过程。感知机通过单位跃阶函数进行预测,权重更新依赖于学习率和预测误差。Adaline则改进了权重更新,引入激活函数和损失函数,使得每个特征的权重更新更具区分性。此外,文章还提到了梯度下降法在权重更新中的应用,包括批量梯度下降和随机梯度下降,以及它们在不同数据规模下的适用情况。
619

被折叠的 条评论
为什么被折叠?



