神经网络之权重矩阵

神经网络的权重矩阵有两种形式:

一、包含偏置b的: A = XW (A = WX)
其中,每一层的偏置b作为一行(一列)直接加入权重矩阵W中
至于具体是作为行还是列加入,取决于矩阵乘法XW还是WX
当W包含偏置b时,需要在输入层添加一列,该列的值 = 1
二、不包含偏置b的:A = XW + B
其中,先运算XW,然后再运算偏置B矩阵
B = (b1,b2,b3…)

参考文献1:矩阵数组相乘与神经网络的实现
参考文献2:神经网络–bias
参考文献3:权重矩阵的构建(包含偏置)

注:
参考文献3中这样描述: 初始话权重,现在来解决刚才说的对于2层网络[2,2,1]为什么输入层与隐藏层的权重矩阵是3x3而不是2x2…如果你有留心的话,你会发现隐藏层的偏置并没有设置。但在代码中给X多插了一列 并赋值均为1,那么在下面训练中,a[0]即输入层为1x3矩阵,那么经过3x3权重矩阵,就好像给隐藏层加了一个单元(神经单元),这个单元可以理解为偏置!!!

这里个人感觉,a[0]层1×3没问题,但隐藏层的3×3是不是应该改成3×2呢??存疑。。。
应该是每一层的输入都多加一列1,然后相应的权重矩阵多加一行,而不是行列都多加一次吧。。。。

当然,权重矩阵和偏置矩阵的构建形式是多种多样的,也不一定仅仅局限于主流的构建方法,每个人的理解不一样,就会构建不同的矩阵形式。

不含偏置b

包含偏置b

### 神经网络权重矩阵的作用与实现 #### 权重矩阵的核心意义 神经网络中的权重矩阵是一个二维数组,用于存储输入数据到隐藏层以及隐藏层到输出层之间的连接强度。它的主要功能是通过线性变换将前一层的激活值映射到下一层的输入值[^1]。例如,在一个多层感知机(MLP)中,权重矩阵 $ w_{ij} $ 表示第 $ i $ 层的第 $ j $ 个神经元与第 $ i+1 $ 层的第 $ k $ 个神经元之间的连接权重。 当输入数据经过权重矩阵转换后,通常会加上偏置项并传递给激活函数以引入非线性特性。如果权重矩阵被初始化为零,则可能导致所有神经元的学习能力相同,从而无法有效区分不同特征[^4]。 #### 偏置项的处理方式 在实际应用中,偏置项可以通过两种方法融入计算流程: 1. **包含偏置的情况**:将偏置作为一个额外维度附加到权重矩阵中,并在输入数据的最后一列增加全为1的向量[^2]。 这种做法简化了矩阵运算,因为无需单独处理偏置加法操作。 2. **不包含偏置的情况**:分别计算权重矩阵和输入数据的乘积后再累加偏置向量。 此方法更直观但也稍微复杂一些,因为它涉及两次独立的操作。 #### 权重矩阵的具体实现 以下是基于Python的一个简单例子展示如何定义和使用权重矩阵: ```python import numpy as np # 定义输入数据 X 和权重矩阵 W X = np.array([[1, 2], [3, 4]]) # 输入数据 (batch_size x input_dim) W = np.random.randn(2, 3) # 初始化随机权重矩阵 (input_dim x hidden_dim) # 计算隐藏层输入 Z Z = np.dot(X, W) # 使用矩阵乘法完成线性变换 print(Z) ``` 上述代码片段展示了如何利用 `numpy` 库创建一个简单的神经网络模型的一部分——从输入层到隐藏层的数据流动过程。这里使用的权重矩阵大小由输入维度决定,并且初始值通常是随机分配的小数值以便后续优化调整[^3]。 #### 查看训练后的模型结构 对于已经训练完毕的深度学习模型而言,除了查看最终性能指标外还可以进一步探索内部参数比如各层间的权重分布情况等细节信息。这有助于理解整个系统的运作机制及其决策依据[^5]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值