深度学习专栏(1):从应用数学到机器学习基础——用Python代码打开AI大门

目录

​编辑

🌟 前言:为什么你要从数学开始学深度学习?

一、必须掌握的三大数学基石(附可视化代码)

1.1 线性代数:神经网络的骨架

🔥 核心概念:

1.2 概率统计:让AI学会思考

🎲 关键知识点:

1.3 微积分:优化算法的灵魂

📈 必会技能:

二、机器学习基础:深度学习的垫脚石

2.1 机器学习三要素(代码实现)

📌 关键解读:

2.2 梯度下降的三种形态

三、通向深度学习之路:你的第一个神经网络

3.1 用NumPy实现神经元

3.2 神经网络训练流程解析

🚀 下期预告:手撕深度前馈网络——用NumPy实现真正的“深度”学习


🌟 前言:为什么你要从数学开始学深度学习?

想象你要建造一座100层的摩天大楼,你会直接开始砌砖吗?当然不!你必须先打地基。深度学习就像这座摩天大楼,而线性代数、概率统计和微积分就是它的钢筋混凝土。别担心,今天我会用Python代码带你把数学变成看得见的魔法!

一、必须掌握的三大数学基石(附可视化代码)

1.1 线性代数:神经网络的骨架

🔥 核心概念:
  • 张量(多维数组):神经网络的通用货币

  • 矩阵乘法:神经信号传递的管道

  • 特征分解:理解数据本质的钥匙

import numpy as np
import matplotlib.pyplot as plt

# 可视化矩阵变换
original = np.array([[0,0], [1,0], [1,1], [0,1]])
matrix = np.array([[1, 0.5], [-0.5, 1]])  # 剪切变换

transformed = np.dot(original, matrix.T)

plt.figure(figsize=(10,5))
plt.subplot(121)
plt.fill(original[:,0], original[:,1], alpha=0.5)
plt.title('原始形状')

plt.subplot(122)
plt.fill(transformed[:,0], transformed[:,1], alpha=0.5)
plt.title('矩阵变换后')
plt.show()

💡 运行结果:你会看到一个正方形被矩阵变换为平行四边形的过程

1.2 概率统计:让AI学会思考

🎲 关键知识点:
  • 条件概率:P(下雨|乌云) vs P(乌云|下雨)

  • 贝叶斯定理:反直觉的癌症检测案例

  • 高斯分布:为什么它统治了机器学习?

from scipy.stats import norm

# 生成两种考试成绩分布
math_scores = norm(loc=75, scale=10).rvs(1000)
cs_scores = norm(loc=82, scale=8).rvs(1000)

plt.hist(math_scores, bins=30, alpha=0.5, label='数学成绩')
plt.hist(cs_scores, bins=30, alpha=0.5, label='CS成绩')
plt.legend()
plt.title('成绩分布对比')
plt.xlabel('分数')
plt.ylabel('人数')
plt.show()

1.3 微积分:优化算法的灵魂

📈 必会技能:
  • 导数:成本函数的斜率探测器

  • 梯度:多维空间的指南针

  • 链式法则:反向传播的核心

# 梯度下降可视化
def f(x): return x**2 + 5*np.sin(x)
def df(x): return 2*x + 5*np.cos(x)

x = np.linspace(-10, 10, 100)
x_path = []
current_x = -8  # 初始点
for _ in range(50):
    x_path.append(current_x)
    current_x -= 0.1 * df(current_x)  # 学习率0.1

plt.plot(x, f(x), label='函数曲线')
plt.scatter(x_path, f(np.array(x_path)), c='red')
plt.title('梯度下降过程')
plt.show()

二、机器学习基础:深度学习的垫脚石

2.1 机器学习三要素(代码实现)

from sklearn.linear_model import LinearRegression
import numpy as np

# 1. 数据准备
X = np.array([[1], [2], [3], [4]])  # 特征
y = np.array([2, 4, 6, 8])          # 标签

# 2. 模型选择
model = LinearRegression()

# 3. 损失函数与优化
model.fit(X, y)

# 预测新数据
print(f"预测结果:{model.predict([[5]])[0]:.2f}")
📌 关键解读:
  • 模型:y = w*x + b 的线性方程

  • 损失函数:均方误差(MSE)

  • 优化:最小二乘法(解析解)

2.2 梯度下降的三种形态

# 随机梯度下降示例
def sgd(X, y, lr=0.01, epochs=100):
    w, b = 0.0, 0.0
    n = len(X)
    for _ in range(epochs):
        for i in range(n):
            # 随机选择一个样本
            xi, yi = X[i], y[i]
            # 计算梯度
            dw = -2 * xi * (yi - (w*xi + b))
            db = -2 * (yi - (w*xi + b))
            # 更新参数
            w -= lr * dw
            b -= lr * db
    return w, b

# 使用相同数据训练
w, b = sgd(X.flatten(), y)
print(f"SGD结果:y = {w:.2f}x + {b:.2f}")

三、通向深度学习之路:你的第一个神经网络

3.1 用NumPy实现神经元

class Neuron:
    def __init__(self, input_size):
        self.weights = np.random.randn(input_size)
        self.bias = np.random.randn()
    
    def forward(self, inputs):
        return np.dot(inputs, self.weights) + self.bias

# 创建神经元(3个输入)
neuron = Neuron(3)
inputs = np.array([0.5, -1, 0.8])
print(f"神经元输出:{neuron.forward(inputs):.2f}")

3.2 神经网络训练流程解析

  1. 前向传播:数据流过网络

  2. 计算损失:预测值与真实值的差距

  3. 反向传播:沿着计算图传递梯度

  4. 参数更新:优化器调整权重

🚀 下期预告:手撕深度前馈网络——用NumPy实现真正的“深度”学习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sonal_Lynn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值