俺做NLP也就是今年开始做的,思考方式和做CV的时候很不一样,分享下目前为止的心得。
自己是工作上用的,基本上是边做边学。主要跟的是CS244N。
学习资料
CS224N: Natural Language Processing with Deep Learning | Winter 2019
Stanford CS224U: Natural Language Understanding | Spring 2019
my 2 cents
语言结构里的syntax tree,还有各种knowledge graph,是和tree/graph(tree is a specific type of graph)这种数据结构息息相关。理解这部分算法还是有好处的。
NLP为什么一开始主流是RNN,这和数据特征是有很大关联的(再次推荐特征工程这本书),对于处理long-distance information是永恒的主题。我会去挖一下自己觉得比较疑惑的点,果然会和这个特征有关系(比如说RNN用tanh而不是sigmoid就是为了把梯度控制在一个范围内,以控制梯度爆炸/消失)
信息提取的部分,很多时候涉及到ranking. keyword extraction/ summarization的本质都是eigen basis的反复相乘。了解一些线性代数的本质在这里是有意义的。
对BERT的理解最好分成encoder-decoder和attention两个部分。attention本质上就是带权求和。
bert的attention本质是 加权求和 请问具体怎么理解
attention处理序列信息的思考方式就是一把抓, 一步获得全局信息。attention的公式里的三个参数Q, K, V。key-value是一对,把softmax和归一化去掉之后其实就是(QK)*V,意思是通过query与key的内积得到V和Q的相似度,然后加权求和。
词语之间的顺序是怎么capture呢
attention本质上是个bag of words模型,里面没有顺序的区分,因此对于位置信息BERT用了 position embedding来补足。这个部分有公式,是直接算出来的。position embedding可以把P位置映射到D维的位置向量。序列信息的相对位置和绝对位置一样重要,转换之后的位置信息可以用和角公式来表示,这样就有了表达相对位置信息的可能性。
网友评论