深度学习 —— 神经网络(1)

张开发
2026/4/20 0:19:27 15 分钟阅读

分享文章

深度学习 —— 神经网络(1)
目录一、神经网络介绍全连接神经网络 - 最基础的人工神经网络1.人工神经网络的组成2.网络层的 输入维度 和 输出维度3.网络层参数量的计算方式4.网络中数据的前向传播方向二、激活函数常见激活函数1.Sigmoid2.ReLU3.GELU 大模型4.Softmax总结三、参数初始化初始化的方法1. 均匀分布初始化2. 正态分布初始化3.全0 初始化4.全1 初始化5.固定值 初始化6. kaiming 初始化也叫做 HE 初始化 偏置是全07. Xavier 初始化也叫做 Glorot 初始化一、神经网络介绍是什么参考生物神经元的计算模型计算逻辑包括加权求和激活函数生物神经网络由多个生物神经元连接组成1.树突接收输入信号进行加权求和2.细胞核对加权求和的信号进行非线性处理3.轴突输出细胞核处理之后的信号人工神经网络由多个人工神经元链接组成计算模型为1.加权求和对输入特征进行加权求和2.激活函数对加权求和结果进行非线性处理全连接神经网络 - 最基础的人工神经网络也简称为MLP/ FCN/ DNN1.人工神经网络的组成输入层/ 数据 (Input layer) - 隐藏层(Hidden layer) - 输出层(Output layer) 最小单元是神经元多个神经元 - 网络层 - 神经网络2.网络层的输入维度和输出维度nn.Linear(input_dim, output_dim)输入维度:当前层的输入特征数量输出维度:当前层的输出特征数量/神经元数量如上图示例的输入/输出维度Hidden layer 1- nn.Linear(3,5)左边输入3个特征获得5个输出Hidden layer 2- nn.Linear(5,5)左边输入3个特征获得5个输出Output layer- nn.Linear(5,2)左边输入5个特征获得2个输出3.网络层参数量的计算方式参数量 权重参数量 偏置参数量* 输出维度权重参数量输入维度 * 输出维度偏置参数量1* 输出维度比如: (3,4) 3 * 41 * 3 (31) * 4 16(输入维度1) * 输出维度 input_dim 1* output_dim这里的1 表示 B 偏置如上图示例Hidden layer 1-nn.Linear(3,5)- 参数数量 3 1* 5 20Hidden layer 2-nn.Linear(5,5)- 参数数量 5 1* 5 30Output layer- nn.Linear(5,2) -参数数量 5 1 * 2 12总参数量 20 30 12 62个4.网络中数据的前向传播方向由前向后传输入层 - 隐藏层 - 输出层不能反向传数据二、激活函数是什么非线性函数作用引入非线性1.没有引入非线性因素的网络等价于一个线性模型2.根据通用逼近定理给网络增加激活函数引入非线性使得网络可以逼近任意函数提升网络对复杂问题的拟合能力常见激活函数激活函数输出范围是否梯度消失速度是否解决死亡 ReLU适用位置Sigmoid(0,1)严重饱和慢×二分类输出层Tanh(-1,1)饱和慢×传统 RNNReLU[0,∞)不饱和极快×会死亡CNN / 全连接隐藏层主流Leaky ReLU(-∞,∞)不饱和快✅改进 ReLUGELU(-∞,∞)不饱和中等✅Transformer / 大模型Softmax(0,1) 和为 1-中等-多分类输出层1.Sigmoid2.ReLU3.GELU 大模型4.Softmax输出和为1的概率分布用于多分类问题的输出层Xi. 的 i 通常为 -1 也就是特征轴运算 y torch.softmax (x, dim -1) 或 y F.softmax(x, dim -1)一次 计算后 - 下图1概率分布图 概率最大的那个类别也就是模型预测类别二次 计算后 - 下图2 不改变数据之间大小关系多次计算后会均匀分布。精度溢出。总结激活函数的选择方法隐藏层 优先级Relu —— Leaky Relu / PReLu / GELU —— Tanh输出层:多分类问题选择 softmax二分类问题选择 sigmoid 或 softmax回归问题多数选择 identity (就是没有激活函数)正数ReLu区间Sigmoid / TanhSoftMax 和 Sigmoid 用于二分类的区别1.softmax 输出两个概率对应负类和正类2.sigmoid 输出一个概率对应正类概率负类概率 1 - 正类概率三、参数初始化是什么 创建神经网络时初始化网络层的参数作用 1. 防止 梯度消失 或 梯度爆炸2. 提高收敛速度3. 打破对称性:如果所有神经元的参数都一样则输出数据经过前向传播再反向传播时得到的梯度相同。W新 W旧 - 学习率 lr * 梯度 grad结果都一样。模型就无法训练网络注意 通常采用pytorch默认参数初始化方式特殊情况下才需要手动设置w 和 b 初始化初始化的方法1. 均匀分布初始化# 1.定义一个线性层输入维度3输出维度5 linear nn.Linear(3,5) # 2.对权重w进行初始化 nn.init.uniform_(linear.weight) # 3.对偏置b进行初始化 nn.init.uniform_(linear.bias) # 4.打印权重和偏置 print(fw:{linear.weight}, shape: {linear.weight.shape}) print(fb:{linear.bias}, shape: {linear.bias.shape})2. 正态分布初始化# 1.定义一个线性层输入维度3输出维度5 linear nn.Linear(3,5) # 2.对权重w进行初始化 nn.init.normal_(linear.weight) # 3.对偏置b进行初始化 nn.init.normal_(linear.bias)3.全0 初始化nn.init.zeros_(linear.bias)4.全1 初始化5.固定值 初始化nn.init.constant_(linear.bias,val0.5)6. kaiming 初始化也叫做 HE 初始化 偏置是全0nn.init.kaiming_normal_(linear.weight)7. Xavier 初始化也叫做 Glorot 初始化nn.init.xavier_normal_(linear.weight)极少数场景需要手动参数初始化权重Wrelu网络 kaiming非relu网络xavier偏置 全0 简单计算快

更多文章