Skip to content

2024

机器学习实践:ALS的矩阵分解

交替最小二乘法(Alternating Least Squares, ALS)是一个比较古早的推荐系统算法了,发表在18年之前,本来已经完全可以不管了,因为用神经网络(Neural Network)做物品的embedding的效果已经很好了。

但是,NN开销确实比较大,一来训练速度限制样本不能太多,二来内存限制物品数量不能太多(虽然严格意义上,通过更猛的框架分布式,PS之类可以解决,但也更麻烦)。因此,又把ALS算法给捡起来了,它的效果上虽然只能达到NN的80%左右,但是优势是,

  • 用户和物品数量几乎无上限(只要不超过整型最大21亿,微博月活用户能全量分解)
  • 训练速度非常快(因为没有反向传播/SGD)
  • 可以分布式(Spark MLlib的明星算法)

粗看下来,几乎是弥补了神经网络的劣势,因此有了这篇实践,看看有什么坑,摸摸上限在哪里。(跳转踩坑后的总结

机器学习笔记:LLM的中文分词

在word2vec时代,基本上就是先jieba.cut,把中文切成token。后面再接w2v或者fasttext。但是第一次接触transformer的工具时,发现并不需要预先进行jieba.cut,因此速度也加快了不少。借此机会想再研究下,到底是为什么能跳过

1、理论部分

从早期NLP时代过来的人知道,英文一般是word based,词表会很大,动辄几十万都未必够,需要限制vocab的大小;但这么做就会损失长尾信息1,就像用户画像中的id类标签或者app编码遇到的问题一样。中文理论上可以直接character based切分成单字,这样词表大小就是有限的汉字数了,但模型需要在内部学习词组的含义,对模型要求更高。