李宏毅机器学习-1

1、什么是Machine learning

在这里插入图片描述
机器学习简而言之就是找到一个function,根据输入得到想要的输出。
一种经常引用的英文定义是:A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.

2、中心极限定理、正态分布、最大似然估计

  • 中心极限定理(Central Limit Theorem)

设从均值为μ、方差为σ2总体中抽取样本量为n的样本,当抽取次数充分大时,样本均值的抽样分布近似服从均值为μ、方差为σ2/n 的正态分布。
大量相互独立的随机变量,其均值(或者和)的分布以正态分布为极限 。意思就是当满足某些条件的时候,比如Sample Size比较大,采样次数区域无穷大的时候,就越接近正态分布,这个定理神奇的地方在于,无论是什么分布的随机变量,都满足这个定理。

  • 正态分布
    正态分布(normal distribution)又名高斯分布(Gaussian distribution),是一个非常常见的连续概率分布。
    若随机变量X服从一个均值为μ,σ的平方的正态分布,其中μ为均值,σ的平方为方差,则记为:
    概率密度函数
  • 最大似然估计(Maximum likelihood estimation)
    先说下似然与概率的关系。
    概率是在特定环境下某件事情发生的可能性,也就是结果没有产生之前依据环境所对应的参数来预测某件事情发生的可能性。
    似然刚好相反,是在确定的结果下去推测产生这个结果的可能环境(参数)。
    以抛硬币为例,从似然的角度出发,假设我们观测到的结果是 x=0.5(即某一面朝上的概率是50%,这个结果可能是通过几千次几万次的试验得到的,总之我们现在知道这个结论),可以得到以下的似然函数:
    在这里插入图片描述
    上面的 p(硬币的性质)就是我们说的事件发生的条件,L描述的是性质不同的硬币,任意一面向上概率为50% 的可能性有多大。

对应的函数图像为:
在这里插入图片描述
与概率分布图不同的是,似然函数是一个(0, 1)内连续的函数,所以得到的图也是连续的,我们很容易看出似然函数的极值(也是最大值)在 p=0.5处得到,通常不需要做图来观察极值,令似然函数的偏导数为零即可求得极值条件

ps: 似然函数里的 pp 描述的是硬币的性质而非事件发生的概率(比如 p=0.5描述的是一枚两面均匀的硬币)

似然函数的最大值意味着什么?
让我们回到概率和似然的定义,概率描述的是在一定条件下某个事件发生的可能性,概率越大说明这件事情越可能会发生;而似然描述的是结果已知的情况下,该事件在不同条件下发生的可能性,似然函数的值越大说明该事件在对应的条件下发生的可能性越大

对数化的似然函数
实际问题往往要比抛一次硬币复杂得多,会涉及到多个独立事件,在似然函数的表达式中通常都会出现连乘:在这里插入图片描述
对多项乘积的求导往往非常复杂,但是对于多项求和的求导却要简单的多,对数函数不改变原函数的单调性和极值位置,而且根据对数函数的性质可以将乘积转换为加减式,这可以大大简化求导的过程:
在这里插入图片描述
最大似然估计的一般求解过程:

(1) 写出似然函数;

(2) 对似然函数取对数,并整理;

(3) 求导数 ;

(4) 解似然方程

3、Loss Function

  1. 推导回归Loss function
    损失函数是已知值与预测值的差的平方和,该值越小越好,代表funtion函数拟合度高。
    以一元函数举例:
    在这里插入图片描述
  2. 损失函数与凸函数之间的关系
    如果损失函数为convex,其极值就为最优解;反之,损失函数可能只计算得到局部最优解(正好下面会谈到),很难得到全局最优 。
    比如, linear regression,其凸函数是convex,则不管从什么方向 Gradient Descent 都能得到全局最优解。

在这里插入图片描述
5. 全局最优和局部最优
上面提到,loss function 为convex时,很容易得到全局最优解。对于凸优化来说,局部最优就是全局最优,换句话说,极小值就是最小值。
但是对于非convex来说,如下图所示,从不同的出发点进行优化,得到的值可能只是局部最优的,而非全局最优。
在这里插入图片描述

4、泰勒展开

