中心极限定理
中心极限定理指的是给定一个任意分布的总体。我每次从这些总体中随机抽取 n 个抽样,一共抽 m 次。 然后把这 m 组抽样分别求出平均值。 这些平均值的分布接近正态分布。
回归LossFucntion
回归问题的损失函数一般使用每个点的误差的平方的和,即平方误差,平方误差比绝对值误差要容易求解,所以一般用平方误差。
最大释然估计
极大释然估计,就是利用已知的样本结果信息,反推最具有可能(最大概率)导致这些样本结果出现的模型参数值。举个例子来说明,假设某个硬币出现正面的概率未知(并不少固定的0.5),那么我可以通过做很多次实验,然后估计这个硬币出现正面的真正概率。
损失函数与凸函数
损失函数定义了模型的优化方向,是模型的灵魂,不同的损失还是决定了模型的不同表现。模型的损失函数越小,表示模型在这个数据集上拟合得越好。
如果损失函数为凸,其极值就为最优解;反之,损失函数可能只计算得到局部最优解(正好下面会谈到),很难得到全局最优 。
全局最优和局部最优
在函数解析的过程中,由于很难直接求到最优解,或者并不存在最优解,这个时候我们采用迭代的方式,不断的朝着正确的方向去优化我们的解,期望能得到最优解。但如果我们设置的步长不合理,可能我们会限在某个局部最优解里面,看不到后面也许还有更好的解析解。如果损失函数为凸,其极值就为最优解;反之,损失函数可能只计算得到局部最优解,很难得到全局最优 。
梯度下降
复合函数求导:
eg:
偏导数:
偏向某个方向,其他的方向就看作一般常量
我们的函数可以表示为:
定义误差函数为每个点的误差的平方的和,即平方误差,平方误差比绝对值误差要容易求解,所以一般用平方误差。
要使L(x)最小,我们需要对L(x)在每个w方向上求偏导数,并使w沿着偏导数的反方向移动,直到L(x)出现最优解
为了方便推倒,这里先假设i=1
每个w每次减去该方向的偏导数。
import numpy as np
def fit(X:[],y:[], round=30, eta=0.01):
# if(len(X) != len(y)):
# return (0,0)
vector_X = np.array(X)
diamon = vector_X.shape[1]
vector_w = np.ones(diamon)
bais = 0
while(round > 0):
loss = vector_X.dot(vector_w) + bais - np.array(y)
vector_w -= eta * vector_X.T.dot(loss)
bais -= eta*loss.sum()
round -= 1
error = (loss ** 2).sum() / 2.0
print(error)
return vector_w, bais
正则化
r(d)表示对参数的约束。
正则化的出现是为了防止模型出现过拟合,模型出现过拟合就表示出现了更多的高次方程,曲线更加复杂,而这些w都是通过数据学习来的,所以要防止过拟合就要减少w的个数。
范数
- 0范数,向量中非零元素的个数。
- 1范数,为绝对值之和。
- 2范数,就是通常意义上的模。
说明为什么用L1-Norm代替L0-Norm
l0-Norm虽然可以直接减少w向量的维度,但是求解的过程属于NP-hard问题,因此一般用相近的L1代替。
L2-Norm
L2范数是指向量各元素的平方和然后求平方根。我们让L2范数的正则项||W||2最小,可以使得W的每个元素都很小,都接近于0,但与L1范数不同,它不会让它等于0,而是接近于0。L2范数在求解方面更加有优势,所以L2也经常被使用到
学习为什么只对w/Θ做限制,不对b做限制
b不会增加模型的复杂度,模型的复杂度只和w有关
网友评论