AI 原理 · 2023年11月14日 · 2 分钟

机器学习入门:从线性回归到神经网络

从线性回归、梯度下降到激活函数与神经网络,零基础理解机器学习的核心概念。

我大概是去年开始认真学 ML。之前只是"知道"但没真正理解。这篇是我自己入门时整理的知识脉络,从最简单的线性回归一路推到神经网络。

机器学习到底在学什么

用一句话讲:找一个函数,让它能根据输入给出我们想要的输出。

  • 房价预测:输入面积、位置、房龄 → 输出价格
  • 图片识别:输入像素 → 输出"猫"或"狗"
  • 推荐系统:输入用户行为 → 输出可能感兴趣的商品

传统编程是我们写规则,ML 是让数据教会计算机规则

线性回归:一切的起点

已知:x -> y
  (1, 2), (2, 4), (3, 6) ...

我们要找:y = wx + b
  w 是权重(斜率), b 是偏置(截距)

怎么找 w 和 b?先随便猜一个,然后看预测值和真实值的差距(损失),朝损失变小的方向调整 w 和 b。这个"调参"的过程就是训练。

损失函数通常用均方误差 MSE,优化方法用梯度下降:

损失 = 所有(预测值 - 真实值)² 的平均值
梯度 = 损失对 w 和 b 分别求偏导
w_new = w_old - 学习率 × 梯度

学习率不能太大(震荡不收敛)也不能太小(收敛慢得像蜗牛)。

从线性到非线性

线性回归的问题是——现实世界没那么多线性关系。房价和面积的关系不是简单的一条直线。

这时候引入激活函数——在线性变换后面加一个非线性函数:

没有激活: y = wx + b          (永远线性)
有激活:   y = ReLU(wx + b)    (可以拟合曲线)

常用的 ReLU:max(0, x),负数变 0,正数不变。简单粗暴但有效。

多个神经元堆在一起就是神经网络

输入层        隐藏层         输出层
  x₁ ─────→  h₁ ─┐
     \    /  \    \────→  y
  x₂ ──→  h₂ ──→ h₄ 
     \    \    /    /
  x₃ ──→  h₃ ──→

每个箭头是一个权重 w,每个节点过一遍激活函数。训练就是让所有 w 一起调到最优。

实际跑一个例子

用 Python 的 scikit-learn,几行代码搞定:

from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2
)

model = LinearRegression()
model.fit(X_train, y_train)
score = model.score(X_test, y_test)  # R² score
print(f"拟合度: {score:.3f}")

以上是 ML 的"Hello World"。后续还会学分类问题(逻辑回归、SVM)、集成方法(随机森林、XGBoost)、深度学习(CNN、RNN、Transformer)。

新手容易困惑的几个点

  1. 过拟合:训练集上准确率 99%,测试集上 60%——"背答案了,没学会"。解法:加正则化、dropout、更多数据
  2. 特征工程:原始数据往往不能直接喂模型,怎么处理缺失值、怎么归一化、怎么组合特征,这些比调参更重要
  3. 数据比算法重要:一个简单模型 + 大量高质量数据,往往优于复杂模型 + 脏数据

入门的路上,亲手跑代码比看理论重要十倍。先能跑起来,再看为什么。

继续阅读

评论