組隊學習《動手學深度學習》Task01學習筆記

Task01包含了線性回歸模型坦仍,softmax模型,多層感知機,文本預處理敬扛,語言模型晰洒,循環(huán)神經(jīng)網(wǎng)絡這幾塊內容

這里主要記錄一些零碎的筆記,

主要是關于理論

1啥箭、線性回歸模型就是使用了一個線性函數(shù)去擬合樣本谍珊,得到預測值,當然這是一個回歸模型急侥,所以是連續(xù)的抬驴。

2、softmax模型則是首先通過一個全連接層將特征空間變換為我們我們所需要的類別維度空間缆巧,然后將類別維度空間利用sigmoid函數(shù)放縮到[0,1]布持,變成概率的形式,概率大的就是我們需要的那一類

tips:softmax(t)=sotfmax(t+constant)這是課后習題總某人歸納出來的

3陕悬、多層感知機就是一個兩層的全連接層题暖,對特征空間進行變換,最后利用softmax輸出概率

4捉超、文本預處理就是先構建字典胧卤,然后利用字典的序號表示文本中的單詞

5、n-gram語言模型是基于n階馬爾科夫假設拼岳,認為一個單詞出現(xiàn)僅與前n-1個單詞有關

語言序列進行采樣的時候枝誊,有兩種采樣方式,一種是隨機采樣惜纸,一種是相鄰采樣叶撒。

我們的目標是從序列中每次獲取[batch_size,num_step]個小樣本耐版,

隨機采樣就是先將總的序列劃分成一個個num_step大小的小區(qū)間祠够,也就是一個個小序列,然后從一個個小序列里面隨機獲取batch_size個作為當前的輸入粪牲;

相鄰采樣則不一樣古瓤,它先將總的序列劃分成batch_size個分區(qū),當然要拋去多余的腺阳,并保證每個分區(qū)都是一樣大小落君,且可以被num_step整除,所以要再次拋去多余的亭引。然后采樣的時候從每個分區(qū)里面取出num_step個元素作為序列绎速,就有了batch_size個小序列了

6、循環(huán)神經(jīng)網(wǎng)絡是一種處理序列輸入的模型痛侍,因此可以用來處理語言朝氓,基本的循環(huán)神經(jīng)網(wǎng)絡擁有一個可以傳遞的隱藏層魔市,序列的當前輸入會通過上一個時間步的隱藏層獲取信息主届。

根據(jù)不同的采樣方式赵哲,循環(huán)神經(jīng)網(wǎng)絡里面隱藏層參數(shù)的初始化也有不同,具體來說就是君丁,相鄰采樣由于不同批次的數(shù)據(jù)是聯(lián)系到一起的枫夺,所以在一個epoch里面可以使用同一個隱藏層,一直傳遞下去绘闷,而且關鍵是橡庞,這個梯度也可以一直傳遞下去,只需要在不同的epoch之間印蔗,將隱藏層進行重新初始化扒最。

而隨機采樣,由于不同batch之間沒有內在聯(lián)系华嘹,所以每一個batch之間都需要將隱藏層進行梯度截斷吧趣,但是可以保留數(shù)值作為初始化值。

關于相鄰采樣進行梯度截斷的一些同學的解釋:

相鄰采樣為什么在每次迭代之前都需要將參數(shù)detach

是因為pytorch動態(tài)計算圖構建的原因耙厚,這里主要結合本次的視頻內容(循環(huán)神經(jīng)網(wǎng)絡使用相鄰采樣時)

分享自己的理解强挫,下圖是知乎上找到的,需要詳細了解pytorch動態(tài)圖相關的東西可以看下面給出

的參考鏈接

image

從上圖可以看出薛躬,一個動態(tài)圖是從葉子節(jié)點到葉子節(jié)點的一張圖俯渤,如上圖中的輸入是x,y,輸出是z.但是

需要注意的是,輸入的葉子節(jié)點其中有個參數(shù)requires_grad = False, 而最后輸出的葉子節(jié)點是

requires_grad = True. 當參數(shù)值為True的時候表示的是型宝,該節(jié)點可以計算梯度八匠,為False表示不能計算

節(jié)點梯度,而在反向傳播的時候對于不可以計算梯度的節(jié)點可以認為是圖反向傳播的終點趴酣。

現(xiàn)在來理解一下循環(huán)神經(jīng)網(wǎng)絡使用相鄰采樣的時候為什么要detach參數(shù)臀叙。

我們知道相鄰采樣的前后兩個批量的數(shù)據(jù)在在時間步上是連續(xù)的,所以模型會使用上一個批量的隱藏

狀態(tài)初始化當前的隱藏狀態(tài)价卤,表現(xiàn)形式就是不需要在一個epoch的每次迭代時隨機初始化隱藏狀態(tài)劝萤,那么

根據(jù)上面所說的。假如沒有detach的操作慎璧,每次迭代之后的輸出是一個葉子節(jié)點床嫌,并且該葉子節(jié)點的

requires_grad = True(從上面的計算圖就可以看出),也就意味著兩次或者說多次的迭代胸私,計算圖一直都是連著

的厌处,因為沒有遇到梯度計算的結束位置,這樣將會一直持續(xù)到下一次隱藏狀態(tài)的初始化岁疼。所以這將會導致

計算圖非常的大阔涉,進而導致計算開銷非常大缆娃。而每次將參數(shù)detach出來,其實就是相當于每次迭代之后雖然是

使用上一次迭代的隱藏狀態(tài)瑰排,只不過我們希望重新開始贯要,具體的操作就是把上一次的輸出節(jié)點的參數(shù)requires_grad

設置為False的葉子節(jié)點。

