从 Ngram 这样最简单的 SLM(Statistical Language Model)和 OneHot、LSA 以及其他 Co-Occurrence 的 VSM 模型,到 Word2Vec Glove 等考虑简单上下文的词向量模型,再到 CNN RNN BI-LSTM 等更多上下文和更复杂结构的模型,再到基于 Self-Attention 的 Bert 等考虑注意力的模型。我们能够感觉到每一次的变革一定是某种 ”模式“ 层面发生了变化。
分类与 AI
分类作为机器学习或深度学习的基础任务之一,相信任何一位算法工程师都能说得头头是道。不过,能深入思考其背后涉及到的认知过程和机理的就凤毛麟角了。本文涉及到的思考部分从我 2017 年一开始接触人工智能与 NLP 就开始萌芽了,这源于我的切入点与正常人不同。由于个人经历关系,我一开始是从认知科学这个角度开始自己的工程师生涯的,刚开始看的论文也更加偏向于思考如何构建真正的人工智能。比如,Few-Shot 或 One-Shot Learning、因果推理、快速思考、学习如何学习,甚至开始思考语言学以及究竟什么是智能。很自然地也熟知了图灵、冯诺依曼、维特根斯坦。直至现在依然对这些理论相当沉迷,这也是我当初下定决心从事 AI 领域的原因。虽然目前从事 NLP 研发工作,但我对自己的定位一直都是 AI 工程师,AI 不应该被割裂,他从来都是个整体,作为成年人,我们自然是都要。
GBTD + LR 论文笔记
2014 年,Facebook 在论文 practical-lessons-from-predicting-clicks-on-ads-at-facebook 中提出了一个将决策树算法和逻辑回归整合起来的模型,大致做法就是将输入的实数特征通过决策树转换为一个二进制的向量,该模型比其他方法在整体性能上提高超过 3 个百分点。
Wide and Deep Learning for Recommender System 论文笔记
推荐系统可以看作是一个搜索排序系统,其中 input 是一组用户和上下文信息,output 是排好序的商品列表。推荐系统的一个挑战就是同时达到 memorization(记忆化)和 generalization(泛化)。
- memorization:
- 大致可定义为学习特征或商品的频繁共现关系并探索相关性
- 与用户已经执行操作的商品直接相关
- 可以通过使用稀疏特征上的交叉乘积变换(cross-product transformation)有效地实现,如
AND(installed_app=netfix, impression_app=pandora)
- generalization:
- 基于相关性的传递性探索之前很少出现或没出现过的新特征组合
- 倾向于提高推荐结果的多样性
- 可以通过使用不太精细的特征增加泛化,如
AND(installed_category=video, impression_category=music)
,一般需要人工进行特征处理
矩阵分解
本文主要介绍推荐系统中的矩阵分解技术。之前在协同过滤 | Yam中分别提到过基于用户和商品的方法,它们分别基于相似用户和相似物品完成推荐。但是协同过滤有个很大的问题就是数据稀疏,以一个电商网站为例,可能大部分的商品都只有很少的用户购买,而热门商品又有很多人购买。这导致的结果就是难以找到相似的用户(基于用户的协同过滤)或头部效应(基于商品的协同过滤)。这一问题是协同过滤算法的天然缺陷,表现出来的其实正是 2-8 定律和马太效应,再往深了想,从客观角度看是因为信息不对称,主观角度看则是因为羊群效应。所以,很自然的想法就是将稀疏表征稠密化。稠密化表示也就意味着特征的多元化,直观来看自然是表征能力和泛化能力更强。矩阵分解正是这样的技术。
协同过滤
协同过滤是推荐领域的经典算法,它的思想非常朴素:和我们兴趣相似的人喜好也类似。所以,自然而然,只要找到和我们兴趣相似的人,将他们喜好的商品(又不在我们喜好商品的列表中)推送给我们就完成了推荐任务。本文主要介绍该算法
推荐系统概述
Funnel Transformer 论文笔记
模型融合
模型融合思想很简单,就是将多种不同类型的模型结合起来共同预测结果——”三个臭皮匠,顶个诸葛亮“。模型融合主要有以下方法:
- 平均:简单平均和加权平均
- 投票:简单投票和加权投票
- stacking:多层模型,利用预测结果再拟合预测
- blending:选取部分数据预测,得到的值作为新特征