机器学习|无监督学习、推荐系统与强化学习
要来台风了🌀,真让人惶恐。祝食用愉快~🫠
1. 无监督学习:聚类、异常检测与降维
-
聚类 (Clustering) - K-Means 算法:
- 优化目标(畸变函数 Distortion Function):
其中 是样本 当前被分配的聚类中心索引, 是第 个聚类中心的位置。
- 算法迭代: 1. 分配步骤:保持 不变,将每个样本分配给距离最近的中心 ;2. 移动步骤:保持分配不变,重新计算每个类内所有样本的均值,作为新的 。
- 初始化: 采用随机初始化。由于易陷入局部最优,应进行多次随机初始化(如 50-100 次),选择畸变函数 最小的作为最终结果。
- 选择聚类数量 : 1. 肘部法则 (Elbow Method);2. 结合下游业务指标需求(如衣服尺寸分为S/M/L三类或S/M/L/XL四类)。
-
异常检测 (Anomaly Detection):
- 高斯正态分布模型: 假设每个特征 服从一维高斯分布。
系统整体概率密度为各特征概率的乘积:
- 当 时,判定为异常。
- 特征选择与变换: 异常检测对非高斯特征很敏感。若特征分布极偏,应使用对数变换 或幂次变换 将其转化为近似高斯分布。
-
异常检测 vs 监督学习:
- 异常检测: 适用于正样本(异常)极其稀少(个),负样本(正常)极多;且未来的异常可能呈现出完全未知的全新模式。
- 监督学习: 适用于正负样本都足够多,且未来预测的模式与训练集中的模式高度一致。
-
降维 (Dimension Reduction) - 主成分分析 PCA:
- 原理: 寻找一个低维子空间,将高维数据投影于其上,使得投影误差(Projection Error)最小,同时最大程度地保留数据的方差(信息量)。
- 在使用 PCA 前,必须对特征进行均值归一化 (Mean Normalization) 和特征缩放。
2. 推荐系统 (Recommender Systems)
个性化推荐是互联网最核心的落地场景。
- 基于项目特征与协同过滤 (Collaborative Filtering):
设用户数 ,项目数 。 表示用户 对项目 进行了评分, 为评分值。
- 数学形式: 每个用户有一个偏好向量 和偏置 ,每个项目有一个特征表示向量 。预测评分为:
- 协同过滤联合损失函数 (Joint Cost Function):
同时学习所有用户的 和所有项目的特征 :
- 均值归一化 (Mean Normalization):
对于一个完全没有评分的新用户,直接优化会使其 ,导致所有预测评分均为0。解决方法是将每个项目的评分减去该项目的平均分 ,在模型预测出 后再加上 ,使新用户的预测评分为项目均值。
- 发现相关项目: 通过计算学到的特征向量间的余弦距离或欧氏距离 来寻找相似项目。
-
基于内容的过滤 (Content-Based Filtering) - 深度学习双塔模型:
-
架构设计:
用户特征 (x_u) ➔ [ 用户神经网络 ] ➔ 向量 v_u (长度为k) ──┐
├─ 点积 ➔ 预测评分
项目特征 (x_m) ➔ [ 项目神经网络 ] ➔ 向量 v_m (长度为k) ──┘双塔网络结构分别拟合用户特征 和项目特征 ,输出相同维度的嵌入向量 和 。 评分预测为:
- 工业级推荐:检索与重排 (Retrieval & Ranking):
-
面对海量商品(百万级/千万级),无法直接用复杂的双塔模型计算每个商品的得分。
- 检索阶段 (Retrieval): 采用简单快速的规则或轻量模型(如协同过滤、相似分类等),快速筛选出几百个候选项目。
- 重排阶段 (Ranking): 将检索出的候选项目送入深度双塔模型进行精准打分、排序,并结合去重、多样性控制等业务逻辑展示给用户。
3. 强化学习 (Reinforcement Learning)
强化学习解决了智能体在复杂环境中如何通过试错,自主学习最优决策路径(Policy)的问题。
┌──────────────┐
│ 环境 │
└─┬──────────▲─┘
│ 状态 s │ 动作 a
│ 奖励 R │
┌─▼──────────┴─┐
│ 智能体 │
└──────────────┘
-
核心要素:
- 状态 (State, ):智能体当前所处的处境。
- 动作 (Action, ):智能体可做出的决策。
- 奖励 (Reward, ):环境对智能体动作的即时反馈。
- 折扣因子 (Discount Factor, ):用于平衡即时奖励与远期回报。
- 回报 (Return, ):
从 时刻开始的累计折扣奖励:
- 状态-动作值函数 (Q-Function, ):
在状态 下执行动作 ,之后全部采取最优策略所能获得的期望总回报。
- 贝尔曼方程 (Bellman Equation):
Q函数的基石,体现了强化学习的动态规划思想。
即:当前状态-动作对的价值,等于立即获得的奖励,加上到达下一状态 后,采取最优动作 所能获得的最大期望折现价值。
- 连续状态空间与 Deep Q-Network (DQN):
在火星探测器、月球着陆器等连续控制任务中,状态空间是连续且无限的(如位置、角度、速度)。我们无法构建 Q 表格,必须使用神经网络来逼近 函数。
- 改进的神经网络架构: 网络的输入为状态向量 ,输出层直接输出该状态下所有可行离散动作的 。
- 探索与利用 (Exploration vs Exploitation) - -贪婪策略:
为了避免陷入局部最优,智能体需要探索环境。
- 以 的概率随机选择动作(探索,发现新策略)。
- 以 的概率选择当前最优动作 (利用,收割已知红利)。
随着训练的进行, 会逐渐衰减。
-
训练稳定性改进:
- 经验回放 (Experience Replay / Mini-batch Updates):
智能体的历史轨迹 会被存入回放池。训练时,随机抽取小批量(Mini-batch)的非相关历史数据进行梯度下降,打破了时间序列数据间的强相关性,使训练更加稳定。
- 目标网络与软更新 (Target Network & Soft Updates):
为了防止网络预测的 值与目标值互相追逐导致振荡,使用一个结构相同但参数更新缓慢的“目标网络”来计算贝尔曼方程中的目标值 。 每次训练更新主网络参数 后,对目标网络参数 进行软更新:
- 强化学习的现状与局限 (State of RL):
强化学习在游戏(如围棋、Atari)及受控物理模拟环境(如月球着陆器、机器人操作)中表现卓越。但在实际工程中,它面临着样本效率低下(需要数百万次交互)以及仿真到现实(Sim-to-Real)鸿沟的巨大挑战(正如吴恩达与 Chelsea Finn 在探讨中所指出,目前在机器人及自动驾驶等物理实体的落地中,安全性和数据高效获取依然是前沿攻坚方向)。