coursera《机器学习》吴恩达-week1-03 梯度下降算法

来源:互联网 发布:希捷数据恢复要多少钱 编辑:程序博客网 时间:2024/06/05 13:35

梯度下降算法

  • 最小化代价函数J
  • 梯度下降
    • 使用全机学习最小化
  • 首先查看一般的J()函数
  • 问题
    • 我们有J(θ0, θ1)
    • 我们想获得 min J(θ0, θ1)
  • 梯度下降适用于更一般的功能
    • J(θ0, θ1, θ2 …. θn)
    • min J(θ0, θ1, θ2 …. θn)

这一算法如何工作?:

  • 从初始假定开始
    • 从0,0开始(或任何其他值)
    • 保持一点点的改变θ0和θ1,来试图减少
  • 每次更改参数时,可以选择这降低了梯度J(θ0, θ1)的最可能的
  • 重复
  • 这样做直到你收敛到局部的最低点
  • 有一个有趣的性质
    • 你开始的位置可以确定你最终的最低点
      这里写图片描述
    • 这里我们可以看到一个初始化点产生一个局部最小值
    • 另一个初始化点产生了另一个局部最小值

更正式的定义

  • 重复以下步骤直到收敛
    这里写图片描述
  • 这是什么意思?
    • 通过将θj设置为θj减去α倍的局部成本函数对于θj的导数
  • 符号
    • :=
      • 表示赋值
      • NB a = b是 真实断言
  • α (alpha)
    • 是一个叫做学习速率的数字
    • 控制你采取的更新速度有多大
      • 如果α大,则具有较大的下降幅度
      • 如果α小,则幅度较小
  • 导数
    这里写图片描述
    - 之后详细解释
  • 一个巧妙的实现梯度下降算法的实现
    • 如下处理θ0和θ1
    • For j = 0 and j = 1 意味着同时更新θ0和θ1的值
  • 如何实现?
    • 为θ0和θ1计算等式右手侧
      • 所以我们需要一个临时值
    • 然后,更新θ0和θ1的同时
      • 我们以图形方式显示
        这里写图片描述
  • 如果您实现非同步更新,则不是梯度下降,并且会出现异常
    • 但它可能看起来是对的 - 所以重要的是要记住这一点!
  • 了解算法
    • 要了解梯度下降,我们将返回一个更简单的函数,我们最小化一个参数来帮助更详细地解释算法
  • 当θ1是一个实数时 ,min θ1 J(θ1)
  • 算法中的两个关键术语
    • α(alpha)
  • 细微差别
    - 偏导与导数
    - 当我们有多个变量但是只相对于一个变量导出时,使用偏导数
    - 当我们相对于所有变量导出时,使用导数
  • 微分项
    这里写图片描述
    • 导数说明
    • 在这一点做切线并观察切线斜率
    • 所以向下移动会生成一个负导数,α总是正的。因此更新j(θ1) 到一个更小的值。
    • 类似的,向上移动会使得j(θ1) 更大
  • alpha(α)
    • 如果alpha太小或太大,会发生什么
      • 太小
        • 步进太小
        • 太耗时了
      • 太大了
      • 可能错过最小值,最终不能收敛
  • 当你获得一个局部最小值
    • 此处切线斜率\导数为0
    • 因此微分项也为0
    • alpha*0=0
    • 则θ1=θ1-0
    • θ1将保持不变
  • 当您接近全局最小值时,导数项变小,所以即使alpha固定,您的更新也会变小
    • 随着算法的运行,当您接近最小值时,您将采取较小的步骤
    • 所以不需要随着时间的推移来改变alpha

梯度下降的线性回归

  • 应用梯度下降来最小化平方差代价函数J(θ0, θ1)
  • 现在我们有一个偏导数
    这里写图片描述
  • 现在我们展开第一对表达式、
    • J(θ0, θ1) = 1/2m….
    • hθ(x) = θ0 + θ1*x
  • 当我们需要决定每个参数的导数时:
    • When j = 0
    • When j = 1
  • 标识出针对于θ0和θ1的偏导数
    • 当我们根据j = 0和j = 1对这个表达式求导时,我们得到以下结果
      这里写图片描述
  • 要检查这个,你需要知道多元微积分
    • 所以我们可以将这些值重新插入梯度下降算法
  • 它是如何工作的
    • 遇到不同的局部最优的风险
    • 线性回归代价函数总是一个凸函数 - 总是有一个最小值
      • 碗型曲面
      • 一个全局最优
        • 因此梯度下降总会收敛到全局最优
          • 实践中
      • 初始化:
        • θ0 = 900
        • θ1 = -0.1

这里写图片描述

  • 最终达到全局最低点
    • 这实际上是批量梯度下降
    • 指的是在每个步骤中,您可以查看所有的培训数据
      • 每个步骤计算m个训练样例
    • 有时,非批次版本存在,它们查看小数据子集
      • 我们将在课程的后面研究其他形式的梯度下降(当m太大时使用)
  • 存在用于找到最小函数的解的数值解
    • 正则方程 法
    • 渐变下降可以更好地扩展到大型数据集
    • 用于大量的语境和机器学习

下一步 - 重要的扩展

两个算法的扩展

  1. 数值解的正则方程

  • 为了解决[min J(θ0,θ1)]这个最小化问题,我们使用精确地数值方法而不是不断迭代梯度下降的方法
  • 正则方程法
  • 有优缺点
    • 优点
      • 不再是Alpha术语
      • 对于一些问题可以快一些
    • 坏处
      • 更复杂

  1. 我们可以学习更多的功能

我们可以学习更多的函数

  • 所以可能有其他参数有助于价格
    • 例如与房屋
      • 尺寸
      • 年龄
      • 卧室数字
      • 楼层数
    • x1,x2,x3,x4
  • 有多个功能变得很难绘制
    • 不能真正绘制在三维以上
    • 符号也变得更加复杂
      • 绕过这个最好的方法是线性代数的符号
      • 提供符号和一系列可以使用矩阵和向量的事物
      • 例如矩阵
        这里写图片描述
        这里写图片描述
  • 我们在这里看到这个矩阵显示了我们
    • 尺寸
    • 卧室数量
    • 楼层数
    • 家庭年龄
  • 所有数据都在一个变量中
    • 数字块,将所有数据组织成一个大块
  • 向量
    • 显示为y
    • 向我们显示价格
  • 需要线性代数来获得更复杂的线性回归模型
  • 线性代数对于制作计算效率高的模型是有好处的(如后所述)
    • 提供使用大量数据集的好方法
    • 通常,问题的向量化是常见的优化技术
原创粉丝点击