啥是机器学习?
举个例子:有个盒子,不知道里面有什么,我随机放个数字2进去,输出一个数字4,我又放进去一个3,输出6,于是我猜盒子里有一个函数,会把我输入的数字变成2倍,然后我写一个程序,来替代它,最后用计算机取代我思考这个行为,这个过程就叫机器学习。
简单说来就是给一堆x,y,求y关于x的一个函数,是不是一下就明白了
然后扩大一下,这个y可以不局限于数值,比如x是一张人脸照片,y是这个人的表情,就是一种更加广义的机器学习
这里就可以给出两个东西:求数值叫做回归,求其他结果叫做分类
基础定义
有了前面的基础概念,后面就好说了
我求的这个函数叫做模型
然后我简单做个假设y = w * x + b
x叫做特征,w叫做权重,b叫做偏置
简单吧
然后提个场景,以开头2倍的例子来说,我说y=2x,小明说y=x+2,输入2结果都为4,我俩都觉得自己对,于是吵个不停,这时候有个男人叫小帅说了,他说我的对,因为输入3我的是6,小明是5,我的比小明准——这个就叫评估条件,无论是我的4,6,还是小明的4,5,都是基于自己函数的估计值
然后说一下常见估计方法:
1. 直接做差
这种方法很直观,但是有正有负,因为估计的值可能大于实际值,可能小于实际值,谁也不知道我估计的啥样
2.绝对值
完美解决上面的问题,但是看不出来我是大了还是小了
3.平方
和绝对值差不多,但是可能会因为平方放大或缩小误差值(有利有弊)
最后,求出每一组xy的这个差就行(这玩意叫做损失),然后除以你数据组的数量,做个平均值,绝对值的叫做平均绝对误差(MAE),平方的叫均方误差(MSE)
(直接偷的书里的图)L就是你算的那个误差,不同的wb取值会有不同的误差,颜色越偏蓝误差越小,同一个颜色就是不同取值但是误差一样
如何优化?——梯度下降算法
最后要找最好的权重和偏置?怎么找呢,有个方法叫梯度下降算法
咋做呢,我来说一说
先说大体框架:
1.首先随便给一个w0和b0,权重和偏置随便给个数,有个初始值
2.让b=b0不变,这样L的计算只受权重影响了,然后找这个时候最好的w1
3.让w=w0不变,这样L的计算只受权重影响了,然后找这个时候最好的b1
4.把初始值换为b1,w1,重复就行
接下来是核心——怎么找最好的k1或者b1?
(又偷一个,这图是真好用啊)
固定b0后,w0和L就有个函数,直接再w0处求导,斜率负数就是左高右低往右走,正数就是相反,往低处走就行,至于走多少,这个就是你自己设置了,一半是你求出来的导数乘一个数,这个数叫做学习率,但是也没有说学习率取哪个值最好,他是自己设置的,自己设置的值叫做超参数。
(再用一个,嘿嘿)
这样就会出现问题,看图,一般找不到最小值,但是没啥关系,因为还有b没找呢,b也是变化的到时候w又变了,我们只要不断逼近最优值就行,并不用一定要全局最小,当然全局最小更好,可以让你更快的逼近。
这就是一个基本的逼近流程图
总结
介绍了机器学习的基本定义,以及实际流程,简述了一个优化参数的基本方法——梯度下降算法