word2vec

目标是算出v(w),即o(wh+b),h和b要提取字词信息
基本假设:某词所出现的上下文与该词有较高的corr

CBOW:context(w)->w(用Linear(context(w))的平均值作为上下文信息,粗暴地使用one-hot直接评估
skip-gram:w->context(w)
原版都很暴力,编码、解码全是Linear
所以要同时训练h,b和评估器,以下两种方法接入了新的评估器:

分层softmax:在隐藏层传给输出层的过程中,对语料库建哈夫曼树,用二分类的sigmoid按照树路径累乘结果代替多分类的softmax算概率。其核心思想为转化多分类为二分类。(一个常用的替换softmax的trick)

负采样:
为了优化时间,不对所有单词的概率进行预测,而是只取一部分负样本,规定其得分为负,而正例(中心词)得分为正。用linear“展开”上下文信息x(维度扩回词汇表大小),且只需正负两类展开器(当然,linear后的信息都与样本的One-hot点积了一下,这也是以数学形式定义的“corr”),并使用sigmoid(二分类,作用是使 得分关联上正负性),当然为了防止sigmoid梯度消失还得log一下。(用正负得分代替交叉熵损失)

https://zhuanlan.zhihu.com/p/11335442818

posted @ 2025-01-31 23:31  Anticipator  阅读(17)  评论(0)    收藏  举报