自学内容网 自学内容网

深度学习:(五)初识神经网络

(一)神经网络的层数

除去输入层,但包括输出层,每一层都有自己的参数。

输入层称为第零层。

(二)最简单的神经网络(逻辑回归)

下图中的小圆圈,代表了一种运算。且一个小圆圈表示一个节点。

在这里插入图片描述

(三)进阶神经网络(双层,多节点)

为了统一和美观,作如下规定:

  • 层数用上标 [   l   ] [~l~] [ l ] 表示。
  • 层中的节点用脚标 i i i 表示。
  • 层的输出用 a a a 表示。

则有 a i [   l   ] a_i^{[~l~]} ai[ l ] 表示第 l l l 层的第 i i i 个节点的输出值(激活值)。

有以下双层神经网络:

在这里插入图片描述

注解:

  • “隐藏层”的含义是:在训练集中,这些中间节点的真正数值,我们并不知道。
  • 对于隐藏层1:
    • 每个节点都有不同的参数 w w w b b b
    • 输入为向量 x x x
    • 执行 z = w T x + b z=w^Tx+b z=wTx+b a = σ ( z ) a=\sigma(z) a=σ(z) 两个计算步骤。
  • 对于输出层:
    • 也有对应的参数 w w w b b b
    • 输入为隐藏层 1 1 1 的输出值;
    • 执行 z = w T x + b z=w^Tx+b z=wTx+b a = σ ( z ) a=\sigma(z) a=σ(z) 两个计算步骤。

参数矩阵:

  • 第一层(隐藏层1):

    • w 1 [ 1 ] T , w 2 [ 1 ] T , w 3 [ 1 ] T , w 4 [ 1 ] T w_1^{[1]T},w_2^{[1]T},w_3^{[1]T},w_4^{[1]T} w1[1]T,w2[1]T,w3[1]T,w4[1]T 组成了矩阵 W [ 1 ] W^{[1]} W[1] ,即 W [ 1 ] = [ — w 1 [ 1 ] T — — w 2 [ 1 ] T — — w 3 [ 1 ] T — — w 4 [ 1 ] T — ] W^{[1]}=\left[ \begin{matrix} — & w_1^{[1]T} & —\\ — & w_2^{[1]T} & — \\ — & w_3^{[1]T} & — \\ — & w_4^{[1]T} & — \\ \end{matrix} \right] W[1]= w1[1]Tw2[1]Tw3[1]Tw4[1]T ,维度为 4 × 3 4×3 4×3 ,表示 4 4 4 个节点, 3 3 3 个输入特征。
    • b 1 [ 1 ] , b 2 [ 1 ] , b 3 [ 1 ] , b 4 [ 1 ] b_1^{[1]},b_2^{[1]},b_3^{[1]},b_4^{[1]} b1[1],b2[1],b3[1],b4[1] 组成了列向量 b [ 1 ] b^{[1]} b[1] ,即 b [ 1 ] = [ b 1 [ 1 ] b 2 [ 1 ] b 3 [ 1 ] b 4 [ 1 ] ] b^{[1]}=\left[ \begin{matrix} b_1^{[1]}\\ b_2^{[1]}\\ b_3^{[1]}\\ b_4^{[1]}\\ \end{matrix} \right] b[1]= b1[1]b2[1]b3[1]b4[1] ,维度为 4 × 1 4×1 4×1
  • 第二层(输出层):

    • w 1 [ 2 ] T w_1^{[2]T} w1[2]T 组成了矩阵 W [ 2 ] W^{[2]} W[2] ,即 W [ 2 ] = [ — w 1 [ 2 ] T — ] W^{[2]}=\left[ \begin{matrix} — & w_1^{[2]T} & —\\ \end{matrix} \right] W[2]=[w1[2]T] ,维度为 1 × 4 1×4 1×4 ,表示 1 1 1 个节点, 4 4 4 个输入特征(!!!!)。
    • b 1 [ 2 ] b_1^{[2]} b1[2] 组成了 b [ 2 ] b^{[2]} b[2] (常数),维度为 1 × 1 1×1 1×1

a i [   l   ] a_i^{[~l~]} ai[ l ] 表示每层的输出:

在这里插入图片描述

整体计算流程:

在这里插入图片描述

(四)向量化神经网络

单个训练样本

