背景
知识追踪方向涉及NLP的知识不多,涉及Transform的模型就更少了。
而现在bert和Transformer发展太快,有很多应用在不同应用的预训练模型,所以需要调用别人写好的库。加上框架不同,TensorFlow、keras、pytorch都分别有不同出名的库。要真的研究具体某一方向时,比如文本分析,语音识别、机器翻译,才需要熟练地调用别人已经写好的模型库,加载别人训练好的参数。
确实知识追踪也用Transformer,不过只需要一层,如SAKT、AKT,都是作者自己手写encoder结构,不需要调用。莫烦的nlp教程也是手写bert、Transformer结构。所以这样就会有狭隘:
- Transformer结构的优化
- Transformer不断新增的trick
- bert的变体,不过这个用不到
正文
在阅读论文代码时,该作者就调用到库,借机会学习一下:
Deep Knowledge Tracing with Transformers,根据requirement了解到第三方库
tf-models-official==2.4.0 and tensorflow==2.4.1
what need to solve?
from official.nlp.modeling import layers
from official.nlp.modeling import layers
from official.nlp.transformer import ffn_layer
from official.nlp.transformer.model_utils import get_padding_bias, get_decoder_self_attention_bias, _NEG_INF_FP32, _NEG_INF_FP16
调研
1)https://github.com/tensorflow/models/tree/master/official
The TensorFlow official models are a collection of models that use TensorFlow’s high-level APIs. They are intended to be well-maintained, tested, and kept up to date with the latest TensorFlow API.
方向
2)https://github.com/tensorflow/models/tree/master/official/nlp/modeling
This library provides a set of Keras primitives (tf.keras.Layer and tf.keras.Model) that can be assembled into transformer-based models. They are flexible, validated, interoperable, and both TF1 and TF2 compatible.
layers.py are the fundamental building blocks for NLP models. They can be used to assemble new tf.keras layers or models.
(https://colab.sandbox.google.com/github/tensorflow/models/blob/master/official/colab/nlp/nlp_modeling_library_intro.ipynb) for how to build transformer-based NLP models using above primitives.
you don’t need to fork a whole Transformer object to try a different kind of attention , for instance.
primitive(https://colab.sandbox.google.com/github/tensorflow/models/blob/master/official/colab/nlp/customize_encoder.ipynb) for how to use scaffold classes to build noval achitectures.
3)https://github.com/tensorflow/models/tree/v2.2.0/official/nlp/transformer
The implementation leverages tf.keras and makes sure it is compatible with TF 2.x.
此时的我十分懊恼
- 为啥我要花那么多时间看基于RNN的机器翻译,而不是直接上手基于Transformer的。无论是pytorch还是TensorFlow,直接看他们官网的Transformer教程就好。可惜现在没这个时间乱学了。
- 李宏毅的基于RNN的机器翻译,也没有beamsearch和衡量指标的代码,这里TensorFlow官方直接给出。所以一心想入门Transformer的同学就避坑吧。
博客
1)https://blog.csdn.net/u013546508/category_9209236.html 参考价值不大,只是百度的第一条。他也是基于官方教程剪辑出来的。
TensorFlow官方教程
2)google到一位比较厉害的人,主页
不过莫烦的bert也是比较清晰的,不是一定跟着作者学。
结尾
本文主要进行调查,对于文中提到的第三方库中的函数怎么使用(代码层面),我觉得不要太期待网络上有人会逐个函数解释。直接看代码,所以GAN吧
最后segmentfault社区:https://segmentfault.com/u/makechang_e/articles?page=1
这人有我影子,从目标检测到Transformer的,不过你只给模型,不给怎么训练怎么测试,人家怎么会看呢,都跑不起来。
因为我的TensorFlow为2.2.0
所以>pip install tf-models-official==2.2.0
不设定版本会帮你install2.4.0
具体文件