在前面的几篇文章中,我们已经理解了三件事情:

  • 神经网络的结构是什么

  • 神经网络如何进行预测(Forward Propagation)

  • 如何用TensorFlow构建一个神经网络模型

但还有一个关键问题没有回答:神经网络是如何“学会”的? 换句话说:模型的参数到底是怎么从数据中训练出来的?

这一篇,我们就来理解神经网络训练(Training)的全过程。

从一个产品问题开始

假设你在做一个知识付费产品,希望预测:用户是否会在未来7天内流失? 

你可能有这些数据:

CODE
最近7天登录次数、最近阅读时长、是否完成课程、是否参与社区讨论

每一个用户数据可以表示为: 

CODE
X = [登录次数, 阅读时长, 完成课程比例, 社区互动]

同时我们还有真实结果:Y = 0 或 1 

CODE
1 :用户流失
0:用户未流失

我们的目标就是:训练一个神经网络,让它学会预测用户流失概率。

TensorFlow神经网络训练的三步

如果你把 TensorFlow 的代码拆开看,会发现训练过程其实只有三个步骤: 

1、定义模型结构

2、定义损失函数

3、用数据训练模型 

这三件事其实和我们之前学过的逻辑回归完全一样。 

第一步:定义神经网络结构 

在TensorFlow中,我们通常会写这样的代码:

CODE
model = Sequential([
    Dense(16, activation='sigmoid'),
    Dense(8, activation='sigmoid'),
    Dense(1, activation='sigmoid')
])

这段代码的意思其实很简单: 

CODE
输入数据
   ↓
隐藏层1(16个神经元)
   ↓
隐藏层2(8个神经元)
   ↓
输出层(1个神经元)

这一步其实只是告诉TensorFlow:神经网络应该长什么样,还没有开始学习。 

第二步:定义模型“错误程度”

模型训练的核心问题其实是:我们怎么知道模型预测得好不好?这就需要损失函数(Loss Function)。

对于分类问题,最常见的损失函数是:Binary Crossentropy。

在TensorFlow中写法是:

CODE
model.compile(
    loss="binary_crossentropy",
    optimizer="adam"
)

Binary Crossentropy(二元交叉熵)是一种常用于二分类问题的损失函数,用来衡量模型预测概率与真实标签之间的差距。比如:

CODE
预测概率:0.9
真实标签:1
表示误差很小

预测概率:0.1
真实标签
表示误差很大

第三步:真正开始训练模型

最后一步就是让模型不断优化参数,TensorFlow中只需要一行代码:

CODE
model.fit(X, Y, epochs=50)

意思是:

CODE
用数据 X,Y 训练神经网络
重复 50 次

每一次训练,模型都会

CODE
做一次预测
计算误差
调整参数

这个过程就是梯度下降(Gradient Descent)。 

训练过程到底发生了什么?

如果我们把训练过程展开,每一轮训练都在做:

CODE
输入数据
   ↓
神经网络预测
   ↓
计算误差
   ↓
调整参数

这个循环不断重复。

随着训练次数增加,预测误差越来越小,模型就逐渐学会了数据中的规律。

Backpropagation:训练的核心算法

神经网络训练最关键的算法叫:反向传播(Backpropagation)。

简单理解就是:误差从输出层一层一层往回传,然后更新每一层的参数。

如果没有这个算法,神经网络几乎不可能训练成功。 

好消息是,TensorFlow已经帮我们自动实现了这一切。

为什么使用TensorFlow?

在深度学习早期,很多研究人员都是自己写神经网络代码。

但今天几乎所有工程团队都会使用TensorFlow或者PyTorch。原因很简单,这些框架已经帮你处理了:

CODE
自动求导
GPU计算
数值稳定性
大规模训练

就像今天没人会自己写排序算法一样。

虽然TensorFlow帮我们隐藏了很多细节,但理解原理仍然非常重要。

因为现实中经常会遇到如模型训练不收敛、预测结果异常、训练速度太慢等情况。如果只会调用API,很难定位问题。

理解训练流程,可以帮助你更好地设计模型和调试系统。

神经网络训练的本质

如果用一句话总结,神经网络训练其实就是一个不断减少预测误差的过程。

整个过程只有三个核心要素:

CODE
模型结构
损失函数
优化算法

TensorFlow只是把这些复杂步骤自动化了。


从更长远的角度看,机器学习真正改变的,并不是某一种算法,而是我们解决问题的方式。过去我们需要为系统写清楚每一条规则,而现在,我们开始让系统从数据中自己学会规则。

这种从“规则驱动”到“数据驱动”的转变,也许才是人工智能时代最重要的变化。

附录:本文涉及的专有名词中英文对照(标红为最核心)

中文术语
英文术语
简要说明
神经网络训练
Neural Network Training
使用数据优化神经网络参数的过程
二元交叉熵
Binary Crossentropy
用于二分类问题的常见损失函数
均方误差
Mean Squared Error (MSE)
常用于回归问题的损失函数
训练轮次
Epoch
整个训练数据被模型完整学习一次
优化器
Optimizer
用于更新模型参数的算法
反向传播
Backpropagation
计算神经网络参数梯度的核心算法
参数更新
Parameter Update
根据梯度调整权重和偏置
模型收敛
Model Convergence
训练过程中误差逐渐稳定并达到较优状态
深度学习框架
Deep Learning Framework
用于构建和训练神经网络的软件工具(如 TensorFlow、PyTorch)