引言
AIAIAIAI
前排提示,文末有大模型AGI-CSDN独家资料包哦!
AI
AI
AI
AI
2.模型如何学习?
模型学习的核心步骤如下:
- 喂数据:提供大量样本,让模型了解世界的“规律”。
- 定义目标:明确任务,例如判断图片中是狗还是猫。
- 反复训练:模型不断调整其“参数”(类似脑回路),以优化对数据的理解。
- 测试与应用:在实际场景中运行模型,评估其效果。
AI
AI
- 分类模型:识别类别,例如垃圾邮件分类。
- 回归模型:预测数值,例如房价预测。
- 生成模型:创造内容,例如生成图像或文本。
4.什么是“大模型”?
AIGPT
二、开发环境准备
在开始训练模型前,我们需要搭建一个“工作环境”,就像进入厨房前需要准备好工具一样。以下是必备的“厨具”:
Python
PythonAIPythonAdd Python to PATH
2.安装开发工具
推荐以下两款工具,便于你编写和调试代码:
Jupyter NotebookAIVS Code
Python
AI
pip install numpy pandas matplotlib seaborn scikit-learn tensorflow
NumPyPandasMatplotlib/SeabornScikit-learnTensorFlow
AI
1.数据集来源
AI
本教程选用:加利福尼亚房价数据集
from sklearn.datasets import fetch_california_housing
import pandas as pd
# 加载 California Housing 数据集
housing = fetch_california_housing()
data = pd.DataFrame(housing.data, columns=housing.feature_names)
data['PRICE'] = housing.target
# 查看数据
print(data.head())
运行结果:
2.数据探索与可视化
在训练模型之前,数据探索是至关重要的一步。通过探索,我们可以了解数据的结构、分布特征以及特征间的关系,为后续的数据清洗和建模奠定基础。
(1) 数据基本信息
# 查看数据统计信息
print(data.describe())
运行结果:
)
(2) 可视化分布
import matplotlib.pyplot as plt
import seaborn as sns
# 绘制房价分布图
sns.histplot(data['PRICE'], kde=True, bins=20)
plt.title("Price Distribution") # 房价分布
plt.xlabel("Price") # 房价
plt.ylabel("Frequency") # 频数
plt.show()
运行结果:
(3) 相关性分析
# 绘制特征相关性热力图
plt.figure(figsize=(10, 8))
sns.heatmap(data.corr(), annot=True, cmap='coolwarm')
plt.title("Feature Correlation Heatmap") # 特征相关性热力图
plt.show()
运行结果:
3.数据清洗与预处理
在训练模型之前,数据需要经过“加工”,以便让模型更高效地学习。常见的清洗与预处理步骤包括检查缺失值、处理异常值和标准化特征。
(1) 检查缺失值
# 检查缺失值
print(data.isnull().sum())
运行结果:
(2) 数据标准化
from sklearn.preprocessing import StandardScaler
# 特征标准化
scaler = StandardScaler()
features = data.drop('PRICE', axis=1)
target = data['PRICE']
features_scaled = scaler.fit_transform(features)
四、训练一个简单模型
我们从最基础的线性回归模型开始。尽管它不是“大模型”,但简单直观,可以帮助你快速了解 AI 模型的训练流程,并打下坚实的基础。
1.划分训练集和测试集
from sklearn.model_selection import train_test_split
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(features_scaled, target, test_size=0.2, random_state=42)
2.训练线性回归模型
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
# 初始化模型
model = LinearRegression()
# 训练模型
model.fit(X_train, y_train)
# 预测
y_pred = model.predict(X_test)
# 评估性能
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print(f"均方误差(MSE):{mse}")
print(f"R2 分数:{r2}")
运行结果:
3.模型效果解读
MSER²
AI
五、深度学习初探
在上一部分,我们学习了基础的线性回归模型。现在,让我们进入更强大的深度学习领域,训练一个多层神经网络,使模型更智能、更深刻。

