-
深度学习的三个步骤
- Neural Network(神经网络):我们经常设计神经网络,并且让机器从数据中寻找参数。
- Cost function(成本函数):用来判断一组参数是好还是不好
- Optimization(最优化):找到最好的函数
-
Fully connected layer(全连接层):
- 第i-1和第i层之间两两相连。第l-1层的第1个神经与第l层的第2个神经相连,得到的是 w 21 l w^l_ {21} w21l。上边l表示连接的是第l-1层和第l层。下标21表示连接的是第l层的第2个神经,到第l-1层的第1个神经。注意这里下标是反的
- 最后每两个相连的层之间形成一个w数组。这个数组的行数是第l层的神经个数,列数是第l-1层的神经个数。
- 每一层的神经元的表示 a i l a^l_i ail表示在第l层的第i个字符。如果是 a l a^l al则表示第l层的所有神经元,形成一个vector。
-
z
i
l
z^l_i
zil:第l层的第i个神经的活动输入。
z
l
z^l
zl表示第l层的所有输入。
z i l z^l_i zil = w i 1 l w^l_{i1} wi1l a 1 l − 1 a^{l-1}_1 a1l−1 + w i 2 l w^l_{i2} wi2l a 2 l − 1 a^{l-1}_2 a2l−1+…… b i l b^l_i bil
其中 b i l b^l_i bil代表的是第l层的第i个神经元的常数。 - 那么考虑
a
l
a^l
al和
a
l
−
1
a^{l-1}
al−1之间的关系。
z 1 l z^l_1 z1l= w 11 l w^l_{11} w11l a 1 l − 1 a^{l-1}_1 a1l−1 + w 12 l w^l_{12} w12l a 2 l − 1 a^{l-1}_2 a2l−1+……+ b 1 l b^l_1 b1l
z 2 l z^l_2 z2l= w 21 l w^l_{21} w21l a 1 l − 1 a^{l-1}_1 a1l−1 + w 22 l w^l_{22} w22l a 2 l − 1 a^{l-1}_2 a2l−1+……+ b 2 l b^l_2 b2l
z i l z^l_i zil= w i 1 l w^l_{i1} wi1l a 1 l − 1 a^{l-1}_1 a1l−1 + w i 2 l w^l_{i2} wi2l a 2 l − 1 a^{l-1}_2 a2l−1+……+ b i l b^l_i bil
那么上面的式子可以用矩阵表示
[ 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] ⎣⎢⎢⎢⎢⎢⎢⎡z1lz2l⋮zil⋮⎦⎥⎥⎥⎥⎥⎥⎤
也就是 Z l Z^l Zl = W l W^l Wl a l − 1 a^{l-1} al−1+ b l b^l bl - 当知道了
a
l
−
1
a^{l-1}
al−1与
z
l
z^l
zl之间的关系,如果也知道
z
l
z^l
zl和
a
l
a^l
al之间的关系,我们就可以得到
a
l
−
1
a^{l-1}
al−1和
a
l
a^l
al之间的关系。
那么z与a的关系,假设l层的函数是 σ \sigma σ()。那么 a i l a^l_i ail = σ \sigma σ( z i l z^l_i zil) 。还可以 a l a^l al = σ \sigma σ( z l z^l zl) - 那么根据第5条和第6条两条式子,我们可以知道 a l − 1 a^{l-1} al−1和 a l a^l al之间的关系: a l a^l al = σ \sigma σ( W l a l − 1 W^la^{l-1} Wlal−1+ b l b^l bl)
-
Recurrent structure(周期性结构):用同一个函数不断去简化网络。
- 有一个 h ‘ h^` h‘,y= f ( h , x ) f(h,x) f(h,x) 这个函数有两个参数,同时又两个返回值。
- 则如果 h 0 h_0 h0和 x 1 x_1 x1是第一个参数,得到的输出是 h 1 h_1 h1, y 1 y_1 y1= f ( h 0 , x 1 ) f(h_0,x_1) f(h0,x1) 。继续重复这个过程, h 2 h_2 h2, y 2 y_2 y2= f ( h 1 , x 2 ) f(h_1,x_2) f(h1,x2)。就是用 f ( ) f() f()这个函数不断去简化网络。但是这里有一个重点** h i h^i hi和 h i − 1 h^{i-1} hi−1**
- Deep RNN:
h ‘ h^` h‘,y= f 1 ( h , x ) f_1(h,x) f1(h,x)
b ‘ b^` b‘,c= f 2 ( b , y ) f_2(b,y) f2(b,y)
这里注意上下两条的y是同一个y。
- Bidirectional RNN:
h ‘ , a = f 1 ( h , x ) h^`,a=f_1(h,x) h‘,a=f1(h,x)
b ‘ , c = f 2 ( b , x ) b^`,c=f_2(b,x) b‘,c=f2(b,x)
y = f 3 ( a , c ) y=f_3(a,c) y=f3(a,c)
- Pyramidal RNN(循环神经网络):每一层把下一层的好几个block的输出作为自己的输入,那么就可以减少sequence的长度。
- Naive RNN:
h
‘
,
y
=
f
(
h
,
x
)
h^`,y=f(h,x)
h‘,y=f(h,x)
h ‘ = σ ( w h h + w i x ) h^`=\sigma(w^h h+w^ix) h‘=σ(whh+wix)
y = σ ( w 0 h ‘ ) y=\sigma(w^0h^`) y=σ(w0h‘)
-
LSTM(长短时记忆网络):
- c t c^t ct和 c t − 1 c^{t-1} ct−1之间是相加的关系,也就是 c t c^t ct是变化很慢的。
- h t h^t ht和 h t − 1 h^{t-1} ht−1之间差别很大,也就是 c t c^t ct是变化很快的。
- 运算过程:
这里把 x t x^t xt和 h t − 1 h^{t-1} ht−1看成是并在一起,再乘上w(一个矩阵)
c t c^t ct和 y t y^t yt和 h t h^t ht的得到过程是:
-
GRU(Gated Recurrent Unit):
台湾大学李宏毅深度学习1
最新推荐文章于 2022-10-28 12:01:30 发布