当前位置: 首页 > news >正文

【机器学习笔记 Ⅱ】1 神经网络

神经网络是一种受生物神经元启发设计的机器学习模型,能够通过多层非线性变换学习复杂的输入-输出关系。它是深度学习的基础,广泛应用于图像识别、自然语言处理、游戏AI等领域。


1. 核心思想

  • 生物类比:模仿人脑神经元的工作方式,通过“激活”和“连接”处理信息。
  • 数学本质:多层嵌套的函数组合,通过调整权重和偏置拟合数据。

2. 基本结构

(1) 神经元(Neuron)

神经元结构

(2) 网络层级

  1. 输入层(Input Layer):接收原始数据(如图像像素、文本词向量)。
  2. 隐藏层(Hidden Layers):进行特征变换(层数和神经元数可调)。
  3. 输出层(Output Layer):生成最终预测(如分类概率、回归值)。

3. 前向传播(Forward Propagation)

数据从输入层逐层传递到输出层的过程:
在这里插入图片描述


4. 激活函数(Activation Functions)

函数公式特点适用场景
Sigmoid( \frac{1}{1+e^{-z}} )输出(0,1),适合概率二分类输出层
ReLU( \max(0, z) )计算快,解决梯度消失隐藏层(最常用)
Leaky ReLU( \max(0.01z, z) )避免神经元“死亡”替代ReLU
Softmax( \frac{e^{z_i}}{\sum e^{z_j}}} )多分类概率归一化多分类输出层

5. 反向传播(Backpropagation)

通过链式法则计算损失函数对每个参数的梯度,从输出层反向传递误差并更新权重:

  1. 计算损失(如交叉熵、均方误差)。

6. 代码实现(Python)

(1) 使用TensorFlow/Keras

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense# 创建模型
model = Sequential([Dense(128, activation='relu', input_shape=(784,)),  # 隐藏层(128个神经元)Dense(64, activation='relu'),                      # 隐藏层Dense(10, activation='softmax')                    # 输出层(10分类)
])# 编译模型
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])# 训练
model.fit(X_train, y_train, epochs=10, batch_size=32)

(2) 手动实现(NumPy)

import numpy as npdef relu(z):return np.maximum(0, z)def softmax(z):exp_z = np.exp(z - np.max(z, axis=1, keepdims=True))return exp_z / np.sum(exp_z, axis=1, keepdims=True)# 初始化参数
W1 = np.random.randn(input_size, hidden_size) * 0.01
b1 = np.zeros((1, hidden_size))
# ...(其他层初始化)# 前向传播
z1 = X.dot(W1) + b1
a1 = relu(z1)
z2 = a1.dot(W2) + b2
y_pred = softmax(z2)# 反向传播(略)

7. 神经网络类型

类型特点应用场景
前馈神经网络(FNN)信息单向传播(输入→输出)图像分类、回归
卷积神经网络(CNN)局部连接、权重共享计算机视觉
循环神经网络(RNN)处理序列数据(时间/文本)语音识别、机器翻译
Transformer自注意力机制(并行处理长序列)GPT、BERT等大模型

8. 关键挑战与解决方案

问题原因解决方案
梯度消失/爆炸深层网络链式求导的连乘效应ReLU、BatchNorm、残差连接
过拟合模型复杂度过高Dropout、L2正则化、早停
计算成本高参数量大GPU加速、模型剪枝

9. 总结

  • 神经网络 = 多层非线性变换 + 梯度下降优化。
  • 核心步骤:前向传播 → 计算损失 → 反向传播 → 更新参数。
  • 设计要点
    1. 选择网络深度和宽度(如层数、每层神经元数)。
    2. 选择激活函数(隐藏层用ReLU,输出层按任务定)。
    3. 优化器(如Adam)、损失函数(如交叉熵)、正则化。

神经网络通过堆叠简单的神经元实现了强大的表达能力,是解决复杂模式识别任务的利器!

http://www.dtcms.com/a/267861.html

相关文章:

  • 云原生 Serverless 架构下的智能弹性伸缩与成本优化实践
  • 基于HTML与Java的简易在线会议系统实现
  • Javaweb - 10.5 HttpServletRequest 和 HttpServletResponse
  • Flink ClickHouse 连接器维表源码深度解析
  • 【Note】《Kafka: The Definitive Guide》第四章:Kafka 消费者全面解析:如何从 Kafka 高效读取消息
  • 深入理解Kafka幂等性:原理、边界与最佳实践
  • Neo4j 综合练习作业
  • Android 应用开发 | 一种限制拷贝速率解决因 IO 过高导致系统卡顿的方法
  • java ThreadLocal源码分析
  • 深度学习6(多分类+交叉熵损失原理+手写数字识别案例TensorFlow)
  • 高效处理大体积Excel文件的Java技术方案解析
  • 安卓之service
  • QT 菜单栏设计使用方法
  • 基于AndServer的RPC架构:Android原生SO文件远程调用实战指南
  • Python 机器学习核心入门与实战进阶 Day 4 - 支持向量机(SVM)原理与分类实战
  • 深度学习图像分类数据集—蘑菇识别分类
  • plantuml用法总结
  • Java设计模式之行为型模式(策略模式)介绍与说明
  • 利用低空无人机影像进行树种实例分割
  • 深入解析Vue中v-model的双向绑定实现原理
  • 牛客周赛99
  • 关于 栈帧变化完整流程图(函数嵌套)
  • 大模型面试:RAG与Agent相关
  • 《Redis》集群
  • 【Note】《Kafka: The Definitive Guide》 第二章 Installing Kafka:Kafka 安装与运行
  • Redis--主从复制详解
  • 【Docker基础】Docker容器挂载方式深度解析:--volume与--mount参数对比
  • QT6 源(155)模型视图架构里的列表视图 QListView:接着学习成员函数,信号函数,附上本类的源代码带注释。
  • HCIA-网络地址转换(NAT)
  • CppCon 2018 学习:Woes of Scope Guards and Unique_Resource