预先知识
- 理解线性映射
- 矩阵运算(会计算当然好,也不难,但重要性不大)
由于markdown或mathjax很难制作流程图,插入图片的话,我的博客嵌入图片比较麻烦,就先不画三层的神经网络,不过也不难,可以自行在草稿纸上画神经网络
实例三层神经网络
1. 输入层到隐藏层
对于输入矩阵I:
$$I = \begin{bmatrix}
0.9\\
0.1\\
0.8\\
\end{bmatrix}$$
输入到中间层的组合调节信号:
$$X = W * I$$
第一层到第二层的权重矩阵
$$W_{input_hidden} = \begin{bmatrix}
0.9 & 0.3 & 0.4\\
0.2 & 0.8 & 0.2\\
0.1 & 0.5 & 0.6\\
\end{bmatrix}$$
所以第一层到第二层运算
$$X_{hidden} =
\begin{bmatrix}
0.9 & 0.3 & 0.4\\
0.2 & 0.8 & 0.2\\
0.1 & 0.5 & 0.6\\
\end{bmatrix}
*
\begin{bmatrix}
0.9\\
0.1\\
0.8\\
\end{bmatrix}
=
\begin{bmatrix}
1.16\\
0.42\\
0.62\\
\end{bmatrix}
$$
激活函数S:
$$O_{hidden} = sigmoid(X_{hidden})$$
第二层隐藏层输出矩阵
$$O_{hidden} = \begin{bmatrix}
0.761\\
0.603\\
0.650\\
\end{bmatrix} $$
2. 隐藏层到输出层
中间层到输出层的组合调节信号:
$$X_{output} = W_{hiddenOutput}* O_{hidden}$$
第二层到第三层的权重矩阵
$$W_{outputHidden} = \begin{bmatrix}
0.3 & 0.7 & 0.5\\
0.6 & 0.5 & 0.2\\
0.8 & 0.1 & 0.9\\
\end{bmatrix}$$
所以第二层到第三层运算
$$X_{output} =
\begin{bmatrix}
0.3 & 0.7 & 0.5\\
0.6 & 0.5 & 0.2\\
0.8 & 0.1 & 0.9\\
\end{bmatrix}
*
\begin{bmatrix}
0.761\\
0.603\\
0.650\\
\end{bmatrix}
=
\begin{bmatrix}
0.975\\
0.888\\
1.254\\
\end{bmatrix}
$$
输出矩阵为:
$$O_{output} = sigmoid\begin{pmatrix}
0.975\\
0.888\\
1.254\\
\end{pmatrix}$$
$$O_{output} = \begin{pmatrix}
0.726\\
0.708\\
0.778\\
\end{pmatrix}$$
这样子我们就得到了神经网络的最终输出信号
下一步我们所需要的就是不断训练来改进神经网络