summary[4.21-4.26]

现在主要问题在model在training set上的loss不下降

1. tree -> sequence

一个node由type,value和children三个属性,没有value的用empty表示,叶子节点不需要由children,
比如x = 7的AST的 sequence
在这里插入图片描述

2. NN model

采用Encoder- decoder的结构

2.1 Encoder

Encoder主要是LSTM与Attention mechanism.

1.先对node的type和value建立vocabulary
2. 将node的type和value进行embedding,concatenate在一起
3. LSTM将sequence处理成vector h n h_n hn
4. 利用context_window里信息,得到attention vector c n c_n cn
5. 将 h n h_n hn c n c_n cn以及要预测node的parent node经过lstm得到的output vector p n p_n pnconcatenate在一起,经过linear得到ecoder vector。
在这里插入图片描述

2.2 decoder层的处理

encoder的vector经过一个linear将hidden_dim长度的vector变成context_window长度的vector经过softmax层。softmax的维度等于context window的长度
在这里插入图片描述

3. Question

  1. 模型花费时间长 (编程问题)
  2. loss不下降

3.1 模型花费时间长

起初epoch = 8 ,跑一次模型需要13个小时,而且loss不下降。按照网上的machine translation的model 修改了我的模型后,已经加入padding,大于1的 batchsize。
epoch = 8 ,跑一次需要6个多小时

3.2 loss不下降

在这里插入图片描述
先排除了编程的问题,
我先按照网上说的调整
如何解决神经网络训练时loss不下降的问题
1.模型结构和特征工程存在问题 (借鉴了loss 下降的seq-to-seq translation)
2.权重初始化方案有问题
3.正则化过度(之前loss不降,才加的dropout)
4.选择合适的激活函数、损失函数
5.选择合适的优化器和学习速率
6.训练时间不足
8.batch size过大
9.数据集未打乱 (加入了shuffle)
10.数据集有问题

4. NDCG

用在code suggestion,因为node由type和value两属性,根据suggestion的结果score。

predicted noderelevent score(rel)
type: True ,value: True3
type: False ,value: True2
type: True ,value: False1
type: False ,value: False0

然后根据
例如
要预测node: {“type”:“NameLoad”,“value”:“x”}

predicted top5 noderelevent score(rel)
“type”:“NameStore”,“value”:“x”2
“type”:“NameLoad”,“value”:“x”3
“type”:“num”,“value”:“6”0
“type”:“NameLoad”,“value”:“y”1
“type”:“NameLoad”,“value”:“z”1

先计算IDCG

I D C G t o p k = ∑ i = 1 ∣ R E L ∣ 2 r e l i − 1 log ⁡ 2 ( i + 1 ) {\displaystyle \mathrm {IDCG_{topk}} =\sum _{i=1}^{|REL|}{\frac {2^{rel_{i}}-1}{\log _{2}(i+1)}}} IDCGtopk=i=1RELlog2(i+1)2reli1

|REL|是从0到位置k根据相关性从高到低的排序
在计算得到NDCG
N D C G t o p k = D C G p I D C G p {\mathrm {NDCG_{{topk}}}}={\frac {DCG_{{p}}}{IDCG_{{p}}}} NDCGtopk=IDCGpDCGp

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值