机器学习

  1. 机器学习是让计算机利用数据学习如何完成任务
  2. 机器学习允许计算机通过分析学习数据来自我改进以及作出决策

房价预测

利用 scikit-learn 进行预测

数据集

housing_data.csv

面积 卧室数量 地理位置 售价
100 2 1 300
150 3 2 450
120 2 2 350
80 1 1 220

线性回归

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
import pandas as pd

# 加载数据集
data = pd.read_csv("housing_data.csv") # 假设这是我们的房屋数据

# 准备数据
X = data[['面积', '卧室数量', '地理位置']] # 特征
y = data['售价'] # 目标变量

# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 初始化模型
model = LinearRegression()

# 训练模型
model.fit(X_train, y_train)

# 使用模型进行预测
predictions = model.predict(X_test)

# 现在,`predictions`包含了我们模型预测的房价
print(predictions) # [462.45942572]
  1. 特征 X 是一个二维数组,包含 3 列 - 面积 + 卧室数量 + 地理位置
  2. 目标 y 是一个一维数组,包含 1 列 - 售价
  3. train_test_split
    • 将数据集分割成训练集测试集
    • 训练集用于训练模型,而测试集用于评估模型性能
    • 评估的目的 - 检查模型对于未见过的数据的泛化能力
  4. test_size 表示测试集在整个数据集中的比例
  5. random_state 为整数,用于控制随机数生成器的状态
    • 伪随机 - 提供一个确切的值可以确保每次分割都是相同

小结

  1. 使用机器学习从数据学习规律,并应用这些规律来作出预测
  2. 机器学习的真正魅力在于它的广泛使用
    • 简单任务 - 房价预测
    • 复杂任务 - 自动驾驶
  3. LLM 实际是各种机器学习技术的叠加

深度学习

机器学习的重要分支

概述

  1. 深度学习主要以深度神经网络为主 - Deep Neural Networks - DNNs
  2. 神经网络的结构模拟人类大脑,由多层神经元组成
  3. 人类大脑
    • 大约 1000 亿个神经元,每个神经元通过突触与其它 1000 个神经元产生连接
    • 大约 100 万亿个突触
  4. LLM 的参数规模 ≈ 大脑的突触数量
    • GPT-3 - 1750 亿个参数 - 1.75 亿个神经元
    • 智商约定于人类的 0.175%
  5. 深度学习的强大之处 - 深度神经网络
    • 一个多层的神经网络结构,每一层都可以学习不同级别的特征

图片识别

识别图片中是否有猫

  1. 准备数据
    • 训练集 + 测试集
  2. 构建模型
    • 在构建神经网络时,可以让前面的层学习边缘纹理
    • 更深的层则学习如何组合这些特征来识别更复杂的形状和对象 - 猫耳朵、猫鼻子
  3. 训练模型
    • 输入大量的图片来训练网络
    • 通过调整内部参数(权重)使得预测错误最小化
    • 相比于 LLM,不具备很强的泛化迁移能力
  4. 评估+使用
    • 训练完成后,可以用模型来对图片进行分类

层类型

Layer Desc
输入层 接收原始数据输入 - 如图片像素值等
隐藏层 多层级,每一层通过数学函数转换数据,逐步提取学习数据的特征
较低层级 - 学习简单特征,如边缘和纹理
更深层级 - 学习复杂特征,如对象的部分和整体特征
输出层 根据学到的特征作出最终的预测或者分类

反向传播

  1. 在训练过程中,模型通过反向传播算法自动调整内部参数 - 即权重或者偏差
  2. 目的 - 最小化模型预测和实际结果之间的差异
  3. 整个过程需要大量的数据计算资源

学习过程

机器学习的工程化实践

定义问题

LLM 具有很好的泛化迁移能力,不需要预先定义问题

  1. 明确希望机器学习解决的问题
  2. 分类问题 / 回归问题 / 聚类问题

收集数据

  1. 数据是机器学习的基础,收集足够多质量好的数据
  2. 收集方式 - 公开数据集 / 公司内部数据 / 网络爬虫
  3. GPT-3 的数据集为 45TB,其中 Common Crawl 占据大约 60%

预处理数据

  1. 收集到的原始数据往往是杂乱无章
  2. 数据预处理 - 将原始数据转换成一直更适合机器学习算法处理的格式
  3. 步骤 - 处理缺失值、异常值、数据标准化、特征选择等
  4. GPT-3 的 45TB 的数据集,经过预处理,生成大概 750GB 的高质量数据

分割数据

  1. 将数据分为训练集测试集、验证集(可选)
  2. 训练集用于训练模型,而测试集用于评估模型性能
  3. 评估的目的 - 检验模型对未知数据泛化能力

选择模型

根据问题类型数据特点,选择合适的机器学习模型

模型类型 学习类型 应用场景
线性回归 监督学习 预测数值型数据
逻辑回归 监督学习 二分类问题
决策树 监督学习 分类、回归问题
随机深林 监督学习 分类、回归、处理大量特征
支持向量机 - SVM 监督学习 分类、回归问题
梯度提升树 监督学习 分类、回归任务
K 最近邻 - K-NN 监督学习 分类、回归、推荐系统
神经网络 / 深度学习 监督学习 图像识别、语音识别、NLP 等
K-means 聚类 无监督学习 数据聚类
层次聚类 无监督学习 数据聚类、发现数据层次结构
主成分分析 - PCA 无监督学习 降维、特征抽取
自编码器 无监督学习 降维、特征学习、数据压缩
Q 学习 强化学习 无模型强化学习
深度 Q 网络 DQN 强化学习 处理高维状态空间
策略梯度 强化学习 直接学习决策策略

训练模型

  1. 使用训练数据训练选定的模型
  2. 模型会尝试学习数据中的规律关系,以便在遇到新数据时能够作出准确的预测分类
  3. 模型可能会自动调整参数(权重)、自动测试、并使得效果最好 - 成本
  4. GPT-3 的单次训练成本为 450 万美元

评估模型

  1. 使用测试集评估模型的性能
  2. 常用的评估指标包括准确率召回率F1 分数
  3. 评估过程可能会揭示模型的不足之处,需要回到前面的步骤进行调整
  4. 有各种各样的模型性能评估基准 - MMLU / CEval / GSM8K 等

https://www.superclueai.com/

image-20240818095108938

调优模型

参数调优 + 模型优化

  1. 根据模型在测试集上的表现,调整模型的参数或者进行其它优化,来提供模型性能
  2. 调优过程可能反复进行多次,包含在训练微调的过程中

部署模型

  1. 当模型的推理效果达到预期性能后,可以将其部署到实际应用中
  2. 部署后,模型将开始对真实的数据进行推理

监控维护

  1. 模型部署后,需要持续监控性能,并根据新收集到数据定期进行维护和更新
  2. 随着时间推移数据分布可能会发生变化,即概念偏移,可能会导致模型性能下降
  3. 模型的维护数据
    • 模型开发者主动进行收集
    • 在公开产品内由用户反馈 - ChatGPT / ChatGLM - 实时用户反馈 - RLHF