专栏首页深度学习自然语言处理这些神经网络调参细节,你都了解了吗

这些神经网络调参细节,你都了解了吗

阅读大概需要4分钟 跟随小博主,每天进步一丢丢

今天在写本科毕业论文的时候又回顾了一下神经网络调参的一些细节问题,特来总结下。主要从weight_decay,clip_norm,lr_decay说起。

以前刚入门的时候调参只是从hidden_size,hidden_num,batch_size,lr,embed_size开始调,但是后来才逐渐明白embed_size一般是设置完后不用再调的,比如设定为128后,就不要调了,因为embed_size只是表示将词嵌入到几维的空间而已。lr也一般都有固定值,比如选取优化器Adam的时候,lr=0.001,选取优化器SGD的时候,lr=0.01,hidden_num一般设置为1的时候就行,2层以上在简单的网络上只会到的适得其反的效果。

所以剩下该调的也只有hidden_size,batch_size,weight_decay,clip_norm,lr_decay了。但是hidden_size,batch_size大家应该知道怎么调,这里就不讲了。还有其他的调参细节部分,等以后详细用到了再总结给大家。

weight_decay

weight_decay权重衰退。为了防止过拟合,在原本损失函数的基础上,加上L2正则化,而weight_decay就是这个正则化的lambda参数,一般设置为1e-8,所以调参的时候调整是否使用权重衰退即可。这个防止过拟合的正则化我之前和dropout一起讲过的,想要巩固下,点这里

pytorch实现代码:

self.HyperParams里封装的就是我的所有参数,而decay是这里说的weight_decay,值为1e-8.

对weight_decay我做了实验,数据对比:

F1为一个评测值,想了解的更加详细的,点这里

可以从实验看出weight_decay还是有点效果的,但不是对所有的试验有效果,所以这也是调参的一部分。

clip_norm

clip_grad修剪梯度,为了防止梯度爆炸(gradient explosion)。

原理为:损失函数反向传播的时候,使得每个参数都有了梯度gradient,如果所有的梯度平方和sum_sq_gradient大于clip_grad,那么求出缩放因子:

接着改变每个gradient,使每个gradient都乘scale_factor,达到缩放的效果,使每个梯度的sum_sq_gradient都被限制在clip_grad里,来达到防止梯度爆炸的效果。通常设置为10,那么调参的内容为是否需要clip_grad机制。

pytorch代码为(只看红框框里的就行):

接整个图的目的是表示在哪里用这个函数。在网络获得损失,并进行后向传播梯度后用该方法,之后进行优化,更新参数即可。

数据对比:

可以看出有那么一丢丢效果。随着不同的数据集,效果还是不一样的。

lr_decay

lr_decay学习率衰退,一般设置为1e-8,公式为:

其中,lr为学习率,step为当前迭代次数

因为一般情况下循环迭代次数越多的时候,学习率的步伐就应该越来越小,这样才能慢慢接近函数的极值点,。但是有时候也不一定会有效,所以这里需要通过调参来查看是否需要开启lr_decay。

pytorch代码为:

数据对比:

依然那句话,不是所有的数据集都会有好的效果,需要自己调试,选择适合自己模型的参数。

IELTS a bit

chill n.寒冷;寒意;寒心

adj.寒冷的;冷漠的;扫兴的

vt.冷冻,冷藏;使寒心,使感到冷

vi.冷藏;变冷

prescription n.药方;指示;惯性

mantle n.地幔;斗篷;覆盖物

vi. 覆盖;脸红

vt.覆盖

n.人名;曼特尔

ascend vi.上升;登高;追溯

vt.攀登;上升

hypothesis n. 假设

推荐阅读:

精彩知识回顾

谈谈我在自然语言处理入门的一些个人拙见

大数定律和中心极限定理的区别和联系

深度学习之激活函数详解

深度学习之卷积神经网络CNN理论与实践详解

深度学习之RNN、LSTM及正向反向传播原理

TreeLSTM Sentiment Classification

基于attention的seq2seq机器翻译实践详解

【干货】基于注意力机制的seq2seq网络

本文分享自微信公众号 - 深度学习自然语言处理(zenRRan),作者:zenRRan

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-05-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 注意力机制可解释吗?这篇ACL 2019论文说……

    此外,相比之前机器之心报道的注意力能否提高模型可解释性的文章,本文更多的从语境词语级别(contextualized word level),探讨注意力机制是否...

    zenRRan
  • 谈谈我在自然语言处理进阶上的一些个人拙见

    自然语言处理这个方向我感觉已经泛滥了,很多方向的人都开始转向该专业,当然也包括转向计算机视觉的。之前我写过一篇文章

    zenRRan
  • 在茫茫决策树入门帖里,我强推这篇(附可视化图)

    决策树是我最喜欢的模型之一,它们非常简单但是很强大。事实上,Kaggle中大多数表现优秀的项目都是XGBoost和一些非常绝妙的特征工程的结合,XGBoost是...

    zenRRan
  • 使用aerogear生成totp

    aerogear-otp-java-1.0.0-sources.jar!/org/jboss/aerogear/security/otp/Totp.java

    codecraft
  • 图像的卷积(滤波)运算(二)——高斯滤波

    在图像处理中,选定X方向上长度为3的窗口,令δ=1,中心坐标为1,由上述公式,其卷积核(Xa,X,Xb)可以如下计算:

    charlee44
  • 学界 | 伯克利联合OpenAI发布新型深度学习方法TCML:学习通用型算法

    选自arXiv 机器之心编译 参与:Smith 快速学习的能力是区分人类智能和人工智能的关键特征。人类可以有效地利用先验知识和经验来快速学习新的技能。然而,用传...

    机器之心
  • SAP UI5 Web Component里最简单的React列表控件的用法

    从@ui5/webcomponents-react里导入 List,StandardListItem和ValueState:

    Jerry Wang
  • SAP UI5 Web Component里最简单的React列表控件的用法

    Jerry Wang
  • 去他的互联网创业风口

    315晚会后,电子烟行业一地鸡毛,前一天这个行业还是风口,启信宝数据显示,从15年一直到18年,电子烟行业新增企业数量每年都有一千多家,2019年仅仅过去了三个...

    罗超频道
  • React:Table 那些事(3-1)—— 基础表格、边框控制

    《React:Table 那些事》系列文章,会逐渐给大家呈现一个基于 React 的 Table 组件的定义、设计、开发过程。每篇文章都会针对 Table 的某...

    WEBJ2EE

扫码关注云+社区

领取腾讯云代金券