泰勒公式主要的作用就是把一个特别复杂的函数化简,近似的求其值,归根结底他的作用就是近似函数来用的,以简单熟悉的多项式去尽量代替复杂的函数公式。
在这里插入图片描述
1、推导梯度下降公式
梯度的求法就是对目标函数的所有因变量求偏导。
梯度下降法的核心思想就是,给定一个初始点,在该点处求其梯度,迭代得到下一个点。直到梯度为零时结束。
求损失函数的梯度(高中数学):
在这里插入图片描述
2、梯度下降的代码

import math;

def sum_of_gradient(x, y, thetas):
    """计算梯度向量,参数分别是x和y轴点坐标数据以及方程参数"""
    m = len(x);
    grad0 = 1.0 / m * sum([(thetas[0] + thetas[1] * x[i] - y[i]) for i in range(m)])
    grad1 = 1.0 / m * sum([(thetas[0] + thetas[1] * x[i] - y[i]) * x[i] for i in range(m)])
    return [grad0, grad1];

def step(thetas, direction, step_size):
    """move step_size in the direction from thetas"""
    return [thetas_i + step_size * direction_i
            for thetas_i, direction_i in zip(thetas, direction)]

def distance(v, w):
    """两点的距离"""
    return math.sqrt(squared_distance(v, w))

def squared_distance(v, w):
    vector_subtract = [v_i - w_i for v_i, w_i in zip(v, w)]
    return sum(vector_subtract_i * vector_subtract_i for vector_subtract_i, vector_subtract_i
               in zip(vector_subtract, vector_subtract))

def gradient_descent(stepSize, x, y, tolerance=0.000000001, max_iter=100000):
    """梯度下降"""
    iter = 0
    # initial theta
    thetas = [0, 0];
    # Iterate Loop
    while True:
        gradient = sum_of_gradient(x, y, thetas);

        next_thetas = step(thetas, gradient, stepSize);

        if distance(next_thetas, thetas) < tolerance:  # stop if we're converging
            break
        thetas = next_thetas  # continue if we're not

        iter += 1  # update iter

        if iter == max_iter:
            print 'Max iteractions exceeded!'
            break;

    return thetas

5、L2-Norm,L1-Norm,L0-Norm

1、正则化公式

在这里插入图片描述
其中λ 称为正则化参数(Regularization Parameter)
加入正则项可使θ变小:因为如果我们令 λ的值很大的话,为了使Cost Function 尽可能的小,所有的 θ 的值(不包括θ 0)
但若λ 的值太大了,那么θ (不包括θ0 )都会趋近于0,这样我们所得到的只能是一条平行于x 轴的直线。所以对于正则化,我们要取一个合理的 λ 的值,这样才能更好应用正则化。

2、用L1-Norm代替L0-Norm
L0正则化的值是模型参数中非零参数的个数。使用L0正则可得到稀疏的参数以此来防止过拟合。从直观上看,利用非零参数的稀疏性可以进行特征选择实现特征稀疏。
虽然L0正则优势很明显,但求解困难属于NP问题,因此一般情况下引入L0正则的最近凸优化L1正则(方便求解)来近似求解并同样可实现稀疏效果

L1正则化(lasso问题)的值是各个参数的绝对值之和。 L1正则化之所以可以防止过拟合,是因为其范数是参数绝对值之和,而参数大小与模型复杂度成正比,最小化L1范数可降低模型复杂度。

L2正则化(Ridge问题)的值是各个参数的平方和的开方值。
L2正则使得参数中每个元素都很小接近于0(仅仅接近,但不为0),这就导致了所有参数都很小,与L1类似得参数小则模型复杂度低,可有效防止过拟合。

Lasso 与 Ridge 对比

在这里插入图片描述
在 (w1,w2) 平面上可以画出目标函数的等高线,而约束条件为平面上半径为C的一个规则化球(norm ball):等高线与norm ball首次相交的地方就是最优解:
在这里插入图片描述
总结:L1趋向于产生少量特征,其它特征均为0;而L2会选择更多趋于0的特征。Lasso适合特征选择,Ridge适合规则化

3、为什么正则只对w/Θ做限制,不对b做限制
正则项中,对θ限制,不对b(bias)限制,主要原因就是改变bias只会让函数上下移动。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值