想飞的鱼 Java Dev Engineer

【AI学习路线 01】入门基础 - 数学与编程基础

2026-04-10

学习顺序说明:本文是AI学习路线的第1篇,建议按顺序学习:

  • 01 入门基础(本文)→ 02 机器学习 → 03 深度学习 → 04 NLP基础 → 05 Transformer进阶 → 06 大模型应用 → 07 RAG系统 → 08 AI工具链

人工智能领域的学习需要建立扎实的数学和编程基础。本文将系统性地介绍入门AI所需的核心知识,帮助学习者从零开始构建AI知识体系。

学习路线概览

编程基础(Python) → 数学基础 → 机器学习 → 深度学习 → 专项应用

第一部分:Python编程基础

Python是AI领域最主流的编程语言,掌握Python是学习AI的第一步。

1.1 Python基础语法

变量与数据类型

# 基本数据类型
name = "AI学习者"      # 字符串
age = 25               # 整数
score = 95.5           # 浮点数
is_active = True       # 布尔值

# 类型转换
num_str = "123"
num_int = int(num_str)  # 字符串转整数

控制结构

# 条件判断
score = 85
if score >= 90:
    print("优秀")
elif score >= 60:
    print("及格")
else:
    print("不及格")

# 循环结构
for i in range(5):
    print(f"第{i+1}次循环")

# while循环
count = 0
while count < 3:
    print(count)
    count += 1

函数定义

def calculate_area(radius):
    """计算圆的面积"""
    import math
    return math.pi * radius ** 2

# 带默认参数的函数
def greet(name, greeting="你好"):
    return f"{greeting}, {name}!"

# Lambda表达式
square = lambda x: x ** 2

参考资源Python官方教程 - Python官方文档是最权威的学习资源

1.2 面向对象编程

class NeuralNetwork:
    """简单的神经网络类示例"""
    
    def __init__(self, input_size, hidden_size, output_size):
        self.input_size = input_size
        self.hidden_size = hidden_size
        self.output_size = output_size
        self.weights = None
    
    def initialize_weights(self):
        """初始化权重"""
        import numpy as np
        self.weights = np.random.randn(self.input_size, self.hidden_size)
        return self.weights
    
    def forward(self, x):
        """前向传播"""
        if self.weights is None:
            self.initialize_weights()
        return np.dot(x, self.weights)

# 使用类
nn = NeuralNetwork(10, 5, 2)

1.3 常用数据结构

# 列表 - 有序可变
numbers = [1, 2, 3, 4, 5]
numbers.append(6)          # 添加元素
numbers.pop()              # 移除最后一个
numbers[0]                 # 索引访问

# 元组 - 有序不可变
point = (3, 4)
x, y = point               # 解包

# 字典 - 键值对
model_config = {
    "learning_rate": 0.001,
    "epochs": 100,
    "batch_size": 32
}

# 集合 - 无序不重复
unique_numbers = {1, 2, 3, 2, 1}  # 结果: {1, 2, 3}

第二部分:核心Python库

2.1 NumPy - 数值计算基础

NumPy是Python科学计算的基石,几乎所有AI框架都基于NumPy构建。

import numpy as np

# 创建数组
arr = np.array([1, 2, 3, 4, 5])
matrix = np.array([[1, 2, 3], [4, 5, 6]])

# 数组运算
arr * 2              # 元素乘法
arr + arr            # 元素加法
np.dot(arr, arr)     # 点积

# 常用函数
np.mean(arr)         # 平均值
np.std(arr)          # 标准差
np.sum(arr)          # 求和
np.max(arr)          # 最大值

# 矩阵运算
A = np.random.randn(3, 4)
B = np.random.randn(4, 2)
C = np.dot(A, B)     # 矩阵乘法 (3x4) @ (4x2) = (3x2)

# 广播机制
matrix = np.array([[1, 2, 3], [4, 5, 6]])
row = np.array([1, 0, 1])
result = matrix + row  # 广播加法

参考资源NumPy官方文档 - 详细了解数组操作和广播机制

2.2 Pandas - 数据处理

