cliuxinxin / topics

Topics store
1 stars 0 forks source link

深度学习的一般思路 #29

Open cliuxinxin opened 4 years ago

cliuxinxin commented 4 years ago

我记得NLP以前的玩法就是使用HMM或者贝叶斯或者一些统计学上的模型,重视的是一般的文本的统计规律。所以重视的是如何分词(中文),以及该词语出现在文章,段落中次数,根据这些来做一些有意思的东西。

cliuxinxin commented 4 years ago

到了深度模型,其实核心就改变了。第一个问题就是,深度模型如何理解文字,答案是否定的,深度模型并不理解文字,深度模型只理解数字,所以,把文字转换成数字就是第一个问题。

cliuxinxin commented 4 years ago

文字转换为数字,这个步骤其实也经历了一个发展。最开始,大家想到,我们做一个字典,把数字和文字对应起来,这就是现在一般深度模型中都会用到的字典,所有的深度模型一来就要加载这个东西,当然随着时间的发展,这个字典也是从分词到字的过度。

cliuxinxin commented 4 years ago

后来发现,为啥根据文字的顺序造成的数字不一样,输入就不一样呢。我比如对应1,你对应10,那么你就比我大10倍吗。所以后来引入了one-hot,这个概念简单又实用。你和我在模型看来都变成一样的了

cliuxinxin commented 4 years ago

再后来就发现了wordembedding。既然我们花这么多资源来代表文字,为什么不更有意义呢。所以就有了wordembeding的训练。有意思的地方是,这个wordembedding的训练玩法其实跟bert也差不多。只不过一个关注字,一个关注句子。

cliuxinxin commented 4 years ago

再后来就是glove之流了,wordembedding有个致命的缺点就是embedding是固定的。一个词的意思其实在各个语境当中是不一样的。为啥要搞成一样的embedding。所以有了glove用一个模型的权重来替代文字的意思。

cliuxinxin commented 4 years ago

现在的bert之流就更nb了,不仅知道一个词在固定的语境下啥意思,还知道在一些特定的句子之间啥意思(预训练的方式)当然更侧重的是一个句子的意思,而不是具体某个词的意思。

cliuxinxin commented 4 years ago

终上所述,我们发现,其实整个过程就是我们让模型在理解文字的时候不断的提升,从字到词到句子。如果下次跃进我们的处理单位是段落或者文章,我是一点都不奇怪。技术方面的趋势就是从参数free到embedding,到模型。

cliuxinxin commented 4 years ago

说完文字输入的时候遇到的转换问题,接下来就是模型的问题。什么模型是我们需要的呢。

cliuxinxin commented 4 years ago

最开始,大家意识到文字的序列属性。很自然地引入了RNN序列模型对其建模。当然RNN有其自身的问题,所以就引入了LSTM。不过RNN/LSTM在预测序列的时候天然有个规律就是我只看前面的。但是就NLP这个问题的特点是,我在看前面的东西的时候还能看后面的东西,所以birnn/lstm这个模型就被引入了。其实在实践中,这个模型能解决不少问题。剩下的东西小孩没娘说来话长,有时间再说

cliuxinxin commented 4 years ago

从后面往前看其实并不是为了体现那个序列,所以后来又弄出来了attention机制。其实有了attention机制以后,顺序就已经不太重要了,这也是selfattetention的前传