LLM Core - Machine Learning Concept
机器学习
- 机器学习是让计算机利用数据来学习如何完成任务
- 机器学习允许计算机通过分析和学习数据来自我改进以及作出决策
房价预测
利用 scikit-learn 进行预测
数据集
housing_data.csv
面积 | 卧室数量 | 地理位置 | 售价 |
---|---|---|---|
100 | 2 | 1 | 300 |
150 | 3 | 2 | 450 |
120 | 2 | 2 | 350 |
80 | 1 | 1 | 220 |
线性回归
1 | from sklearn.model_selection import train_test_split |
- 特征 X 是一个二维数组,包含 3 列 - 面积 + 卧室数量 + 地理位置
- 目标 y 是一个一维数组,包含 1 列 - 售价
- train_test_split
- 将数据集分割成训练集和测试集
- 训练集用于训练模型,而测试集用于评估模型性能
- 评估的目的 - 检查模型对于未见过的数据的泛化能力
- test_size 表示测试集在整个数据集中的比例
- random_state 为整数,用于控制随机数生成器的状态
- 伪随机 - 提供一个确切的值可以确保每次分割都是相同的
小结
- 使用机器学习从数据中学习规律,并应用这些规律来作出预测
- 机器学习的真正魅力在于它的广泛使用
- 简单任务 - 房价预测
- 复杂任务 - 自动驾驶
- LLM 实际是各种机器学习技术的叠加
深度学习
机器学习的重要分支
概述
- 深度学习主要以深度神经网络为主 - Deep Neural Networks - DNNs
- 神经网络的结构模拟了人类大脑,由多层神经元组成
- 人类大脑
- 大约 1000 亿个神经元,每个神经元通过突触与其它 1000 个神经元产生连接
- 大约 100 万亿个突触
- LLM 的参数规模 ≈ 大脑的突触数量
- GPT-3 - 1750 亿个参数 - 1.75 亿个神经元
- 智商约定于人类的 0.175%
- 深度学习的强大之处 - 深度神经网络
- 一个多层的神经网络结构,每一层都可以学习到不同级别的特征
图片识别
识别图片中是否有猫
- 准备数据
- 训练集 + 测试集
- 构建模型
- 在构建神经网络时,可以让前面的层学习边缘和纹理
- 更深的层则学习如何组合这些特征来识别更复杂的形状和对象 - 猫耳朵、猫鼻子
- 训练模型
- 输入大量的图片来训练网络
- 通过调整内部参数(权重)使得预测错误最小化
- 相比于 LLM,不具备很强的泛化迁移能力
- 评估+使用
- 训练完成后,可以用模型来对图片进行分类
层类型
Layer | Desc |
---|---|
输入层 | 接收原始数据输入 - 如图片像素值等 |
隐藏层 | 多层级,每一层通过数学函数转换数据,逐步提取和学习数据的特征 较低层级 - 学习简单特征,如边缘和纹理 更深层级 - 学习复杂特征,如对象的部分和整体特征 |
输出层 | 根据学到的特征作出最终的预测或者分类 |
反向传播
- 在训练过程中,模型通过反向传播算法自动调整其内部参数 - 即权重或者偏差
- 目的 - 最小化模型预测和实际结果之间的差异
- 整个过程需要大量的数据和计算资源
学习过程
机器学习的工程化实践
定义问题
LLM 具有很好的泛化迁移能力,不需要预先定义问题
- 明确希望机器学习解决的问题
- 分类问题 / 回归问题 / 聚类问题
收集数据
- 数据是机器学习的基础,收集足够多、质量好的数据
- 收集方式 - 公开数据集 / 公司内部数据 / 网络爬虫
- GPT-3 的数据集为 45TB,其中 Common Crawl 占据大约 60%
预处理数据
- 收集到的原始数据往往是杂乱无章的
- 数据预处理 - 将原始数据转换成一直更适合机器学习算法处理的格式
- 步骤 - 处理缺失值、异常值、数据标准化、特征选择等
- GPT-3 的 45TB 的数据集,经过预处理,生成大概 750GB 的高质量数据
分割数据
- 将数据分为训练集、测试集、验证集(可选)
- 训练集用于训练模型,而测试集用于评估模型性能
- 评估的目的 - 检验模型对未知数据的泛化能力
选择模型
根据问题类型和数据特点,选择合适的机器学习模型
模型类型 | 学习类型 | 应用场景 |
---|---|---|
线性回归 | 监督学习 | 预测数值型数据 |
逻辑回归 | 监督学习 | 二分类问题 |
决策树 | 监督学习 | 分类、回归问题 |
随机深林 | 监督学习 | 分类、回归、处理大量特征 |
支持向量机 - SVM | 监督学习 | 分类、回归问题 |
梯度提升树 | 监督学习 | 分类、回归任务 |
K 最近邻 - K-NN | 监督学习 | 分类、回归、推荐系统 |
神经网络 / 深度学习 | 监督学习 | 图像识别、语音识别、NLP 等 |
K-means 聚类 | 无监督学习 | 数据聚类 |
层次聚类 | 无监督学习 | 数据聚类、发现数据层次结构 |
主成分分析 - PCA | 无监督学习 | 降维、特征抽取 |
自编码器 | 无监督学习 | 降维、特征学习、数据压缩 |
Q 学习 | 强化学习 | 无模型强化学习 |
深度 Q 网络 DQN | 强化学习 | 处理高维状态空间 |
策略梯度 | 强化学习 | 直接学习决策策略 |
训练模型
- 使用训练数据训练选定的模型
- 模型会尝试学习数据中的规律和关系,以便在遇到新数据时能够作出准确的预测和分类
- 模型可能会自动调整参数(权重)、自动测试、并使得效果最好 - 成本
- GPT-3 的单次训练成本为 450 万美元
评估模型
- 使用测试集评估模型的性能
- 常用的评估指标包括准确率、召回率、F1 分数等
- 评估过程可能会揭示模型的不足之处,需要回到前面的步骤进行调整
- 有各种各样的模型性能评估基准 - MMLU / CEval / GSM8K 等
调优模型
参数调优 + 模型优化
- 根据模型在测试集上的表现,调整模型的参数或者进行其它优化,来提供模型性能
- 调优过程可能反复进行多次,包含在训练和微调的过程中
部署模型
- 当模型的推理效果达到预期性能后,可以将其部署到实际应用中
- 部署后,模型将开始对真实的数据进行推理
监控维护
- 模型部署后,需要持续监控其性能,并根据新收集到数据定期进行维护和更新
- 随着时间推移,数据分布可能会发生变化,即概念偏移,可能会导致模型性能下降
- 模型的维护数据
- 模型开发者主动进行收集
- 在公开产品内由用户反馈 - ChatGPT / ChatGLM - 实时用户反馈 - RLHF
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.