Pandas是数据分析和预处理的利器。

import pandas as pd

# 创建DataFrame
data = {
    "name": ["Alice", "Bob", "Charlie"],
    "age": [25, 30, 35],
    "score": [85.5, 90.0, 78.5]
}
df = pd.DataFrame(data)

# 数据查看
df.head()                    # 查看前几行
df.info()                    # 数据类型信息
df.describe()                # 统计描述

# 数据选择
df["name"]                   # 选择列
df.loc[0]                    # 按标签选择
df.iloc[0:2]                 # 按位置选择

# 数据处理
df["age_group"] = df["age"].apply(lambda x: "青年" if x < 30 else "中年")
df.dropna()                  # 删除缺失值
df.fillna(0)                 # 填充缺失值
df.groupby("age_group").mean()  # 分组聚合

参考资源Pandas官方教程 - 10分钟入门Pandas

2.3 Matplotlib - 数据可视化

import matplotlib.pyplot as plt
import numpy as np

# 折线图
x = np.linspace(0, 10, 100)
y = np.sin(x)
plt.figure(figsize=(10, 6))
plt.plot(x, y, label='sin(x)')
plt.xlabel('x')
plt.ylabel('y')
plt.title('正弦函数')
plt.legend()
plt.grid(True)
plt.show()

# 散点图
x = np.random.randn(100)
y = np.random.randn(100)
plt.scatter(x, y, alpha=0.5)
plt.show()

# 直方图
data = np.random.randn(1000)
plt.hist(data, bins=30, edgecolor='black')
plt.show()

参考资源Matplotlib官方文档 - 完整的绑程和示例


第三部分:数学基础

3.1 线性代数

线性代数是深度学习的数学基础,理解矩阵运算是理解神经网络的关键。

向量运算

import numpy as np

# 向量定义
v1 = np.array([1, 2, 3])
v2 = np.array([4, 5, 6])

# 向量加法
v_add = v1 + v2  # [5, 7, 9]

# 向量点积
dot_product = np.dot(v1, v2)  # 1*4 + 2*5 + 3*6 = 32

# 向量范数(长度)
l2_norm = np.linalg.norm(v1)  # sqrt(1+4+9) = sqrt(14)

# 向量夹角
cos_angle = np.dot(v1, v2) / (np.linalg.norm(v1) * np.linalg.norm(v2))

矩阵运算

# 矩阵定义
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])

# 矩阵乘法
C = np.dot(A, B)  # 或 A @ B

# 矩阵转置
A_T = A.T

# 矩阵求逆
A_inv = np.linalg.inv(A)

# 特征值和特征向量
eigenvalues, eigenvectors = np.linalg.eig(A)

# 行列式
det = np.linalg.det(A)

核心概念

概念 说明 AI中的应用
向量 有方向的量 数据表示、词向量
矩阵 二维数组 权重矩阵、图像表示
点积 向量相似度 注意力机制
特征值 矩阵特性 PCA降维
矩阵分解 分解矩阵 推荐系统

参考资源3Blue1Brown线性代数系列 - 直观理解线性代数

3.2 微积分

导数与梯度

import numpy as np

# 数值导数
def numerical_derivative(f, x):
    """计算函数f在x处的数值导数"""
    h = 1e-5  # 很小的增量
    return (f(x + h) - f(x - h)) / (2 * h)

# 示例:计算 f(x) = x^2 在 x=3 处的导数
def f(x):
    return x ** 2

derivative_at_3 = numerical_derivative(f, 3)  # 约 6.0

# 梯度(多元函数的导数)
def numerical_gradient(f, x):
    """计算多元函数的梯度"""
    h = 1e-5
    grad = np.zeros_like(x)
    for i in range(len(x)):
        temp = x[i]
        x[i] = temp + h
        fxh1 = f(x)
        x[i] = temp - h
        fxh2 = f(x)
        grad[i] = (fxh1 - fxh2) / (2 * h)
        x[i] = temp
    return grad

链式法则

链式法则是反向传播算法的数学基础:

