语言模型和编解码模型

文本表示模型:one-hot,tf-idf,n-gram,nnlm,word2vec,elmo,GPT,bert,albert
    1.one-hot
        优点:简单快速,
        缺点:不能体现词的重要性,高维稀疏,不能体现词与词之间的关系
    解决办法
    1.tf-idf:解决了词的重要性,高维稀疏,不能体现词与词之间的关系
    2.embedding:解决了高维稀疏
    (n-gram,nnlm,word2vec,elmo)语言模型:解决了不能体现词与词之间的关系
    3.n-gram:基于统计的语言模型
        优点:体现词与词之间的关系
        缺点:统计计算方法不是最好,随着n的增长参数量、计算量会随着n指数增大,
        缺乏长依赖关系,数据稀疏
    4.NNLM:基于神经网络的语言模型
        优点:通过神经网络去预测概率
        缺点:在当时模型显得略微复杂,并且没有数据量
    5.word2vec:
        1.word2vec删除了中间的隐藏层
        2.CBOW通过上下文预测中心词,SKIP-Gram通过中间词预测上下文,同时加入
        负例采样和霍夫曼树。
        缺点:word2vec通过训练得到一个固定语义向量,没有办法解决一词多义问题。
    6.ELMO:
        模型结构:双层双向的LSTM,字符卷积,第一层lstm表示更多的句法特征,第二层lstm表示更多的语义特征
        从ELMO开始以后学的语言模型都是预训练语言模型。
        优点:
            1.使用lstm有了隐状态的概念,编码每个词可以根据上下文的信息去编码当前词,
                动态的基于上下文的调整向量,而不在是使用静态固定的向量,解决了一次多义问题
            2.使用了双向多层的LSTM可以提取到不同的,更多的句子或者单词的信息
        缺点:
            1.特征提取方面使用到的是LSTM而不是transformer,transformer的特征提取能力远强于LSTM
            2.这种直接采用拼接的方式,融合双向的信息,并不是最好的方式,目前理论上是这样,但是还没有事实的证明出来这一点。

编解码模型:seq2seq,transformer,特殊:attention,self-attention
1.seq2seq:编解码模型,编码器:lstm,解码器:lstm
编码器的作用:从输入的文本当中提取得到语义向量C
解码器的作用:把编码的句子向量C解码出最终的输出结果
    优点:解决了RNN模型输入和输出长短个数的限制
    在训练阶段碰到一步错步步错的问题:teacher_forcing_ratio参数:训练过程中的每个时刻,有一定概率使用上一时刻的输出作为输入,
        也有一定概率使用正确的 target 作为输入,只能在训练阶段使用,没有这个优化手段照样可以收敛,只不过收敛很慢。
    在测试阶段碰到解码不对:bearn_search:只能在测试阶段使用
2.attention和self-attention
    可以得到更好的语义向量C
    计算方式、流程相同,但是输入不同,导致输出不同,输出不同导致作用不同。
    计算attention方式:加法模型,点积模型,乘法模型,QKV(缩放点积)
3.transformer:transformer的编码器和解码器可以做特征提取,但是transformer不可以做特征提取

你可能感兴趣的:(深度学习,自然语言处理,人工智能)