健身网站开发可行性分析,网络运营者应当为(),野花香电视剧在线观看高清,广东广东深圳网站建设Linear Regression 一个例子线性回归机器学习中的表达评价函数好坏的度量#xff1a;损失#xff08;Loss#xff09;损失函数#xff08;Loss function#xff09;哪个数据集的均方误差 (MSE) 高 如何找出最优b和w?寻找最优b和w如何降低损失 (Reducing Loss)梯度下降法梯… Linear Regression 一个例子线性回归机器学习中的表达评价函数好坏的度量损失Loss损失函数Loss function哪个数据集的均方误差 (MSE) 高 如何找出最优b和w?寻找最优b和w如何降低损失 (Reducing Loss)梯度下降法梯度计算梯度f^^(x)i梯度下降法gradient descent学习速率Learning rate金发女孩原则Goldilocks principle 如何训练模型习题 一个例子
相比凉爽的天气蟋蟀在较为炎热的天气里鸣叫更频繁。 现有数据如下图请预测鸣叫声与温度的关系。
线性回归
如图这种由点确定线的过程叫回归既找出因变量和自变量之间的关系
y mx b
y指的是温度摄氏度即我们试图预测的值 m指的是直线的斜率 x指的是每分钟的鸣叫声次数即输入特征的值 b指的是y轴截距
机器学习中的表达
y
x 特征feature) y 预测值target w 权重weight b 偏差bias 样本samples xy 如何找出最优的函数 即找出一组最佳的w和b 首先需要对函数的好坏进行评价
评价函数好坏的度量损失Loss
反应模型预测prediction的准确程度。
如果模型model的预测完全准确则损失为零。 训练模型的目标是从所有样本中找到一组平均损失 “较小” 的权重和偏差。 显然相较于左侧曲线图中的蓝线右侧曲线图中的蓝线代表的是预测效果更好的模型
损失函数Loss function
损失函数是指汇总各样本损失的数学函数。
· 平方损失又称为 L2 损失 · 单个样本的平方损失 ( observation - prediction(x) )2 ( y - y’ )2 · 均方误差 (mean-square error, MSE) 指的是样本的平均平方损失 哪个数据集的均方误差 (MSE) 高
以下两幅图显示的两个数据集哪个数据集的均方误差 (MSE) 较高 B图线上的 8 个样本产生的总损失为 0。不过尽管只有两个点在线外但这两个点的离线距离依然是左图中离群点的 2 倍。平方损失进一步加大差异因此两个点的偏移量产生的损失是一个点的 4 倍。 · 根据损失函数的定义 · 对于AMSE (02 12 02 12 02 12 02 12 02 02)/10 0.4 · 对于BMSE (02 02 02 22 02 02 02 22 02 02)/10 0.8
→因此B的MSE较高。
如何找出最优b和w?
定义了损失函数我们就可以评价任一函数的好坏下一步如何找出最优b和w? 靠猜~
像猜价格游戏参与者给出初始价钱通过“高了”或“低了”的提示逐渐接近正确的价格。
寻找最优b和w
1. 首先随机给出一组参数b1w1
2. 评价这组参数的好坏例如用MSE
3. 改变w和b的值
4. 转到步骤2直到总体损失不再变化或变化极其缓慢为止该模型已收敛最后一个问题如何改变w、b ???
如何降低损失 (Reducing Loss)
简化问题以只有一个参数w为例所产生的损失Loss与 w 的图形是凸形convex。如下所示 只有一个最低点 → 即只存在一个斜率正好为 0 的位置。 损失函数取到最小值的地方。
但是如何找到这一点呢
为w选择一个起点↓ 这里选择了一个稍大于 0 的起点
梯度下降法
梯度
· 梯度是偏导数的矢量有方向和大小。
· 梯度即是某一点最大的方向导数沿梯度方向函数有最大的变化率 沿梯度方向函数增加负梯度方向函数减少
· 损失Loss相对于单个权重的梯度大小就等于导数f’(x)i
二元函数的梯度
计算梯度f’(x)i
求导数即切线的斜率在这个例子中是负的因此负梯度是w的正方向。 梯度下降法gradient descent
ww-lr*w_grad
lr (learning rate学习速率) 然后重复此过程逐渐接近最低点。 ⭐负梯度指向损失函数下降的方向
学习速率Learning rate
通常梯度下降法用梯度乘以学习速率步长以确定下一个点的位置
ww-lr*w_grad
例如如果学习速率为 0.01梯度大小为 2.5则 ww-0.01*2.5
学习速率是机器学习算法中人为引入的是用于调整机器学习算法的旋钮这种称为超参数。
金发女孩原则Goldilocks principle
每个回归问题都存在一个“Goldilocks principle”学习速率该值与损失函数的平坦程度相关。 例如如果损失函数的梯度较小则可以采用更大的学习速率以补偿较小的梯度并获得更大的步长。
西方有一个儿童故事叫 “ The Three Bears金发女孩与三只小熊”迷路了的金发姑娘未经允许就进入了熊的房子她尝了三只碗里的粥试了三把椅子又在三张床上躺了躺。最后发现不烫不冷的粥最可口不大不小的椅子坐着最舒服不高不矮的床上躺着最惬意。道理很简单刚刚好就是最适合的just the right amount这样做选择的原则被称为 Goldilocks principle金发女孩原则。
采取恰当学习速率可以高效的到达最低点如下图所示 降低损失优化学习速率-模拟动图
如何训练模型
定义一个函数的集合给出评价函数好坏的方法利用梯度下降法找到最佳函数 习题 import numpy as np
import matplotlib.pyplot as pltdef gradient_descent(x, y, theta, learning_rate, epochs):ws []bs []for i in range(epochs):y_pred x.dot(theta)diff y_pred - yloss 0.5 * np.mean(diff ** 2)g x.T.dot(diff)theta - learning_rate * gws.append(theta[0][0])bs.append(theta[1][0])learning_rate learning_rate_shedule(i 1)print(f第{i 1}次梯度下降后损失为{round(loss, 5)}w为{round(theta[0][0], 5)}b为{round(theta[1][0], 5)})if loss 0.001:breakreturn ws, bsdef learning_rate_shedule(t):return t0 / (t t1)if __name__ __main__:xdata np.array([8, 3, 9, 7, 16, 5, 3, 10, 4, 6])ydata np.array([30, 21, 35, 27, 42, 24, 10, 38, 22, 25])x_data np.array(xdata).reshape(-1, 1)y_data np.array(ydata).reshape(-1, 1)X np.concatenate([x_data, np.full_like(x_data, fill_value1)], axis1)theta np.random.randn(2, 1)t0 1.5t1 1000ws, bs gradient_descent(X, y_data, theta, learning_rate_shedule(0), 10000)ax plt.subplot(3, 2, 1)bx plt.subplot(3, 2, 2)cx plt.subplot(3, 1, (2, 3))# 散点预测线ax.scatter(x_data, y_data)x np.linspace(x_data.min() - 1, x_data.max() 1, 100)y ws[-1] * x bs[-1]ax.plot(x, y, colorred)ax.set_xlabel(x)ax.set_ylabel(y)#w,b变化x np.arange(1, len(ws) 1)bx.plot(x, ws, labelw)bx.plot(x, bs, labelb)bx.set_xlabel(epoch)bx.set_ylabel(change)bx.legend()#等高线def get_loss(w, b):return 0.5 * np.mean((y_data - (w * x_data b)) ** 2)b_range np.linspace(-100, 100, 100)w_range np.linspace(-10, 10, 100)losses np.zeros((len(b_range), len(w_range)))for i in range(len(b_range)):for j in range (len(w_range)):losses[i, j] get_loss(w_range[j], b_range[i])cx.contour(b_range, w_range, losses, cmapsummer)cx.contourf(b_range, w_range, losses)cx.set_xlabel(b)cx.set_ylabel(w)plt.show()