Day26_【深度学习(6)—神经网络NN(1)重点概念浓缩、前向传播】
一、生物神经网络
——单个神经元
二、神经网络NN
人工神经网络(Artificial Neural Network, 简写为ANN)也简称为神经网络(NN),是一种模仿生物神经网络结构和功能的计算模型
——单个神经元
——多个神经元
目的
深度学习中神经网络的目的就是为了自动提取特征
任务
主要是针对有监督学习(更多的是分类问题)
使用神经网络:只做特征提取,不会改变输入的样本数
组成
神经网络:
1. 输入层(Input Layer)
- 接收原始输入数据(如图像像素、文本向量、传感器数值等)。
- 每个节点对应一个特征(feature),不进行计算,只传递数据。
2. 隐藏层(Hidden Layers)
- 位于输入层和输出层之间,可以有多个。
- 每个神经元对上一层的输出做加权求和 + 偏置,然后通过激活函数产生输出。
- 是网络“学习特征”的核心部分。
3. 输出层(Output Layer)
- 输出最终结果,比如类别概率、连续值等。
- 输出节点数取决于任务:
- 二分类:1个节点(Sigmoid)
- 多分类:N个节点(Softmax)
- 回归:1或多个节点(线性激活)
三、单个神经元
组成
加权求和(内含初始化参数)
激活函数
1.初始化参数
背景:输入的数据也就是特征,实际是有一定规律的,初始化参数是为了让模型有“能力”去“学习并保存”这些规律,将规律复用
方法:
初始化类型 | PyTorch 函数 | 适用场景 |
---|---|---|
全零初始化 | nn.init.zeros_(tensor) | 一般不用于权重;可用于偏置(bias)初始化 |
全一初始化 | nn.init.ones_(tensor) | 多用于偏置或特定约束层 |
固定值初始化 | nn.init.constant_(tensor, val) | 自定义常数初始化,如设为 0.1、-1 等 |
均匀分布初始化 | nn.init.uniform_(tensor, a, b) | 通用初始化,需指定范围 |
正态分布初始化 | nn.init.normal_(tensor, mean, std) | 微调或自定义分布初始化 |
Kaiming 正态初始化 | nn.init.kaiming_normal_(tensor) | ReLU 及其变体激活的层,深层网络推荐 |
Kaiming 均匀初始化 | nn.init.kaiming_uniform_(tensor) | 同上,使用均匀分布 |
Xavier 正态初始化 | nn.init.xavier_normal_(tensor) | Sigmoid 或 Tanh 激活的层,浅层网络常用 |
Xavier 均匀初始化 | nn.init.xavier_uniform_(tensor) | 同上,使用均匀分布 |
权重:主选 Kaiming初始化,Xavier初始化。
2.激活函数
背景:线性关系很难拟合现实关系,将线性关系变为非线性关系,引入非线性因素
方法:
函数 | 用途 |
---|---|
Sigmoid | 二分类输出 |
Tanh | 隐藏层(均值为0) |
ReLU | 最常用隐藏层激活函数 |
Softmax | 多分类输出层 |
主选:
对于隐藏层:
- ReLU>Leaky ReLu>tanh>sigmoid(少使用)
对于输出层:
- 二分类问题:sigmoid
- 多分类问题:softmax
- 回归问题:identity(恒等)