Parameters vs Hyperparameters
Last updated
Was this helpful?
Last updated
Was this helpful?
想要让你的深度神经网络 运作得更为高效 你不仅要好好设置参数 更需要用心配置超参数 让我们来看一下什么是超参数 在神经网络模型中 我们常见的参数是W和b 而在整个学习算法模型中 还有另一些参数 比如学习率α 和梯度下降 算法中的迭代次数 决定了你神经网络模型中的参数 会如何变化 你还需要为学习算法设定其他超参数 你还需要为学习算法设定其他超参数 比如隐藏层的层数 即L 还有隐藏神经元的个数 比如n[1] n[2]等等 还有激活函数的选择 还有激活函数的选择 在隐藏层中可以使用ReLu或tanh或sigmoid 或其他激活函数 这些参数都是你需要在学习算法中设定的 这些参数都是你需要在学习算法中设定的 这些参数都是你需要在学习算法中设定的 它们会影响到参数W和b的最终结果 它们会影响到参数W和b的最终结果 我们称之为超参数 因为像学习率α 迭代次数 因为像学习率α 迭代次数 还有隐藏层的层数等等 都会影响W和b 所以我们称之为超参数 因为超参数在某种程度上 决定了W和b的最终结果 决定了W和b的最终结果 实际上深度学习中有许多不同的超参数 实际上深度学习中有许多不同的超参数 在后面的课程中 我们会学习其他超参数 比如动量 最小批大小
以及各种形式的正则化参数等等 如果这些术语你都不理解 如果这些术语你都不理解 别担心 我们会在第二课中学习这些知识 跟之前几代的机器学习算法相比 深度学习算法多了不少超参数 以后我都会把学习率α称为超参数 以后我都会把学习率α称为超参数 以后我都会把学习率α称为超参数 而不是参数 在之前的机器学习时代中 我们没有这么多的超参数 很多人就常常偷懒把α称为参数 很多人就常常偷懒把α称为参数 其实α的确是个参数 只是它是一个可以决定真正参数的参数 所以为了在学习的过程中将概念梳理得更为清晰 我们会将类似α和迭代次数的这类参数 统称为超参数 当你在训练深度神经网络的时候 你会发现在超参数取值的问题上 会有很多不同的选择 而你需要尝试许多可能的值 所以在深度学习算法中的超参数如何取值 是一个以实验为依据的过程 你可能经常会有些直觉 比如 当你在设定学习率的时候 你可能会说 我认为α应该设为0.01 然后你实际操作了一下 并且得到了最终结果 但是基于结果 你可能会说 我觉得把学习率增加到0.05 会比较好 所以如果你不确定 学习率的最优值应该是多少 你可以先随意尝试一个学习率α 如果发现代价函数J像这样下降 你可能会尝试一个更大的值 你可能会尝试一个更大的值 却发现代价函数增长并且发散了 你可能会再换一个值 发现它迅速下降 但却收敛于一个较高的值 你就会再试一个值 发现代价函数J如图所示 基于你所尝试的取值集合 你可能会说 最后这个α的取值 让学习效率变得很高 并且使代价函数J收敛于一个较低的值 所以我决定就用这个值来作为学习率 所以我决定就用这个值来作为学习率 在之前的幻灯片中可以看到 有许多不同的超参数 并且当你创建新模型的时候 并且当你创建新模型的时候 很难提前知道超参数的最优取值是多少 很难提前知道超参数的最优取值是多少 所以通常我们会这么做 首先尝试许多不同的取值 就像图中的模型这样 尝试不同的参数配置 比如5个隐藏层 数个隐藏单元 构建模型并运行 看看效果如何 然后循环往复直到找到最优值 这个幻灯片的标题是 应用深度学习是一个基于实验的过程 基于实验的过程就是 不断尝试然后找到最优值的高端说法 另一个我观察到的现象是 如今深度学习被应用于众多领域 如今深度学习被应用于众多领域 从计算机视觉到语音识别 到自然语言处理 到许多结构化数据应用 比如在线广告或者网页搜索 或者产品推荐等等 我观察到的情形有以下几种 第一种 某一个领域的研究者 尝试去拓展另一个领域 有时候可以完美继承对超参数配置的直觉 而有时候却得到大相径庭的结果 所以我建议大家 多尝试几次 取不同的值 看看结果是不是尽如人意 尤其是在开始新项目的时候 下节课 我们会学习一些 系统性方法 来看看怎样才能取到最优值 第二种情形是 就算你已经在某个领域上 已经工作了很久很久 比如 你在研究在线广告 随着你的研究不断深入 很有可能学习率 和隐藏单元的个数等超参数的最优值 会发生改变 尽管已经把模型的参数都 设置成当前的最优值 有可能一年后你会发现 这些竟然不是最优值了 可能是因为计算机基础结构 比如CPU GPU的类型 或者其他一些构架发生了很大改变 所以这里我分享一个经验之谈 如果你研究的问题会持续比较久 例如很多年 你可以不时地 比如每隔几个月 尝试一些不同的超参数取值 来确认这些超参数 是否存在更为合适的取值 相信经过不断尝试并且 累积一些经验之后 你也会慢慢养成关于 最优超参数取值的直觉 说到这里 我也明白 去逐个尝试超参数的取值 听起来可能是深度学习中 不那么令人愉快的部分 但这是因为深度学习的研究 依然处于初级阶段 或许不久后对于 超参数的最优值选取 会出现更好的方法 但也有可能因为CPU GPU 网络和数据库 一直在不断变化 这些方法在一段时间内不会趋于一致 你还是需要不断地尝试 对超参数不同的取值 在预留的交叉验证集 或其他集合上进行评估 然后选取最优解 这就是本期视频教程中 关于超参数的简短讨论 在第二课中 我们会就 如何系统地探索超参数空间提供一些建议 但是学习完本视频后 其实你已经具备了所有 完成编程作业需要的工具和方法 在下个视频中 就一个提问频率比较高的问题 深度学习和人类大脑有什么关系 我还会分享一些观点 翻译 | 审阅:Cousera Global Translator Community