zeus00456

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

AI | 向量化 - [什么是向量化]

性质

向量化是一种机器学习的语言,也就是说,它是用数据与算法喂出来的,而不是人为规定的

向量模型是纯反复计算调整出来的,而不是人为制定的

向量模型的训练思路

下面是原始的 Word2Vec 的训练大体思路,不意味着现在流行的模型就是这么训练出来的
但核心思想上应该差不多,可以辅助理解向量模型到底是啥

  • 准备

    • 准备大量语料,语料就是大量的自然文本
    • 统计常用词
    • 初始化词表
      • 词表是一个固定大小的矩阵
      • 如果词表是 10w,维度 300,那么这个矩阵就是 10w*300 的
      • 训练后就可以得到一个 10w 词,每词 300 维度的向量模型
      • 对它的初始化,其实就是给所有词表所有维度一个 [-1 , +1] 的浮点值
  • 训练单元的选择

    • 切分语料,并用一个固定大学的窗口滑动选取
    • 假设这个窗口是 5,则取到的词可以分为中间的 <中间词> 以及两侧的各两个 <上下文词>
  • 预测训练的模式,下面两种模式 二选一

    • CBOW:按 <上下文词> 预测 <中间词>
    • Skip-gram:按 <中间词> 预测 <上下文词>
  • 预测原理

    • 所谓预测,基本可以按照完形填空理解
    • 假设训练单元选中了 【老周/刚刚/骂/小邹/了】
    • CBOW 下,会扣掉 <中间词> 【骂】,然后把剩下的部分给模型,让它预测中间是什么
    • 模型会把两侧的 <上下文词> 进行向量计算,得到一个新向量
    • 用这个向量去向量模型里匹配,匹配结果是一个 10w 维的向量,相当于对于整个矩阵里所有词的打分
  • 反向调参/维度修正

    • 误差计算:即上面那个误差向量(10w 维的)
    • 梯度计算:用误差向量计算梯度向量,梯度向量是 300 维的

    这里原理没看懂,大量矩阵运算,先这么理解

    • 小幅更新:用这个梯度向量对窗口内所有词进行修正,梯度向量会 * 一个小系数(学习率)

    比如误差向量的第一个维度是 0.5,学习率是 0.2
    则实际调整值为 0.1,实际计算时第一维度会 -0.1,这里的 - 就是梯度下降里的下降
    小幅调整的目的是防止一次更新太大,因为每次对每个向量的更新都可能影响整个向量矩阵

    • 剩下的部分由后面的轮次调整,和下面的多轮收敛其实是一回事
  • 多轮收敛

    • 按上面的流程多轮训练模型
    • 最终结果,其语义接近、词性一致,可以互相替换的词的向量会趋于一致
    • 最终训练好的成品就是上面说的矩阵

一些辅助理解的说明

  • 假设你的向量模型是 300 维度的,那么无论是你还是模型本身,都无法解释这 300 维分别表示什么
  • 你用同样的算法,同样的语料,同样的维度,最终训练完的向量模型很可能是不通用的,也就是说模型 1 里是 "猫" 的向量在另一个里面可能是 "车"
  • 在向量模型里匹配向量,用的是余弦相似度的计算
    • 它用来描述一个 300 维空间里,一个 300维 向量的位置,并可以描述两个向量的距离
  • 为什么是余弦
    • 因为余弦在 [0,π] 区间里的值,正好是 [1,-1],而正弦是 0->1->0,计算不友好
    • 0° = 1,可以表示一致;90° = 0,可以表示无关;180° = -1,可以表示相反
  • 向量预测的核心完全可以等效的视为基于 <完形填空+打分+修正> 的过程
    • 当然实际上它更复杂,但也是复杂规则的完形填空 + 复杂的打分 + 复杂的修正
posted on 2026-06-14 20:41  问仙长何方蓬莱  阅读(2)  评论(0)    收藏  举报