网站建设绵阳辉煌电商,怎么制作自己的网页网站首页,邹平县seo网页优化外包,网站开发公司首页今天终于要完成好久之前的一个约定了~在很久很久以前的《如果风停了#xff0c;你会怎样》中#xff0c;小夕提到了“深刻理解了sigmoid的同学一定可以轻松的理解用(假)深度学习训练词向量的原理”#xff0c;今天就来测测各位同学对于sigmoid的理解程度啦~习惯性的交待一下… 今天终于要完成好久之前的一个约定了~在很久很久以前的《如果风停了你会怎样》中小夕提到了“深刻理解了sigmoid的同学一定可以轻松的理解用(假)深度学习训练词向量的原理”今天就来测测各位同学对于sigmoid的理解程度啦~ 习惯性的交待一下前置铺垫1、词袋模型、独热与词向量概念扫盲2、sigmoid到softmax至关重要3、逻辑回归4、逻辑回归到神经网络 总之请务必清楚词向量的概念深刻理解softmax的概念和公式内的意义。尤其是要理解softmax函数具有“两向量的‘亲密度’转条件概率”的功能 嗯。。。还是开篇扫盲一下。可能有的同学觉得是深度学习兴起之后才有的“词向量”实际上最早用来做词向量的模型并不是神经网络而是更加传统的机器学习算法如以线性代数中的SVD奇异值分解为核心LSA隐性语义分析还有后来的以贝叶斯理论为核心LDA隐含狄利克雷分布一种NLP中经典的主题模型。 一方面小夕下面要讲的确实是作为一种用神经网络人们为了提高逼格更喜欢叫用深度学习xxx训练词向量的基本理论和方法但是实际上小夕并没有把它当神经网络看因为理解了小夕讲的softmax后这种方法不过是用了一下softmax而已还不如叫“基于softmax分类器”或者“基于改良的逻辑回归”呢。。。当然啦对外还是要称之为神经网络的。 首先我们来想一下凭什么可以训练出《词向量概念扫盲》中描述的这么棒的可以编码语义的词向量呢其实呀只要是用无监督的方法去训练词向量那么这个模型一定是基于“词共现”(word co-occurrence)信息来实现的。 设想一下“萌”的语义跟什么最相近呢有人会想到“可爱”有人会想到“妹子”有人会想到“小夕”\(//∇//)\。为什么呢因为很大程度上这些词会同时出现在某段文本的中而且往往距离很近比如“萌妹子”、“这个妹子好可爱”、“小夕好萌吖”。正是因为这种词共现可以反映语义所以我们就可以基于这种现象来训练出词向量。 既然语义相近的两个词即差别很小的两个词向量在文本中也会趋向于挨得近那如果我们可以找到一个模型它可以在给定一个词向量时计算出这个词附近出现每个词的概率即一个词就看成一个类别词典中有多少词就是多少个类别计算出给定输入下每个类别的概率那么训练这个模型不就把问题解决了嘛。是不是突然觉得softmax函数简直是为这个任务量身定做呐~ 我们就将词典大小设为D用、、...表示词典中的每个词。 如下图 看这不就是简单的softmax分类器嘛~所以这个model的假设函数就是简单的 从这个model中也能看出模型的输入不仅是输入而且是其他输入的参数所以这个model的参数是维度为 D*embed_dim 的矩阵每行就是一个用户定义的embed_dim大小的词向量词典中有D个词所以一共有D行而且输入也是从这个矩阵中取出的某一行。 假设函数有了那么根据《一般化机器学习》我们需要定义损失函数。当然根据前面所说的词共现信息来定义啦。 为了好表示我们将模型输入的词称为中心词(central word)记为将这个词两边的词记为目标词(objected word)记为假如我们只将中心词附近的m个词认为是它的共现词也就是中心词左边的m个词以及中心词右边的m个词那么目标词一共有2m个分别记为、、...。下文将会看到在整个句子的视角下m被称为窗口大小 如果我们令m1那么对于下面这个长度为T10句子 今天 我 看见 一只 可爱的 猫 坐 在 桌子 上。 那么当我们将“猫”看作中心词时目标词就是“可爱的”和“坐”即今天 我 看见 一只 【可爱的 猫 坐】 在 桌子 上。我们就认为这两个词跟猫的语义是相关的其他词跟猫是否相关我们不清楚。所以我们要争取让P(可爱的|猫)、 P(坐|猫)尽可能的大。 讲到这里最容易想到的就是使用似然函数了。由于这里类别特别多所以算出来的每个概率都可能非常小为了避免浮点下溢值太小容易在计算机中被当成0而且容易被存储浮点数的噪声淹没更明智的选择是使用对数似然函数。所以对于一段长度为T的训练文本损失函数即 当然啦这里要让长度为m的窗口滑过训练文本中的每个词滑到每个词时都要计算2m次后验概率。而每次计算后验概率都要用到softmax函数而回顾一下softmax函数它的分母是很恐怖的 类别越多分母越长。而我们这里类别数等于词典大小啊所以词典有10万个单词的话分母要计算10万次指数函数所以直接拿最优化算法去优化这个损失函数的话肯定会训练到天长地久好像用词不当。那怎么办呢 一种很巧妙的方法是将原来计算复杂度为D的分母要计算D次指数函数通过构造一棵“胡夫曼二叉树(Huffman binary tree)”来将原来扁平的“softmax”给变成树状的softmax从而将softmax的分母给优化成计算复杂度为log D。这种树形的softmax也叫分层softmaxHierarchical Softmax。 还有一种优化方法是负采样Negative Sampling这种方法可以近似计算softmax的对数概率。对使用分层softmax和负采样优化模型计算复杂度感兴趣的同学可以看下面这篇论文 Mikolov,T., Sutskever, I., Chen, K., Corrado, G., Dean, J. (2013, October 17).Distributed Representations of Words and Phrases and their Compositionality.arXiv.org 诶诶说了这么多这个看起来这么简洁优美的model叫什么名字呢 它就是Mikolov在2013年提出来的Skip-gram简称SG这也是大名鼎鼎的开源词向量工具word2vec背后的主力model之一另一个模型是更弱鸡的连续词袋模型即cBoW。 说些题外话SG和cBoW是Mikolov在2013年的一篇论文中提出来的 (Mikolov, T.,Chen, K., Corrado, G., Dean, J. (2013, January 17). Efficient Estimationof Word Representations in Vector Space. arXiv.org.) 并且在同一年Mikolov又在更上面那篇优化SG计算复杂度的论文中开源了word2vec这个词向量工具可谓是深度学习应用于自然语言处理领域的里程碑式的成果。当然啦要说NLP的超级里程碑还是要数2003年Bengio大神的这篇论文的这也是词向量概念的鼻祖论文 Bengio Y, Ducharme R,Vincent P, et al. A neural probabilistic language model[J]. Journal of machinelearning research, 2003, 3(Feb): 1137-1155. 关于在准确度表现上基本可以完爆SG和cbow的model参考GloVe模型Global Vector有兴趣的同学可以看一下论文 PenningtonJ, Socher R, Manning C D. Glove: Global Vectors for WordRepresentation[C]//EMNLP. 2014, 14: 1532-1543. 当然啦建议在读之前先熟悉一下文首提到的LDA模型否则可能阅读有点难度哦。