终其一生,我们只不过在寻找自己

0%

CS224n-9-如何做好project?

这节主要是介绍project的要求,也重新提到了LSTM,GRU,还有一些trick. 比较杂。

project选择问题

  • 默认的Task: Building a textual question answering system for SQuAD
    • Stanford Question Answering Dataset
    https://rajpurkar.github.io/SQuAD-explorer/
    这个任务相当于在做英语阅读题,输入一段话和一个问题,输出是否有答案,答案是哪个单词。
  • Custom Final Project: 大佬自己去研究吧

project的探索方向

  1. 找新的任务,用就的方法
  2. 调整神经网络的结构,优化性能
  3. 提出新的网络,并验证
  4. 分析项目,分析现有的模型如何理解语言
  5. Rare theoretical project: Show some interesting, non-trivial properties of a model type, data, or a data representation 没理解

    往届优秀project


    通过诗集训练生成诗集。结构不复杂,替换数据集就是新任务,可以之后参考仿照着做。

    通过压缩数据长度,来优化计算速度。(很常见的方法)

    找方向,读论文

    其他的方法去寻找论文 ,不过对我来说,我觉得找两个别人做好的项目,复现一下就不错了。🤪
    https://aclanthology.info
    https://paperswithcode.com/sota
    http://www.arxiv-sanity.com

注意:
数据最好完整,任务可行,一点要有可以自动评价的指标。(很多任务都不好评价结果)

找数据

https://catalog.ldc.upenn.edu/
https://linguistics.stanford.edu/resources/resources-corpora
机器翻译 http://statmt.org
kaggle/github

然后又讲了一遍梯度消失爆炸,LSTM,GRU 就不赘述了。 主要是理解GRU用一个门,控制两边的输入量。

翻译中词汇量太大的问题

一般语言中,常用词就几万个,但是低频词还有很多(十几万),计算速度慢,如何解决呢?

  • 在训练和测试集上,都限制词汇量,删除含有低频词的样本。
  • Attention
  • 噪声对比估计(NCE,Noise-Contrastive Estimation),判断出没有实际含义的词,剔除
  • Hierarchical softmax (word2vec的优化技巧)

做课堂project的基本步骤

  1. 定义问题。比如:翻译、总结、问答
  2. 找数据集。最好是已经有了baseline
  3. 清洗数据。分开text数据和devtest数据
  4. 定义评价指标。不同任务评价指标不同。
  5. 建立baseline。比如LR,然后看baseline的得分,分析baseline的问题
  6. 尝试已经存在的网络模型。
  7. 分析数据。可视化,统计信息,查看错误预测,分析超参数
  8. 尝试其他的模型。

RNN的注意事项

  1. 使用LSTM或GRU:它使您的生活变得更加简单!
  2. 初始化递归矩阵为正交
  3. 用合理的(小)标度初始化其他矩阵
  4. 将“遗忘门”偏差初始化为1(默认为记住)
  5. 使用自适应学习率算法:Adam,AdaDelta
  6. 裁剪渐变的范数:1-5似乎是合理的与Adam或AdaDelta一起使用时的阈值。
  7. Either only dropout vertically or look into using Bayesian Dropout (Gal and Gahramani – not natively in PyTorch)
  8. 要有耐心!

指导思想

从简单入手,逐步增加模型复杂度
从小数据入手,可以快速迭代
不要怕过拟合,过拟合了可以降下来,但是证明了模型的拟合能力

-------------    你的留言  是我更新的动力😊    -------------