美文网首页机器学习
机器学习之数学

机器学习之数学

作者: 宙斯YY | 来源:发表于2021-07-14 10:23 被阅读0次

    数学基础

    1.导数和梯度

    导数
    根据高中知识可以知道,如果想求一个函数的最小值,我们可以对函数求导,导数为0的点,是函数在该点处切线斜率为0的点,是函数的驻点,但不一定为极值点,我们需要进一步比较驻点左右的值来筛选【符号相反】,比如y=x³,x=0的并不是函数的极值点。

    但是以上知识仅限于二元简单函数,如果二元函数非常复杂,求导之后仍然不容易求解,或者是多元函数,我们就没法使用导数求出最小值。
    例如:

    二次函数.png
    梯度
    针对以上多元函数的情况,我们需要使用梯度寻找函数的最小值。
    梯度的几何意义:
    以平面函数f(x,y,z)为例,首先f(x,y,z)在某点(x0,y0,z0)处的梯度是一个向量,它的方向就是函数f(x,y)在该点函数值变化最快的方向,即方向导数最大的方向,它的模就等于该点方向导数的最大值.
    梯度的代数求法:
    一个函数对于其自变量分别求偏导数,这些偏导数所组成的向量就是函数的梯度。
    代数求法.png
    梯度找最小值原理
    简答理解就是,二元函数求导数,一次导数筛选驻点,再利用二次导数找到极值点。
    拓展到多元函数就是,一次梯度选驻点,再利用二次梯度找极值点。
    梯度.png
    一次梯度求出来表现为列向量,二次梯度表现为海森矩阵。
    二元函数泰勒级数.png
    多元函数泰勒级数.png
    根据泰勒级数可知,令变化参数为负梯度,可以确定为函数减小最快的方式。

    2.概率论

    概率分布函数

    概率分布函数.png
    利用概率分部函数求区间[a,b]概率,就是F(a)-F(b)的值。
    概率密度函数
    概率密度函数就是概率分部函数微分之后的结果,图像表现如下:
    概率密度函数.png
    根据牛顿莱布尼茨公式,可知
    概率密度函数求区间[a,b]概率,就是a-b围城面积的值。

    两者本质互为微积分逆运算。

    典型的概率密度函数就是正态分布:


    正态分布.png

    3.贝叶斯定理

    含义
    P(A|B)=P(B|A)P(A)/P(B)。
    其中P(A|B)的含义是:B发生的情况下,A的概率。
    举例:
    现分别有 A、B 两个容器,在容器 A 里分别有 7 个红球和 3 个白球,在容器 B 里有 1 个红球和 9 个白球,现已知从这两个容器里任意抽出了一个红球,问这个球来自容器 A 的概率是多少?
    假设已经抽出红球为事件 B,选中容器 A 为事件 A,则有:P(B) = 8/20,P(A) = 1/2,P(B|A) = 7/10,按照公式,则有:P(A|B) = (7/10)
    (1/2) / (8/20) = 0.875
    原理
    利用条件概率推导,P(A∩B) = P(A)P(B|A)=P(B)P(A|B)。
    意义
    利用已知信息出现概率,推出未知信息可能发生概率。一般生活中,P(B|A)可能为已知条件,更容易计算,而P(A|B)不容易计算的情况。
    例如:
    一座别墅在过去的 20 年里一共发生过 2 次被盗,别墅的主人有一条狗,狗平均每周晚上叫 3 次,在盗贼入侵时狗叫的概率被估计为 0.9,问题是:在狗叫的时候发生入侵的概率
    我们假设 A 事件为狗在晚上叫,B 为盗贼入侵,则以天为单位统计,P(A) = 3/7,P(B) = 2/(20365) = 2/7300,P(A|B) = 0.9,按照公式很容易得出结果:P(B|A) = 0.9(2/7300) / (3/7) = 0.00058

    4.线性代数

    基向量

    房价面积数据.png
    数据表示为:
    二维图形.png
    例如:
    (3,2).png

    当前坐标系的基地e1=(1,0) e2=(0,1),比如(3,2)可以使用矩阵表示为
    [1,0 * (3,2) T = (3,2)T
    0,1]

    就像我们图上面的,我说有一个向量(3,2),但是为什么这个向量是这样的表示呢?因为它在我们的做标系中,如果我把坐标系换了,它就不是(3,2)了。作为基,首先的一个前提就是要相互垂直,或者说内积为0,因为X和Y它们表达的分别是两种指标,我们不希望它们之间内部存在任何联系,所以必须让他们内积为0,这样就是各自独立的啦!
    如果基底修改,对应(3,2)向量也会改变。


    (3,2)改变.png

    这样修改过后,二维空间的数就转成一维空间数,实现了降维,且数据特征尽可能不发生变化。所谓的降维就是要把我们的数据投影到最合适的基中。


    修改基底.png

    特征值和特征向量

    特征值和特征向量.png
    其中,A是变换矩阵,u是特征向量,λ是特征值。
    u在A矩阵变化下,仍然满足新的λu与之前u共线,且只是伸缩性改变。
    A矩阵变化,图像表现为对应参考系基向量的改变。

    方差,协方差,协方差矩阵
    方差(Variance)是度量一组数据的分散程度。方差是各个样本与样本均值的差的平方和的均值:

    方差.png

    协方差(Covariance)是度量两个变量的变动的同步程度,也就是度量两个变量线性相关性程度。如果两个变量的协方差为0,则统计学上认为二者线性无关。注意两个无关的变量并非完全独立,只是没有线性相关性而已。计算公式如下:


    协方差.png

    假设有一个矩阵:


    矩阵.png

    然后我们用X乘以X的转置,并乘上系数1/m:


    协方差矩阵.png
    这个矩阵对角线上的两个元素分别是两个字段的方差,而其它元素是a和b的协方差。两者被统一到了一个矩阵的。根据矩阵相乘的运算法则,这个结论很容易被推广到一般情况:
    设我们有m个n维数据记录,将其按列排成n乘m的矩阵X,设C=1mXXT,则C是一个对称矩阵,其对角线分别个各个字段的方差,而第i行j列和j行i列元素相同,表示i和j两个字段的协方差。

    PCA降维
    目标:
    设有m条n维数据,目标是变成k维数据(k<n),且尽可能保证数据特征不发生变化。
    过程:
    1)将原始数据按列组成n行m列矩阵X
    2)将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值
    3)求出协方差矩阵

    3.png
    4)求出协方差矩阵的特征值及对应的特征向量
    5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P
    6)Y=PX即为降维到k维后的数据

    例子:

    矩阵.png
    对其进行0均值化处理:
    0均值化.png
    求协方差矩阵:
    协方差矩阵.png
    求解后特征值为:
    特征值.png
    对特征值分解后按照特征值大小排序,取前多少个。通过特征值排列 ,我们可以得到数据在这些特征向量上的分布和多样性。
    其对应的特征向量分别是:
    特征向量.png
    其中对应的特征向量分别是一个通解,c1和c2可取任意实数。那么标准化后的特征向量为:
    标准化.png
    因此我们的矩阵P是:
    矩阵P.png
    可最后我们用P的第一行乘以数据矩阵,就得到了降维后的表示:
    降维后.png

    5.损失函数

    训练学习的目的就是尽可能最小化损失函数,最常见两种损失函数为hinge loss和softmax

    1.hinge loss

    定义
    对于训练集中第i张图片的数据xi,在w权重下对应目标值为f(xi,w),在该样本的损失下我们用公式表示为

    hinge loss.png
    比如:
    我们现在有三个目标类别【猪,狗,猫】,f(xi,w)计算结果为[13,-7,11],而实际结果是第一类猪,我们使用公式假定阈值量为10
    把错误类别遍历求和得到
    L=max(0,-7-13+10)+max(0,11-13+10)>0,说明有权重偏差较小,和真是值太近。
    添加正则后的求N个目标值平均损失函数的公式为【防止overfitting】
    正则后.png
    例如有3个目标值,求出平均损失为
    3个.png

    意义
    给定一个阈值,使得错误量和正确量之间差距大于该阈值,如果小于,则需要再次更新和学习。

    2.softmax

    定义

    softmax.png
    又称归一化函数,Softmax是用于分类过程,用来实现多分类的,简单来说,它把一些输出的神经元映射到(0-1)之间的实数,并且归一化保证和为1,从而使得多分类的概率之和也刚好为1。
    假如有3类目标值,理想情况下目标值[1,0,0]
    我们的预测输出结果为[-3,1.5,2.7],我们要利用softmax把这个值映射到(0,1)上,且概率相加为1。
    第一步:
    y1 = exp(x1) = exp(-3) = 0.05
    y2 = exp(x2) = exp(1.5) = 4.48
    y3 = exp(x3) = exp(2.7) = 14.88
    第二步:
    z1 = y1/(y1+y2+y3) = 0.05/(0.05+4.48+14.88) = 0.0026
    z2 = y2/(y1+y2+y3) = 4.48/(0.05+4.48+14.88) = 0.2308
    z3 = y3/(y1+y2+y3) = 14.88/(0.05+4.48+14.88) = 0.7666
    那么,
    [-3,1.5,2.7]->[0.0026,0.2308,0.7666]

    然后,我们使用交叉熵公式计算

    交叉熵.png
    例如:
    例子.png
    意义
    同hinge loss比较而言,hinge loss 会在满足阈值之后停止学习,而对于softmax,基本很难达到真正和理想情况一模一样,所以需要设置参数,达到要求停止;但是不管hinge loss还是softmax都是同向反应损失的函数。

    6.梯度下降和反向传播

    0.基础概念

    梯度下降的核心
    多元函数(损失函数)求最小值的方法,比较好用的就是使用梯度下降,找到梯度[各个方向上求偏导,本质是一个向量]接近0的函数的位置。
    梯度:是一个矢量,其方向上的方向导数最大,其大小正好是此最大方向导数。
    梯度下降:不断求出权重w关于损失函数C的梯度(偏导数),不断更新,直到权重w关于函数C梯度接近0,就找到此时损失函数最小值时对应权重w的值。

    反向传播的核心
    链式法则[借助中间变量]:

    链式法则.png
    例如.png
    正向:f(x,y,z)=(-2+5)-4=-12
    反向:令q=x+y,想求出f(x,y,z)关于x的偏导数,先求f(x,y,z)关于q的偏导数=z=-4,再求f(q)关于x的偏导数=1,根据链式法则 f(x,y,z)关于x的偏导就是-4
    1=-4

    Sigmoid
    Sigmoid导数可以用自身表示。

    Sigmoid函数.png

    神经网络中的正向和反向

    正反.png

    相关文章

      网友评论

        本文标题:机器学习之数学

        本文链接:https://www.haomeiwen.com/subject/owxypltx.html