• Embedding相关笔记


    Word2Vec模型

    模型结构:

    • 1个输入层:输入向量为词汇的one-hot编码
    • 1个隐藏层:权值矩阵的形状为[vocab_size, hidden_size]
    • 1个输出层:输出长度为vocab_size的向量,向量中每个元素对应词库中一个词的概率

    模型训练:

    • W2V有Skip-Gram和CBOW两种训练模式。从直观上理解:Skip-Gram是给定当前值来预测上下文。而CBOW是给定上下文,来预测当前值

    Simple CBOW Model

    • 简单的CBOW 模型仅输入一个词,输出一个词
    • 最终的输出需要经过softmax函数,将输出向量中的每一个元素归一化到0-1之间的概率,概率最大的,就是预测的词

    CBOW Multi-Word Context Model

    • 和simple CBOW的不同之处在于,输入由1个词变成了多个词,每个输入 Xik 到达隐藏层都会经过相同的权重矩阵W,隐藏层h的值变成了多个词乘上权重矩阵之后加和求平均值

    Skip-gram

    • Skip-gram输入层到隐藏层的原理和simple CBOW一样,不同的是隐藏层到输出层,损失函数变成了C个词损失函数的总和(期望输出上下文词汇),权重矩阵W’还是共享的

    从效果上看,skip-gram的结果一般会比CBOW好一些,原因可能是CBOW在对多个词进行平均时带来了一些额外的信息损失

    Deep Crossing

    模型结构:

    • 类别型特征(one-hot向量)先进入Embedding层,再拼入stacking层,数值型特征直接拼入stacking层
      • Embedding层其实就是一个fully connect的隐藏层,起到对one-hot特征进行降维的作用
    • stacking层会把不同的 Embedding 特征和数值型特征拼接在一起,形成新的包含全部特征的特征向量
    • stacking再往上是由数个全连接层组成的MLP结构
    • scoring层输出最后的结果

    t-SNE数据降维

    t-SNE(t-distributed stochastic neighbor embedding)是用于降维的一种机器学习算法,常用于高维数据可视化

    t-SNE的两大优势:

    • 对于不相似的点,用一个较小的距离会产生较大的梯度来让这些点排斥开来。
    • 这种排斥又不会无限大(梯度中分母),避免不相似的点距离太远。

    四个不足:

    • 主要用于可视化,很难用于其他目的
    • t-SNE倾向于保存局部特征,对于本征维数(intrinsic dimensionality)本身就很高的数据集,基本无法完整的映射到2-3维的空间
    • t-SNE没有唯一最优解,且没有预估部分。如果想要做预估,可以考虑降维之后,再构建一个回归方程之类的模型去做。但是要注意,t-sne中距离本身是没有意义,都是概率分布问题。
    • 训练太慢。有很多基于树的算法在t-sne上做一些改进

    Scikit-learn代码Demo

    >>> import numpy as np
    >>> from sklearn.manifold import TSNE
    >>> X = np.array([[0, 0, 0], [0, 1, 1], [1, 0, 1], [1, 1, 1]])
    >>> X_embedded = TSNE(n_components=2, learning_rate='auto',
    ...                   init='random').fit_transform(X)
    >>> X_embedded.shape
    (4, 2)
    
  • 相关阅读:
    finder的隐藏文件&IOS虚拟机地址
    IOS的UI总结
    ios系统的中arm指令集
    mac下删除svn账号
    PNG图片压缩工具
    让finder显示路径
    Serilog高级玩法之用Serilog记录所选终结点附加属性
    如何利用Serilog的RequestLogging来精简ASP.NET Core的日志输出
    关于C#异步编程你应该了解的几点建议
    C#异步编程入门看这篇就够了
  • 原文地址:https://www.cnblogs.com/lokvahkoor/p/16219309.html
Copyright © 2020-2023  润新知