学习顺序说明:本文是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 | 课程链接 |
| 吴恩达 | 深度学习专项课程 | 课程链接 |
参考资源汇总
官方文档
视频教程
- 3Blue1Brown - 数学可视化讲解
- 李宏毅机器学习 - 中文机器学习课程
练习平台
最后更新: 2026年4月10日
本文参考了 learning-Journey-AI 项目和 DeepSeek技术社区 的学习路线整理