深度学习的课程笔记,参考李宏毅机器学习课程
回归是通过输入特征向量来找到函数并输出数值标量。
例如,深度学习应用于自动驾驶领域。我们在无人车上输入每个传感器的数据,例如路况、测量的车辆距离等,并结合回归模型输出方向盘角度。
step1:模型假设,选择模型框架
step2:模型评估,判断众多模型的好坏
step3:模型优化,筛选最优的模型
1、一元线性模型(单个特征)
以一个特征值x为例,线性模型假设 y=a+b⋅x ,一元线性函数形式,对于不同的a,b值可以得到很多不同的模型
2、多元线性模型(多个特征)
多个特征值xi,y=b+∑wi·xi,多元线性函数形式,不同的特征值xi对应不同的权重wi
以单个特征值线性模型为例
收集和查看训练数据
真实数据可视化后结果
判断模型优劣性质
传统及经济学回归中,通常通过拟合优度检验,R^2等检验方法对回归的优劣性进行评价判断,在机器学习中,通常通过定义损失函数进行模型的好坏判断,如统计10组原始数据 (y^n−f(xcp^n))^2 的和,其和越小回归模型预测效果越好。
数学公式推导:
L(f)=∑(y^n−f(xcp^n))^2,将【f(x)=y】,【y=b+w⋅xcp】代入有
L(f)=∑(y^n−(b+w⋅xcp^n))^2
最终定义 损失函数 Loss function:L(w,b)=∑(y^n−(b+w⋅xcp^n))^2
以单个特征值一元线性回归模型为例
已知损失函数是 L(w,b)=∑(y^n−(b+w⋅xcp))^2 ,需要找到一个令结果最小的 f∗,实际应用中参数会更多更为复杂。
仅考虑单个参数的情况:
引入学习率概念:移动的步长,如上图中 η
本质上是一种通过迭代的思想进行最小值的求解方法。但通过这种算法,可能会找到当前最小值,但并未全局最小值。
从多参数角度:即数学推导中的偏微分求解过程:
梯度下降算法面临的挑战:
对于简单一元回归模型,求解模型的平均误差值作为模型评价体系的衡量指标
过拟合问题:
每一个模型结果都是一个集合,5次模型包⊇4次模型⊇3次模型,所以在4次模型里面找到的最佳模型,肯定不会比5次模型里面找到更差,高次模型的解释力强于低次模型,包含低次模型,即高次模型为最高次幂系数取零的低次项系数。
将错误率结果图形化展示,发现3次方以上的模型,已经出现了过拟合的现象:
更多特征,更多input,数据量没有明显增加,仍旧存在过拟合现象发生
引入更多特征后,权重 w可能会使某些特征权值过高,仍旧导致过拟合,因此加入正则化
# linear regression
#b = -120
#w = -4
b=-2
w=0.01
lr = 0.000005
iteration = 1400000
b_history = [b]
w_history = [w]
loss_history = []
import time
start = time.time()
for i in range(iteration):
m = float(len(x_d))
y_hat = w * x_d +b
loss = np.dot(y_d - y_hat, y_d - y_hat) / m
grad_b = -2.0 * np.sum(y_d - y_hat) / m
grad_w = -2.0 * np.dot(y_d - y_hat, x_d) / m
# update param
b -= lr * grad_b
w -= lr * grad_w
b_history.append(b)
w_history.append(w)
loss_history.append(loss)
if i % 10000 == 0:
print("Step %i, w: %0.4f, b: %.4f, Loss: %.4f" % (i, w, b, loss))
回归分析是指一种预测性的建模技术,主要是研究自变量和因变量的关系。通常使用线/曲线来拟合数据点,然后研究如何使曲线到数据点的距离差异最小。
令损失函数最小来确定参数是模型建立过程中最关键的一步,可以通过多种方式进行损失函数的最小化求解。
本文中涉及到的梯度下降法是常用且通用的,包括更为复杂的逻辑回归算法中也可以使用,但是对于较小的数据量来说它的速度并没有优势。
正规方程的速度往往更快,但是当数量级达到一定的时候,还是梯度下降法更快,因为正规方程中需要对矩阵求逆,而求逆的时间复杂的是n的3次方。
最小二乘法一般比较少用,虽然它的思想比较简单,在计算过程中需要对损失函数求导并令其为0,从而解出系数。但是对于计算机来说很难实现,所以一般不使用最小二乘法。
在本章节中提到的多种方式仅涉及理想化的线性回归模型,对于更为常见的非线性及多元模型需要更加深入的理论研究与讨论。