机器学习小结

人工智能三大学派

人工智能自1956年正式提出,发展期间,作为一门交叉学科,不同学科背景的学者对人工智能做出了不同的理解,并提出了各自的方法,主要被分为三大学派——符号主义,连接主义,行为主义。

 符号主义

人工智能发展早期遵循符号主义学派的路径,符号主义学派认为人工智能源于数学逻辑,其实质是模拟人的抽象逻辑思维,通过研究人类认知系统的功能机理,用某种符号来描述人类的认知过程,并把这种符号输入到能处理符号的计算机中,从而模拟人类的认知过程,实现人工智能。符号主义历经启发式算法->专家系统->知识工程理论与技术的发展过程,并在20世纪80年代取得很大发展。由于狭窄的应用领域让它在短暂的辉煌后沉寂。

连接主义

连接主义学派吸取符号主义学派教训,以工程技术手段模拟人脑神经系统的结构和功能。这种思路在一定程度上实现人脑形象思维,它从神经元开始进而研究神经网络模型和脑模型,开辟了人工智能的又一发展道路。20世纪60~70年代,连接主义,尤其是对以感知机(perceptron)为代表的脑模型的研究出现过热潮,由于受到当时的理论模型、生物原型和技术条件的限制,脑模型研究在20世纪70年代后期至80年代初期落入低潮。直到Hopfield教授在1982年和1984年发表两篇重要论文,提出用硬件模拟神经网络以后,连接主义才又重新抬头。1986年,鲁梅尔哈特(Rumelhart)等人提出多层网络中的反向传播算法(BP)算法。此后,连接主义势头大振,从模型到算法,从理论分析到工程实现,为神经网络计算机走向市场打下基础。

行为主义

行为主义最早来源于20世纪初的一个心理学流派,认为行为是有机体用以适应环境变化的各种身体反应的组合,它的理论目标在于预见和控制行为,这一学派的代表作者首推布鲁克斯(Brooks)的六足行走机器人,它被看作是新一代的“控制论动物”,是一个基于感知-动作模式模拟昆虫行为的控制系统。

我们学习人工智能时,并没有刻意区分学派,将三大学派的知识熔为一体,即可谓“统一人工智能”,

机器学习

机器学习的定义

机器学习中存在多种学派,机器学习利用计算手段,用经验来改善系统自身的性能,“经验”通常以“数据”形式存在,机器学习所研究的主要内容,即“学习算法”。有了学习算法,我们把将经验数据提供给他,他就能基于数据产生模型,这个过程即为训练过程,在面对新的情况时,我们为模型输入数据,模型输出结果,即为预测。

机器学习一般处理过程

机器学习的目的是使学得的模型能够适用于新样本,我们希望学习的模型对于没有在训练集中出现的样本,依然具有准确的预测值,这种学得模型适用于新样本的能力称为“泛化能力”。为了得到一个针对具体问题有很强泛化能力的模型,我们首先应该定义问题的类型,根据经验和对数据的分析,初步挑选合适的模型或者适合的若干模型,在训练之前,我们应该对数据进行清洗,去掉重复的数据,补全缺失的数据,统一数据的格式,挑选特征,数据标椎化和归一化(这一过程可以归结为三步:数据预处理,特征选择,降维,统称为特征工程)。数据处理好后,即可以使用选择好的模型对数据进行训练——模型可以根据输入数据得到吻合输出数据的结果,也就是寻找使模型能对特定的问题进行预测的参数的过程,训练好的模型需要接受新的数据集的检验,获取模型的正确率和各种评判模型好坏的参数(如偏差、方差、查准率、查准率),最后挑选最佳模型,并进行优化。

1.问题的定义

当我们决定用机器学习技术来解决问题时,我们应该判断问题的类型,大体上,我们将问题分为监督学习或无监督学习,监督学习带有数据标签,即数据包含输入和输出,假设输入为x_train,输出为y_train,若选择线性回归模型
f ( x ) = w t x = ∑ i = 0 N w i x i , 其 中 w = ( θ 1 , θ 2 , θ 3 , , , θ i ) , x = ( x 1 , x 2 , x 3 , , x i ) f(x)= w^tx=\sum_{i=0}^Nw_ix_i , 其中w=(\theta_1,\theta_2,\theta_3,,,\theta_i),x=(x1,x2,x3,,x_i) f(x)=wtx=i=0Nwixi,w=(θ1,θ2,θ3,,,θi),x=(x1,x2,x3,,xi)