1.什么是深度学习?
Deep Learning
如果线性回归是“单核处理器”,那么深度学习就是“多核加速器”。它模拟人脑的神经元,用层层堆叠的“神经网络”来处理数据。换句话说,深度学习就是“开挂的人脑仿真”。
- 输入层:接收数据(例如,图片的像素值)。
- 隐藏层:逐步提取数据特征,就像拆解复杂问题成多个小问题。
- 输出层:输出结果(例如,判断图片中是猫还是狗)。
2.构建一个简单神经网络
TensorFlow
TensorFlow
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Input
# 定义模型
nn_model = Sequential([
Input(shape=(X_train.shape[1],)), # 显式定义输入层
Dense(64, activation='relu'), # 第一层隐藏层
Dense(32, activation='relu'), # 第二层隐藏层
Dense(1) # 输出层,预测房价
])
# 编译模型
nn_model.compile(optimizer='adam', loss='mse', metrics=['mae'])
# 打印模型结构
nn_model.summary()
运行结果:
Dense64activation='relu'adammseMean Squared Error
(2) 训练神经网络
# 开始训练
history = nn_model.fit(
X_train, y_train,
epochs=100, # 训练100轮
batch_size=32, # 每次使用32条数据
validation_split=0.2, # 20%数据用于验证
verbose=1 # 显示训练进度
)
epochsbatch_size32validation_split
运行结果:
3.测试模型性能
训练完成后,用测试集评估模型:
# 模型评估
test_loss, test_mae = nn_model.evaluate(X_test, y_test)
print(f"测试集均方误差(MSE):{test_loss}")
print(f"测试集平均绝对误差(MAE):{test_mae}")
运行结果:
用模型预测房价
# 用测试集数据预测
predictions = nn_model.predict(X_test)
# 显示部分预测结果
for i in range(5):
print(f"预测值:{predictions[i][0]:.2f}, 实际值:{y_test.iloc[i]:.2f}")
运行结果:
预测值:0.11, 实际值:0.48
预测值:0.02, 实际值:0.46
预测值:0.12, 实际值:5.00
预测值:0.18, 实际值:2.19
预测值:0.01, 实际值:2.78
解读预测结果:
- 如果预测值与实际值接近,说明模型的性能较好,能够准确地进行预测。
- 如果预测值与实际值相差较大,说明模型的预测能力不足。这种情况下,可能需要调整模型参数、改进数据预处理步骤,或者使用更复杂的模型来提升预测效果。
4.可视化训练过程
LossMAE
import matplotlib.pyplot as plt
# 绘制训练和验证损失
plt.plot(history.history['loss'], label='Training Loss') # 训练损失
plt.plot(history.history['val_loss'], label='Validation Loss') # 验证损失
plt.xlabel('Epochs')
plt.ylabel('Loss')
plt.legend()
plt.title('Loss Changes During Training') # 训练过程中的损失变化
plt.show()
运行结果:
图表分析:
- 模型表现良好:如果训练损失逐渐减小,且验证损失稳定在较低的水平,说明模型学习效果较好,性能良好。
- 可能存在过拟合:如果训练损失持续减小,而验证损失明显增大,可能表明模型出现过拟合,即模型过度拟合训练数据,对新数据的泛化能力较差。
六、模型优化
在完成基础训练后,我们可以通过以下方法进一步提升模型性能。
1.什么是过拟合和欠拟合?
- 过拟合:模型在训练集上表现很好,但在测试集上效果较差,就像考试时只会做练习册上的题,对新题束手无策。
- 欠拟合:模型在训练集上的表现也不好,说明它的学习能力不足,连基本规律都没掌握。
解决方案:
L1L2
2.添加正则化
在模型中添加正则化方法可以有效防止过拟合。例如:
Dropout
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Input
nn_model = Sequential([
Input(shape=(X_train.shape[1],)), # 显式定义输入形状
Dense(64, activation='relu'),
Dropout(0.5), # 随机丢弃50%的神经元
Dense(32, activation='relu'),
Dense(1) # 输出层
])
3.调整学习率
学习率是优化器中控制模型参数更新步伐的关键参数。
- 学习率过高:可能导致模型无法收敛,甚至出现震荡,无法找到最优解。
- 学习率过低:可能使模型收敛速度过慢,延长训练时间。
from tensorflow.keras.optimizers import Adam
# 使用较小的学习率
nn_model.compile(optimizer=Adam(learning_rate=0.001), loss='mse', metrics=['mae'])
七、构建一个“简易大模型”
在这一部分,我们将基于深度学习架构,构建一个更复杂的模型,同时应用优化策略以提升性能。
1.增加网络深度
通过增加隐藏层的数量和每层的神经元规模,模型的表达能力会显著增强,从而更好地捕捉复杂的模式和特征关系。但需要注意,增加网络深度的同时可能导致过拟合,因此需要搭配正则化等策略。
nn_model = Sequential([
Input(shape=(X_train.shape[1],)), # 明确定义输入形状
Dense(128, activation='relu'), # 第一隐藏层
Dense(64, activation='relu'), # 第二隐藏层
Dense(32, activation='relu'), # 第三隐藏层
Dense(1) # 输出层
])
2.使用更多数据
当数据量有限时,模型可能难以学习到充分的特征。以下是两种有效的解决方法:
- 生成数据:通过数据增强技术(如旋转、翻转、缩放等)对现有数据进行变换,生成更多样本,从而提升模型的泛化能力。
- 迁移学习:利用在大规模数据集上预训练的模型,将其学习到的特征迁移到当前任务中,特别适用于小数据集的复杂问题。
3.增加模型参数与层数
“大模型”之所以强大,其核心在于拥有更多的神经元、更复杂的网络结构和更强的表达能力。增加模型的层数和神经元数量可以有效提升模型性能,但同时也需要注意防止过拟合。
以下是一个包含三层隐藏层的神经网络示例:
# 构建更深的神经网络
nn_model = Sequential([
Input(shape=(X_train.shape[1],)), # 使用 Input 层显式定义输入形状
Dense(256, activation='relu'), # 第一隐藏层,256个神经元
Dense(128, activation='relu'), # 第二隐藏层
Dense(64, activation='relu'), # 第三隐藏层
Dense(1) # 输出层
])
# 编译模型
nn_model.compile(optimizer=Adam(learning_rate=0.0001), loss='mse', metrics=['mae'])
# 训练模型
history = nn_model.fit(
X_train, y_train,
epochs=200, # 增加训练轮数
batch_size=64, # 调整批量大小
validation_split=0.2, # 20%数据用于验证
verbose=1 # 显示训练过程
)
4.监控训练过程
EarlyStoppingpatience
from tensorflow.keras.callbacks import EarlyStopping
# 添加早停法
early_stop = EarlyStopping(monitor='val_loss', patience=10, restore_best_weights=True)
history = nn_model.fit(
X_train, y_train,
epochs=200,
batch_size=64,
validation_split=0.2,
callbacks=[early_stop] # 应用早停
)
5.数据增强与扩展
当数据量不足以支撑复杂模型时,数据增强是一种有效的策略,可以通过对原始数据进行变换来生成更多样本,从而提高模型的泛化能力。
(1) 什么是数据增强?
数据增强是对原始数据进行各种变换(如旋转、缩放、裁剪、翻转等),以人为方式扩大数据集规模。它不仅可以提升模型在训练数据上的表现,还能增强模型对未见数据的鲁棒性。
(2) 数据增强示例
TensorFlow
from tensorflow.keras.preprocessing.image import ImageDataGenerator
# 定义数据增强器
datagen = ImageDataGenerator(
rotation_range=20, # 随机旋转角度
width_shift_range=0.1, # 水平平移
height_shift_range=0.1, # 垂直平移
horizontal_flip=True # 水平翻转
)
# 对训练数据应用数据增强
datagen.fit(X_train)
非图像数据增强
对于非图像数据(如表格或时间序列数据),可以采用其他数据增强方法,例如:
- 添加随机噪声:在原始数据上加入少量随机噪声,模拟更多样本。
- 随机变换:对原始数据的特征进行随机缩放、平移等操作。
# 添加随机噪声
def add_noise(data, noise_level=0.1):
noise = noise_level * np.random.normal(size=data.shape)
return data + noise
# 应用噪声增强
X_train_augmented = add_noise(X_train)
GPU/TPU
GPUTPU
CUDAcuDNN
NVIDIA
CUDA ToolkitGPUcuDNN
GPU
import tensorflow as tf
print("GPU 是否可用:", tf.config.list_physical_devices('GPU'))
Google Colab
GPUGoogleColab
RuntimeChange runtime typeGPUGPU
Google ColabGPU
八、模型部署
AI
1.保存与加载模型
TensorFlow
# 保存模型
nn_model.save('my_ai_model')
# 加载模型
from tensorflow.keras.models import load_model
loaded_model = load_model('my_ai_model')
FlaskAPI
FlaskAPIHTTP
API
Flask
from flask import Flask, request, jsonify
import numpy as np
from tensorflow.keras.models import load_model
# 加载模型
model = load_model('my_ai_model')
app = Flask(__name__)
@app.route('/predict', methods=['POST'])
def predict():
data = request.json
features = np.array(data['features']).reshape(1, -1)
prediction = model.predict(features)
# 返回预测结果
return jsonify({
'success': True,
'prediction': float(prediction[0][0]) # 将预测值转换为浮点数返回
})
if __name__ == '__main__':
app.run(debug=True)
API
FlaskPostmanHTTPcurlAPI
POST /predict
{
"features": [0.1, -0.2, 0.5, 0.3, 0.7, -1.1, 0.4, 0.9, 1.0, -0.5, 0.8, -0.6, 0.3]
}
返回示例:
{
"success": true,
"prediction": 24.56
}
Streamlit
StreamlitPython
Streamlit
Python
import streamlit as st
import numpy as np
from tensorflow.keras.models import load_model
# 加载模型
model = load_model('my_ai_model')
# 设置标题
st.title("House Price Prediction") # 房价预测模型
# 输入特征值
features = []
for i in range(13):
features.append(st.number_input(f"Feature {i+1}"))
if st.button("Predict"):
# 使用模型进行预测
prediction = model.predict(np.array(features).reshape(1, -1))
st.write(f"Predicted Price:{float(prediction[0][0]:,.2f)}")
Streamlit
streamlit run app.py
结语
AIAIAI
AIAI
AIAI
AIAIAI
读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用
对于0基础小白入门:
如果你是零基础小白,想快速入门大模型是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。
包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!
保证100%免费
AI大模型学习路线
如果你对AI大模型入门感兴趣,那么你需要的话可以点击这里大模型重磅福利:入门进阶全套104G学习资源包免费分享!
扫描下方csdn官方合作二维码获取哦!
这是一份大模型从零基础到进阶的学习路线大纲全览,小伙伴们记得点个收藏!
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
100套AI大模型商业化落地方案
大模型全套视频教程
200本大模型PDF书籍
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
LLM面试题合集
大模型产品经理资源合集
大模型项目实战合集
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