Gab*_*Chu 5 nlp machine-learning word2vec deep-learning word-embedding
假设我们正在训练神经网络模型来学习从以下输入到输出的映射,其中输出是名称实体(NE).
输入:欧盟拒绝德国呼吁抵制英国羔羊.
产出:ORG O MISC OOO MISC OO
创建滑动窗口以捕获上下文信息,并将其结果作为model_input提供给训练模型.滑动窗口生成如下结果:
[['<s>', '<s>', 'EU', 'rejects', 'German'],\
['<s>', 'EU', 'rejects', 'German', 'call'],\
['EU', 'rejects', 'German', 'call', 'to'],\
['rejects', 'German', 'call', 'to', 'boycott'],\
['German', 'call', 'to', 'boycott', 'British'],\
['call', 'to', 'boycott', 'British', 'lamb'],\
['to', 'boycott', 'British', 'lamb', '.'],\
['boycott', 'British', 'lamb', '.', '</s>'],\
['British', 'lamb', '.', '</s>', '</s>']]
Run Code Online (Sandbox Code Playgroud)
<s>表示句子标记的开始并</s>表示句子结尾标记,并且每个滑动窗口对应于输出中的一个NE.
为了处理这些令牌,使用预训练的嵌入模型将单词转换为向量(例如,手套),但是那些预先训练的模型不包括诸如<s>和之类的标记</s>.我认为随机初始化<s>并</s>不会是一个好主意,因为这种随机结果的规模可能与其他Glove嵌入不一致.
问:用于设置的嵌入有什么建议<s>和</s>为什么?
一般来说,答案取决于您打算如何在任务中使用嵌入。
<s>我怀疑和标记的使用</s>是由 LSTM 或其他循环神经网络决定的,位于嵌入层之后。如果您要自己训练词嵌入,我建议您简单地删除这些标记,因为它们不会增加任何价值。开始和停止标记在 LSTM 中确实很重要(尽管并不总是如此),但它们的词嵌入可以是任意的,小的随机数就可以了,因为这个向量与所有“正常”向量的距离相同。
如果你不想弄乱预先训练的 GloVe 向量,我建议你冻结嵌入层。例如,在张量流中,这可以tf.stop_gradient通过嵌入查找之后的 op 来实现。这样网络就不会学习<s>和其他单词之间的任何关系,但完全没问题,任何现有的关系都不会改变。
| 归档时间: |
|
| 查看次数: |
1721 次 |
| 最近记录: |