以下所有学习内容源于李宏毅老师的《机器学习》一课,
做事我们总是喜欢做从简单的做起,就想我们拿笔画线会从直线画起一样。
那机器学习就从 回归 开始吧:
第一、线性假设:假设模型是线性模型
即 ,
x即影响结果的有限个属性,我们为便于计算一般用矩阵来表示;
w即weight代表每个属性对应的权重值,我们也一般用矩阵来表示;
b即bias代表偏移。
第二、模型评估,损失函数的选择
有了模型,怎样判断一个模型的好坏,也就是判断模拟出来的结果准不准确,这个时候就引入了损失函数的概念,损失函数换个表达其实就是真实值与模拟值的偏差,偏差越小即模型一般表现得越好。为什么要叫函数,我的理解就是把偏差转化为函数的形式,将实际问题转换为数学问题,而且在计算机中也更容易实现。
线性模型中我们一般损失函数即均方误差,也就是实际值与理论值的差的平方,
其中当时,
为此时真实值,
为此时模型的模拟值。
我们基于均方误差最小化来进行模型求解的方法就叫做最小二乘法。
ML圣经《西瓜书》中说到:均方误差具有非常好的几何意义,它对应了常用的欧几里得距离,简称“欧氏距离”。在线性回归中,最小二乘法就是试图找到一条直线,使所有样本到直线上的欧式距离之和为最小。
第三、梯度下降,找到最佳模型
你要相信现实生活中的“重量”往往比理想中的“重量”多得多,说的就是w,所以在此就考虑w只有一个的情况。
要找到最佳w,需要随机选取一个w的初始值然后对对w求偏导数,计算出来的偏导数即斜率,如果此时斜率大于0,则w降低,如果斜率小于0,则w增加,变化的多少取决与设置的学习率,然后一直重复,知道找到最低点
b同理,这样的一个方法就叫梯度下降法
但是现实的情况会更复杂,有时一味的把loss做低可能会让模型的次数变高,虽然loss低了,但是与真实情况会出现很大的偏差也就是过拟合情况,在拟合的点会拟合的非常好,在非拟合的点就会非常不拟合。
如何让模型更好呢,那就需要更多的data,更多的参数,然后加入正则化。
以上即个人学习的拙劣理解,如有问题欢迎指正,感谢!