# 复合函数 f(g(x)) 的导数 = f'(g(x)) * g'(x)
# 神经网络中的例子
def sigmoid(x):
    return 1 / (1 + np.exp(-x))

def sigmoid_derivative(x):
    s = sigmoid(x)
    return s * (1 - s)

# 多层网络的梯度计算
x = np.array([1.0, 2.0])
w1 = np.array([[0.1, 0.2], [0.3, 0.4]])
w2 = np.array([[0.5], [0.6]])

# 前向传播
h = sigmoid(np.dot(x, w1))      # 隐藏层
y = sigmoid(np.dot(h, w2))      # 输出层

# 反向传播(链式法则)
# dL/dw2 = dL/dy * dy/dh2 * dh2/dw2
# dL/dw1 = dL/dy * dy/dh2 * dh2/dh * dh/dh1 * dh1/dw1

参考资源3Blue1Brown微积分系列 - 直观理解微积分

3.3 概率与统计

基本概念

import numpy as np
from scipy import stats

# 概率分布
# 正态分布
mean, std = 0, 1
x = np.linspace(-5, 5, 100)
pdf = stats.norm.pdf(x, mean, std)  # 概率密度函数

# 常用统计量
data = np.random.randn(1000)
print(f"均值: {np.mean(data)}")
print(f"方差: {np.var(data)}")
print(f"标准差: {np.std(data)}")
print(f"中位数: {np.median(data)}")

# 贝叶斯定理
# P(A|B) = P(B|A) * P(A) / P(B)
def bayes_theorem(p_b_given_a, p_a, p_b):
    """计算 P(A|B)"""
    return (p_b_given_a * p_a) / p_b

# 示例:医疗诊断
# P(患病|检测阳性) = P(检测阳性|患病) * P(患病) / P(检测阳性)
p_disease = 0.01                    # 患病概率
p_positive_given_disease = 0.95     # 患病时检测阳性的概率
p_positive = 0.05                   # 检测阳性的总概率
p_disease_given_positive = bayes_theorem(
    p_positive_given_disease, p_disease, p_positive
)

信息论基础

# 熵 - 不确定性度量
def entropy(p):
    """计算熵 H(p) = -Σ p(x) * log(p(x))"""
    p = p[p > 0]  # 避免 log(0)
    return -np.sum(p * np.log2(p))

# 交叉熵 - 分类任务常用损失函数
def cross_entropy(p, q):
    """计算交叉熵 H(p, q) = -Σ p(x) * log(q(x))"""
    q = np.clip(q, 1e-10, 1)  # 避免 log(0)
    return -np.sum(p * np.log(q))

# KL散度 - 分布差异度量
def kl_divergence(p, q):
    """KL散度 D_KL(p||q) = Σ p(x) * log(p(x)/q(x))"""
    q = np.clip(q, 1e-10, 1)
    p = np.clip(p, 1e-10, 1)
    return np.sum(p * np.log(p / q))

参考资源Khan Academy统计学 - 系统学习概率统计


第四部分:学习建议

4.1 时间规划

模块 建议时间 学习重点
Python基础 2-3周 语法、数据结构、面向对象
NumPy/Pandas 2周 数组操作、数据处理
线性代数 2-3周 向量、矩阵、特征值
微积分 2周 导数、梯度、链式法则
概率统计 2周 分布、贝叶斯、信息论

4.2 推荐书籍

  • 《Python编程:从入门到实践》 - Python入门经典
  • 《流畅的Python》 - Python进阶必读
  • 《深度学习的数学》 - 涌井良幸 - AI数学入门
  • 《程序员的数学》 - 结城浩 - 数学思维培养

4.3 在线课程

平台 课程 链接
Coursera Machine Learning - Andrew Ng 课程链接
fast.ai Practical Deep Learning 课程链接
吴恩达 深度学习专项课程 课程链接

参考资源汇总

官方文档

视频教程

练习平台


下一篇02 机器学习基础 - 从算法原理到实践

最后更新: 2026年4月10日

本文参考了 learning-Journey-AI 项目和 DeepSeek技术社区 的学习路线整理


Similar Posts

Comments