台湾大学李宏毅深度学习1

  1. 深度学习的三个步骤

    • Neural Network(神经网络):我们经常设计神经网络,并且让机器从数据中寻找参数。
    • Cost function(成本函数):用来判断一组参数是好还是不好
    • Optimization(最优化):找到最好的函数
  2. Fully connected layer(全连接层):

    • 第i-1和第i层之间两两相连。第l-1层的第1个神经与第l层的第2个神经相连,得到的是 w 21 l w^l_ {21} 。上边l表示连接的是第l-1层和第l层。下标21表示连接的是第l层的第2个神经,到第l-1层的第1个神经。注意这里下标是反的
    • 最后每两个相连的层之间形成一个w数组。这个数组的行数是第l层的神经个数,列数是第l-1层的神经个数。
    • 每一层的神经元的表示 a i l a^l_i 表示在第l层的第i个字符。如果是 a l a^l 则表示第l层的所有神经元,形成一个vector。
    • z i l z^l_i :第l层的第i个神经的活动输入。 z l z^l 表示第l层的所有输入。
      z i l z^l_i = w i 1 l w^l_{i1} a 1 l 1 a^{l-1}_1 + w i 2 l w^l_{i2} a 2 l 1 a^{l-1}_2 +…… b i l b^l_i
      其中 b i l b^l_i 代表的是第l层的第i个神经元的常数。
    • 那么考虑 a l a^l a l 1 a^{l-1} 之间的关系。
      z 1 l z^l_1 = w 11 l w^l_{11} a 1 l 1 a^{l-1}_1 + w 12 l w^l_{12} a 2 l 1 a^{l-1}_2 +……+ b 1 l b^l_1
      z 2 l z^l_2 = w 21 l w^l_{21} a 1 l 1 a^{l-1}_1 + w 22 l w^l_{22} a 2 l 1 a^{l-1}_2 +……+ b 2 l b^l_2
      z i l z^l_i = w i 1 l w^l_{i1} a 1 l 1 a^{l-1}_1 + w i 2 l w^l_{i2} a 2 l 1 a^{l-1}_2 +……+ b i l b^l_i
      那么上面的式子可以用矩阵表示
      [ z 1 l z 2 l z i l ] \left[ \begin{matrix} z^l_1 \\ z^l_2 \\ \vdots \\ z^l_i \\ \vdots \end{matrix} \right]
      也就是 Z l Z^l = W l W^l a l 1 a^{l-1} + b l b^l
    • 当知道了 a l 1 a^{l-1} z l z^l 之间的关系,如果也知道 z l z^l a l a^l 之间的关系,我们就可以得到 a l 1 a^{l-1} a l a^l 之间的关系。
      那么z与a的关系,假设l层的函数是 σ \sigma ()。那么 a i l a^l_i = σ \sigma ( z i l z^l_i ) 。还可以 a l a^l = σ \sigma ( z l z^l )
    • 那么根据第5条和第6条两条式子,我们可以知道 a l 1 a^{l-1} a l a^l 之间的关系: a l a^l = σ \sigma ( W l a l 1 W^la^{l-1} + b l b^l )
  3. Recurrent structure(周期性结构):用同一个函数不断去简化网络。

    • 有一个 h h^` ,y= f ( h , x ) f(h,x) 这个函数有两个参数,同时又两个返回值。
    • 则如果 h 0 h_0 x 1 x_1 是第一个参数,得到的输出是 h 1 h_1 y 1 y_1 = f ( h 0 , x 1 ) f(h_0,x_1) 。继续重复这个过程, h 2 h_2 y 2 y_2 = f ( h 1 , x 2 ) f(h_1,x_2) 。就是用 f ( ) f() 这个函数不断去简化网络。但是这里有一个重点** h i h^i h i 1 h^{i-1} **
    • Deep RNN:
      h h^` ,y= f 1 ( h , x ) f_1(h,x)
      b b^` ,c= f 2 ( b , y ) f_2(b,y)
      这里注意上下两条的y是同一个y。
      在这里插入图片描述
    • Bidirectional RNN:
      h , a = f 1 ( h , x ) h^`,a=f_1(h,x)
      b , c = f 2 ( b , x ) b^`,c=f_2(b,x)
      y = f 3 ( a , c ) y=f_3(a,c)
      在这里插入图片描述
    • Pyramidal RNN(循环神经网络):每一层把下一层的好几个block的输出作为自己的输入,那么就可以减少sequence的长度。
      在这里插入图片描述
    • Naive RNN: h y = f ( h , x ) h^`,y=f(h,x)
      h = σ ( w h h + w i x ) h^`=\sigma(w^h h+w^ix)
      y = σ ( w 0 h ) y=\sigma(w^0h^`)
  4. LSTM(长短时记忆网络):
    在这里插入图片描述

    • c t c^t c t 1 c^{t-1} 之间是相加的关系,也就是 c t c^t 是变化很慢的。
    • h t h^t h t 1 h^{t-1} 之间差别很大,也就是 c t c^t 是变化很快的。
    • 运算过程:
      在这里插入图片描述
      这里把 x t x^t h t 1 h^{t-1} 看成是并在一起,再乘上w(一个矩阵)
      c t c^t y t y^t h t h^t 的得到过程是:
      在这里插入图片描述
  5. GRU(Gated Recurrent Unit):
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/rainpasttime/article/details/82751981