引言
机器学习(Machine Learning,ML)和深度学习(Deep Learning,DL)是现代人工智能领域中的两个重要概念。通过让机器具备学习的能力,机器可以从数据中自动找到函数,并应用于各种任务,如语音识别、图像识别和游戏对战等。在这篇笔记中,我们将通过一个简单的案例,逐步了解机器学习的基础知识。
1.1 机器学习案例学习
1.1.1 回归问题与分类问题
在机器学习中,根据所要解决的问题类型,任务可以分为回归(Regression)和分类(Classification)两类。
-
回归问题:当输出是一个数值时,机器学习任务称为回归问题。例如,预测未来某个时间点的PM2.5浓度。
-
分类问题:当输出是一个类别时,任务称为分类问题。例如,邮箱系统中的垃圾邮件检测,或者AlphaGo在棋盘上选择下一步棋子的落子位置。
此外,机器学习还包括其他类型的任务,如结构化学习(Structured Learning),其目标是生成具有结构的输出,如生成一篇文章或绘制一张图。
1.1.2 案例分析:视频点击量预测
我们通过预测视频点击量的案例,来理解机器学习的运作过程。
-
建立模型:首先,假设我们有一个函数 ,其中 y 是我们要预测的目标(即视频的观看次数),而 是前一天的观看次数,w 和 b 是未知的参数。机器学习的任务就是通过数据来确定这些参数。
-
定义损失函数:损失函数用于评估模型预测的效果。一个简单的损失函数是均方误差(Mean Squared Error, MSE),即预测值与真实值之间差距的平方。
-
优化模型:通过优化算法,如梯度下降(Gradient Descent),我们可以找到使损失函数最小的参数 w 和 b。在优化过程中,我们随机初始化参数,然后根据损失函数的导数逐步调整参数,直至损失达到最小。
from sklearn.linear_model import LinearRegression import numpy as np X_train = np.array([[1], [2], [3], [4]]) y_train = np.array([3, 7, 11, 15]) model = LinearRegression() model.fit(X_train, y_train) print(f"权重: {model.coef_[0]}, 偏置: {model.intercept_}")
1.1.3 梯度下降与最优解
梯度下降是一种常用的优化方法,它通过计算损失函数相对于参数的导数,逐步调整参数以找到最优解。
-
局部最小值与全局最小值:在梯度下降过程中,可能会遇到局部最小值,即在某个区域内损失函数的值最低,但并非全局最低。因此,梯度下降可能无法找到全局最优解。
-
超参数调节:学习率(Learning Rate)是梯度下降中的一个超参数,它决定了每一步调整的幅度。学习率过大可能会导致跳过最优解,学习率过小则可能导致收敛速度过慢。
import numpy as np def loss_function(w, x, y): return (w * x - y) ** 2 w = 0.0 learning_rate = 0.01 # x_train = np.array([1, 2, 3, 4]) y_train = np.array([3, 7, 11, 15]) for epoch in range(100): grad_w = 0 for x, y in zip(x_train, y_train): grad_w += 2 * x * (w * x - y) w -= learning_rate * grad_w # 更新权重 print(f"Epoch {epoch}: w = {w}, Loss = {loss_function(w, x_train[0], y_train[0])}")
1.2 线性模型
在案例中,我们使用了一个简单的线性模型,即 ,该模型在已知数据上表现良好。然而,在实际应用中,为了提高预测的准确性,可能需要使用更复杂的模型或进行进一步的模型调整和优化。
1.2.1 损失函数的选择
除了均方误差(MSE),还有其他常用的损失函数,如平均绝对误差(Mean Absolute Error, MAE)和交叉熵(Cross Entropy),不同的损失函数适用于不同类型的问题。
1.2.2 误差表面与优化
通过将损失函数在参数空间中绘制成图,我们可以得到误差表面(Error Surface)。在这个表面上,不同颜色代表不同的损失值,优化的目标就是找到使损失最小的那一点。
X_test = np.array([[5], [6]])
y_pred = model.predict(X_test)
print(f"预测结果: {y_pred}")
from sklearn.metrics import mean_squared_error
mse = mean_squared_error([19, 23], y_pred)
print(f"均方误差: {mse}")
结语
通过这个简单的案例,我们了解了机器学习的基本步骤和概念。从模型的建立、损失函数的定义,到通过梯度下降进行优化,机器学习的核心在于找到一个能够准确预测目标的函数。后续我们将继续深入探讨更复杂的模型和优化方法。
附录:公式总结
1. 线性模型公式
2. 损失函数:均方误差 (MSE)
3. 损失函数:平均绝对误差 (MAE)
4. 梯度下降更新公式
5. 总损失函数
6. 误差公式
7. 误差平方公式
8. 交叉熵损失