一、监督学习:基于标记数据的映射学习范式
1.1 核心概念与理论框架
监督学习通过标记数据集(输入特征与输出标签一一对应)训练模型,目标是学习从输入空间到输出空间的映射函数。其核心假设是训练数据与真实数据服从相同分布,通过最小化预测值与真实标签的误差(如均方误差、交叉熵)优化模型参数。典型应用包括分类(输出离散标签)与回归(输出连续值),本质是利用 “监督信号” 引导模型学习数据内在规律。
1.2 核心算法与运作机制
1.2.1 算法分类
-
分类算法:逻辑回归、决策树、支持向量机(SVM)、随机森林等,适用于二分类或多分类任务。
-
回归算法:线性回归、多项式回归、梯度提升回归树(GBRT)等,用于预测连续型变量。
1.2.2 训练流程
-
数据预处理:清洗数据、特征工程(归一化 / 标准化)、划分训练集与测试集。
-
模型训练:通过梯度下降等优化算法最小化损失函数。
-
模型评估:使用准确率(分类)、均方根误差(回归)等指标验证泛化能力。
1.3 典型应用与代码实现
1.3.1 案例:鸢尾花分类(分类任务)
问题:基于花萼长度、花瓣宽度等特征,将鸢尾花分为 3 个品种。
代码实现:
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
# 加载数据并划分数据集
data = load_iris()
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=42)
# 训练决策树分类器
clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)
# 评估模型
accuracy = clf.score(X_test, y_test)
print(f"分类准确率:{accuracy:.4f}")
1.3.2 案例:房价预测(回归任务)
问题:根据房屋面积、房间数等特征预测房价。
代码实现:
from sklearn.datasets import fetch_housing
from sklearn.linear_model import LinearRegression
# 加载数据
data = fetch_housing()
X, y = data.data, data.target
# 训练线性回归模型
reg = LinearRegression()
reg.fit(X, y)
# 预测示例
sample_house = [[2.0, 3, 1.5, 20, 400, 3.5, 1.0]]
pred_price = reg.predict(sample_house)
print(f"预测房价:{pred_price[0]:.2f}万元")
二、无监督学习:挖掘数据隐含结构的探索性范式
2.1 核心概念与目标定位
无监督学习基于无标记数据(仅输入特征 X),通过数据内在相似性或分布规律发现隐含结构,目标是实现数据聚类、降维或关联规则挖掘。与监督学习不同,其不依赖预定义标签,更贴近真实数据场景(如海量未标注文本 / 图像),核心任务是揭示数据的潜在模式(如簇结构、低维流形)。
2.2 核心算法与技术路径
2.2.1 聚类算法
-
K-means:通过迭代优化质心位置,将数据划分为 K 个簇,最小化簇内误差平方和(Inertia)。
-
层次聚类:通过 “自底向上” 或 “自顶向下” 策略构建聚类树,基于距离矩阵合并或分裂簇。
2.2.2 降维算法
-
主成分分析(PCA):通过正交变换将高维数据映射到低维子空间,保留最大方差信息。
-
t-SNE:非线性降维方法,用于高维数据可视化,保持局部数据结构。
2.3 典型应用与代码实现
2.3.1 案例:客户分群(K-means 聚类)
问题:基于客户消费金额、频次、最近消费时间(RFM 特征)进行分群,优化营销策略。
代码实现:
from sklearn.cluster import KMeans
import pandas as pd
# 生成模拟数据(假设RFM特征)
data = pd.DataFrame({
'Recency': [1, 5, 3, 10, 8],
'Frequency': [10, 2, 5, 1, 3],
'Monetary': [500, 100, 300, 50, 200]
})
# 训练K-means模型
kmeans = KMeans(n_clusters=3, random_state=42)
data['Cluster'] = kmeans.fit_predict(data)
print("客户分群结果:", data['Cluster'].value_counts())
2.3.2 案例:图像降维(PCA)
问题:将 1024 维的人脸图像降至 50 维,保留主要特征用于后续分析。
代码实现:
from sklearn.decomposition import PCA
import numpy as np
# 生成模拟图像数据(100样本,1024特征)
X = np.random.rand(100, 1024)
# 应用PCA降维
pca = PCA(n_components=50)
X_reduced = pca.fit_transform(X)
print(f"降维后数据形状:{X_reduced.shape},方差解释率:{np.sum(pca.explained_variance_ratio_):.4f}")
三、强化学习:序列决策与环境交互的动态优化范式
3.1 核心概念与框架要素
强化学习研究智能体(Agent)在动态环境中通过 “试错” 与环境交互,学习最大化长期累积奖励的策略。核心要素包括:
-
状态(State):环境的当前观测值
;
-
动作(Action):智能体的决策
;
-
奖励(Reward):执行动作后获得的即时反馈
;
-
策略(Policy):状态到动作的映射
。
3.2 核心算法与学习模式
3.2.1 基于值函数的方法
-
Q-learning:学习动作值函数
,表示在状态
执行动作
后的预期累积奖励,通过贝尔曼方程迭代更新。
-
深度 Q 网络(DQN):结合深度神经网络近似
函数,处理高维状态空间(如 Atari 游戏画面)。
3.2.2 基于策略的方法
-
策略梯度(Policy Gradient):直接参数化策略
,通过梯度上升最大化期望奖励。
3.3 典型应用与代码实现
3.3.1 案例:平衡杆控制(Q-learning)
问题:训练智能体控制 CartPole 环境中的杆子保持平衡,状态为杆的角度、位置等,动作为向左 / 右推。
代码实现:
# 使用 OpenAI Gym
import gym
import numpy as np
env = gym.make('CartPole-v1')
Q = np.zeros((env.observation_space.n, env.action_space.n)) # 离散状态简化版示例
alpha, gamma, epsilon = 0.1, 0.99, 0.1
episodes = 1000
for episode in range(episodes):
state = env.reset()
done = False
while not done:
# 探索-利用策略
if np.random.uniform(0, 1) < epsilon:
action = env.action_space.sample()
else:
action = np.argmax(Q[state])
# 执行动作
next_state, reward, done, _ = env.step(action)
# Q值更新
Q[state, action] = Q[state, action] + alpha * (reward + gamma * np.max(Q[next_state]) - Q[state, action])
state = next_state
env.close()
print("Q-learning训练完成,平衡杆控制策略已习得")
四、三种学习范式的对比与融合趋势
4.1 核心差异对比
维度 | 监督学习 | 无监督学习 | 强化学习 |
---|---|---|---|
数据类型 | 标记数据(\(X, Y\)) | 无标记数据(X) | 序列交互数据(状态 - 动作 - 奖励) |
目标 | 拟合输入输出映射 | 发现数据内在结构 | 优化长期累积奖励策略 |
学习模式 | 批量训练(静态数据) | 无监督探索(静态数据) | 在线学习(动态环境交互) |
典型应用 | 分类、回归 | 聚类、降维 | 控制、游戏、机器人 |
4.2 魔兽争霸3中的人机行为逻辑
1. 基于预设规则
class Warcraft3AI:
def __init__(self):
self.resources = {"gold": 0, "lumber": 0}
self.units = {"peasant": 0, "footman": 0}
self.buildings = {"farm": 0, "barracks": 0}
def update_resources(self, gold, lumber):
self.resources["gold"] += gold
self.resources["lumber"] += lumber
def build_farm(self):
if self.resources["gold"] >= 100 and self.resources["lumber"] >= 50:
self.resources["gold"] -= 100
self.resources["lumber"] -= 50
self.buildings["farm"] += 1
print("Built a farm")
def build_barracks(self):
if self.resources["gold"] >= 200 and self.resources["lumber"] >= 100:
self.resources["gold"] -= 200
self.resources["lumber"] -= 100
self.buildings["barracks"] += 1
print("Built a barracks")
def train_peasant(self):
if self.resources["gold"] >= 100:
self.resources["gold"] -= 100
self.units["peasant"] += 1
print("Trained a peasant")
def train_footman(self):
if self.resources["gold"] >= 135 and self.buildings["barracks"] > 0:
self.resources["gold"] -= 135
self.units["footman"] += 1
print("Trained a footman")
def make_decision(self):
if self.resources["gold"] >= 100 and self.resources["lumber"] >= 50:
self.build_farm()
elif self.resources["gold"] >= 200 and self.resources["lumber"] >= 100:
self.build_barracks()
elif self.resources["gold"] >= 100:
self.train_peasant()
elif self.resources["gold"] >= 135 and self.buildings["barracks"] > 0:
self.train_footman()
# 示例运行
ai = Warcraft3AI()
ai.update_resources(500, 200)
ai.make_decision()
2. 监督学习的人机行为逻辑
监督学习通常需要大量的标注数据来训练模型。这里用一个简单的线性回归模型来预测资源的最优分配。
import numpy as np
from sklearn.linear_model import LinearRegression
# 假设我们有一些标注数据:资源数量和最优的建筑数量
data = np.array([
[500, 200, 3, 2], # [gold, lumber, farms, barracks]
[800, 300, 5, 3],
[1000, 400, 6, 4]
])
# 特征和目标
X = data[:, :2] # gold 和 lumber
y = data[:, 2:] # farms 和 barracks
# 训练模型
model = LinearRegression()
model.fit(X, y)
# 预测
def predict_buildings(gold, lumber):
return model.predict([[gold, lumber]])
# 示例运行
gold, lumber = 700, 250
predicted_buildings = predict_buildings(gold, lumber)
print(f"Predicted buildings: Farms={predicted_buildings[0][0]}, Barracks={predicted_buildings[0][1]}")
3. 无监督学习的人机行为逻辑
无监督学习可以用于聚类或降维,这里用K-Means聚类来对不同的游戏状态进行分类,从而选择不同的策略。
from sklearn.cluster import KMeans
# 假设我们有一些游戏状态数据
game_states = np.array([
[500, 200, 3, 2], # [gold, lumber, farms, barracks]
[800, 300, 5, 3],
[1000, 400, 6, 4],
[300, 100, 1, 0],
[600, 250, 4, 2]
])
# 聚类
kmeans = KMeans(n_clusters=2)
kmeans.fit(game_states)
# 预测
def get_strategy(gold, lumber, farms, barracks):
state = np.array([[gold, lumber, farms, barracks]])
cluster = kmeans.predict(state)
if cluster == 0:
return "Aggressive strategy"
else:
return "Defensive strategy"
# 示例运行
gold, lumber, farms, barracks = 600, 250, 4, 2
strategy = get_strategy(gold, lumber, farms, barracks)
print(f"Suggested strategy: {strategy}")
4. 强化学习的人机行为逻辑
强化学习通常用于训练智能体以最大化累积奖励。这里用一个简单的Q-learning算法来训练一个智能体。
import random
# 状态和动作
states = [(gold, lumber) for gold in range(0, 1000, 100) for lumber in range(0, 500, 50)]
actions = ["build_farm", "build_barracks", "train_peasant", "train_footman"]
# 初始化Q表
Q = {}
for state in states:
Q[state] = {action: 0 for action in actions}
# 超参数
alpha = 0.1 # 学习率
gamma = 0.9 # 折扣因子
epsilon = 0.1 # 探索率
# 训练
def train():
for episode in range(1000):
state = random.choice(states)
done = False
while not done:
if random.uniform(0, 1) < epsilon:
action = random.choice(actions)
else:
action = max(Q[state], key=Q[state].get)
next_state = state # 假设状态不变,实际应根据动作更新
reward = 0 # 假设奖励为0,实际应根据动作和状态计算
# 更新Q值
Q[state][action] = Q[state][action] + alpha * (reward + gamma * max(Q[next_state].values()) - Q[state][action])
state = next_state
done = True # 假设每个episode只进行一次动作
# 选择动作
def choose_action(state):
return max(Q[state], key=Q[state].get)
# 示例运行
train()
state = (500, 200)
action = choose_action(state)
print(f"Chosen action for state {state}: {action}")
4.3 技术融合方向
-
半监督学习:结合少量标记数据与大量未标记数据,如利用无监督预训练提升监督模型泛化能力(如 BERT)。
-
深度强化学习与无监督表征学习结合:通过无监督学习构建高效状态表征,降低强化学习的样本复杂度(如 Dreamer 算法)。
-
多范式联合建模:在复杂系统中集成监督学习(预测)、无监督学习(数据预处理)、强化学习(决策优化),如自动驾驶中的感知 - 规划 - 控制一体化框架。
五、总结与未来展望
监督学习、无监督学习、强化学习构成了机器学习的三大核心范式,分别针对 “有明确目标的映射学习”“无先验知识的探索学习”“序列决策的动态优化” 问题。未来,随着数据规模爆炸式增长与复杂场景需求,三者的融合将成为关键趋势:
-
数据效率提升:通过无监督学习减少标记依赖,强化学习优化资源分配;
-
复杂系统建模:在工业控制、医疗诊断等领域,构建 “感知(监督)- 理解(无监督)- 决策(强化)” 的闭环智能系统;
-
理论突破:探索统一框架下的学习机制,推动通用人工智能(AGI)的研究进展。
研究者可根据具体任务需求选择单一范式或组合方案,结合领域知识与算法创新,实现从数据到价值的高效转化。