Machine learning 线性回归中如何在不改变学习率的情况下加快学习速度

Machine learning 线性回归中如何在不改变学习率的情况下加快学习速度,machine-learning,Machine Learning,每当我建立一个线性回归模型时,它总是发散。我真的找不到任何解决办法。但当我把学习率改为0.000025时,它成功了!但另一个问题是,它的学习速度太慢,以至于我不得不等待模型学习超过10分钟 如何在不改变学习速度的情况下加快学习速度 第一个问题是:为什么要使用SGD(我在这里假设)。线性回归有更专业的学习程序,部分不需要那种超参数调整。也许你在一个非常大规模的环境中,SGD是一个有效的方法 假设以SGD为基础的学习是一条可行之路: 你应该使用某种学习计划 至少添加一个学习速率衰减,例如在每个历

每当我建立一个线性回归模型时,它总是发散。我真的找不到任何解决办法。但当我把学习率改为0.000025时,它成功了!但另一个问题是,它的学习速度太慢,以至于我不得不等待模型学习超过10分钟


如何在不改变学习速度的情况下加快学习速度

第一个问题是:为什么要使用SGD(我在这里假设)。线性回归有更专业的学习程序,部分不需要那种超参数调整。也许你在一个非常大规模的环境中,SGD是一个有效的方法

假设以SGD为基础的学习是一条可行之路:

  • 你应该使用某种学习计划
    • 至少添加一个学习速率衰减,例如在每个历元之后,它会将学习速率降低一个类似于0.9的因子(是的,再增加一个超参数)
    • 尝试使用某种动量,例如Nesterov动量,它是为凸优化(您的案例是凸的)而开发的,并具有强大的保证
      • 这种动量甚至在非凸环境中也很流行
      • 大多数深度学习LIB都应该提供这种开箱即用的功能
  • 您可以尝试基于自适应学习速率的算法,如:
    • 亚当,阿达德尔塔,阿达格拉德
    • 这些方法试图消除选择这些LR超参数的负担,同时仍试图尽快收敛
      • 当然,它们是启发式的(严格来说),但它们似乎对大多数人都很有效(尽管优化的SGD在大多数情况下是最好的)
      • 大多数深度学习LIB都应该提供这种开箱即用的功能
  • 对线性模型等使用专用软件

还有一件事,因为我很惊讶在这个简单的问题上很容易观察到分歧:规范化你的输入

第一个问题是:为什么要使用SGD(我在这里假设)。线性回归有更专业的学习程序,部分不需要那种超参数调整。也许你在一个非常大规模的环境中,SGD是一个有效的方法

假设以SGD为基础的学习是一条可行之路:

  • 你应该使用某种学习计划
    • 至少添加一个学习速率衰减,例如在每个历元之后,它会将学习速率降低一个类似于0.9的因子(是的,再增加一个超参数)
    • 尝试使用某种动量,例如Nesterov动量,它是为凸优化(您的案例是凸的)而开发的,并具有强大的保证
      • 这种动量甚至在非凸环境中也很流行
      • 大多数深度学习LIB都应该提供这种开箱即用的功能
  • 您可以尝试基于自适应学习速率的算法,如:
    • 亚当,阿达德尔塔,阿达格拉德
    • 这些方法试图消除选择这些LR超参数的负担,同时仍试图尽快收敛
      • 当然,它们是启发式的(严格来说),但它们似乎对大多数人都很有效(尽管优化的SGD在大多数情况下是最好的)
      • 大多数深度学习LIB都应该提供这种开箱即用的功能
  • 对线性模型等使用专用软件
还有一件事,因为我很惊讶在这个简单的问题上很容易观察到分歧:规范化你的输入