跳至内容

拾光小记

深度学习-实现一个三层神经网络

## 神经网络内积

如下图所示,通过神经网络的内积,可以将输入信号转换为输出信号。其中,$x$为输入信号,$w$为权重,$y$为输出信号。 输入信号: $$\vec{X} = (x1, x2)$$ 权重: $$\vec{W} = \begin{pmatrix} 1 & 3 & 5 \ 2 & 4 & 6 \end{pmatrix}$$ 输出信号: $$\vec{Y} = \vec{X} · \vec{W} = \begin{pmatrix} 1 & 3 & 5 \ 2 & 4 & 6 \end{pmatrix} \begin{pmatrix} x1 \ x2 \end{pmatrix}$$

代码实现:

import numpy as np

X = np.array([1, 2])
W = np.array([[1, 3, 5], [2, 4, 6]])
Y = np.dot(X, W)

print(Y)

[ 5 11 17]

## 3层神经网络的实现

如下图所示的3层神经网络,第0层是输入层,第一层和第二层是隐藏层,第三层是输出层。 如下图所示,权重和隐藏层的神经元的右上角有一个“(1)”,它表示 权重和神经元的层号(即第1层的权重、第1层的神经元)。此外,权重的右 下角有两个数字,它们是后一层的神经元和前一层的神经元的索引号。比如,$$w_{12}^{(1)} $$ 表示前一层的第2个神经元x2到后一层的第1个神经元$$a_{1}^{(1)} $$的权重。权重右下角按照“后一层的索引号、前一层的索引号”的顺序排列。

### 各层之间信号的传递

下图中增加了表示偏置的神经元“1”。请注意,偏置的右下角的索引 号只有一个。这是因为前一层的偏置神经元(神经元“1”)只有一个。为了确认前面的内容,现在用数学式表示$$a_{1}^{(1)} $$。 $$a_{1}^{(1)} $$通过加权信号和偏置的和按如下方式进行计算。 $$a_{1}^{(1)}=w_{11}^{(1)}x1 + w_{12}^{(1)}x2 + b_{1}^{(1)}$$ 那么类推,第一层的加权信号和偏置的和可以表示为: $$A^{(1)} = XW^{(1)} + B^{(1)} $$ 其中$$A^{(1)}, X, W^{(1)}, B^{(1)}$$如下所示