∃ \exists w,使得`
y t r a i n = w t x t r a i n y_{train}=w^tx_{train} ytrain=wtxtrain
训练参数w(使用数学方法,寻找参数w),使得模型能拟合数据集,即为模型训练过程。
特别地,当标签y_train的值是连续的,处理问题为回归问题,如房价预测问题,输入数据的特征包括地段,楼层,居室,面积,输出为房价的预测值;当标签y_train的值是离散值,处理的问题即为分类问题,如文本分类问题,输入为word2vec的向量,输出为文本的类别,属于新闻类或娱乐类。
无监督学习不具有数据标签,对于输入的数据x_tain,选择模型,能将数据样本划分为cluster1,cluster2,clusteri。无监督学习主要处理问题即为聚类,如给定若干花朵特征数据,使用聚类模型将花朵分为若干种花(如牵牛花,玫瑰花,紫荆花等)。

2.模型的选择

根据问题的定义选择合适的模型,模型的合理性很大程度上取决于待解决问题本身的特征;模型的复杂度需要和问题的复杂度相同(数据的特征少,选择较简单的模型,数据的特征达到万维或更多,简单的模型无法很好的拟合数据集,可以考虑使用神经网络等模型)。

选取模型可以参考两个基本的准则:无免费的午餐原理(No Free Lunch Theorem)和奥卡姆剃刀(Occam's Razor)原则.

NFL定理:对于任意的学习算法 ξ a \xi_a ξa ξ b \xi_b ξb,无论算法简单或复杂,算法 ξ a \xi_a ξa在某一问题上比算法 ξ b \xi_b ξb的预测性能好,那么必有在另一问题上, ξ a \xi_a ξa在这一问题上比算法 ξ b \xi_b ξb性能差。算法在所有问题上的期望是相同的。
但有一个重要前提:所有“问题”出现的机会相同、或所有的问题同等重要。NFL 定理最重要的指导意义在于先验知识的使用,也就是具体问题具体分析,同样用于分类的算法,逻辑回归和朴素贝叶斯分类器在不同问题上的表现不同。

奥卡姆的剃刀(Occam’Razor):在不同模型得到的结果大致相同的情况下,模型越简单越好。

通常过于简单的模型对于数据特征的学习效率不太好,梨能判断成苹果,偏差较高(预测值的期望和真实结果的区别),由于对于特征学习不够精确,把所有和苹果相似的其他水果都能判断成苹果,因而,方差较小(模型预测值本身的波动较小),容易欠拟合。

对于过于复杂的算法,对于数据集的特征学习程度过高,能够对数据集的数据做出精准的预测,但有可能学习过头,将数据的某些特征视为必须的充分条件,如苹果必须是红的。模型复杂度高,方差较高。

挑选模型就是选择低方差和低偏差的模型。

3.特征工程

数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。
参考:https://www.zhihu.com/question/29316149

4.模型训练(寻找参数)

以线性回归模型为例,寻找参数,即为找到 Y t r a i n = W t X t r a i n Y_train = W^tX_train Ytrain=WtXtrain,当数据集比较大时,使用人手动解方程,求方程的方式显然费时费力,但能想到,我们求解的参数需要满足 L ( x ) = ( f ( X t r a i n ) − Y t r a i n ) 2 L(x)=\left(f( X_{train})-Y_{train}\right)^2 L(x)=(f(Xtrain)Ytrain)2( 假设模型为f(x)), 寻找的参数 w i w_i wi,应使L(x)减小,即 f ( x t r a i n ) f(x_{train}) f(xtrain) y t r a i n y_{train} ytrain接近,这里的损失函数L(x)为均方误差,寻找参数 W − i W-i Wi的过程使均方误差取得最小值的过程,表达式可写为:
w ∗ = a r g m i n ∑ k = 1 ( w t x k − y k ) 2 w^*= {argmin}\sum_{k=1}(w^tx_k-y_k)^2 w=argmink=1(wtxkyk)2
在单变量线性回归任务中,最小二乘法的作用就是找到一条直线,使所有样本到直线的欧式距离追小。
最小二乘法的推导:
假设一元线性回归模型: f ( x i ) = w x i + b f(x_i)=wx_i+b fxi)=wxi+b,
L ( x ) = ∑ i = 1 N ( y i − w i − b ) 2 L(x)= \sum_{i=1}^N(y_i - w_i -b)^2 L(x)=i=1N(yiwib)2
对函数求偏导并令其为零,有 ∂ l ∂ w = 0 \frac{\partial_l}{\partial_w}=0 wl=0, ∂ l ∂ b = 0 \frac{\partial_l}{\partial_b}=0 bl=0,即
∂ l ∂ w = 2 ( w ∑ i = 1 N x i 2 − ∑ i = 1 N ( y i − b ) x i ) \frac{\partial_l}{\partial_w}=2(w\sum_{i=1}^Nx_i^2-\sum_{i=1}^N(y_i-b)x_i) wl=2(wi=1Nxi2i=1N(yib)xi)
∂ l ∂ b = 2 ( m b − ∑ i = 1 N ( y i − w x i ) ) \frac{\partial_l}{\partial_b}=2(mb-\sum_{i=1}^N(y_i-wx_i)) bl=2(mbi=1N(yiwxi))
解得:
w = ∑ i = 1 N ( x i − x ⃗ ) ∑ i = 1 N x i 2 − 1 N ( ∑ i = 1 N x i ) 2 w=\frac{\sum_{i=1}^N(x_i-\vec x)}{\sum_{i=1}^Nx_i^2-\frac{1}{N}(\sum_{i=1}^Nx_i)^2} w=i=1Nxi2N1(i=1Nxi)2i=1N(xix )
b = 1 N ∑ i = 1 N ( y i − b ) x i b=\frac{1}{N}\sum_{i=1}^N(y_i-b)x_i b=N1i=1N(yib)xi
其中, x ⃗ = 1 N ∑ i = 1 N x i \vec x=\frac{1}{N}\sum_{i=1}^Nx_i x =N1i=1Nxi
使用最小二乘法求模型的程序示例:

         import pandas as pd
         import matplotlib.pyplot as plt
         import numpy as np
          
          x = [2,4,6,7,9,12]
          y = [23,34,54,60,78,87]
          
          y_mean = np.sum(y)/np.size(y)  

     
              x_mean = np.sum(x)/np.size(x)
              square = np.sum([x*x for x in x]);
              
              def get_w(X,Y,x_mean):
                square = np.sum([x*x for x in X]);
                up_sum = 0;
                lower_sum = 0;
                for i in range(np.size(X)):
                    x = X[i]
                    y = Y[i]
                    up_sum +=  y*(x - x_mean)
                size = np.size(X);
                sum_2 = np.sum(X)*np.sum(X)
                lower_sum = square - sum_2/size
                w = up_sum/lower_sum  
                return w;
                
              def get_b(X,Y,w):
                  b = 0
                  for i in range(np.size(X)):
                    x = X[i]
                    y = Y[i]
                    b+= y - w*x
                  b = b/np.size(X)
                  return b
                  
              w =  np.abs(get_w(x,y,x_mean))
              b =  get_b(x,y,w)
              y_result = [w*x+b for x in x]
              
              plt.figure(figsize = (10,10))
              plt.scatter(x,y)
              plt.plot(x,y_result)

对于多元线性回归模型,样本由多个属性描述,可推导多元线性回归的最小二乘法最优参数为:
ω ∗ = ( X T X ) − 1 X T y \omega^*=(X^TX)^{-1}X^Ty ω=(XTX)1XTy
其中,X是由所有样本x=(x_0,x_1,x_2,x_3)的转置共同构成的矩阵,当 ( X T X ) (X^TX) XTX的逆矩阵存在时成立。

因而,最小二乘法并不是所有时候都能用于寻找参数w,在寻找参数w的方法中,使用梯度下降法更为普遍:
梯度下降法分为两步:
(1)初始化 θ \theta θ,(参数 w T = ( θ 0 , θ 1 , , , θ n ) w^T=(\theta_0,\theta_1,,,\theta_n) wT=(θ0,θ1,,,θn))
(2) 迭代循环执行如下公式:
θ i = θ i − α ∂ l o s s ( θ ) ∂ θ \theta_i = \theta_i - \alpha\frac{\partial{loss(\theta)}}{\partial\theta} θi=θiαθloss(θ)
其中,
∂ l o s s ( θ ) ∂ θ = 1 m ∑ i = 1 m ( h θ ( x ) − y ) 2 \frac{\partial{loss(\theta)}}{\partial\theta}=\frac{1}{m}\sum_{i=1}^{m}(h_\theta(x)-y)^2 θloss(θ)=m1i=1m(hθ(x)y)2
h ( θ ) = w T ∗ x = θ 0 ∗ b + θ 1 ∗ x 1 + … … + θ n ∗ x n h(\theta)=w^T*x=\theta_0*b+\theta_1*x_1+……+\theta_n*x_n h(θ)=wTx=θ0b+θ1x1++θnxn
梯度下降法应注意步长 α \alpha α的选取,取得过小会导致收敛速度过慢,过大则损失函数可能不会收敛,甚至逐渐变大 。

梯度下降法图片、代码参考:https://blog.csdn.net/zgcr654321/article/details/84963384

参考文献:

《人工智能及其应用(第3版)》
《机器学习》 周志华著
《统计学习方法》 李航著
《裂变:秒懂人工智能的基础课》 王天一著
《机器学习40讲》 极客时间——王天一  
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值