针对上述双层网络,计算代码及步骤如下:
G i v e n    i n p u t    x :          a [ 0 ] = x          z [ 1 ] = W [ 1 ] a [ 0 ] + b [ 1 ]          a [ 1 ] = σ ( z [ 1 ] )          z [ 2 ] = W [ 2 ] a [ 1 ] + b [ 2 ]          a [ 2 ] = σ ( z [ 2 ] ) \begin{align*} &Given~~input~~x:\\ &~~~~~~~~a^{[0]}=x\\ &~~~~~~~~z^{[1]}=W^{[1]}a^{[0]}+b^{[1]}\\ &~~~~~~~~a^{[1]}=\sigma(z^{[1]})\\ &~~~~~~~~z^{[2]}=W^{[2]}a^{[1]}+b^{[2]}\\ &~~~~~~~~a^{[2]}=\sigma(z^{[2]}) \end{align*} Given  input  x:        a[0]=x        z[1]=W[1]a[0]+b[1]        a[1]=σ(z[1])        z[2]=W[2]a[1]+b[2]        a[2]=σ(z[2])

整个训练集(多个样本)

前情提要: x ( i ) x^{(i)} x(i) 表示第 i i i 个训练样本,共有 m m m 个样本。

  • 原代码如下:
    在这里插入图片描述

  • 向量化代码:

    将多个训练样本 x ( i ) x^{(i)} x(i) ,按列堆叠为 X = [ ∣ ∣ ∣ x ( 1 ) x ( 2 ) ⋅ ⋅ ⋅ x ( m ) ∣ ∣ ∣ ] X=\left[ \begin{matrix} | & | & & |\\ x^{(1)} & x^{(2)} &··· & x^{(m)} \\ | & | & & | \\ \end{matrix} \right] X= x(1)x(2)⋅⋅⋅x(m) ,维度为 n x × m n_x×m nx×m

    可得新代码为:
    A [ 0 ] = X Z [ 1 ] = W [ 1 ] A [ 0 ] + b [ 1 ] A [ 1 ] = σ ( Z [ 1 ] ) Z [ 2 ] = W [ 2 ] A [ 1 ] + b [ 2 ] A [ 2 ] = σ ( Z [ 2 ] ) \begin{align*} &A^{[0]}=X\\ &Z^{[1]}=W^{[1]}A^{[0]}+b^{[1]}\\ &A^{[1]}=\sigma(Z^{[1]})\\ &Z^{[2]}=W^{[2]}A^{[1]}+b^{[2]}\\ &A^{[2]}=\sigma(Z^{[2]}) \end{align*} A[0]=XZ[1]=W[1]A[0]+b[1]A[1]=σ(Z[1])Z[2]=W[2]A[1]+b[2]A[2]=σ(Z[2])
    其中: Z [ 1 ] = [ ∣ ∣ ∣ z [ 1 ] ( 1 ) z [ 1 ] ( 2 ) ⋅ ⋅ ⋅ z [ 1 ] ( m ) ∣ ∣ ∣ ] Z^{[1]}=\left[ \begin{matrix} | & | & & |\\ z^{[1](1)} & z^{[1](2)} &··· & z^{[1](m)} \\ | & | & & | \\ \end{matrix} \right] Z[1]= z[1](1)z[1](2)⋅⋅⋅z[1](m) A [ 1 ] = [ ∣ ∣ ∣ a [ 1 ] ( 1 ) a [ 1 ] ( 2 ) ⋅ ⋅ ⋅ a [ 1 ] ( m ) ∣ ∣ ∣ ] A^{[1]}=\left[ \begin{matrix} | & | & & |\\ a^{[1](1)} & a^{[1](2)} &··· & a^{[1](m)} \\ | & | & & | \\ \end{matrix} \right] A[1]= a[1](1)a[1](2)⋅⋅⋅a[1](m) Z [ 2 ] Z^{[2]} Z[2] A [ 2 ] A^{[2]} A[2] 同理。

(五)经验法则

  • 当一层中有不同的节点时,我们一般将这些节点的参数或输出值(激活值)纵向堆叠起来。
  • 对于多个训练样本,我们一般将每个样本横向合并起来。

即:在每一步的输出矩阵中,横向指标对应不同的训练样本纵向指标对应某一层的不同节点

————————————————————————————————————————————————————————

上一篇博客下一篇博客
python中的广播

原文地址:https://blog.csdn.net/qq_51409113/article/details/142381308

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!