人工智能中神经网络是如何进行预测的


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

文章目录

引言

神经网络是人工智能领域中的一种重要技术,广泛应用于图像识别、自然语言处理、语音识别等任务。本文将详细介绍神经网络的基本原理、如何进行预测,并通过代码和流程图来帮助读者更好地理解这一过程。

神经网络的基本结构

神经网络由多个层组成,每一层包含若干个神经元。常见的神经网络结构包括输入层、隐藏层和输出层。

  1. 输入层:接收输入数据,每个神经元对应输入数据的一个特征。
  2. 隐藏层:通过激活函数对输入数据进行非线性变换,提取特征。
  3. 输出层:输出最终的预测结果。

神经网络的前向传播

神经网络的预测过程主要通过前向传播(Forward Propagation)实现。前向传播是指输入数据从输入层经过隐藏层,最终到达输出层的过程。

前向传播的步骤

  1. 输入数据:将输入数据传递给输入层的神经元。
  2. 加权求和:每个隐藏层神经元接收来自上一层神经元的输入,并对其进行加权求和。
  3. 激活函数:对加权求和的结果应用激活函数,得到该神经元的输出。
  4. 传递到下一层:将激活函数的输出传递给下一层的神经元。
  5. 重复步骤2-4:直到数据传递到输出层,得到最终的预测结果。

激活函数

激活函数是神经网络中非常重要的组成部分,它引入了非线性因素,使得神经网络能够学习复杂的模式。常见的激活函数包括:

  • Sigmoid函数:将输入映射到(0,1)之间。
  • ReLU函数:将负值映射为0,正值保持不变。
  • Softmax函数:常用于多分类问题的输出层,将输入映射为概率分布。

代码实现

下面是一个简单的神经网络前向传播的Python实现,使用NumPy库进行矩阵运算。

python 复制代码
import numpy as np

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

def relu(x):
    return np.maximum(0, x)

def softmax(x):
    exp_x = np.exp(x - np.max(x))  # 防止溢出
    return exp_x / np.sum(exp_x, axis=0)

# 定义神经网络类
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 = relu(self.z1)
        
        # 隐藏层到输出层
        self.z2 = np.dot(self.a1, self.W2) + self.b2
        self.a2 = softmax(self.z2)
        
        return self.a2

# 示例数据
X = np.array([[0.1, 0.2, 0.3]])
nn = NeuralNetwork(input_size=3, hidden_size=4, output_size=2)
output = nn.forward(X)
print("预测结果:", output)

流程图

为了更好地理解神经网络的前向传播过程,下面是一个简单的流程图。
输入数据 输入层 隐藏层加权求和 应用激活函数 隐藏层输出 输出层加权求和 应用激活函数 输出层输出 预测结果

详细解释

输入数据

输入数据是神经网络进行预测的起点。假设我们有一个输入向量 X = [x1, x2, x3],其中 x1, x2, x3 是输入特征。

加权求和

在隐藏层中,每个神经元接收来自输入层神经元的输入,并对其进行加权求和。假设隐藏层有4个神经元,那么每个隐藏层神经元的输入可以表示为:

复制代码
z1 = x1 * w11 + x2 * w21 + x3 * w31 + b1
z2 = x1 * w12 + x2 * w22 + x3 * w32 + b2
z3 = x1 * w13 + x2 * w23 + x3 * w33 + b3
z4 = x1 * w14 + x2 * w24 + x3 * w34 + b4

其中,w 是权重,b 是偏置。

应用激活函数

对加权求和的结果应用激活函数,得到隐藏层神经元的输出。例如,使用ReLU激活函数:

复制代码
a1 = relu(z1)
a2 = relu(z2)
a3 = relu(z3)
a4 = relu(z4)

输出层

隐藏层的输出 a1, a2, a3, a4 将作为输出层的输入。输出层的计算过程与隐藏层类似,首先进行加权求和,然后应用激活函数(如Softmax函数),得到最终的预测结果。

总结

本文详细介绍了神经网络的基本结构、前向传播的过程,并通过代码和流程图展示了神经网络如何进行预测。希望本文能够帮助读者更好地理解神经网络的工作原理,并为后续的学习和实践打下基础。

参考文献

  1. Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning. MIT Press.
  2. Nielsen, M. A. (2015). Neural Networks and Deep Learning. Determination Press.

注意 :本文中的代码和流程图仅为示例,实际应用中可能需要根据具体任务进行调整和优化。

相关推荐
cyong888几秒前
深度学习中的向量的样子-DCN
人工智能·深度学习
Python数据分析与机器学习10 分钟前
《基于深度学习的高分卫星图像配准模型研发与应用》开题报告
图像处理·人工智能·python·深度学习·神经网络·机器学习
BineHello2 小时前
强化学习 - PPO控制无人机
人工智能·算法·自动驾驶·动态规划·无人机·强化学习
牛不才2 小时前
ChatPromptTemplate的使用
人工智能·ai·语言模型·chatgpt·prompt·aigc·openai
从零开始学习人工智能2 小时前
深度学习模型压缩:非结构化剪枝与结构化剪枝的定义与对比
人工智能·深度学习·剪枝
訾博ZiBo2 小时前
AI日报 - 2025年3月18日
人工智能
go54631584653 小时前
在办公电脑上本地部署 70b 的 DeepSeek 模型并实现相应功能的大致步骤
深度学习
新说一二3 小时前
AI技术学习笔记系列004:GPU常识
人工智能·笔记·学习
小白的高手之路3 小时前
如何安装旧版本的Pytorch
人工智能·pytorch·python·深度学习·机器学习·conda