深度学习入门:神经网络的基本结构与工作原理

深度学习入门:神经网络的基本结构与工作原理

深度学习作为人工智能领域的核心技术之一,近年来取得了令人瞩目的成就。而神经网络则是深度学习的基础,理解神经网络的基本结构与工作原理对于深入学习深度学习至关重要。

1. 神经网络的基本概念

神经网络是一种模仿人类神经系统的计算模型,由大量的神经元(也称为节点)相互连接而成。这些神经元通过对输入数据进行处理和转换,最终输出结果。神经网络的基本结构可以分为输入层、隐藏层和输出层。

层类型 作用
输入层 接收外部输入的数据,不进行任何计算,只是将数据传递给下一层
隐藏层 对输入的数据进行特征提取和转换,通常可以有多个隐藏层
输出层 输出神经网络的最终结果
2. 神经元的工作原理

神经元是神经网络的基本组成单元,它接收多个输入信号,并根据这些输入信号计算输出。神经元的工作原理可以用以下公式表示:

z=∑i=1nwixi+b z = \sum_{i=1}^{n} w_i x_i + b z=i=1∑nwixi+b

y=f(z) y = f(z) y=f(z)

其中,xix_ixi 是输入信号,wiw_iwi 是对应的权重,bbb 是偏置,zzz 是加权求和的结果,f(z)f(z)f(z) 是激活函数,yyy 是神经元的输出。

下面是一个简单的Python代码示例,实现了一个神经元的计算:

python 复制代码
import numpy as np

# 定义输入信号
x = np.array([1, 2, 3])
# 定义权重
w = np.array([0.1, 0.2, 0.3])
# 定义偏置
b = 0.5

# 计算加权求和
z = np.dot(w, x) + b
# 定义激活函数(这里使用Sigmoid函数)
def sigmoid(z):
    return 1 / (1 + np.exp(-z))

# 计算神经元的输出
y = sigmoid(z)

print("神经元的输出:", y)
3. 激活函数

激活函数的作用是引入非线性因素,使得神经网络能够学习到复杂的模式和关系。常见的激活函数有Sigmoid函数、ReLU函数、Tanh函数等。

激活函数 公式 特点
Sigmoid函数 f(z)=11+e−zf(z) = \frac{1}{1 + e^{-z}}f(z)=1+e−z1 输出范围在(0, 1)之间,常用于二分类问题
ReLU函数 f(z)=max(0,z)f(z) = max(0, z)f(z)=max(0,z) 计算简单,能够有效缓解梯度消失问题
Tanh函数 f(z)=ez−e−zez+e−zf(z) = \frac{e^z - e^{-z}}{e^z + e^{-z}}f(z)=ez+e−zez−e−z 输出范围在(-1, 1)之间,形状类似于Sigmoid函数

下面是一个使用不同激活函数的代码示例:

python 复制代码
import numpy as np
import matplotlib.pyplot as plt

# 定义输入数据
z = np.linspace(-10, 10, 100)

# 定义Sigmoid函数
def sigmoid(z):
    return 1 / (1 + np.exp(-z))

# 定义ReLU函数
def relu(z):
    return np.maximum(0, z)

# 定义Tanh函数
def tanh(z):
    return np.tanh(z)

# 计算不同激活函数的输出
y_sigmoid = sigmoid(z)
y_relu = relu(z)
y_tanh = tanh(z)

# 绘制激活函数图像
plt.figure(figsize=(12, 4))

plt.subplot(1, 3, 1)
plt.plot(z, y_sigmoid)
plt.title('Sigmoid Function')

plt.subplot(1, 3, 2)
plt.plot(z, y_relu)
plt.title('ReLU Function')

plt.subplot(1, 3, 3)
plt.plot(z, y_tanh)
plt.title('Tanh Function')

plt.show()
4. 前向传播

前向传播是指输入数据从输入层经过隐藏层传递到输出层的过程。在这个过程中,每个神经元根据输入信号和权重计算输出,并将输出传递给下一层。下面是一个简单的三层神经网络的前向传播代码示例:

python 复制代码
import numpy as np

# 定义输入数据
X = np.array([[0.1, 0.2, 0.3]])

# 定义第一层(隐藏层)的权重和偏置
W1 = np.array([[0.1, 0.2, 0.3], [0.4, 0.5, 0.6]])
b1 = np.array([[0.1, 0.2]])

# 定义第二层(输出层)的权重和偏置
W2 = np.array([[0.7, 0.8]])
b2 = np.array([[0.3]])

# 定义激活函数(这里使用Sigmoid函数)
def sigmoid(z):
    return 1 / (1 + np.exp(-z))

# 第一层(隐藏层)的计算
z1 = np.dot(X, W1.T) + b1
a1 = sigmoid(z1)

