本周主要是学习了词向量的从从前到现在的一个发展历史。
01 最开始表达词与词之间的关系用语义相近来表示,可以用近义词去替换这个词。
但是存在的一个问题是,用近义词表达一个词的意思的作用是有限的,在不同的语境中同一个词无法用固定的词来表示。
02 之后开始使用one-hot表示词的含义。在一个一维的空间里面,是某个词则为对应编码位置用1表示,其它位置用0表示。
缺点是不同词之间没有相似度的关系,不能表示词与词之间的关系。而且词向量的维度要求非常大。
03 为了表示语境中不同位置词与词的关系,引入了N-gram模型。一段话中,下一个词会依赖于上一个词或几个词的影响。
但是遇到的问题是数据稀疏,难免会出现oov的问题,随着n增大,参数空间会发生指数级别的灾难。缺少长期依赖,只能建模到前n-1个词。
无法表示一词多义。
04为了表示语义相近或者一词多意的情况,引入了wordvector的模型,但是缺点是前文信息有限,计算量过大,词向量是副产品。
05 为了真正意义的表示词与词的关系,引入了word2vector模型。可以分为多个词预测中心词的cbow模型和中心词预测周围词的skip-gram模型。
其中cbow更好的表示近义词的关系,skip-gram更好的表示语义的关系。
缺点是必须计算所有的序列节点,时间复杂度比较高。
06 因此为了减少计算量引入了huffman tree。这部分的计算细节还需要花功夫去看,现在对其中的细节还不是很明白。
07 word2vec在计算量上会花费较长的时间,还引入了一种方法是negative sampling的方法。通过同时输入临近的词,把临近的词随机替换为其它词,用逻辑回归的方法去预测的方法。
以上就是上周课程的整体的顺序结构,其中word2vec的huffman的理解,以及采用逻辑回归、负采样的方式预测临近的词的方法细节,还需要下功夫去看。