当前位置:   article > 正文

如何完成一个深度学习的模型_怎么实现自己的深度学习模型

怎么实现自己的深度学习模型

突发奇想,想把模型中要用到的参数,模型,优化的一些选择系统的做一个简单总结

本文中的图片引用自:邱锡鹏,神经网络与深度学习,机械工业出版社,https://nndl.github.io/, 2020.

Model(模型)

模型就是你的模型(听君一席话如听一席话

Optimizer(优化器,或者说优化算法)

在这里插入图片描述

优化器一般选择集各家所长的Adam
在这里插入图片描述
在这里插入图片描述

Loss Function(学习准则,损失函数)

损失函数就是你的模型需要优化的函数,根据不同任务选择不同的损失函数

回归问题常用平方损失
在这里插入图片描述
分类问题一般使用交叉熵损失函数,因为它可以用来衡量两个分布的差异

在这里插入图片描述
在这里插入图片描述

Hinge损失
在这里插入图片描述

Activation Function(激活函数)

在这里插入图片描述
一般情况首选ReLu激活函数
在这里插入图片描述
零中心化的Tanh函数:
在这里插入图片描述

Normalization(标准化,数据预处理)

一般有最大最小归一化,BN,LN

假设每一行为输入变量x的每个特征,一个工有n行,代表批量大小为n,有m列,代表有m个特征
在nlp中就是有很多个长度不一的句子,BN相当于对每一列做归一化,LN相当于对每一行,也就是每个句子自己的所有词做归一化,而因为句子长度不易,BN的效果并不好,所以常用LN

Regularization(正则化)

L1,L2,权重衰减,提前停止,dropout,数据增强,标签平滑

Initialization(参数初始化)

NLP中现在主流方法是使用预训练初始化(词向量,bert)

基于方差缩放的参数初始化

Evaluating Metric(评价指标)

常见的几个评价指标:

  • ‘accuracy’,
  • ‘bleu’,
  • ‘f1’,
  • ‘glue’,
  • ‘precision’,
  • ‘recall’,

batch_size(批量大小)

batch size别太小,也别太大,其他都行

epochs(训练轮数)

一般训练到dev set的损失不再下降即可

learning_rate(学习率)

一个简单的办法Leslie N. Smith 在2015年的一篇论文“Cyclical Learning Rates forTraining Neural
Networks
”中的3.3节描述了一个非常棒的方法来找初始学习率,同时推荐大家去看看这篇论文,有一些非常启发性的学习率设置想法。这个方法在论文中是用来估计网络允许的最小学习率和最大学习率,我们也可以用来找我们的最优初始学习率,方法非常简单。首先我们设置一个非常小的初始学习率,比如1e-5,然后在每个batch之后都更新网络,同时增加学习率,统计每个batch计算出的loss。最后我们可以描绘出学习的变化曲线和loss的变化曲线,从中就能够发现最好的学习率。

作者:Sherlock
链接:https://zhuanlan.zhihu.com/p/31424275
来源:知乎

数据预处理

针对不同的任务有不同的方法

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/79204
推荐阅读
相关标签
  

闽ICP备14008679号