机器学习(ML)是利用算法从数据中提取模式并进行预测或决策的技术。不同的学习范式适用于不同的任务和数据类型。本文将简要概述常见的机器学习范式,包括监督学习、无监督学习、强化学习、半监督学习、自监督学习及迁移学习
监督学习是通过输入-输出对的训练数据来学习模型,目标是让模型根据输入预测对应的标签(分类问题)或值(回归问题)。
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
digits = load_digits()
X, y = digits.data, digits.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
model = LogisticRegression()
model.fit(X_train, y_train)
predictions = model.predict(X_test)
print(f'Accuracy: {accuracy_score(y_test, predictions)}')
优缺点
无监督学习处理未标记数据,任务是挖掘数据中的内在结构或模式,常见的任务包括聚类和降维。
示例代码:
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt
X, _ = make_blobs(n_samples=300, centers=4, random_state=42)
kmeans = KMeans(n_clusters=4)
kmeans.fit(X)
labels = kmeans.predict(X)
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis')
plt.title('K-Means Clustering')
plt.show()
优缺点
强化学习通过与环境交互来优化决策策略。智能体根据当前状态选择动作,环境提供奖励或惩罚,智能体通过累计奖励来学习最优策略。
示例代码:
# 环境交互和学习过程
for episode in range(num_episodes):
state = env.reset()
total_reward = 0
done = False
while not done:
action = agent.choose_action(state)
next_state, reward, done, _ = env.step(action)
agent.learn(state, action, reward, next_state)
state = next_state
total_reward += reward
优缺点
半监督学习结合了监督学习和无监督学习,利用少量标注数据和大量未标注数据进行训练,目标是提高模型性能。
适用于标注数据稀缺的场景,如医学影像分析、网络安全。
示例代码:
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_digits
digits = load_digits()
X, y = digits.data, digits.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.9, random_state=42)
model = RandomForestClassifier()
model.fit(X_train, y_train)
predictions = model.predict(X_test)
优缺点
自监督学习通过构造伪标签来学习数据的表征。模型不需要外部标签,利用数据本身进行训练。
广泛应用于图像和自然语言处理,如图像旋转任务、语言模型预训练。
示例代码:
import torch
import torch.nn as nn
import torch.optim as optim
from torchvision import datasets, transforms
class RotateImage(nn.Module):
def __init__(self, degrees):
super(RotateImage, self).__init__()
self.degrees = degrees
def forward(self, x):
return torch.rot90(x, self.degrees, [2, 3])
model = RotateImage(degrees=1)
优缺点
迁移学习通过将从源领域学习到的模型知识迁移到目标领域,来加速目标任务的学习过程。
示例代码:
import torch
from transformers import BertTokenizer, BertForSequenceClassification
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertForSequenceClassification.from_pretrained('bert-base-uncased')
inputs = tokenizer("Hello, how are you?", return_tensors='pt')
outputs = model(**inputs)
优缺点
机器学习的各个范式适用于不同的应用场景和数据需求。从监督学习到迁移学习,每种方法都有其独特的优势和局限。随着数据量和计算能力的提升,研究人员越来越多地依赖于结合多种混合学习方法,以解决实际问题。