文章目录
- 1. 什么是机器学习?
- 2. 监督学习
- 3. 无监督学习
- 4. 线性回归模型
- 5. 代价函数(平方误差函数)
-
- (1)单参图像直观展示
- (2)双参图像直观展示
- 6. 梯度下降算法
-
- (1)单参
- (2)双参(梯度下降完整公式)
1. 什么是机器学习?
- 亚瑟·塞缪尔将其描述为:“这一研究领域赋予计算机无需明确编程就能学习的能力。”这是一个古老的非正式定义。
- 汤姆·米切尔提供了一个更现代的定义:“一个计算机程序被认为从经验E中学习关于某些类别的任务T和性能测量P,如果它在任务T中的表现,由P测量,随着经验E的提高。”
- 一般来说,任何机器学习都可以分为:监督学习和无监督学习。
2. 监督学习
- 在有监督学习中,我们得到一个数据集,并且已经知道我们正确的输出应该是什么样子,因为我们知道输入和输出之间是有关系的。
监督学习问题分为“回归”问题和“分类”问题:
- 在一个回归问题中,我们试图预测一个连续输出的结果,这意味着我们试图将输入变量映射到一个连续函数。
例:给定一间房子的面积,我们根据面积来预测售出的价格。- 在一个分类问题中,我们试图预测一个离散输出的结果。换句话说,我们试着把输入变量映射成离散变量。
例:对于患有肿瘤的病人,我们预测肿瘤是恶性还是良性。
3. 无监督学习
- 无监督学习:无监督学习允许我们处理问题时很少或根本不知道我们的结果应该是什么样子。我们可以从不需要知道变量影响的数据中推导出结构,我们可以根据数据中变量之间的关系对数据进行聚类,从而得出这种结构。
- 在无监督学习中,没有基于预测结果的反馈。
- 聚类:将100万个不同的基因集合起来,然后找到一种方法将这些基因自动分组,使其在某种程度上具有相似性或与不同的变量相关。比如寿命,位置,角色等等。
- 非集群:“鸡尾酒会算法”,可以让你在混乱的环境中找到结构。(从鸡尾酒会上的各种声音中识别出不同的声音和音乐)。
4. 线性回归模型
- x ( i ) x^{(i)} x(i) 表示输入变量;
- y ( i ) y^{(i)} y(i) 表示“输出”或我们试图预测的目标变量;
- 一对 ( x ( i ) , y ( i ) ) (x^{(i)},y^{(i)}) (x(i),y(i)) 表示一个训练样本;
- m m m 表示训练样本的数目;
- i i i 表示样本索引, i = 1 , . . . , m i=1,...,m i=1,...,m 表示一个训练集。
x ( 1 ) = 2104 , y ( 1 ) = 460 x^{(1)}=2104,y^{(1)}=460 x(1)=2104,y(1)=460;
x ( 2 ) = 1416 , y ( 2 ) = 232 x^{(2)}=1416,y^{(2)}=232 x(2)=1416,y(2)=232;
- h h h 表示一个函数,代表hypothesis(假设函数);
- 假设函数: h θ ( x i ) = θ 0 + θ 1 x i h_\theta(x_i)=\theta_0+\theta_1x_i hθ?(xi?)=θ0?+θ1?xi?;
- 给定一个训练集,学习一个函数 h : X → Y h: X→Y h:X→Y,这样 h ( X ) h(X) h(X) 就能“很好地”预测Y的相应值;
- 输入是房屋尺寸大小, h h h 根据输入的 x x x 值来得出 y y y 值, y y y 值对应房子的价格, h h h 是一个从 x x x 到 y y y 的函数映射。
5. 代价函数(平方误差函数)
- 代价函数也称作 平方误差函数 或 平方误差代价函数。
- 我们可以用代价函数来衡量假设函数的准确性。它取所有假设结果的平均差值(实际上是平均值的一个奇特版本)。
J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( y ^ i ? y i ) 2 = 1 2 m ∑ i = 1 m ( h θ ( x i ) ? y i ) 2 J(\theta_0,\theta_1) = \frac{1}{2m} \sum_{i=1}^m (\hat{y}_i-y_i)^2= \frac{1}{2m} \sum_{i=1}^m (h_\theta(x_i)-y_i)^2 J(θ0?,θ1?)=2m1?i=1∑m?(y^?i??yi?)2=2m1?i=1∑m?(hθ?(xi?)?yi?)2 - 我们的目标是得到尽可能好的线路(线路由 θ 0 \theta_0 θ0? 和 θ 1 \theta_1 θ1? 决定,而要找到 J ( θ 0 , θ 1 ) J(\theta_0,\theta_1) J(θ0?,θ1?) 的小值就需要用到梯度下降)。最好的直线是:分散的点到这条直线的平均垂直距离的平方是最小的。理想情况下,直线应该通过训练数据集的所有点。在这种情况下, J ( θ 0 , θ 1 ) = 0 J(\theta_0,\theta_1)=0 J(θ0?,θ1?)=0。
(1)单参图像直观展示
- 下图是一个理想的情况,直线通过了数据集所有点,当 θ 0 = 0 , θ 1 = 1 \theta_0=0,\theta_1=1 θ0?=0,θ1?=1 时,代价函数为0。
当 θ 1 = 1 \theta_1=1 θ1?=1 时,我们得到斜率为1,它经过模型中的每一个数据点。
当 θ 1 = 0.5 \theta_1 = 0.5 θ1?=0.5 时,我们看到拟合到数据点的垂直距离增加了。
绘制其他几个成本函数值的结果,如下图所示,当 θ 1 = 1 \theta_1=1 θ1?=1时, J ( θ 1 ) J(\theta_1) J(θ1?) 值最小。
(2)双参图像直观展示
当只有一个参数 θ 1 \theta_1 θ1? 时,我们画出来是一个弓形函数;而我们有了两个参数,那么代价函数 仍然呈现类似的某种弓形,会得到一个三维曲面图。
两个轴分别表示 θ 0 \theta_0 θ0? 和 θ 1 \theta_1 θ1?,随着改变 θ 0 \theta_0 θ0? 和 θ 1 \theta_1 θ1? 的大小,便会得到不同的代价函数 J ( θ 0 , θ 1 ) J(\theta_0 , \theta_1) J(θ0?,θ1?) 对于某个特定的点 ( θ 0 , θ 1 ) (\theta_0 , \theta_1) (θ0?,θ1?) 这个曲面的高度。也就是竖直方向的高度,就表示代价函数 J ( θ 0 , θ 1 ) J(\theta_0 , \theta_1) J(θ0?,θ1?) 的值
- 等高线图是包含许多等高线的图。双变量函数的等高线在同一直线上的所有点上都有一个常数值。这类图的一个例子是下面右边的图。
- 沿着“圆”走,我们会期望得到相同的代价函数值。例如,绿线上的三个绿点对 J ( θ 0 , θ 1 ) J(\theta_0 , \theta_1) J(θ0?,θ1?) 有相同的值,因此,它们被发现在同一条线上。
- 当 θ 0 = 360 , θ 1 = 0 \theta_0=360,\theta_1=0 θ0?=360,θ1?=0 时, J ( θ 0 , θ 1 ) J(\theta_0 , \theta_1) J(θ0?,θ1?) 的值更接近中心,从而减小了代价函数的误差。现在让我们的假设函数的斜率稍微为正可以更好地拟合数据。
- 下图尽可能地使代价函数最小化,因此, θ 0 \theta_0 θ0? 的结果和 θ 1 \theta_1 θ1? 分别在 250 和 0.12 左右。在图中,将这些值画在右边,似乎将我们的点放在最内侧的“圆”的中心。
6. 梯度下降算法
- 梯度下降的作用:我们有了假设函数和衡量它与数据的吻合程度的平方误差函数。现在我们需要用梯度下降来估计假设函数中的参数 θ 1 , θ 2 \theta_1,\theta_2 θ1?,θ2?。
- 梯度下降的工作方式:先将 θ 1 , θ 2 \theta_1,\theta_2 θ1?,θ2? 初始化为 θ 1 = 0 , θ 2 = 0 \theta_1=0,\theta_2=0 θ1?=0,θ2?=0, 再通过梯度下降算法不断改变 θ 1 , θ 2 \theta_1,\theta_2 θ1?,θ2? 以减少平方误差函数值,直到 J ( θ 1 , θ 2 ) J(\theta_1,\theta_2) J(θ1?,θ2?) 达到我们希望的最低限度。
- 梯度下降算法:
重 复 直 到 收 敛 : { 重复直到收敛:\lbrace 重复直到收敛:{
θ j : = θ j ? α ? ? θ j J ( θ 0 , θ 1 ) \theta_j:=\theta_j-\alpha\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1) θj?:=θj??α?θj???J(θ0?,θ1?)
} \rbrace }
: = := := 代表赋值,右项赋值给左项。
j j j:表示特征索引号。
α \alpha α:称为学习率,参数α决定每一步的大小。更小的α会导致更小的步长,更大的α会导致更大的步长。步进的方向由 J ( θ 1 , θ 2 ) J(\theta_1,\theta_2) J(θ1?,θ2?) 的偏导数决定。
我们把 θ 1 \theta_1 θ1? 放在x轴上, θ 2 \theta_2 θ2? 放在y轴上,代价函数在垂直z轴上。图上的点是使用我们的假设和特定参数的代价函数的结果。
我们的方法是对代价函数求导(一个函数的切线)。切线的斜率就是这一点的导数,它会给我们一个移动的方向。我们让代价函数沿着下降速度最快的方向逐步下降。
不同的的起始点,可能会在不同的点结束。上面的图像显示了两个不同的起点,在两个不同的地方结束。
- 在每次迭代j时,应该同时更新参数 θ 1 , θ 2 , . . . , θ n \theta_1,\theta_2,...,\theta_n θ1?,θ2?,...,θn? 。
(1)单参
- 对于只有一个参数的梯度下降算法,公式表示为:
重 复 直 到 收 敛 : { 重复直到收敛:\lbrace 重复直到收敛:{
θ j : = θ j ? α ? ? θ j J ( θ 1 ) \theta_j:=\theta_j-\alpha\frac{\partial}{\partial\theta_j}J(\theta_1) θj?:=θj??α?θj???J(θ1?)
} \rbrace }
- 当斜率为负时, θ 1 \theta_1 θ1? 的值增加;当斜率为正时, θ 1 \theta_1 θ1? 的值减小。
- 我们应该调整我们的参数 α \alpha α,以确保梯度下降算法在合理的时间收敛。不能收敛或花太多时间来获得最小值意味着我们的步长是错误的。
图一:如果 α \alpha α 太小,梯度下降可以很慢。
图二:如果 α \alpha α 太大,梯度下降可能超过最小值。它可能不收敛,甚至发散。
- 平方误差函数在接近凸函数的底部时 d d θ 1 J ( θ 1 ) \frac{d}{d\theta_1} J(\theta_1) dθ1?d?J(θ1?) 趋于0。在最小值时,导数始终为0,得到: θ 1 : = θ 1 ? α ? 0 \theta_1:=\theta_1-\alpha*0 θ1?:=θ1??α?0 。
- 当我们接近一个局部最小值时,梯度下降将自动采取小的步长,所以不需要随时间减少 α \alpha α 。
(2)双参(梯度下降完整公式)
- 当具体应用于线性回归的情况下,可以导出一个新的形式的梯度下降方程。我们可以代入我们的实际成本函数和我们的实际假设函数,并将方程修改为:
重 复 直 到 收 敛 : { 重复直到收敛:\lbrace 重复直到收敛:{
θ j : = θ j ? α ? ? θ j J ( θ 0 , θ 1 ) \theta_j:=\theta_j-\alpha\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1) θj?:=θj??α?θj???J(θ0?,θ1?)
= θ j ? α ? ? θ j 1 2 m ∑ i = 1 m ( h θ ( x i ) ? y i ) 2 =\theta_j-\alpha\frac{\partial}{\partial\theta_j}\frac{1}{2m}\sum_{i=1}^m (h_\theta(x_i)-y_i)^2 =θj??α?θj???2m1?∑i=1m?(hθ?(xi?)?yi?)2
= θ j ? α ? ? θ j 1 2 m ∑ i = 1 m ( θ 0 + θ 1 x ( i ) ? y i ) 2 =\theta_j-\alpha\frac{\partial}{\partial\theta_j}\frac{1}{2m}\sum_{i=1}^m (\theta_0+\theta_1x^{(i)}-y_i)^2 =θj??α?θj???2m1?∑i=1m?(θ0?+θ1?x(i)?yi?)2
} \rbrace }
? 微 分 \Downarrow微分 ?微分
重 复 直 到 收 敛 : { 重复直到收敛:\lbrace 重复直到收敛:{
θ 0 : = θ 0 ? α 1 m ∑ i = 1 m ( h 0 ( x ( i ) ) ? y ( i ) ) \theta_0:=\theta_0-\alpha\frac{1}{m} \sum_{i=1}^m(h_0(x^{(i)})-y^{(i)}) θ0?:=θ0??αm1?∑i=1m?(h0?(x(i))?y(i))
θ 1 : = θ 1 ? α 1 m ∑ i = 1 m ( h 0 ( x ( i ) ) ? y ( i ) ) × x i \theta_1:=\theta_1-\alpha\frac{1}{m} \sum_{i=1}^m(h_0(x^{(i)})-y^{(i)})\times x_i θ1?:=θ1??αm1?∑i=1m?(h0?(x(i))?y(i))×xi?
} \rbrace }
- 如果我们从假设的猜测 ( θ 0 , θ 1 ) (\theta_0,\theta_1) (θ0?,θ1?)开始,然后反复应用梯度下降方程,我们的假设会变得越来越准确。
- 这种方法在整个训练集的每一步都考虑每一个例子,称为批量梯度下降。