# 第二层(输出层)的计算
z2 = np.dot(a1, W2.T) + b2
a2 = sigmoid(z2)

print("神经网络的输出:", a2)
5. 反向传播

反向传播是神经网络训练的核心算法,它通过计算损失函数对每个权重和偏置的梯度,然后根据梯度更新权重和偏置,使得损失函数最小化。反向传播的过程可以分为以下几个步骤:

  1. 前向传播计算输出结果
  2. 计算损失函数
  3. 反向传播计算梯度
  4. 根据梯度更新权重和偏置

下面是一个简单的两层神经网络的反向传播代码示例:

python 复制代码
import numpy as np

# 定义输入数据
X = np.array([[0.1, 0.2, 0.3]])
# 定义真实标签
y = np.array([[0.5]])

# 定义第一层(隐藏层)的权重和偏置
W1 = np.array([[0.1, 0.2, 0.3], [0.4, 0.5, 0.6]])
b1 = np.array([[0.1, 0.2]])

# 定义第二层(输出层)的权重和偏置
W2 = np.array([[0.7, 0.8]])
b2 = np.array([[0.3]])

# 定义激活函数(这里使用Sigmoid函数)
def sigmoid(z):
    return 1 / (1 + np.exp(-z))

# 定义损失函数(这里使用均方误差)
def mse_loss(y_pred, y_true):
    return np.mean((y_pred - y_true) ** 2)

# 前向传播
z1 = np.dot(X, W1.T) + b1
a1 = sigmoid(z1)
z2 = np.dot(a1, W2.T) + b2
a2 = sigmoid(z2)

# 计算损失
loss = mse_loss(a2, y)

# 反向传播
# 计算输出层的梯度
dL_da2 = 2 * (a2 - y)
da2_dz2 = a2 * (1 - a2)
dL_dz2 = dL_da2 * da2_dz2
dL_dW2 = np.dot(dL_dz2.T, a1)
dL_db2 = dL_dz2

# 计算隐藏层的梯度
dL_da1 = np.dot(dL_dz2, W2)
da1_dz1 = a1 * (1 - a1)
dL_dz1 = dL_da1 * da1_dz1
dL_dW1 = np.dot(dL_dz1.T, X)
dL_db1 = dL_dz1

# 更新权重和偏置
learning_rate = 0.1
W2 = W2 - learning_rate * dL_dW2
b2 = b2 - learning_rate * dL_db2
W1 = W1 - learning_rate * dL_dW1
b1 = b1 - learning_rate * dL_db1

print("更新后的W2:", W2)
print("更新后的b2:", b2)
print("更新后的W1:", W1)
print("更新后的b1:", b1)
6. 总结

通过本文的介绍,我们了解了神经网络的基本结构与工作原理,包括神经元的工作原理、激活函数、前向传播和反向传播等。神经网络是深度学习的基础,掌握这些基本概念和算法对于深入学习深度学习至关重要。在实际应用中,我们可以使用深度学习框架(如TensorFlow、PyTorch等)来更方便地构建和训练神经网络。

希望本文能够帮助你入门深度学习,开启你的深度学习之旅!

相关推荐
HyperAI超神经8 小时前
在线教程|DeepSeek-OCR 2公式/表格解析同步改善,以低视觉token成本实现近4%的性能跃迁
开发语言·人工智能·深度学习·神经网络·机器学习·ocr·创业创新
空白诗8 小时前
CANN ops-nn 算子解读:Stable Diffusion 图像生成中的 Conv2D 卷积实现
深度学习·计算机视觉·stable diffusion
七月稻草人9 小时前
CANN生态ops-nn:AIGC的神经网络算子加速内核
人工智能·神经网络·aigc
User_芊芊君子9 小时前
CANN图编译器GE全面解析:构建高效异构计算图的核心引擎
人工智能·深度学习·神经网络
云边有个稻草人9 小时前
CANN:解构AIGC底层算力,ops-nn驱动神经网络算子加速
人工智能·神经网络·aigc·cann
爱吃大芒果9 小时前
CANN神经网络算子库设计思路:ops-nn项目的工程化实现逻辑
人工智能·深度学习·神经网络
哈__9 小时前
CANN加速VAE变分自编码器推理:潜在空间重构与编码解码优化
人工智能·深度学习·重构
觉醒大王9 小时前
哪些文章会被我拒稿?
论文阅读·笔记·深度学习·考研·自然语言处理·html·学习方法
禁默9 小时前
Ops-Transformer深入:CANN生态Transformer专用算子库赋能多模态生成效率跃迁
人工智能·深度学习·transformer·cann
杜子不疼.9 小时前
基于CANN GE图引擎的深度学习模型编译与优化技术
人工智能·深度学习