人工智能中神经网络是如何进行学习的


前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。https://www.captainbed.cn/north

文章目录

引言

神经网络的学习过程是通过调整网络中的参数(权重和偏置)来最小化预测结果与真实值之间的误差。这一过程通常被称为训练 ,其核心是反向传播算法(Backpropagation)。本文将详细介绍神经网络的学习过程,包括反向传播的原理、梯度下降优化方法,并通过代码和流程图帮助读者更好地理解。


神经网络的学习过程

神经网络的学习过程可以分为以下几个步骤:

  1. 前向传播:输入数据通过神经网络,得到预测结果。
  2. 计算损失:通过损失函数衡量预测结果与真实值之间的误差。
  3. 反向传播:计算损失函数对每个参数的梯度。
  4. 参数更新:使用梯度下降法更新网络的权重和偏置。
  5. 重复迭代:重复上述步骤,直到损失函数收敛或达到预定的训练次数。

下面我们将逐步展开这些步骤。


1. 前向传播

前向传播是神经网络预测的过程,输入数据从输入层经过隐藏层,最终到达输出层。具体过程如下:

  • 输入数据通过权重和偏置进行线性变换。
  • 对线性变换的结果应用激活函数,得到每一层的输出。
  • 最终输出层的输出即为预测结果。

关于前向传播的详细内容,可以参考上一篇博客《人工智能中神经网络是如何进行预测的》。


2. 计算损失

损失函数(Loss Function)用于衡量预测结果与真实值之间的误差。常见的损失函数包括:

  • 均方误差(MSE):用于回归问题。
  • 交叉熵损失(Cross-Entropy Loss):用于分类问题。

假设我们有一个分类问题,使用交叉熵损失函数,其公式为:


3. 反向传播

反向传播是神经网络学习的核心。其目的是计算损失函数对每个参数的梯度,即损失函数对权重和偏置的偏导数。

反向传播的步骤

  1. 计算输出层的误差

  2. 计算隐藏层的误差

  3. 计算梯度


4. 参数更新

通过梯度下降法更新网络的参数。梯度下降法的更新公式为:


5. 重复迭代

重复上述步骤,直到损失函数收敛或达到预定的训练次数。


代码实现

下面是一个简单的神经网络训练过程的Python实现,使用NumPy库进行矩阵运算。

python 复制代码
import numpy as np

# 定义激活函数及其导数
def sigmoid(x):
    return 1 / (1 + np.exp(-x))

def sigmoid_derivative(x):
    return x * (1 - x)

# 定义神经网络类
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.W1 = np.random.randn(self.input_size, self.hidden_size)
        self.b1 = np.zeros((1, self.hidden_size))
        self.W2 = np.random.randn(self.hidden_size, self.output_size)
        self.b2 = np.zeros((1, self.output_size))
    
    def forward(self, X):
        # 输入层到隐藏层
        self.z1 = np.dot(X, self.W1) + self.b1
        self.a1 = sigmoid(self.z1)
        
        # 隐藏层到输出层
        self.z2 = np.dot(self.a1, self.W2) + self.b2
        self.a2 = sigmoid(self.z2)
        
        return self.a2
    
    def backward(self, X, y, output, learning_rate):
        # 计算输出层的误差
        error = output - y
        d_output = error * sigmoid_derivative(output)
        
        # 计算隐藏层的误差
        error_hidden = np.dot(d_output, self.W2.T)
        d_hidden = error_hidden * sigmoid_derivative(self.a1)
        
        # 更新权重和偏置
        self.W2 -= np.dot(self.a1.T, d_output) * learning_rate
        self.b2 -= np.sum(d_output, axis=0, keepdims=True) * learning_rate
        self.W1 -= np.dot(X.T, d_hidden) * learning_rate
        self.b1 -= np.sum(d_hidden, axis=0, keepdims=True) * learning_rate
    
    def train(self, X, y, epochs, learning_rate):
        for epoch in range(epochs):
            output = self.forward(X)
            self.backward(X, y, output, learning_rate)
            if epoch % 1000 == 0:
                loss = np.mean(np.square(y - output))
                print(f"Epoch {epoch}, Loss: {loss}")

# 示例数据
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
y = np.array([[0], [1], [1], [0]])

# 创建神经网络并训练
nn = NeuralNetwork(input_size=2, hidden_size=4, output_size=1)
nn.train(X, y, epochs=10000, learning_rate=0.1)

# 测试
output = nn.forward(X)
print("预测结果:", output)

流程图

以下是神经网络学习过程的流程图:
是 否 输入数据 前向传播 计算损失 反向传播 计算梯度 更新参数 是否收敛? 结束


总结

神经网络的学习过程是通过前向传播、计算损失、反向传播和参数更新四个步骤不断迭代完成的。反向传播算法是神经网络学习的核心,它通过链式法则计算损失函数对每个参数的梯度,并使用梯度下降法更新参数。本文通过代码和流程图详细解释了这一过程,希望能帮助读者更好地理解神经网络的学习机制。


参考文献

  1. Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning. MIT Press.
  2. Nielsen, M. A. (2015). Neural Networks and Deep Learning. Determination Press.
相关推荐
“码”力全开19 分钟前
AI视频分析飞书告警常见问题和排查清单
人工智能·音视频·飞书
leoZ23125 分钟前
AI 辅助开发工具链 2026 版深度技术报告:从单点插件到全流程协同的范式重构
人工智能
hy952328 分钟前
从零搭建生产级AI智能客服系统(七):基础优化与一键部署,打造开箱即用的生产级系统
人工智能
深度学习机器37 分钟前
Ghostty终端使用体验
人工智能·命令行
Token炼金师37 分钟前
幂律的预言:Kaplan 与 Chinchilla 的算力账本 —— Scaling Laws 与最优配比
人工智能·深度学习·大模型架构·kv cache·scaling laws
云烟成雨TD1 小时前
LangFlow 1.x 系列【5】可视化编辑页面功能说明
人工智能·python·agent
小宋10211 小时前
Dify 前后端联调踩坑记录:`/console/api/account/profile` 登录失败排查
人工智能·dify
幸福指北1 小时前
现代化智能终端AShell,是否能够替代你的古法终端?让服务器运维更加高效智能化,快来试试看!
人工智能·ai·终端
女神下凡2 小时前
office系列软件 激活破解(office 2019, 2021, 2024)
人工智能·microsoft
2503_931712482 小时前
京东裸眼3D展示——30分钟建模绒感褶皱光泽都能还原
人工智能