只需要知道用什么样的算法能够解决什么样的需求,不同的算法怎么去调参、调优
出去面试的时候可能会问一些公式的推导,经常问的都会去推导
复习:
核心:总结了机器学习的套路
1.随机产生w参数
2.把w参数与样本数据带入到误差函数中(最小二重法,损失函数,目标函数,误差函数都是这同一个公式)求解误差值
3.误差值与用户指定的误差阈值比较,
4.如果大于用户指定的误差阈值,继续调整w参数,
(2,3,4)
5.如果误差小于用户指定的误差阈值,那么此时的w参数就是最佳的w参数
问题:
怎么调整w参数?
比如现在w=10 越往大调误差越小,结果往小调就乱调,今天的重点,怎么去调整w参数。
使用一个简单的算法:
梯度下降法:
看图我们知道w1往小调,w0往大调整,但是机器怎么知道,
我们可以把一张图拆成两张图
刚才的w点拆解完之后,w0 和 w1 都是往大调
先验知识:
从凹函数最低点分开,虚线的左半部分导数为负数,导数<0
右半部分导数为正数,导数>0
可以通过导数来指导我们怎么调整w参数
如果 导数<0 ,w参数应该往大调
如果 导数>0 ,w参数应该往小调
现在通过导数可以决定w参数的调整方向,同样道理,再来看这张图,求这个点在w1方向和w0方向上的偏导数。
w0调整就是减去它的导数,当我的导数<0 w应该往大调整
因为导数能指导w参数的调整方向,如果w在虚线的左边,应该往大调整,应该加上一个正数,而此时的导数是负数,w0减去一个负数,就是往大调整
如果w在虚线的右边,w应该往小调整,此时的导数是一个正数,w减去一个正数,就是往小调整。
通过这个公式让我们的导数来决定我们w参数的调整方向。
这个α是学习率,导数是给我们决定w参数调整方向的,调整多大,每次调整的幅度是多少,由α学习率来决定的,就是这个公式。
下面的公式就是对上面公式的导函数的展开,对w0求偏导带入,结果是下面的公式。
就好像我在悬崖上要往山谷里走,走的方向就是导数,走几步路就是α学习率。
结论:
导数的正负,决定了w参数的调整方向,α决定了每次w调整的步长,这个α就是调参工程师需要去调整的,调α是很有学问的。
刚才说的是w0怎么调整,w1也是一样的,求w1的偏导
这是关于上一节课抛出来的问题,w怎么去调整,
现在机器学习的套路需要再细化一下
调整w参数的方法,称之为梯度下降法。
梯度的方向总是正向的,函数变大的方向,我们调整w参数应该沿着它梯度的负方向来调整,所以叫梯度下降法。
----------------------------------用python写一个梯度下降法-------------------------------------
这个代码就是实现了梯度下降法,机器学习的套路:
import numpy as np # 是python中的一个模块用于做矩阵计算的
import matplotlib.pyplot as plt
# 定义一个函数h(x) 返回 w0 + w1 * x
def h(x):
return w0