* 应该堆叠多少层?
* 每层应该包含多少个单元或过滤器?
* 激活应该使用`relu`还是其他函数?
* 在某一层之后是否应该使用`BatchNormalization`?
* 应该使用多大的 dropout 比率?
在架构层面的参数叫作**超参数**(hyperparameter),以便将其与模型参数区分开来,后者通过反向传播进行训练。
* [ ] 选择一组超参数(自动选择)。
* [ ] 构建相应的模型。
* [ ] 将模型在训练数据上拟合,并衡量其在验证数据上的最终性能。
* [ ] 选择要尝试的下一组超参数(自动选择)。
* [ ] 重复上述过程。
* [ ] 衡量模型在测试数据上的性能。
> 贝叶斯优化、遗传算法、简单随机搜索
>
更新超参数则非常具有挑战性。我们来考虑以下两点:
* 计算反馈信号(这组超参数在这个任务上是否得到了一个高性能的模型)的**计算代价**可能非常高,它需要在数据集上创建一个新模型并从头开始训练。
* 超参数空间通常由许多**离散**的决定组成,因而既不是连续的,也不是可微的。因此,你通常不能在超参数空间中做梯度下降。相反,你必须依赖不使用梯度的优化方法,而这些方法的效率比梯度下降要低很多。
**随机搜索**(随机选择需要评估的超参数,并重复这一过程)就是最好的解决方案,虽然这也是最简单的解决方案
**Hyperopt** 比随机搜索更好,是一个用于超参数优化的 Python 库,其内部使用 Parzen 估计器的树来预测哪组超参数可能会得到好的结果
*****
**注意**:
**在进行大规模超参数自动优化时**,有一个重要的问题需要牢记,那就是**验证集过拟合**。因为你是使用验证数据计算出一个信号,然后根据这个信号更新超参数,所以你实际上是在**验证数据上训练超参数**,很快会**对验证数据过拟合**。请始终记住这一点。
- 基础
- 张量tensor
- 整数序列(列表)=>张量
- 张量运算
- 张量运算的几何解释
- 层:深度学习的基础组件
- 模型:层构成的网络
- 训练循环 (training loop)
- 数据类型与层类型、keras
- Keras
- Keras 开发
- Keras使用本地数据
- fit、predict、evaluate
- K 折 交叉验证
- 二分类问题-基于梯度的优化-训练
- relu运算
- Dens
- 损失函数与优化器:配置学习过程的关键
- 损失-二分类问题
- 优化器
- 过拟合 (overfit)
- 改进
- 小结
- 多分类问题
- 回归问题
- 章节小结
- 机械学习
- 训练集、验证集和测试集
- 三种经典的评估方法
- 模型评估
- 如何准备输入数据和目标?
- 过拟合与欠拟合
- 减小网络大小
- 添加权重正则化
- 添加 dropout 正则化
- 通用工作流程
- 计算机视觉
- 卷积神经网络
- 卷积运算
- 卷积的工作原理
- 训练一个卷积神经网络
- 使用预训练的卷积神经网络
- VGG16
- VGG16详细结构
- 为什么不微调整个卷积基?
- 卷积神经网络的可视化
- 中间输出(中间激活)
- 过滤器
- 热力图
- 文本和序列
- 处理文本数据
- n-gram
- one-hot 编码 (one-hot encoding)
- 标记嵌入 (token embedding)
- 利用 Embedding 层学习词嵌入
- 使用预训练的词嵌入
- 循环神经网络
- 循环神经网络的高级用法
- 温度预测问题
- code
- 用卷积神经网络处理序列
- GRU 层
- LSTM层
- 多输入模型
- 回调函数
- ModelCheckpoint 与 EarlyStopping
- ReduceLROnPlateau
- 自定义回调函数
- TensorBoard_TensorFlow 的可视化框架
- 高级架构模式
- 残差连接
- 批标准化
- 批再标准化
- 深度可分离卷积
- 超参数优化
- 模型集成
- LSTM
- DeepDream
- 神经风格迁移
- 变分自编码器
- 生成式对抗网络
- 术语表