我們知道循環(huán)神經(jīng)網(wǎng)絡的梯度反向傳播是沿著時間進行反向傳播的椭住,而時間是不會停止的崇渗,所以我們會每隔一段時間、

進行一次反向傳播京郑,而我們這里的一段時間其實指的就是時間步宅广,我們希望每間隔時間步之后進行一次反向傳播,這樣

來減小在梯度反向傳播時帶來的計算開銷以及一定程度上緩解梯度消失或者爆炸的問題

以上是我對循環(huán)神經(jīng)網(wǎng)絡使用相鄰采樣為什么要detach參數(shù)的理解些举,可能也有問題跟狱,如果有問題希望可以指出來

參考鏈接:https://zhuanlan.zhihu.com/p/79801410

當我們再訓練網(wǎng)絡的時候可能希望保持一部分的網(wǎng)絡參數(shù)不變,只對其中一部分的參數(shù)進行調整户魏;或者值訓練部分分支網(wǎng)絡驶臊,并不讓其梯度對主網(wǎng)絡的梯度造成影響,這時候我們就需要使用detach()函數(shù)來切斷一些分支的反向傳播

detach():

返回一個新的Variable绪抛,從當前計算圖中分離下來的资铡,但是仍指向原變量的存放位置,不同之處只是requires_grad為false,得到的這個Variable永遠不需要計算其梯度幢码,不具有grad笤休。 即使之后重新將它的requires_grad置為true,它也不會具有梯度grad .這樣我們就會繼續(xù)使用這個新的Variable進行計算,后面當我們進行反向傳播時症副,到該調用detach()的Variable就會停止店雅,不能再繼續(xù)向前進行傳播

detach_()

將一個Variable從創(chuàng)建它的圖中分離,并把它設置成葉子variable .其實就相當于變量之間的關系本來是x -> m -> y,這里的葉子variable是x贞铣,但是這個時候對m進行了.detach_()操作,其實就是進行了兩個操作:

1.將m的grad_fn的值設置為None,這樣m就不會再與前一個節(jié)點x關聯(lián)闹啦,這里的關系就會變成x, m -> y,此時的m就變成了葉子結點。

2.然后會將m的requires_grad設置為False辕坝,這樣對y進行backward()時就不會求m的梯度窍奋。

其實detach()和detach()很像,兩個的區(qū)別就是detach()是對本身的更改酱畅,detach()則是生成了一個新的variable 琳袄。比如x -> m -> y中如果對m進行detach(),后面如果反悔想還是對原來的計算圖進行操作還是可以的 纺酸。但是如果是進行了detach_()窖逗,那么原來的計算圖也發(fā)生了變化,就不能反悔了餐蔬。

參考https://www.cnblogs.com/wanghui-garcia/p/10677071.html碎紊;參考:https://pytorch-cn.readthedocs.io/zh/latest/package_references/torch-autograd/#detachsource佑附。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市仗考,隨后出現(xiàn)的幾起案子音同,更是在濱河造成了極大的恐慌,老刑警劉巖痴鳄,帶你破解...
    沈念sama閱讀 212,294評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瘟斜,死亡現(xiàn)場離奇詭異缸夹,居然都是意外死亡痪寻,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,493評論 3 385
  • 文/潘曉璐 我一進店門虽惭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來橡类,“玉大人,你說我怎么就攤上這事芽唇」嘶” “怎么了?”我有些...
    開封第一講書人閱讀 157,790評論 0 348
  • 文/不壞的土叔 我叫張陵匆笤,是天一觀的道長研侣。 經(jīng)常有香客問我,道長炮捧,這世上最難降的妖魔是什么庶诡? 我笑而不...
    開封第一講書人閱讀 56,595評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮咆课,結果婚禮上末誓,老公的妹妹穿的比我還像新娘。我一直安慰自己书蚪,他們只是感情好喇澡,可當我...
    茶點故事閱讀 65,718評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著殊校,像睡著了一般晴玖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上为流,一...
    開封第一講書人閱讀 49,906評論 1 290
  • 那天呕屎,我揣著相機與錄音,去河邊找鬼艺谆。 笑死榨惰,一個胖子當著我的面吹牛,可吹牛的內容都是我干的静汤。 我是一名探鬼主播琅催,決...
    沈念sama閱讀 39,053評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼居凶,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了藤抡?” 一聲冷哼從身側響起侠碧,我...
    開封第一講書人閱讀 37,797評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎缠黍,沒想到半個月后弄兜,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,250評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡瓷式,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,570評論 2 327
  • 正文 我和宋清朗相戀三年替饿,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贸典。...
    茶點故事閱讀 38,711評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡视卢,死狀恐怖,靈堂內的尸體忽然破棺而出廊驼,到底是詐尸還是另有隱情据过,我是刑警寧澤,帶...
    沈念sama閱讀 34,388評論 4 332
  • 正文 年R本政府宣布妒挎,位于F島的核電站绳锅,受9級特大地震影響,放射性物質發(fā)生泄漏酝掩。R本人自食惡果不足惜鳞芙,卻給世界環(huán)境...
    茶點故事閱讀 40,018評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望庸队。 院中可真熱鬧积蜻,春花似錦、人聲如沸彻消。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,796評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宾尚。三九已至丙笋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間煌贴,已是汗流浹背御板。 一陣腳步聲響...
    開封第一講書人閱讀 32,023評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留牛郑,地道東北人怠肋。 一個月前我還...
    沈念sama閱讀 46,461評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像淹朋,于是被迫代替她去往敵國和親笙各。 傳聞我的和親對象是個殘疾皇子钉答,可洞房花燭夜當晚...
    茶點故事閱讀 43,595評論 2 350

推薦閱讀更多精彩內容