這節課主要講了怎麼訓練rnn,用的方法是bptt(backpropagation through time)。
rnn的目標是訓練引數wh
,wo,
wi。bptt的做法是,先將rnn隨著時間展開,如下圖:
展開之後像訓練普通神經網路一樣做backpropagation就行了,唯一的區別在於rnn輸入是乙個連續的序列,輸出也是乙個連續的序列,因此在每個輸出的y上都要做backpropagation的初始化。
但是訓練rnn沒有這麼容易,原因是:
可能的解決方法有:
這節課介紹了structured learning和解決structured learning問題的基本框架。
解決structured learning的基本框架:
為了表示除以上框架,有三個問題需要解決:
這裡聯絡到了hmm,並推薦了viterbi algorithm。
給定觀察空間o=
,狀態空間s=
,乙個觀察序列y=
。轉移矩陣a∈
rk∗k
,aij
表示從狀態si
轉移到sj
的概率。放射矩陣b∈
rk∗n
,bij
表示觀察點oj
來自狀態si
的概率。路徑x=
表示乙個序列產生觀察序列y=
的狀態序列。初始化的π∈
rk∗1
,表示x1
==si 的概率。
在這個dp問題中,我們用到兩個二維陣列t1
,t2∈
rk∗t
。 t1
[i][
j]表示到
j 的最可能的路徑x^
=,並且xj
^=si
的概率。 t2
[i][
j]儲存了這條路徑。
狀態轉移方程: t1
[i][
j]=m
axk(
t1[k
][j−
1]∗a
ki∗b
iyj)
, t2
[i][
j]=a
rgma
xk(t
1[k]
[j−1
]∗ak
i∗bi
yj)
深度學習筆記(2)
2 分詞 對每個句子進行分詞,也就是將乙個句子劃分成若干個詞 token 轉換為乙個詞的序列。3 建立字典 將每個詞對映到乙個唯一的索引 index 為了方便模型處理,我們需要將字串轉換為數字。因此我們需要先構建乙個字典 vocabulary 將每個詞對映到乙個唯一的索引編號。4 將詞轉為索引 使用...
《python深度學習》筆記2
這是 python深度學習 的 我的一些注釋筆記,可能有一些函式已經有庫實現了,我先放在著,以後遇到了我再過來補,如果有大神指教就更好了 import numpy as np import pandas as pd from keras.datasets import imdb from keras...
動手學深度學習學習筆記(2)
操作 算術操作 在pytorch中,同一種操作可能有很多種形式,下面用加法作為例子。加法形式一 y torch.rand 5,3 print x y 加法形式二 print torch.add x,y 還可指定輸出 result torch.empty 5,3 torch.add x,y,out r...